]> git.ipfire.org Git - thirdparty/readline.git/commitdiff
Readline-8.3 distribution sources and documentation readline-8.3
authorChet Ramey <chet.ramey@case.edu>
Thu, 3 Jul 2025 20:22:52 +0000 (16:22 -0400)
committerChet Ramey <chet.ramey@case.edu>
Thu, 3 Jul 2025 20:22:52 +0000 (16:22 -0400)
132 files changed:
CHANGELOG
CHANGES
INSTALL
MANIFEST
Makefile.in
NEWS
README
aclocal.m4
ansi_stdlib.h
bind.c
callback.c
chardefs.h
colors.c
complete.c
config.h.in
configure
configure.ac
display.c
doc/Makefile.in
doc/history.0
doc/history.3
doc/history.dvi
doc/history.html
doc/history.info
doc/history.pdf
doc/history.ps
doc/history.texi
doc/history_3.pdf [new file with mode: 0644]
doc/history_3.ps
doc/hstech.texi
doc/hsuser.texi
doc/readline.0
doc/readline.3
doc/readline.dvi
doc/readline.html
doc/readline.info
doc/readline.pdf
doc/readline.ps
doc/readline_3.pdf [new file with mode: 0644]
doc/readline_3.ps
doc/rlman.texi
doc/rltech.texi
doc/rluser.texi
doc/rluserman.dvi
doc/rluserman.html
doc/rluserman.info
doc/rluserman.pdf
doc/rluserman.ps
doc/rluserman.texi
doc/texi2dvi [changed mode: 0644->0755]
doc/texi2html [changed mode: 0644->0755]
doc/version.texi
emacs_keymap.c
examples/Makefile.in
examples/autoconf/BASH_CHECK_LIB_TERMCAP
examples/excallback.c
examples/fileman.c
examples/hist_erasedups.c
examples/hist_purgecmd.c
examples/histexamp.c
examples/manexamp.c
examples/rl-callbacktest.c
examples/rl-callbacktest2.c [new file with mode: 0644]
examples/rl-callbacktest3.c [new file with mode: 0644]
examples/rl-timeout.c
examples/rl.c
examples/rlcat.c
examples/rlevent.c
examples/rlfe/Makefile.in
examples/rlfe/config.h.in
examples/rlfe/configure
examples/rlfe/configure.ac [moved from examples/rlfe/configure.in with 74% similarity]
examples/rlfe/os.h
examples/rlfe/pty.c
examples/rlfe/rlfe.c
examples/rlptytest.c
examples/rltest.c
examples/rlwrap-0.46.1.tar.gz [new file with mode: 0644]
funmap.c
gettimeofday.c [new file with mode: 0644]
histexpand.c
histfile.c
histlib.h
history.c
history.h
histsearch.c
input.c
isearch.c
kill.c
m4/codeset.m4
macro.c
mbutil.c
misc.c
nls.c
parens.c
parse-colors.c
patchlevel
posixselect.h
posixtime.h
readline.c
readline.h
rlconf.h
rldefs.h
rlmbutil.h
rlprivate.h
rlstdc.h
rltty.c
rltypedefs.h
rlwinsize.h
search.c
shell.c
shlib/Makefile.in
signals.c
support/config.guess
support/config.rpath [changed mode: 0644->0755]
support/config.sub
support/install-sh [new file with mode: 0755]
support/install.sh [deleted file]
support/mkdirs [changed mode: 0644->0755]
support/mkinstalldirs [changed mode: 0644->0755]
support/shlib-install [changed mode: 0644->0755]
support/shobj-conf
support/wcwidth.c
tcap.h
terminal.c
text.c
tilde.c
undo.c
util.c
vi_mode.c
xmalloc.c
xmalloc.h

index b2fcb534e0935b612983f7b8aba80b4d546c215e..783a097b1225c01de3a2f3ffe15c8af4d41d914e 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1448,3 +1448,47 @@ configure.ac
          readline library to be linked against a shared termcap/curses library
          that configure finds. If the argument begins with `-l', use that
          library instead; updated INSTALL accordingly
+
+                               11/25/2022
+                               ----------
+gettimeofday.c
+       - add file from bash's lib/sh/gettimeofday.c, only compiled in if
+         HAVE_GETTIMEOFDAY is not defined
+
+Makefile.in
+       - gettimeofday.o: link in, it will not define any symbols if
+         HAVE_GETTIMEOFDAY is defined. This is for systems like _WIN32 that
+         don't have gettimeofday()
+
+                                3/6/2024
+                                --------
+config.h.in
+       - added more defines that bash aclocal.m4 BASH_CHECK_MULTIBYTE checks
+         for
+
+                                  5/10
+                                  ----
+examples/rlfe
+       - lots of updates to configure.ac to make it build on modern systems
+         and more-or-less work with autoconf-2.72 (still warnings about
+         obsolete macros)
+       - add prototypes and declarations to pty.c
+
+                                  5/11
+                                  ----
+configure.ac
+       - AC_PROG_GCC_TRADITIONAL: remove
+       - need to note in CHANGES that configure now supports --enable-year2038.
+         THIS IS AN ABI CHANGE IF YOU ENABLE IT
+
+                                   7/7
+                                   ---
+configure.ac
+       - add ncursesw as a possible value for TERMCAP_PKG_CONFIG_LIB, with
+         corresponding changes to aclocal.m4, which is shared with bash
+
+                                  7/24
+                                  ----
+configure.ac,Makefile.in
+       - STYLE_CFLAGS: set like bash if we're using gcc or clang; add to
+         CCFLAGS so we can compile -Wno-parentheses by default
diff --git a/CHANGES b/CHANGES
index eb54caa7db2bd14ff7c492db45fc88e2d63b2804..8c89f1e36bce609373a9094c1f64ba1b8010ea30 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,174 @@
+This document details the changes between this version, readline-8.3, and
+the previous version, readline-8.2.
+
+1. Changes to Readline
+
+a. Fixed a bug in clearing the visible line structure before redisplay.
+
+b. Fix a bug where setlocale(3) returning NULL caused a crash.
+
+c. Fixed signal checking in callback mode to handle signals that arrive before
+   readline restore's the application's signal handlers.
+
+d. Fixed a bug with word completion where the directory name needs to be
+   dequoted and tilde-expanded.
+
+e. Fixed a bug that caused compilation to fail on systems with select but not
+   pselect.
+
+f. System-specific changes for: WIN32, z/OS, Cygwin, MSYS
+
+g. Fixed a bug that caused word completion mismatches if the quoted text the
+   user typed was longer than the unquoted match.
+
+h. Fixes for freeing undo lists that might appear in history list entries
+   after non-incremental searches.
+
+i. Fixes for some errors revealed by address sanitizer.
+
+j. In vi mode, if an `f' or `F' move command associated with a `c' or `C'
+   command fails, don't enter insert mode.
+
+k. Fixed bug with truncating a history file containing timestamps that caused
+   the timestamp associated with the first history entry not to be written.
+
+l. Fix vi-mode so that a motion command attached to d/D, y/Y, or t/T must
+   consume or delete at least one character.
+
+m. Fix a redisplay error when displaying meta characters as octal sequences
+   and other C locale issues.
+
+n. Fix error that caused characters composing an incomplete multibyte
+   character not to be inserted into the line.
+
+o. In callback mode, let the application echo the signal characters (e.g., ^C)
+   when the application's signal handlers are installed.
+
+p. Added some support for lines that consume more than the physical number of
+   screen lines.
+
+q. Make sure dump-variables returns the string values for active-region-start-color
+   and active-region-end-color if they're set.
+
+r. Fixes to how characters between 128 and 159 are printed when displaying
+   macro values (use symbolic notation instead of directly printing the
+   character).
+
+s. Don't convert meta characters that contain NULL (\M-\C-@) to actual NULs,
+   which prematurely terminates the macro value.
+
+t. Fix typo in the readline color prefix extension that it uses for coloring
+   filename prefixes when displaying possible completions.
+
+u. Call the filename rewrite hook on the word being completed before comparing
+   it against possible completions from the file system to get consistent
+   strings.
+
+v. Fix infinite recursion that can happen if someone binds a key that doesn't
+   have a different upper and lower case represenation to do-lowercase-version.
+
+w. Check for non-ANSI (dumb) terminals a little more thoroughly.
+
+x. Don't attempt to history-expand the `quick substitution' character at the
+   beginning of a line if the application has set the quoting state to single
+   quotes.
+
+y. Fix small memory leak if non-incremental or incremental search is
+   interrupted by a signal.
+
+z. Loading very large history files should be much faster.
+
+aa. Retry opening startup files if the open is interrupted by a signal
+    and is not automatically restarted.
+
+bb. Make sure the bracketed-paste input buffer is null-terminated when read
+    returns an error.
+
+cc. Fixed a small memory leak in execute-named-command if the command doesn't
+    exist or the function doesn't return.
+    
+dd. Fix for attempting to change case of invalid multibyte characters.
+
+ee. Fix for possible completions that compare identically when using case-
+    insensitive completion but have different byte lengths.
+    
+ff. Fix to make non-incremental searches use undo lists and set the history
+    position the same way as incremental searches.
+    
+gg. Don't check for signals when handling a received signal.
+   
+hh. Fix off-by-one error when tokenizing words like $((expr)) while performing
+    history expansion.
+   
+ii. Fixes for incremental searches and redisplay in the C locale.
+
+jj. Fixes for some use-after-free of the undo list errors when stacking multiple
+    commands that use rl_maybe_replace_line to save changes to a history entry.
+   
+kk. Fixes to ensure that completion-prefix-display-length and
+    colored-completion-prefix are mutually exclusive.
+
+ll. Fixed a bug that allowed a history search to change the current history
+    list position.
+
+mm. Fixed a bug that allowed ^G to retain a saved command to execute.
+   
+nn. Updates to new export-completions command to allow filename suffixes.
+
+oo. Fixed a redisplay bug with prompts containing multiple sequences of
+    invisible characters that are longer than the screen width.
+
+pp. The history library no longer skips blank lines while it is reading a
+    multiline history entry from a history file.
+
+2. New Features in Readline
+
+a. Output a newline if there is no prompt and readline reads an empty line.
+
+b. The history library falls back to stdio when writing the history list if
+   mmap fails.
+
+c. New bindable variable `search-ignore-case', causes readline to perform
+   case-insensitive incremental and non-incremental history searches.
+
+d. rl_full_quoting_desired: new application-settable variable, causes all
+   completions to be quoted as if they were filenames.
+
+e. rl_macro_display_hook: new application-settable function pointer, used if
+   the application wants to print macro values itself instead of letting
+   readline do it
+
+f. rl_reparse_colors: new application-callable function, reparses $LS_COLORS
+   (presumably after the user changes it)
+
+g. rl_completion_rewrite_hook: new application-settable function pointer,
+   called to modify the word being completed before comparing it against
+   pathnames from the file system.
+
+h. execute-named-command: a new bindable command that reads the name of a
+   readline command from the standard input and executes it. Bound to M-x
+   in emacs mode by default.
+
+i. Incremental and non-incremental searches now allow ^V/^Q (or, in the former
+   case, anything bound to quoted-insert) to quote characters in the search
+   string.
+
+j. Documentation has been significantly updated.
+
+k. New `force-meta-prefix' bindable variable, which forces the use of ESC as
+   the meta prefix when using "\M-" in key bindings instead of overloading
+   convert-meta.
+
+l. The default value for `readline-colored-completion-prefix' no longer has a
+   leading `.'; the original report was based on a misunderstanding.
+
+m. There is a new bindable command, `export-completions', which writes the
+   possible completions for a word to the standard output in a defined format.
+
+n. Readline can reset its idea of the screen dimensions when executing after
+   a SIGCONT.
+
+-------------------------------------------------------------------------------
 This document details the changes between this version, readline-8.2, and
 the previous version, readline-8.1.
 
diff --git a/INSTALL b/INSTALL
index 293ef7061b5cb68d8e1f3f1b0c7728a277b4bcb0..52ba8eb360eb52464c612076fa4d4c9404697194 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
 Basic Installation
 ==================
 
-These are installation instructions for Readline-8.2.
+These are installation instructions for Readline.
 
 The simplest way to compile readline is:
 
@@ -14,12 +14,17 @@ The simplest way to compile readline is:
      Running `configure' takes some time.  While running, it prints some
      messages telling which features it is checking for.
 
+     If you want to build readline in a directory other than the source
+     directory, just run `configure' using a full pathname, for instance:
+
+               bash /usr/local/src/readline/readline-8.3/configure
+
   2. Type `make' to compile readline and build the static readline
-     and history libraries.  If supported, the shared readline and history
-     libraries will be built also.  See below for instructions on compiling
-     the other parts of the distribution.  Typing `make everything' will
-     cause the static and shared libraries (if supported) and the example
-     programs to be built.
+     and history libraries. If supported, this will build the shared
+     readline and history libraries also. See below for instructions on
+     compiling the other parts of the distribution. Typing `make everything'
+     will build the static and shared libraries (if supported) and the
+     example programs.
 
   3. Type `make install' to install the static readline and history
      libraries, the readline include files, the documentation, and, if
@@ -44,6 +49,27 @@ results of its tests to speed up reconfiguring, and a file
 `config.log' containing compiler output (useful mainly for
 debugging `configure'). 
 
+To find out more about the options and arguments that the `configure'
+script understands, type
+
+     bash-4.2$ ./configure --help
+
+at a shell prompt in your readline source directory.
+
+If you want to build readline in a directory separate from the source
+directory - to build for multiple architectures, for example - just use
+the full path to the configure script.  The following commands will
+build readline in a directory under `/usr/local/build' from the source code
+in `/usr/local/src/readline/readline-8.3':
+
+     mkdir /usr/local/build/readline-8.3
+     cd /usr/local/build/readline-8.3
+     bash /usr/local/src/readline/readline-8.3/configure
+     make
+
+See `Compiling For Multiple Architectures' below for more information
+about building in a directory separate from the source.
+
 If you need to do unusual things to compile readline, please try
 to figure out how `configure' could check whether to do them, and
 mail diffs or instructions to <bug-readline@gnu.org> so they can
@@ -93,12 +119,11 @@ Installation Names
 ==================
 
 By default, `make install' will install the readline libraries in
-`/usr/local/lib', the include files in
-`/usr/local/include/readline', the man pages in `/usr/local/man',
-and the info files in `/usr/local/info'.  You can specify an
-installation prefix other than `/usr/local' by giving `configure'
-the option `--prefix=PATH' or by supplying a value for the
-DESTDIR variable when running `make install'. 
+`/usr/local/lib', the include files in `/usr/local/include/readline',
+the man pages in `/usr/local/man', and the info files in `/usr/local/info'.
+You can specify an installation prefix other than `/usr/local' by
+giving `configure' the option `--prefix=PATH' or by supplying a value for
+the DESTDIR variable when running `make install'. 
 
 You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files. 
index db689b3779ab79d588b56c0c140896f1b4ea655d..73e95a85150238cac96015919f6fad480f8b715a 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -82,6 +82,7 @@ vi_keymap.c   f
 vi_mode.c      f
 xfree.c                f
 xmalloc.c      f
+gettimeofday.c f
 history.c      f
 histexpand.c   f
 histfile.c     f
@@ -89,14 +90,14 @@ histsearch.c        f
 patchlevel     f
 shlib/Makefile.in      f
 support/config.guess   f
-support/config.rpath   f
+support/config.rpath   f       755
 support/config.sub     f
-support/install.sh     f
-support/mkdirs         f
+support/install-sh     f       755
+support/mkdirs         f       755
 support/mkdist         f
-support/mkinstalldirs  f
+support/mkinstalldirs  f       755
 support/shobj-conf     f
-support/shlib-install  f
+support/shlib-install  f       755
 support/wcwidth.c      f
 doc/Makefile.in                f
 doc/texinfo.tex                f
@@ -111,8 +112,8 @@ doc/hstech.texi             f
 doc/hsuser.texi                f
 doc/readline.3         f
 doc/history.3          f
-doc/texi2dvi           f
-doc/texi2html          f
+doc/texi2dvi           f       755
+doc/texi2html          f       755
 examples/Makefile.in   f
 examples/excallback.c  f
 examples/fileman.c     f
@@ -125,6 +126,8 @@ examples/rlevent.c  f
 examples/rlkeymaps.c   f
 examples/rltest.c      f
 examples/rl-callbacktest.c     f
+examples/rl-callbacktest2.c    f
+examples/rl-callbacktest3.c    f
 examples/rl-timeout.c  f
 examples/rl-test-timeout       f
 examples/rl.c          f
@@ -142,17 +145,19 @@ examples/rlfe/Makefile.in f
 examples/rlfe/README           f
 examples/rlfe/config.h.in      f
 examples/rlfe/configure                f       755
-examples/rlfe/configure.in     f
+examples/rlfe/configure.ac     f
 examples/rlfe/extern.h         f
 examples/rlfe/os.h             f
 examples/rlfe/pty.c            f
 examples/rlfe/rlfe.c           f
 examples/rlfe/screen.h         f
-examples/rlwrap-0.30.tar.gz    f
+examples/rlwrap-0.46.1.tar.gz  f
 # formatted documentation, from MANIFEST.doc
 doc/readline.ps                f
 doc/history.ps         f
 doc/rluserman.ps       f
+doc/readline_3.ps      f
+doc/history_3.ps       f
 doc/readline.dvi       f
 doc/history.dvi                f
 doc/rluserman.dvi      f
@@ -164,8 +169,8 @@ doc/history.html    f
 doc/rluserman.html     f
 doc/readline.0         f
 doc/history.0          f
-doc/readline_3.p     f
-doc/history_3.p      f
+doc/readline_3.pdf     f
+doc/history_3.pdf      f
 doc/history.pdf                f
 doc/readline.pdf       f
 doc/rluserman.pdf      f
index 2120daa68ef3cb3a59c92d15e31fbf59817a1f40..54bd19ae242aeb8dbf1eb4eb656bc52f4c913be5 100644 (file)
@@ -1,6 +1,6 @@
 ## -*- text -*- ##
 # Master Makefile for the GNU readline library.
-# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+# Copyright (C) 1994-2024 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
@@ -37,6 +37,8 @@ INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 
+install_sh = @install_sh@
+
 CC = @CC@
 RANLIB = @RANLIB@
 AR = @AR@
@@ -78,6 +80,7 @@ CFLAGS = @CFLAGS@
 LOCAL_CFLAGS = @LOCAL_CFLAGS@ -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"' @BRACKETED_PASTE@
 CPPFLAGS = @CPPFLAGS@
 
+STYLE_CFLAGS = @STYLE_CFLAGS@
 DEFS = @DEFS@ @CROSS_COMPILE@
 LOCAL_DEFS = @LOCAL_DEFS@
 
@@ -87,7 +90,7 @@ TERMCAP_LIB = @TERMCAP_LIB@
 INCLUDES = -I. -I$(srcdir)
 
 XCCFLAGS = $(ASAN_CFLAGS) $(DEFS) $(LOCAL_DEFS) $(INCLUDES) $(CPPFLAGS)
-CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS)
+CCFLAGS = $(XCCFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) $(STYLE_CFLAGS)
 
 # could add -Werror here
 GCC_LINT_FLAGS = -ansi -Wall -Wshadow -Wpointer-arith -Wcast-qual \
@@ -98,6 +101,9 @@ GCC_LINT_CFLAGS = $(XCCFLAGS) $(GCC_LINT_FLAGS) @CFLAGS@ @LOCAL_CFLAGS@
 ASAN_XCFLAGS = -fsanitize=address -fno-omit-frame-pointer
 ASAN_XLDFLAGS = -fsanitize=address
 
+UBSAN_XCFLAGS = -fsanitize=undefined -fsanitize-recover -fstack-protector
+UBSAN_XLDFLAGS = -fsanitize=undefined
+
 install_examples = @EXAMPLES_INSTALL_TARGET@
 
 .c.o:
@@ -120,7 +126,7 @@ CSOURCES = $(srcdir)/readline.c $(srcdir)/funmap.c $(srcdir)/keymaps.c \
           $(srcdir)/histfile.c $(srcdir)/nls.c $(srcdir)/search.c \
           $(srcdir)/shell.c $(srcdir)/savestring.c $(srcdir)/tilde.c \
           $(srcdir)/text.c $(srcdir)/misc.c $(srcdir)/compat.c \
-          $(srcdir)/mbutil.c
+          $(srcdir)/mbutil.c $(srcdir)/gettimeofday.c
 
 # The header files for this library.
 HSOURCES = $(srcdir)/readline.h $(srcdir)/rldefs.h $(srcdir)/chardefs.h \
@@ -139,7 +145,7 @@ OBJECTS = readline.o vi_mode.o funmap.o keymaps.o parens.o search.o \
          rltty.o complete.o bind.o isearch.o display.o signals.o \
          util.o kill.o undo.o macro.o input.o callback.o terminal.o \
          text.o nls.o misc.o $(HISTOBJ) $(TILDEOBJ) $(COLORSOBJ) \
-         xmalloc.o xfree.o compat.o
+         xmalloc.o xfree.o compat.o gettimeofday.o
 
 # The texinfo files which document this library.
 DOCSOURCE = doc/rlman.texinfo doc/rltech.texinfo doc/rluser.texinfo
@@ -167,7 +173,7 @@ all: $(TARGETS)
 everything: all examples
 
 asan:
-       ${MAKE} ${MFLAGS} ASAN_CFLAGS='${ASAN_XCFLAGS}' ASAN_LDFLAGS='${ASAN_XLDFLAGS}' everything
+       ${MAKE} ASAN_CFLAGS='${ASAN_XCFLAGS}' ASAN_LDFLAGS='${ASAN_XLDFLAGS}' everything
 
 static: $(STATIC_LIBS)
 
@@ -191,7 +197,7 @@ readline: $(OBJECTS) readline.h rldefs.h chardefs.h ./libreadline.a
        $(CC) $(CCFLAGS) -DREADLINE_LIBRARY -o $@ $(top_srcdir)/examples/rl.c ./libreadline.a ${TERMCAP_LIB}
 
 lint:  force
-       $(MAKE) $(MFLAGS) CCFLAGS='$(GCC_LINT_CFLAGS)' static
+       $(MAKE) CCFLAGS='$(GCC_LINT_CFLAGS)' static
 
 Makefile makefile: config.status $(srcdir)/Makefile.in
        CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) ./config.status
@@ -216,15 +222,15 @@ stamp-h: config.status $(srcdir)/config.h.in
 
 shared:        force
        -test -d shlib || mkdir shlib
-       ( cd shlib ; ${MAKE} ${MFLAGS} all )
+       ( cd shlib ; ${MAKE} all )
 
 documentation: force
        -test -d doc || mkdir doc
-       -( cd doc && $(MAKE) $(MFLAGS) )
+       -( cd doc && $(MAKE) )
 
 examples: force
        -test -d examples || mkdir examples
-       -(cd examples && ${MAKE} ${MFLAGS} all )
+       -(cd examples && ${MAKE} all )
 
 force:
 
@@ -268,32 +274,32 @@ installdirs: $(srcdir)/support/mkinstalldirs
 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 )
+       -( cd shlib; ${MAKE} DESTDIR=${DESTDIR} uninstall )
 
 install-shared: installdirs install-headers shared install-doc install-pc
-       ( cd shlib ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
+       ( cd shlib ; ${MAKE} DESTDIR=${DESTDIR} install )
        
 uninstall-shared: maybe-uninstall-headers maybe-uninstall-pc
-       -( cd shlib; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
+       -( cd shlib; ${MAKE} DESTDIR=${DESTDIR} uninstall )
 
 install-examples: installdirs install-headers
-       -( cd examples ; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} install )
+       -( cd examples ; ${MAKE} DESTDIR=${DESTDIR} install )
        
 uninstall-examples: maybe-uninstall-headers
-       -( cd examples; ${MAKE} ${MFLAGS} DESTDIR=${DESTDIR} uninstall )
+       -( cd examples; ${MAKE} DESTDIR=${DESTDIR} uninstall )
 
 install-doc:   installdirs
        $(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir)
        -( if test -d doc ; then \
                cd doc && \
-               ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} install; \
+               ${MAKE} infodir=$(infodir) DESTDIR=${DESTDIR} install; \
          fi )
 
 uninstall-doc:
        -( cd $(DESTDIR)$(docdir) && ${RM} ${OTHER_INSTALLED_DOCS} )
        -( if test -d doc ; then \
                cd doc && \
-               ${MAKE} ${MFLAGS} infodir=$(infodir) DESTDIR=${DESTDIR} uninstall; \
+               ${MAKE} infodir=$(infodir) DESTDIR=${DESTDIR} uninstall; \
          fi )
 
 TAGS:  force
@@ -302,22 +308,24 @@ TAGS:     force
 tags:  force
        -( cd $(srcdir) && $(CTAGS) $(CSOURCES) $(HSOURCES) )
 
-clean: force
+.PHONY: clean maintainer-clean distclean mostlyclean
+
+mostlyclean:   force
        $(RM) $(OBJECTS) $(STATIC_LIBS)
        $(RM) readline readline.exe
-       ( cd shlib && $(MAKE) $(MFLAGS) $@ )
-       -( cd doc && $(MAKE) $(MFLAGS) $@ )
-       -( cd examples && $(MAKE) $(MFLAGS) $@ )
+       ( cd shlib && $(MAKE) $@ )
+       -( cd doc && $(MAKE) $@ )
+       -( cd examples && $(MAKE) $@ )
 
-mostlyclean: clean
-       ( cd shlib && $(MAKE) $(MFLAGS) $@ )
-       -( cd doc && $(MAKE) $(MFLAGS) $@ )
-       -( cd examples && $(MAKE) $(MFLAGS) $@ )
+clean: mostlyclean
+       ( cd shlib && $(MAKE) $@ )
+       -( cd doc && $(MAKE) $@ )
+       -( cd examples && $(MAKE) $@ )
 
 distclean maintainer-clean: clean
-       ( cd shlib && $(MAKE) $(MFLAGS) $@ )
-       -( cd doc && $(MAKE) $(MFLAGS) $@ )
-       -( cd examples && $(MAKE) $(MFLAGS) $@ )
+       ( cd shlib && $(MAKE) $@ )
+       -( cd doc && $(MAKE) $@ )
+       -( cd examples && $(MAKE) $@ )
        $(RM) Makefile
        $(RM) $(CREATED_CONFIGURE)
        $(RM) $(CREATED_TAGS)
@@ -329,7 +337,7 @@ history.pc: config.status $(srcdir)/history.pc.in
        $(SHELL) config.status
 
 info dvi html pdf ps:
-       -( cd doc && $(MAKE) $(MFLAGS) $@ )
+       -( cd doc && $(MAKE) $@ )
 
 install-info:
 install-dvi:
@@ -454,6 +462,9 @@ xfree.o: ansi_stdlib.h
 xmalloc.o: ${BUILD_DIR}/config.h
 xmalloc.o: ansi_stdlib.h
 
+gettimeofday.o: ${BUILD_DIR}/config.h
+gettimeofday.o: posixtime.h
+
 colors.o: ${BUILD_DIR}/config.h colors.h
 colors.o: readline.h keymaps.h rltypedefs.h chardefs.h tilde.h rlstdc.h
 colors.o: rlconf.h  
diff --git a/NEWS b/NEWS
index 1d88606a86efbb1528c0fd373063288dc1c467b4..1fc6989723814f4aed494575e4f7799cdc7dccad 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,54 @@
+This is a terse description of the new features added to readline-8.3 since
+the release of readline-8.2.
+
+New Features in Readline
+
+a. Output a newline if there is no prompt and readline reads an empty line.
+
+b. The history library falls back to stdio when writing the history list if
+   mmap fails.
+
+c. New bindable variable `search-ignore-case', causes readline to perform
+   case-insensitive incremental and non-incremental history searches.
+
+d. rl_full_quoting_desired: new application-settable variable, causes all
+   completions to be quoted as if they were filenames.
+
+e. rl_macro_display_hook: new application-settable function pointer, used if
+   the application wants to print macro values itself instead of letting
+   readline do it
+
+f. rl_reparse_colors: new application-callable function, reparses $LS_COLORS
+   (presumably after the user changes it)
+
+g. rl_completion_rewrite_hook: new application-settable function pointer,
+   called to modify the word being completed before comparing it against
+   pathnames from the file system.
+
+h. execute-named-command: a new bindable command that reads the name of a
+   readline command from the standard input and executes it. Bound to M-x
+   in emacs mode by default.
+
+i. Incremental and non-incremental searches now allow ^V/^Q (or, in the former
+   case, anything bound to quoted-insert) to quote characters in the search
+   string.
+
+j. Documentation has been significantly updated.
+
+k. New `force-meta-prefix' bindable variable, which forces the use of ESC as
+   the meta prefix when using "\M-" in key bindings instead of overloading
+   convert-meta.
+
+l. The default value for `readline-colored-completion-prefix' no longer has a
+   leading `.'; the original report was based on a misunderstanding.
+
+m. There is a new bindable command, `export-completions', which writes the
+   possible completions for a word to the standard output in a defined format.
+
+n. Readline can reset its idea of the screen dimensions when executing after
+   a SIGCONT.
+
+-------------------------------------------------------------------------------
 This is a terse description of the new features added to readline-8.2 since
 the release of readline-8.1.
 
diff --git a/README b/README
index 83cdb23a1150b015b3428b12fdae2169658d99b2..75eaa2ff8e57b78ff9d4ac6a7a7c76e956dd7935 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 Introduction
 ============
 
-This is the Gnu Readline library, version 8.2.
+This is the Gnu Readline library, version 8.3.
 
 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
@@ -33,7 +33,8 @@ may work:
         env CC=cc ./configure
 
 Read the file INSTALL in this directory for more information about how
-to customize and control the build process.
+to customize and control the build process, including how to build readline
+in a directory other than the source directory.
 
 The file rlconf.h contains C preprocessor defines that enable and disable
 certain Readline features.
@@ -47,7 +48,7 @@ Examples
 There are several example programs that use Readline features in the
 examples directory.  The `rl' program is of particular interest.  It
 is a command-line interface to Readline, suitable for use in shell
-scripts in place of `read'.
+scripts in place of `read' (but look at bash's `read -e' first).
 
 Shared Libraries
 ================
index cc97bd4b8461528958dbd009c7c563aa97945527..ae2d8aec96dc31e42fdfc650069e12fda3dd946b 100644 (file)
@@ -3,7 +3,7 @@ dnl Bash specific tests
 dnl
 dnl Some derived from PDKSH 5.1.3 autoconf tests
 dnl
-dnl Copyright (C) 1987-2021 Free Software Foundation, Inc.
+dnl Copyright (C) 1987-2025 Free Software Foundation, Inc.
 dnl
 
 dnl
@@ -69,11 +69,7 @@ AC_DEFUN(BASH_DECL_PRINTF,
 AC_CACHE_VAL(bash_cv_printf_declared,
 [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <stdio.h>
-#ifdef __STDC__
 typedef int (*_bashfunc)(const char *, ...);
-#else
-typedef int (*_bashfunc)();
-#endif
 #include <stdlib.h>
 int
 main()
@@ -238,6 +234,9 @@ AC_CACHE_VAL(bash_cv_dup2_broken,
 #include <sys/types.h>
 #include <fcntl.h>
 #include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif /* HAVE_UNISTD_H */
 int
 main()
 {
@@ -432,6 +431,7 @@ AC_CACHE_VAL(bash_cv_sizeof_rlim_cur,
 #endif
 #include <stdlib.h>
 #include <sys/resource.h>
+int
 main()
 {
 struct rlimit r;
@@ -457,6 +457,7 @@ AC_CACHE_VAL(bash_cv_sizeof_quad_t,
 #include <stdint.h>
 #endif
 
+int
 main()
 {
 #if HAVE_QUAD_T
@@ -558,18 +559,8 @@ AC_CACHE_VAL(bash_cv_getenv_redef,
 #  include <unistd.h>
 #endif
 #include <stdlib.h>
-#ifndef __STDC__
-#  ifndef const
-#    define const
-#  endif
-#endif
 char *
-getenv (name)
-#if defined (__linux__) || defined (__bsdi__) || defined (convex)
-     const char *name;
-#else
-     char const *name;
-#endif /* !__linux__ && !__bsdi__ && !convex */
+getenv (const char *name)
 {
 return "42";
 }
@@ -599,7 +590,6 @@ fi
 # We should check for putenv before calling this
 AC_DEFUN(BASH_FUNC_STD_PUTENV,
 [
-AC_REQUIRE([AC_C_PROTOTYPES])
 AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv,
 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #if HAVE_STDLIB_H
@@ -608,16 +598,7 @@ AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv,
 #if HAVE_STDDEF_H
 #include <stddef.h>
 #endif
-#ifndef __STDC__
-#  ifndef const
-#    define const
-#  endif
-#endif
-#ifdef PROTOTYPES
 extern int putenv (char *);
-#else
-extern int putenv ();
-#endif
 ]], [[return (putenv == 0);]] )],
 [bash_cv_std_putenv=yes], [bash_cv_std_putenv=no]
 )])
@@ -629,7 +610,6 @@ fi
 # We should check for unsetenv before calling this
 AC_DEFUN(BASH_FUNC_STD_UNSETENV,
 [
-AC_REQUIRE([AC_C_PROTOTYPES])
 AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv,
 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #if HAVE_STDLIB_H
@@ -638,16 +618,7 @@ AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unset
 #if HAVE_STDDEF_H
 #include <stddef.h>
 #endif
-#ifndef __STDC__
-#  ifndef const
-#    define const
-#  endif
-#endif
-#ifdef PROTOTYPES
 extern int unsetenv (const char *);
-#else
-extern int unsetenv ();
-#endif
 ]], [[return (unsetenv == 0);]] )],
 [bash_cv_std_unsetenv=yes], [bash_cv_std_unsetenv=no]
 )])
@@ -841,9 +812,7 @@ AC_CACHE_VAL(bash_cv_func_strcoll_broken,
 #include <stdlib.h>
 
 int
-main(c, v)
-int     c;
-char    *v[];
+main(int c, char **v)
 {
         int     r1, r2;
         char    *deflocale, *defcoll;
@@ -966,8 +935,8 @@ AC_CACHE_VAL(bash_cv_termcap_lib,
   [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
     [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,
-                [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw,
+           [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw,
+                [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                    bash_cv_termcap_lib=gnutermcap)])])])])])])
 if test "X$_bash_needmsg" = "Xyes"; then
 AC_MSG_CHECKING(which library has the termcap functions)
@@ -983,9 +952,15 @@ TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libtinfo; then
 TERMCAP_LIB=-ltinfo
 TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libncursesw; then
+TERMCAP_LIB=-lncursesw
+TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libncurses; then
 TERMCAP_LIB=-lncurses
 TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libcurses; then
+TERMCAP_LIB=-lcurses
+TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libc; then
 TERMCAP_LIB=
 TERMCAP_DEP=
@@ -1050,7 +1025,7 @@ dnl like _AC_STRUCT_DIRENT(MEMBER) but public
 AC_DEFUN(BASH_STRUCT_DIRENT,
 [
 AC_REQUIRE([AC_HEADER_DIRENT])
-AC_CHECK_MEMBERS(struct dirent.$1, bash_cv_dirent_has_$1=yes, bash_cv_dirent_has_$1=no,
+AC_CHECK_MEMBERS(struct dirent.$1, [], [],
 [[
 #include <stdio.h>
 #include <sys/types.h>
@@ -1074,35 +1049,9 @@ AC_CHECK_MEMBERS(struct dirent.$1, bash_cv_dirent_has_$1=yes, bash_cv_dirent_has
 ]])
 ])
 
-AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(for struct dirent.d_ino)
-AC_CACHE_VAL(bash_cv_dirent_has_d_ino, [BASH_STRUCT_DIRENT([d_ino])])
-AC_MSG_RESULT($bash_cv_dirent_has_d_ino)
-if test $bash_cv_dirent_has_d_ino = yes; then
-AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(for struct dirent.d_fileno)
-AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, [BASH_STRUCT_DIRENT([d_fileno])])
-AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)
-if test $bash_cv_dirent_has_d_fileno = yes; then
-AC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO)
-fi
-])
-
-AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(for struct dirent.d_namlen)
-AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, [BASH_STRUCT_DIRENT([d_namlen])])
-AC_MSG_RESULT($bash_cv_dirent_has_d_namlen)
-if test $bash_cv_dirent_has_d_namlen = yes; then
-AC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN)
-fi
-])
+AC_DEFUN([BASH_STRUCT_DIRENT_D_INO], [BASH_STRUCT_DIRENT([d_ino])])
+AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO], [BASH_STRUCT_DIRENT([d_fileno])])
+AC_DEFUN([BASH_STRUCT_DIRENT_D_NAMLEN], [BASH_STRUCT_DIRENT([d_namlen])])
 
 AC_DEFUN(BASH_STRUCT_TIMEVAL,
 [AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
@@ -1345,15 +1294,13 @@ AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
 #endif
 #include <stdlib.h>
 
-typedef void sigfunc();
+typedef void sigfunc(int);
 
 volatile int nsigint;
 
 #ifdef HAVE_POSIX_SIGNALS
 sigfunc *
-set_signal_handler(sig, handler)
-     int sig;
-     sigfunc *handler;
+set_signal_handler(int sig, sigfunc *handler)
 {
   struct sigaction act, oact;
   act.sa_handler = handler;
@@ -1368,8 +1315,7 @@ set_signal_handler(sig, handler)
 #endif
 
 void
-sigint(s)
-int s;
+sigint(int s)
 {
   nsigint++;
 }
@@ -1607,13 +1553,15 @@ AC_DEFUN(BASH_CHECK_DEV_FD,
 [AC_MSG_CHECKING(whether /dev/fd is available)
 AC_CACHE_VAL(bash_cv_dev_fd,
 [bash_cv_dev_fd=""
-if test -d /dev/fd  && (exec test -r /dev/fd/0 < /dev/null) ; then
+if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then
 # check for systems like FreeBSD 5 that only provide /dev/fd/[012]
    if (exec test -r /dev/fd/3 3</dev/null) ; then
      bash_cv_dev_fd=standard
    else
      bash_cv_dev_fd=absent
    fi
+elif test "$host_os" = "openedition" && (exec test -r /dev/fd0 < /dev/null); then
+  bash_cv_dev_fd=nodir         # /dev/fdN via character device
 fi
 if test -z "$bash_cv_dev_fd" ; then 
   if test -d /proc/self/fd && (exec test -r /proc/self/fd/0 < /dev/null) ; then
@@ -1630,6 +1578,9 @@ if test $bash_cv_dev_fd = "standard"; then
 elif test $bash_cv_dev_fd = "whacky"; then
   AC_DEFINE(HAVE_DEV_FD)
   AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/")
+elif test $bash_cv_dev_fd = "nodir"; then
+  AC_DEFINE(HAVE_DEV_FD)
+  AC_DEFINE(DEV_FD_PREFIX, "/dev/fd")
 fi
 ])
 
@@ -1758,8 +1709,9 @@ AC_CHECK_HEADERS(langinfo.h)
 AC_CHECK_HEADERS(mbstr.h)
 
 AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN))
-AC_CHECK_FUNC(mbscasecmp, AC_DEFINE(HAVE_MBSCMP))
+AC_CHECK_FUNC(mbscasecmp, AC_DEFINE(HAVE_MBSCASECMP))
 AC_CHECK_FUNC(mbscmp, AC_DEFINE(HAVE_MBSCMP))
+AC_CHECK_FUNC(mbsncmp, AC_DEFINE(HAVE_MBSNCMP))
 AC_CHECK_FUNC(mbsnrtowcs, AC_DEFINE(HAVE_MBSNRTOWCS))
 AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
 
@@ -1770,6 +1722,7 @@ AC_CHECK_FUNC(wcscoll, AC_DEFINE(HAVE_WCSCOLL))
 AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP))
 AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
 AC_CHECK_FUNC(wctype, AC_DEFINE(HAVE_WCTYPE))
+AC_CHECK_FUNC(wcsnrtombs, AC_DEFINE(HAVE_WCSNRTOMBS))
 
 AC_REPLACE_FUNCS(wcswidth)
 
@@ -1834,14 +1787,15 @@ bash_cv_wcwidth_broken,
 #include <wchar.h>
 
 int
-main(c, v)
-int     c;
-char    **v;
+main(int c, char **v)
 {
         int     w;
 
         setlocale(LC_ALL, "en_US.UTF-8");
         w = wcwidth (0x0301);
+       if (w != 0)
+         exit (0);
+       w = wcwidth (0x200b);
         exit (w == 0);  /* exit 0 if wcwidth broken */
 }
 ]])], [bash_cv_wcwidth_broken=yes], [bash_cv_wcwidth_broken=no],
@@ -2093,31 +2047,17 @@ AC_DEFUN([BASH_FUNC_VSNPRINTF],
   if test X$ac_cv_func_vsnprintf = Xyes; then
     AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf],
       [AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#if HAVE_STDARG_H
 #include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
 #include <stdio.h>
 #include <stdlib.h>
 
 static int
-#if HAVE_STDARG_H
 foo(const char *fmt, ...)
-#else
-foo(format, va_alist)
-     const char *format;
-     va_dcl
-#endif
 {
   va_list args;
   int n;
 
-#if HAVE_STDARG_H
   va_start(args, fmt);
-#else
-  va_start(args);
-#endif
   n = vsnprintf(0, 0, fmt, args);
   va_end (args);
   return n;
@@ -2154,9 +2094,7 @@ AC_CACHE_VAL(bash_cv_wexitstatus_offset,
 #include <sys/wait.h>
 
 int
-main(c, v)
-     int c;
-     char **v;
+main(int c, char **v)
 {
   pid_t pid, p;
   int s, i, n;
@@ -2230,6 +2168,43 @@ main(int c, char **v)
   fi
 ])
 
+AC_DEFUN([BASH_FUNC_BRK],
+[
+  AC_MSG_CHECKING([for brk])
+  AC_CACHE_VAL(ac_cv_func_brk,
+  [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+               [[#include <unistd.h>]],
+               [[ void *x = brk (0); ]])],
+       [ac_cv_func_brk=yes],[ac_cv_func_brk=no])])
+  AC_MSG_RESULT($ac_cv_func_brk)
+  if test X$ac_cv_func_brk = Xyes; then
+    AC_CACHE_CHECK([for working brk], [bash_cv_func_brk],
+      [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int c, char **v)
+{
+       void *x;
+
+       x = brk (0);
+       exit ((x == (void *)-1) ? 1 : 0);
+}
+]])],[bash_cv_func_brk=yes],[bash_cv_func_brk=no],[AC_MSG_WARN([cannot check working brk if cross-compiling])
+    bash_cv_func_brk=yes
+])])
+    if test $bash_cv_func_brk = no; then
+      ac_cv_func_brk=no
+    fi
+  fi
+  if test $ac_cv_func_brk = yes; then
+    AC_DEFINE(HAVE_BRK, 1,
+      [Define if you have a working brk 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,
@@ -2265,3 +2240,68 @@ else
 fi
 AC_DEFINE_UNQUOTED([FNMATCH_EQUIV_FALLBACK], [$bash_cv_fnmatch_equiv_value], [Whether fnmatch can be used for bracket equivalence classes])
 ])
+
+AC_DEFUN([BASH_FUNC_STRCHRNUL],
+[
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+  AC_CACHE_CHECK([whether strchrnul works],
+      [bash_cv_func_strchrnul_works],
+      [AC_RUN_IFELSE([AC_LANG_PROGRAM(
+[[
+#include <string.h>
+]],
+[[const char *buf = "abc";
+      return strchrnul (buf, 'd') != buf + 3;
+]]
+)],
+[bash_cv_func_strchrnul_works=yes], [bash_cv_func_strchrnul_works=no],
+[bash_cv_func_strchrnul_works=no]
+)])
+
+if test "$bash_cv_func_strchrnul_works" = "no"; then
+AC_LIBOBJ([strchrnul])
+fi
+])
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor 'install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in "make install-strip", and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
+#if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+#fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
index 7dc2ee0cf4990fb54083c2a7349ca4c93e9f79c8..3cb3e07174a25b79559b18b7fcbf26f3707f2951 100644 (file)
@@ -2,7 +2,7 @@
 /* A minimal stdlib.h containing extern declarations for those functions
    that bash uses. */
 
-/* Copyright (C) 1993 Free Software Foundation, Inc.
+/* Copyright (C) 1993,2023 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -32,13 +32,7 @@ extern double strtod ();
 /* Memory allocation functions. */
 /* Generic pointer type. */
 #ifndef PTR_T
-
-#if defined (__STDC__)
 #  define PTR_T        void *
-#else
-#  define PTR_T char *
-#endif
-
 #endif /* PTR_T */
 
 extern PTR_T malloc ();
diff --git a/bind.c b/bind.c
index 880db8ccc94389f2dc399c708c237a05505d5844..6aaa63740eff7dd8a4dde578768aa90eea9d006f 100644 (file)
--- 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-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2024 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.
@@ -65,20 +65,15 @@ extern int errno;
 #include "rlshell.h"
 #include "xmalloc.h"
 
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
 /* Variables exported by this file. */
 Keymap rl_binding_keymap;
 
+/* Functions exported by this file. */
+rl_macro_print_func_t *rl_macro_display_hook = (rl_macro_print_func_t *)NULL;
+
 static int _rl_skip_to_delim (char *, int, int);
 
-#if defined (USE_VARARGS) && defined (PREFER_STDARG)
 static void _rl_init_file_error (const char *, ...)  __attribute__((__format__ (printf, 1, 2)));
-#else
-static void _rl_init_file_error ();
-#endif
 
 static rl_command_func_t *_rl_function_of_keyseq_internal (const char *, size_t, Keymap, int *);
 
@@ -103,6 +98,15 @@ static int currently_reading_init_file;
 /* used only in this file */
 static int _rl_prefer_visible_bell = 1;
 
+/* Currently confined to this file for key bindings. If enabled (> 0), we
+   force meta key bindings to use the meta prefix (ESC). If unset (-1) or
+   disabled (0), we use the current value of _rl_convert_meta_chars_to_ascii
+   as in previous readline versions. */
+static int _rl_force_meta_prefix = 0;
+
+/* Do we want to force binding "\M-C" to the meta prefix (ESC-C)? */
+#define FORCE_META_PREFIX()    (_rl_force_meta_prefix > 0 ? 1 : _rl_convert_meta_chars_to_ascii)
+
 #define OP_EQ  1
 #define OP_NE  2
 #define OP_GT  3
@@ -142,7 +146,7 @@ rl_bind_key (int key, rl_command_func_t *function)
     return (key);
 
   /* Want to make this a multi-character key sequence with an ESC prefix */
-  if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
+  if (META_CHAR (key) && FORCE_META_PREFIX())
     {
       if (_rl_keymap[ESC].type == ISKMAP)
        {
@@ -262,7 +266,7 @@ rl_unbind_function_in_map (rl_command_func_t *func, Keymap map)
          map[i].function = (rl_command_func_t *)NULL;
          rval = 1;
        }
-      else if (map[i].type == ISKMAP)          /* TAG:readline-8.1 */
+      else if (map[i].type == ISKMAP)
        {
          int r;
          r = rl_unbind_function_in_map (func, FUNCTION_TO_KEYMAP (map, i));
@@ -423,19 +427,8 @@ rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
          return -1;
         }
 
-      /* We now rely on rl_translate_keyseq to do this conversion, so this
-        check is superfluous. */
-#if 0
-      if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
-       {
-         ic = UNMETA (ic);
-         if (map[ESC].type == ISKMAP)
-           {
-             prevmap = map;
-             map = FUNCTION_TO_KEYMAP (map, ESC);
-           }
-       }
-#endif
+      /* We rely on rl_translate_keyseq to do convert meta-chars to key
+        sequences with the meta prefix (ESC). */
 
       if ((i + 1) < keys_len)
        {
@@ -531,8 +524,7 @@ rl_translate_keyseq (const char *seq, char *array, int *len)
 
   /* When there are incomplete prefixes \C- or \M- (has_control || has_meta)
      without base character at the end of SEQ, they are processed as the
-     prefixes for '\0'.
-  */
+     prefixes for '\0'. */
   for (i = l = 0; (c = seq[i]) || has_control || has_meta; i++)
     {
       /* Only backslashes followed by a non-null character are handled
@@ -623,21 +615,28 @@ rl_translate_keyseq (const char *seq, char *array, int *len)
          c = (c == '?') ? RUBOUT : CTRL (_rl_to_upper (c));
          has_control = 0;
        }
+
       if (has_meta)
-       {
-         c = META (c);
-         has_meta = 0;
-       }
+       c = META (c);
 
-      /* If convert-meta is turned on, convert a meta char to a key sequence  */
-      if (META_CHAR (c) && _rl_convert_meta_chars_to_ascii)
+      /* If force-meta-prefix is turned on, convert a meta char to a key
+        sequence, but only if it uses the \M- syntax. */
+      if (META_CHAR (c) && has_meta && FORCE_META_PREFIX())
        {
-         array[l++] = ESC;     /* ESC is meta-prefix */
-         array[l++] = UNMETA (c);
+         int x = UNMETA (c);
+         if (x)
+           {
+             array[l++] = ESC; /* ESC is meta-prefix */
+             array[l++] = x;
+           }
+         else
+           array[l++] = c;     /* just do the best we can without sticking a NUL in there. */
        }
       else
        array[l++] = (c);
 
+      has_meta = 0;
+
       /* Null characters may be processed for incomplete prefixes at the end of
         sequence */
       if (seq[i] == '\0')
@@ -685,7 +684,8 @@ char *
 rl_untranslate_keyseq (int seq)
 {
   static char kseq[16];
-  int i, c;
+  int i;
+  unsigned char c;
 
   i = 0;
   c = seq;
@@ -696,35 +696,22 @@ rl_untranslate_keyseq (int seq)
       kseq[i++] = '-';
       c = UNMETA (c);
     }
-  else if (c == ESC)
+
+  if (c == ESC)                /* look at _rl_force_meta_prefix here? */
     {
       kseq[i++] = '\\';
       c = 'e';
     }
-  else if (CTRL_CHAR (c))
+  else if (CTRL_CHAR (c) || c == RUBOUT)
     {
       kseq[i++] = '\\';
       kseq[i++] = 'C';
       kseq[i++] = '-';
-      c = _rl_to_lower (UNCTRL (c));
-    }
-  else if (c == RUBOUT)
-    {
-      kseq[i++] = '\\';
-      kseq[i++] = 'C';
-      kseq[i++] = '-';
-      c = '?';
+      c = (c == RUBOUT) ? '?' : _rl_to_lower (UNCTRL (c));
     }
 
-  if (c == ESC)
-    {
-      kseq[i++] = '\\';
-      c = 'e';
-    }
-  else if (c == '\\' || c == '"')
-    {
-      kseq[i++] = '\\';
-    }
+  if (c == '\\' || c == '"')
+    kseq[i++] = '\\';
 
   kseq[i++] = (unsigned char) c;
   kseq[i] = '\0';
@@ -735,9 +722,9 @@ char *
 _rl_untranslate_macro_value (char *seq, int use_escapes)
 {
   char *ret, *r, *s;
-  int c;
+  unsigned char c;
 
-  r = ret = (char *)xmalloc (7 * strlen (seq) + 1);
+  r = ret = (char *)xmalloc (8 * strlen (seq) + 1);
   for (s = seq; *s; s++)
     {
       c = *s;
@@ -748,7 +735,9 @@ _rl_untranslate_macro_value (char *seq, int use_escapes)
          *r++ = '-';
          c = UNMETA (c);
        }
-      else if (c == ESC)
+
+      /* We want to keep from printing literal control chars */
+      if (c == ESC)
        {
          *r++ = '\\';
          c = 'e';
@@ -773,15 +762,10 @@ _rl_untranslate_macro_value (char *seq, int use_escapes)
          c = '?';
        }
 
-      if (c == ESC)
-       {
-         *r++ = '\\';
-         c = 'e';
-       }
-      else if (c == '\\' || c == '"')
+      if (c == '\\' || c == '"')
        *r++ = '\\';
 
-      *r++ = (unsigned char)c;
+      *r++ = c;
     }
   *r = '\0';
   return ret;
@@ -820,7 +804,7 @@ _rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int
     {
       unsigned char ic = keyseq[i];
 
-      if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
+      if (META_CHAR (ic) && FORCE_META_PREFIX())       /* XXX - might not want this */
        {
          if (map[ESC].type == ISKMAP)
            {
@@ -889,21 +873,30 @@ int
 rl_trim_arg_from_keyseq        (const char *keyseq, size_t len, Keymap map)
 {
   register int i, j, parsing_digits;
-  unsigned char ic;
+  unsigned int ic;             /* int to handle ANYOTHERKEY */
   Keymap map0;
 
   if (map == 0)
     map = _rl_keymap;
   map0 = map;
 
-  /* The digits following the initial one (e.g., the binding to digit-argument)
-    or the optional `-' in a binding to digit-argument or universal-argument
-    are not added to rl_executing_keyseq. This is basically everything read by
-    rl_digit_loop. The parsing_digits logic is here in case they ever are. */
+  /* Make sure to add the digits following the initial one (e.g., the binding
+     to digit-argument) and the optional `-' in a binding to digit-argument
+     or universal-argument to rl_executing_keyseq. This is basically
+     everything read by rl_digit_loop. */
   for (i = j = parsing_digits = 0; keyseq && i < len; i++)
     {
       ic = keyseq[i];
 
+      if (parsing_digits == 2)
+       {
+         if (ic == '-')        /* skip over runs of minus chars */
+           {
+             j = i + 1;
+             continue;
+           }
+         parsing_digits = 1;
+       }
       if (parsing_digits)
        {
          if (_rl_digit_p (ic))
@@ -916,10 +909,11 @@ rl_trim_arg_from_keyseq   (const char *keyseq, size_t len, Keymap map)
 
       if (map[ic].type == ISKMAP)
        {
-         if (i + 1 == len)
-           return -1;
          map = FUNCTION_TO_KEYMAP (map, ic);
-         continue;
+         if (i + 1 == len)
+           ic = ANYOTHERKEY;
+         else
+           continue;
        }
       if (map[ic].type == ISFUNC)
        {
@@ -938,16 +932,11 @@ rl_trim_arg_from_keyseq   (const char *keyseq, size_t len, Keymap map)
 
          /* This logic should be identical to rl_digit_loop */
          /* We accept M-- as equivalent to M--1, C-u- as equivalent to C-u-1
-            but set parsing_digits to 2 to note that we saw `-' */
-         if (map[ic].function == rl_universal_argument && (i + 1 == '-'))
-           {
-             i++;
-             parsing_digits = 2;
-           }
-         if (map[ic].function == rl_digit_argument && ic == '-')
-           {
-             parsing_digits = 2;
-           }
+            but set parsing_digits to 2 to note that we saw `-'. See above
+            for the check that skips over one or more `-' characters. */
+         if (map[ic].function == rl_universal_argument ||
+              (map[ic].function == rl_digit_argument && ic == '-'))
+           parsing_digits = 2;
 
          map = map0;
          j = i + 1;
@@ -1141,25 +1130,11 @@ _rl_read_init_file (const char *filename, int include_level)
 }
 
 static void
-#if defined (PREFER_STDARG)
 _rl_init_file_error (const char *format, ...)
-#else
-_rl_init_file_error (va_alist)
-     va_dcl
-#endif
 {
   va_list args;
-#if defined (PREFER_VARARGS)
-  char *format;
-#endif
 
-#if defined (PREFER_STDARG)
   va_start (args, format);
-#else
-  va_start (args);
-  format = va_arg (args, char *);
-#endif
-
   fprintf (stderr, "readline: ");
   if (currently_reading_init_file)
     fprintf (stderr, "%s: line %d: ", current_readline_init_file,
@@ -1257,7 +1232,7 @@ const char *rl_readline_name = "other";
 /* Stack of previous values of parsing_conditionalized_out. */
 static unsigned char *if_stack = (unsigned char *)NULL;
 static int if_stack_depth;
-static int if_stack_size;
+static size_t if_stack_size;
 
 /* Push _rl_parsing_conditionalized_out, and set parser state based
    on ARGS. */
@@ -1682,7 +1657,6 @@ rl_parse_and_bind (char *string)
   if (_rl_stricmp (string, "set") == 0)
     {
       char *var, *value, *e;
-      int s;
 
       var = string + i;
       /* Make VAR point to start of variable name. */
@@ -1860,7 +1834,7 @@ rl_parse_and_bind (char *string)
   if (*funname == '\'' || *funname == '"')
     {
       char useq[2];
-      int fl = strlen (funname);
+      size_t fl = strlen (funname);
 
       useq[0] = key; useq[1] = '\0';
       if (fl && funname[fl - 1] == *funname)
@@ -1890,6 +1864,7 @@ rl_parse_and_bind (char *string)
    false. */
 
 #define V_SPECIAL      0x1
+#define V_DEPRECATED   0x02
 
 static const struct {
   const char * const name;
@@ -1913,6 +1888,7 @@ static const struct {
   { "enable-keypad",           &_rl_enable_keypad,             0 },
   { "enable-meta-key",         &_rl_enable_meta,               0 },
   { "expand-tilde",            &rl_complete_with_tilde_expansion, 0 },
+  { "force-meta-prefix",       &_rl_force_meta_prefix,         0 },
   { "history-preserve-point",  &_rl_history_preserve_point,    0 },
   { "horizontal-scroll-mode",  &_rl_horizontal_scroll_mode,    0 },
   { "input-meta",              &_rl_meta_flag,                 0 },
@@ -1927,6 +1903,7 @@ static const struct {
   { "prefer-visible-bell",     &_rl_prefer_visible_bell,       V_SPECIAL },
   { "print-completions-horizontally", &_rl_print_completions_horizontally, 0 },
   { "revert-all-at-newline",   &_rl_revert_all_at_newline,     0 },
+  { "search-ignore-case",      &_rl_search_case_fold,          0 },
   { "show-all-if-ambiguous",   &_rl_complete_show_all,         0 },
   { "show-all-if-unmodified",  &_rl_complete_show_unmodified,  0 },
   { "show-mode-in-prompt",     &_rl_show_mode_in_prompt,       0 },
@@ -2605,17 +2582,13 @@ _rl_get_keyname (int key)
   char *keyname;
   int i, c;
 
-  keyname = (char *)xmalloc (8);
+  keyname = (char *)xmalloc (9);
 
   c = key;
   /* Since this is going to be used to write out keysequence-function
      pairs for possible inclusion in an inputrc file, we don't want to
      do any special meta processing on KEY. */
 
-#if 1
-  /* XXX - Experimental */
-  /* We might want to do this, but the old version of the code did not. */
-
   /* If this is an escape character, we don't want to do any more processing.
      Just add the special ESC key sequence and return. */
   if (c == ESC)
@@ -2625,28 +2598,23 @@ _rl_get_keyname (int key)
       keyname[2] = '\0';
       return keyname;
     }
-#endif
 
-  /* RUBOUT is translated directly into \C-? */
-  if (key == RUBOUT)
+  if (key == ANYOTHERKEY)
     {
-      keyname[0] = '\\';
-      keyname[1] = 'C';
-      keyname[2] = '-';
-      keyname[3] = '?';
-      keyname[4] = '\0';
+      keyname[0] = '\0';
       return keyname;
     }
 
   i = 0;
+
   /* Now add special prefixes needed for control characters.  This can
      potentially change C. */
-  if (CTRL_CHAR (c))
+  if (CTRL_CHAR (c) || c == RUBOUT)
     {
       keyname[i++] = '\\';
       keyname[i++] = 'C';
       keyname[i++] = '-';
-      c = _rl_to_lower (UNCTRL (c));
+      c = (c == RUBOUT) ? '?' : _rl_to_lower (UNCTRL (c));
     }
 
   /* XXX experimental code.  Turn the characters that are not ASCII or
@@ -2688,7 +2656,7 @@ rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
 {
   register int key;
   char **result;
-  int result_index, result_size;
+  size_t result_index, result_size;
 
   result = (char **)NULL;
   result_index = result_size = 0;
@@ -2724,53 +2692,24 @@ rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
          {
            char **seqs;
            register int i;
+           char *keyname;
+           size_t knlen;
 
            /* Find the list of keyseqs in this map which have FUNCTION as
               their target.  Add the key sequences found to RESULT. */
-           if (map[key].function)
-             seqs =
-               rl_invoking_keyseqs_in_map (function, FUNCTION_TO_KEYMAP (map, key));
-           else
+           if (map[key].function == 0)
              break;
 
+           seqs = rl_invoking_keyseqs_in_map (function, FUNCTION_TO_KEYMAP (map, key));
            if (seqs == 0)
              break;
 
+           keyname = _rl_get_keyname (key);
+           knlen = RL_STRLEN (keyname);
+
            for (i = 0; seqs[i]; i++)
              {
-               char *keyname = (char *)xmalloc (6 + strlen (seqs[i]));
-
-               if (key == ESC)
-                 {
-                   /* If ESC is the meta prefix and we're converting chars
-                      with the eighth bit set to ESC-prefixed sequences, then
-                      we can use \M-.  Otherwise we need to use the sequence
-                      for ESC. */
-                   if (_rl_convert_meta_chars_to_ascii && map[ESC].type == ISKMAP)
-                     sprintf (keyname, "\\M-");
-                   else
-                     sprintf (keyname, "\\e");
-                 }
-               else
-                 {
-                   int c = key, l = 0;
-                   if (CTRL_CHAR (c) || c == RUBOUT)
-                     {
-                       keyname[l++] = '\\';
-                       keyname[l++] = 'C';
-                       keyname[l++] = '-';
-                       c = (c == RUBOUT) ? '?' : _rl_to_lower (UNCTRL (c));
-                     }
-
-                   if (c == '\\' || c == '"')
-                     keyname[l++] = '\\';
-
-                   keyname[l++] = (char) c;
-                   keyname[l++] = '\0';
-                 }
-               
-               strcat (keyname, seqs[i]);
-               xfree (seqs[i]);
+               char *x;
 
                if (result_index + 2 > result_size)
                  {
@@ -2778,10 +2717,16 @@ rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
                    result = (char **)xrealloc (result, result_size * sizeof (char *));
                  }
 
-               result[result_index++] = keyname;
+               x = xmalloc (knlen + RL_STRLEN (seqs[i]) + 1);
+               strcpy (x, keyname);
+               strcpy (x + knlen, seqs[i]);
+               xfree (seqs[i]);
+
+               result[result_index++] = x;
                result[result_index] = (char *)NULL;
              }
 
+           xfree (keyname);
            xfree (seqs);
          }
          break;
@@ -2798,73 +2743,72 @@ rl_invoking_keyseqs (rl_command_func_t *function)
   return (rl_invoking_keyseqs_in_map (function, _rl_keymap));
 }
 
-/* Print all of the functions and their bindings to rl_outstream.  If
-   PRINT_READABLY is non-zero, then print the output in such a way
-   that it can be read back in. */
 void
-rl_function_dumper (int print_readably)
+rl_print_keybinding (const char *name, Keymap kmap, int print_readably)
 {
-  register int i;
-  const char **names;
-  const char *name;
+  rl_command_func_t *function;
+  char **invokers;
 
-  names = rl_funmap_names ();
-
-  fprintf (rl_outstream, "\n");
+  function = rl_named_function (name);
+  invokers = function ? rl_invoking_keyseqs_in_map (function, kmap ? kmap : _rl_keymap) : (char **)NULL;
 
-  for (i = 0; name = names[i]; i++)
+  if (print_readably)
     {
-      rl_command_func_t *function;
-      char **invokers;
-
-      function = rl_named_function (name);
-      invokers = rl_invoking_keyseqs_in_map (function, _rl_keymap);
-
-      if (print_readably)
+      if (!invokers)
+       fprintf (rl_outstream, "# %s (not bound)\n", name);
+      else
        {
-         if (!invokers)
-           fprintf (rl_outstream, "# %s (not bound)\n", name);
-         else
-           {
-             register int j;
+         register int j;
 
-             for (j = 0; invokers[j]; j++)
-               {
-                 fprintf (rl_outstream, "\"%s\": %s\n",
-                          invokers[j], name);
-                 xfree (invokers[j]);
-               }
-
-             xfree (invokers);
+         for (j = 0; invokers[j]; j++)
+           {
+             fprintf (rl_outstream, "\"%s\": %s\n", invokers[j], name);
+             xfree (invokers[j]);
            }
+
+         xfree (invokers);
        }
+    }
+  else
+    {
+      if (!invokers)
+       fprintf (rl_outstream, "%s is not bound to any keys\n", name);
       else
        {
-         if (!invokers)
-           fprintf (rl_outstream, "%s is not bound to any keys\n",
-                    name);
-         else
-           {
-             register int j;
+         register int j;
 
-             fprintf (rl_outstream, "%s can be found on ", name);
+         fprintf (rl_outstream, "%s can be found on ", name);
 
-             for (j = 0; invokers[j] && j < 5; j++)
-               {
-                 fprintf (rl_outstream, "\"%s\"%s", invokers[j],
-                          invokers[j + 1] ? ", " : ".\n");
-               }
+         for (j = 0; invokers[j] && j < 5; j++)
+           fprintf (rl_outstream, "\"%s\"%s", invokers[j], invokers[j + 1] ? ", " : ".\n");
 
-             if (j == 5 && invokers[j])
-               fprintf (rl_outstream, "...\n");
+         if (j == 5 && invokers[j])
+           fprintf (rl_outstream, "...\n");
 
-             for (j = 0; invokers[j]; j++)
-               xfree (invokers[j]);
+         for (j = 0; invokers[j]; j++)
+           xfree (invokers[j]);
 
-             xfree (invokers);
-           }
+         xfree (invokers);
        }
     }
+}
+
+/* Print all of the functions and their bindings to rl_outstream.  If
+   PRINT_READABLY is non-zero, then print the output in such a way
+   that it can be read back in. */
+void
+rl_function_dumper (int print_readably)
+{
+  register int i;
+  const char **names;
+  const char *name;
+
+  names = rl_funmap_names ();
+
+  fprintf (rl_outstream, "\n");
+
+  for (i = 0; name = names[i]; i++)
+    rl_print_keybinding (name, _rl_keymap, print_readably);
 
   xfree (names);
 }
@@ -2885,9 +2829,9 @@ rl_dump_functions (int count, int key)
 static void
 _rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix)
 {
-  register int key;
+  int key;
   char *keyname, *out;
-  int prefix_len;
+  size_t prefix_len;
 
   for (key = 0; key < KEYMAP_SIZE; key++)
     {
@@ -2897,6 +2841,16 @@ _rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix)
          keyname = _rl_get_keyname (key);
          out = _rl_untranslate_macro_value ((char *)map[key].function, 0);
 
+         /* If the application wants to print macros, let it. Give it the
+            ascii-fied value with backslash escapes, so it will have to use
+            rl_macro_bind (with its call to rl_translate_keyseq) to get the
+            same value back. */
+         if (rl_macro_display_hook)
+           {
+             (*rl_macro_display_hook) (keyname, out, print_readably, prefix);
+             break;
+           }
+
          if (print_readably)
            fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "",
                                                         keyname,
@@ -2960,10 +2914,40 @@ rl_dump_macros (int count, int key)
 static char *
 _rl_get_string_variable_value (const char *name)
 {
-  static char numbuf[32];
+  static char numbuf[64];      /* more than enough for INTMAX_MAX */
   char *ret;
 
-  if (_rl_stricmp (name, "bell-style") == 0)
+  if (_rl_stricmp (name, "active-region-start-color") == 0)
+    {
+      if (_rl_active_region_start_color == 0)
+       return 0;
+      ret = _rl_untranslate_macro_value (_rl_active_region_start_color, 0);
+      if (ret)
+       {
+         strncpy (numbuf, ret, sizeof (numbuf) - 1);
+         xfree (ret);
+         numbuf[sizeof(numbuf) - 1] = '\0';
+       }
+      else
+       numbuf[0] = '\0';
+      return numbuf;
+    }
+  else if (_rl_stricmp (name, "active-region-end-color") == 0)
+    {
+      if (_rl_active_region_end_color == 0)
+       return 0;
+      ret = _rl_untranslate_macro_value (_rl_active_region_end_color, 0);
+      if (ret)
+       {
+         strncpy (numbuf, ret, sizeof (numbuf) - 1);
+         xfree (ret);
+         numbuf[sizeof(numbuf) - 1] = '\0';
+       }
+      else
+       numbuf[0] = '\0';
+      return numbuf;
+    }
+  else if (_rl_stricmp (name, "bell-style") == 0)
     {
       switch (_rl_bell_preference)
        {
@@ -2980,24 +2964,40 @@ _rl_get_string_variable_value (const char *name)
     return (_rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT);
   else if (_rl_stricmp (name, "completion-display-width") == 0)
     {
+#if defined (HAVE_VSNPRINTF)
+      snprintf (numbuf, sizeof (numbuf), "%d", _rl_completion_columns);
+#else
       sprintf (numbuf, "%d", _rl_completion_columns);
+#endif
       return (numbuf);
     }
   else if (_rl_stricmp (name, "completion-prefix-display-length") == 0)
     {
+#if defined (HAVE_VSNPRINTF)
+      snprintf (numbuf, sizeof (numbuf), "%d", _rl_completion_prefix_display_length);
+#else
       sprintf (numbuf, "%d", _rl_completion_prefix_display_length);
+#endif
       return (numbuf);
     }
   else if (_rl_stricmp (name, "completion-query-items") == 0)
     {
+#if defined (HAVE_VSNPRINTF)
+      snprintf (numbuf, sizeof (numbuf), "%d", rl_completion_query_items);
+#else
       sprintf (numbuf, "%d", rl_completion_query_items);
+#endif
       return (numbuf);
     }
   else if (_rl_stricmp (name, "editing-mode") == 0)
     return (rl_get_keymap_name_from_edit_mode ());
   else if (_rl_stricmp (name, "history-size") == 0)
     {
-      sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : 0);
+#if defined (HAVE_VSNPRINTF)
+      snprintf (numbuf, sizeof (numbuf), "%d", history_is_stifled() ? history_max_entries : -1);
+#else
+      sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : -1);
+#endif
       return (numbuf);
     }
   else if (_rl_stricmp (name, "isearch-terminators") == 0)
@@ -3024,7 +3024,11 @@ _rl_get_string_variable_value (const char *name)
     }
   else if (_rl_stricmp (name, "keyseq-timeout") == 0)
     {
-      sprintf (numbuf, "%d", _rl_keyseq_timeout);    
+#if defined (HAVE_VSNPRINTF)
+      snprintf (numbuf, sizeof (numbuf), "%d", _rl_keyseq_timeout);
+#else
+      sprintf (numbuf, "%d", _rl_keyseq_timeout);
+#endif
       return (numbuf);
     }
   else if (_rl_stricmp (name, "emacs-mode-string") == 0)
index 7209ec38215e942248dd71f3b8487d923eba0881..180b683f9098a973646fb39de5e9dfc135d79f29 100644 (file)
@@ -1,6 +1,6 @@
 /* callback.c -- functions to use readline as an X `callback' mechanism. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2024 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.
@@ -116,8 +116,8 @@ rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *linefunc)
   do { \
     if (rl_persistent_signal_handlers == 0) \
       { \
-        rl_clear_signals (); \
-        if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
+       rl_clear_signals (); \
+       if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
       } \
     return; \
   } while (0)
@@ -323,6 +323,15 @@ rl_callback_handler_remove (void)
   rl_linefunc = NULL;
   RL_UNSETSTATE (RL_STATE_CALLBACK);
   RL_CHECK_SIGNALS ();
+
+  /* Do what we need to do to manage the undo list if we haven't already done
+     it in rl_callback_read_char(). If there's no undo list, we don't need to
+     do anything. It doesn't matter if we try to revert all previous lines a
+     second time; none of the history entries will have an undo list. */
+  if (rl_undo_list)
+    readline_common_teardown ();
+  /* At this point, rl_undo_list == NULL. */
+
   if (in_handler)
     {
       in_handler = 0;
@@ -363,7 +372,7 @@ rl_callback_sigcleanup (void)
   if (RL_ISSTATE (RL_STATE_ISEARCH))
     _rl_isearch_cleanup (_rl_iscxt, 0);
   else if (RL_ISSTATE (RL_STATE_NSEARCH))
-    _rl_nsearch_cleanup (_rl_nscxt, 0);
+    _rl_nsearch_sigcleanup (_rl_nscxt, 0);
   else if (RL_ISSTATE (RL_STATE_VIMOTION))
     RL_UNSETSTATE (RL_STATE_VIMOTION);
   else if (RL_ISSTATE (RL_STATE_NUMERICARG))
@@ -373,6 +382,9 @@ rl_callback_sigcleanup (void)
     }
   else if (RL_ISSTATE (RL_STATE_MULTIKEY))
     RL_UNSETSTATE (RL_STATE_MULTIKEY);
+  else if (RL_ISSTATE (RL_STATE_READSTR))
+    _rl_readstr_sigcleanup (_rl_rscxt, 0);
+
   if (RL_ISSTATE (RL_STATE_CHARSEARCH))
     RL_UNSETSTATE (RL_STATE_CHARSEARCH);
 
index 24a25f1f105bb45b41c8eefc5ad9b34d93aa941b..02f7e17e26927bdcc2b54393694a0a812967ff6c 100644 (file)
@@ -55,7 +55,7 @@
 #define largest_char 255                   /* Largest character value. */
 
 #define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
-#define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char)
+#define META_CHAR(c) ((unsigned char)(c) > meta_character_threshold && (unsigned char)(c) <= largest_char)
 
 #define CTRL(c) ((c) & control_character_mask)
 #define META(c) ((c) | meta_character_bit)
index 4212c64c36d1f68499fbead576f4e4fde780bc38..329acce58598f3828b5c0bd39323928e005c58fc 100644 (file)
--- a/colors.c
+++ b/colors.c
@@ -2,7 +2,7 @@
 
    Modified by Chet Ramey for Readline.
 
-   Copyright (C) 1985, 1988, 1990-1991, 1995-2021
+   Copyright (C) 1985, 1988, 1990-1991, 1995-2021, 2023
    Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -73,7 +73,7 @@
 static bool is_colored (enum indicator_no type);
 static void restore_default_color (void);
 
-#define RL_COLOR_PREFIX_EXTENSION      ".readline-colored-completion-prefix"
+#define RL_COLOR_PREFIX_EXTENSION      "readline-colored-completion-prefix"
 
 COLOR_EXT_TYPE *_rl_color_ext_list = 0;
 
index 70a0a608b85ddad06180a6eafbf8a04ec8b3aada..9abdedef2ec97e7302c06f1d4331386da48e3b2e 100644 (file)
@@ -1,6 +1,6 @@
 /* complete.c -- filename completion for readline. */
 
-/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.
@@ -77,12 +77,12 @@ extern int errno;
 #  include "colors.h"
 #endif
 
-#ifdef __STDC__
-typedef int QSFUNC (const void *, const void *);
-#else
-typedef int QSFUNC ();
+#ifndef MIN
+#define MIN(x,y) (((x) < (y)) ? (x): (y))
 #endif
 
+typedef int QSFUNC (const void *, const void *);
+
 #ifdef HAVE_LSTAT
 #  define LSTAT lstat
 #else
@@ -153,6 +153,8 @@ static int complete_get_screenwidth (void);
 
 static char *make_quoted_replacement (char *, int, char *);
 
+static void _rl_export_completions (char **, char *, int, int);
+
 /* **************************************************************** */
 /*                                                                 */
 /*     Completion matching, from readline's point of view.         */
@@ -250,11 +252,24 @@ rl_icppfunc_t *rl_filename_stat_hook = (rl_icppfunc_t *)NULL;
    either return its first argument (if no conversion takes place) or
    newly-allocated memory.  This can, for instance, convert filenames
    between character sets for comparison against what's typed at the
-   keyboard.  The returned value is what is added to the list of
-   matches.  The second argument is the length of the filename to be
-   converted. */
+   keyboard (after its potential modification by rl_completion_rewrite_hook).
+   The returned value is what is added to the list of matches.
+   The second argument is the length of the filename to be converted. */
 rl_dequote_func_t *rl_filename_rewrite_hook = (rl_dequote_func_t *)NULL;
 
+/* If non-zero, this is the address of a function to call before
+   comparing the filename portion of a word to be completed with directory
+   entries from the filesystem. This takes the address of the partial word
+   to be completed, after any rl_filename_dequoting_function has been applied.
+   The function should either return its first argument (if no conversion
+   takes place) or newly-allocated memory. This can, for instance, convert
+   the filename portion of the completion word to a character set suitable
+   for comparison against directory entries read from the filesystem (after
+   their potential modification by rl_filename_rewrite_hook). 
+   The returned value is what is added to the list of matches.
+   The second argument is the length of the filename to be converted. */
+rl_dequote_func_t *rl_completion_rewrite_hook = (rl_dequote_func_t *)NULL;
+
 /* Non-zero means readline completion functions perform tilde expansion. */
 int rl_complete_with_tilde_expansion = 0;
 
@@ -340,6 +355,15 @@ int rl_filename_completion_desired = 0;
    entry finder function. */
 int rl_filename_quoting_desired = 1;
 
+/* Non-zero means we should apply filename-type quoting to all completions
+   even if we are not otherwise treating the matches as filenames. This is
+   ALWAYS zero on entry, and can only be changed within a completion entry
+   finder function. */
+int rl_full_quoting_desired = 0;
+
+#define QUOTING_DESIRED() \
+  (rl_full_quoting_desired || (rl_filename_completion_desired && rl_filename_quoting_desired))
+
 /* This function, if defined, is called by the completer when real
    filename completion is done, after all the matching names have been
    generated. It is passed a (char**) known as matches in the code below.
@@ -455,6 +479,7 @@ rl_complete (int ignore, int invoking_key)
 int
 rl_possible_completions (int ignore, int invoking_key)
 {
+  last_completion_failed = 0;
   rl_completion_invoking_key = invoking_key;
   return (rl_complete_internal ('?'));
 }
@@ -484,12 +509,50 @@ rl_completion_mode (rl_command_func_t *cfunc)
     return TAB;
 }
 
+/********************************************/
+/*                                         */
+/*  Completion signal handling and cleanup  */
+/*                                         */
+/********************************************/
+
+/* State to clean up and free if completion is interrupted by a signal. */
+typedef struct {
+  char **matches;
+  char *saved_line;
+} complete_sigcleanarg_t;
+
+static void
+_rl_complete_sigcleanup (int sig, void *ptr)
+{
+  complete_sigcleanarg_t *arg;
+
+  if (sig == SIGINT)   /* XXX - for now */
+    {
+      arg = ptr;
+      _rl_free_match_list (arg->matches);
+      FREE (arg->saved_line);
+      _rl_complete_display_matches_interrupt = 1;
+    }
+}
+
 /************************************/
 /*                                 */
 /*    Completion utility functions  */
 /*                                 */
 /************************************/
 
+static inline size_t
+vector_len (char **vector)
+{
+  size_t ret;
+
+  if (vector == 0 || vector[0] == 0)
+    return (size_t)0;
+  for (ret = 0; vector[ret]; ret++)
+    ;
+  return ret;
+}
+
 /* Reset public readline state on a signal or other event. */
 void
 _rl_reset_completion_state (void)
@@ -498,16 +561,6 @@ _rl_reset_completion_state (void)
   rl_completion_quote_character = 0;
 }
 
-static void
-_rl_complete_sigcleanup (int sig, void *ptr)
-{
-  if (sig == SIGINT)   /* XXX - for now */
-    {
-      _rl_free_match_list ((char **)ptr);
-      _rl_complete_display_matches_interrupt = 1;
-    }
-}
-
 /* Set default values for readline word completion.  These are the variables
    that application completion functions can change or inspect. */
 static void
@@ -516,6 +569,7 @@ set_completion_defaults (int what_to_do)
   /* Only the completion entry function can change these. */
   rl_filename_completion_desired = 0;
   rl_filename_quoting_desired = 1;
+  rl_full_quoting_desired = 0;
   rl_completion_type = what_to_do;
   rl_completion_suppress_append = rl_completion_suppress_quote = 0;
   rl_completion_append_character = ' ';
@@ -827,7 +881,8 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)
      possible completions.  Only cut off prefix_bytes if we're going to be
      printing the ellipsis, which takes precedence over coloring the
      completion prefix (see print_filename() below). */
-  if (_rl_completion_prefix_display_length > 0 && prefix_bytes >= print_len)
+  if (_rl_completion_prefix_display_length > 0 && prefix_bytes >= print_len &&
+      prefix_bytes > _rl_completion_prefix_display_length)
     prefix_bytes = 0;
 
 #if defined (COLOR_SUPPORT)
@@ -846,13 +901,16 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)
       printed_len = ELLIPSIS_LEN;
     }
 #if defined (COLOR_SUPPORT)
-  else if (prefix_bytes && _rl_colored_completion_prefix > 0)
+  else if (prefix_bytes && _rl_completion_prefix_display_length <= 0 &&
+          _rl_colored_completion_prefix > 0)
     {
       common_prefix_len = prefix_bytes;
       prefix_bytes = 0;
       /* XXX - print color indicator start here */
       colored_prefix_start ();
     }
+  else
+    common_prefix_len = prefix_bytes = 0;      /* no ellipsis or color */
 #endif
 
   s = to_print + prefix_bytes;
@@ -1261,8 +1319,7 @@ remove_duplicate_matches (char **matches)
   char **temp_array;
 
   /* Sort the items. */
-  for (i = 0; matches[i]; i++)
-    ;
+  i = vector_len (matches);
 
   /* Sort the array without matches[0], since we need it to
      stay in place no matter what. */
@@ -1319,8 +1376,9 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
   int low;             /* Count of max-matched characters. */
   int lx;
   char *dtext;         /* dequoted TEXT, if needed */
+  size_t si1, si2;
+  size_t len1, len2;
 #if defined (HANDLE_MULTIBYTE)
-  int v;
   size_t v1, v2;
   mbstate_t ps1, ps2;
   WCHAR_T wc1, wc2;
@@ -1345,7 +1403,10 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
          memset (&ps2, 0, sizeof (mbstate_t));
        }
 #endif
-      for (si = 0; (c1 = match_list[i][si]) && (c2 = match_list[i + 1][si]); si++)
+      len1 = strlen (match_list[i]);
+      len2 = strlen (match_list[i + 1]);
+
+      for (si1 = si2 = 0; (c1 = match_list[i][si1]) && (c2 = match_list[i + 1][si2]); si1++,si2++)
        {
            if (_rl_completion_case_fold)
              {
@@ -1355,8 +1416,8 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
 #if defined (HANDLE_MULTIBYTE)
            if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
              {
-               v1 = MBRTOWC (&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1);
-               v2 = MBRTOWC (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2);
+               v1 = MBRTOWC (&wc1, match_list[i]+si1, len1 - si1, &ps1);
+               v2 = MBRTOWC (&wc2, match_list[i+1]+si2, len2 - si2, &ps2);
                if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2))
                  {
                    if (c1 != c2)       /* do byte comparison */
@@ -1370,8 +1431,11 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
                  }
                if (wc1 != wc2)
                  break;
-               else if (v1 > 1)
-                 si += v1 - 1;
+
+               if (v1 > 1)
+                 si1 += v1 - 1;
+               if (v2 > 1)
+                 si2 += v2 - 1;
              }
            else
 #endif
@@ -1379,6 +1443,7 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
              break;
        }
 
+      si = MIN (si1, si2);     /* use shorter of matches of different length */
       if (low > si)
        low = si;
     }
@@ -1412,10 +1477,8 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
                   check against the list of matches
                FI */
          dtext = (char *)NULL;
-         if (rl_filename_completion_desired &&
-             rl_filename_dequoting_function &&
-             rl_completion_found_quote &&
-             rl_filename_quoting_desired)
+         if (QUOTING_DESIRED() && rl_completion_found_quote &&
+               rl_filename_dequoting_function)
            {
              dtext = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character);
              text = dtext;
@@ -1543,7 +1606,7 @@ rl_display_match_list (char **matches, int len, int max)
       /* check again in case of /usr/src/ */
       temp = rl_filename_completion_desired ? strrchr (t, '/') : 0;
       common_length = temp ? fnwidth (temp) : fnwidth (t);
-      sind = temp ? strlen (temp) : strlen (t);
+      sind = temp ? RL_STRLEN (temp) : RL_STRLEN (t);
       if (common_length > max || sind > max)
        common_length = sind = 0;
 
@@ -1630,7 +1693,7 @@ rl_display_match_list (char **matches, int len, int max)
          if (_rl_page_completions && lines >= (_rl_screenheight - 1) && i < count)
            {
              lines = _rl_internal_pager (lines);
-             if (lines < 0)
+             if (lines < 0 || _rl_complete_display_matches_interrupt)
                return;
            }
        }
@@ -1658,7 +1721,7 @@ rl_display_match_list (char **matches, int len, int max)
                  if (_rl_page_completions && lines >= _rl_screenheight - 1)
                    {
                      lines = _rl_internal_pager (lines);
-                     if (lines < 0)
+                     if (lines < 0 || _rl_complete_display_matches_interrupt)
                        return;
                    }
                }
@@ -1745,7 +1808,9 @@ display_matches (char **matches)
        }
     }
 
-  rl_display_match_list (matches, len, max);
+  /* We rely on the caller to set MATCHES to 0 when this returns. */
+  if (_rl_complete_display_matches_interrupt == 0)
+    rl_display_match_list (matches, len, max);
 
   rl_forced_update_display ();
   rl_display_fixed = 1;
@@ -1768,9 +1833,7 @@ make_quoted_replacement (char *match, int mtype, char *qc)
      matches don't require a quoted substring. */
   replacement = match;
 
-  should_quote = match && rl_completer_quote_characters &&
-                       rl_filename_completion_desired &&
-                       rl_filename_quoting_desired;
+  should_quote = match && rl_completer_quote_characters && QUOTING_DESIRED();
 
   if (should_quote)
     should_quote = should_quote && (!qc || !*qc ||
@@ -1784,6 +1847,11 @@ make_quoted_replacement (char *match, int mtype, char *qc)
       should_quote = rl_filename_quote_characters
                        ? (_rl_strpbrk (match, rl_filename_quote_characters) != 0)
                        : 0;
+      /* If we saw a quote in the original word, but readline thinks the
+        match doesn't need to be quoted, and the application has a filename
+        quoting function, give the application a chance to quote it if
+        needed so we don't second-guess the user. */
+      should_quote |= *qc == 0 && rl_completion_found_quote && mtype != NO_MATCH && rl_filename_quoting_function;
 
       do_replace = should_quote ? mtype : NO_MATCH;
       /* Quote the replacement, since we found an embedded
@@ -1791,6 +1859,7 @@ make_quoted_replacement (char *match, int mtype, char *qc)
       if (do_replace != NO_MATCH && rl_filename_quoting_function)
        replacement = (*rl_filename_quoting_function) (match, do_replace, qc);
     }
+
   return (replacement);
 }
 
@@ -1976,8 +2045,7 @@ compare_match (char *text, const char *match)
   char *temp;
   int r;
 
-  if (rl_filename_completion_desired && rl_filename_quoting_desired && 
-      rl_completion_found_quote && rl_filename_dequoting_function)
+  if (QUOTING_DESIRED() && rl_completion_found_quote && rl_filename_dequoting_function)
     {
       temp = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
       r = strcmp (temp, match);
@@ -1995,16 +2063,19 @@ compare_match (char *text, const char *match)
    `!' means to do standard completion, and list all possible completions if
    there is more than one.
    `@' means to do standard completion, and list all possible completions if
-   there is more than one and partial completion is not possible. */
+   there is more than one and partial completion is not possible.
+   `$' implements a protocol for exporting completions and information about
+   what is being completed to another process via rl_outstream. */
 int
 rl_complete_internal (int what_to_do)
 {
   char **matches;
   rl_compentry_func_t *our_func;
-  int start, end, delimiter, found_quote, i, nontrivial_lcd;
+  int start, end, delimiter, found_quote, i, nontrivial_lcd, do_display;
   char *text, *saved_line_buffer;
   char quote_char;
   int tlen, mlen, saved_last_completion_failed;
+  complete_sigcleanarg_t cleanarg;     /* state to clean up on signal */
 
   RL_SETSTATE(RL_STATE_COMPLETING);
 
@@ -2039,8 +2110,7 @@ rl_complete_internal (int what_to_do)
      strcmp directly. */
   /* nontrivial_lcd is set if the common prefix adds something to the word
      being completed. */
-  if (rl_filename_completion_desired && rl_filename_quoting_desired &&
-      rl_completion_found_quote && rl_filename_dequoting_function)
+  if (QUOTING_DESIRED() && rl_completion_found_quote && rl_filename_dequoting_function)
     {
       char *t;
       t = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
@@ -2052,9 +2122,11 @@ rl_complete_internal (int what_to_do)
     nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
   if (what_to_do == '!' || what_to_do == '@')
     tlen = strlen (text);
-  xfree (text);
 
-  if (matches == 0)
+  if (what_to_do != '$')
+    xfree (text);
+
+  if (matches == 0 && what_to_do != '$')       /* we can export no completions */
     {
       rl_ding ();
       FREE (saved_line_buffer);
@@ -2070,7 +2142,7 @@ rl_complete_internal (int what_to_do)
      rl_filename_completion_function does this. */
   i = rl_filename_completion_desired;
 
-  if (postprocess_matches (&matches, i) == 0)
+  if (postprocess_matches (&matches, i) == 0 && what_to_do != '$')     /* we can export no completions */
     {
       rl_ding ();
       FREE (saved_line_buffer);
@@ -2084,6 +2156,8 @@ rl_complete_internal (int what_to_do)
   if (matches && matches[0] && *matches[0])
     last_completion_failed = 0;
 
+  do_display = 0;
+
   switch (what_to_do)
     {
     case TAB:
@@ -2117,13 +2191,13 @@ rl_complete_internal (int what_to_do)
        {
          if (what_to_do == '!')
            {
-             display_matches (matches);
+             do_display = 1;
              break;
            }
          else if (what_to_do == '@')
            {
              if (nontrivial_lcd == 0)
-               display_matches (matches);
+               do_display = 1;
              break;
            }
          else if (rl_editing_mode != vi_mode)
@@ -2147,23 +2221,16 @@ rl_complete_internal (int what_to_do)
          append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd);
          break;
        }
-      
-      if (rl_completion_display_matches_hook == 0)
-       {
-         _rl_sigcleanup = _rl_complete_sigcleanup;
-         _rl_sigcleanarg = matches;
-         _rl_complete_display_matches_interrupt = 0;
-       }
-      display_matches (matches);
-      if (_rl_complete_display_matches_interrupt)
-        {
-          matches = 0;         /* already freed by rl_complete_sigcleanup */
-          _rl_complete_display_matches_interrupt = 0;
-         if (rl_signal_event_hook)
-           (*rl_signal_event_hook) ();         /* XXX */
-        }
-      _rl_sigcleanup = 0;
-      _rl_sigcleanarg = 0;
+      /*FALLTHROUGH*/
+
+    case '%':                  /* used by menu_complete */
+    case '|':                  /* add this for unconditional display */
+      do_display = 1;
+      break;
+
+    case '$':
+      _rl_export_completions (matches, text, start, end);
+      xfree (text);
       break;
 
     default:
@@ -2176,6 +2243,34 @@ rl_complete_internal (int what_to_do)
       return 1;
     }
 
+  /* If we need to display the match list, set up to clean it up on receipt of
+     a signal and do it here. If the application has registered a function to
+     display the matches, let it do the work. */
+  if (do_display)
+    {
+      if (rl_completion_display_matches_hook == 0)
+       {
+         _rl_sigcleanup = _rl_complete_sigcleanup;
+         cleanarg.matches = matches;
+         cleanarg.saved_line = saved_line_buffer;
+         _rl_sigcleanarg = &cleanarg;
+         _rl_complete_display_matches_interrupt = 0;
+       }
+
+      display_matches (matches);
+
+      if (_rl_complete_display_matches_interrupt)
+       {
+         matches = 0;          /* Both already freed by _rl_complete_sigcleanup */
+         saved_line_buffer = 0;
+         _rl_complete_display_matches_interrupt = 0;
+         if (rl_signal_event_hook)
+           (*rl_signal_event_hook) ();
+       }
+      _rl_sigcleanup = 0;
+      _rl_sigcleanarg = 0;
+    }
+
   _rl_free_match_list (matches);
 
   /* Check to see if the line has changed through all of this manipulation. */
@@ -2216,7 +2311,7 @@ rl_completion_matches (const char *text, rl_compentry_func_t *entry_function)
   register int i;
 
   /* Number of slots in match_list. */
-  int match_list_size;
+  size_t match_list_size;
 
   /* The list of matches. */
   char **match_list;
@@ -2281,9 +2376,9 @@ rl_completion_matches (const char *text, rl_compentry_func_t *entry_function)
 char *
 rl_username_completion_function (const char *text, int state)
 {
-#if defined (__WIN32__) || defined (__OPENNT)
+#if defined (_WIN32) || defined (__OPENNT) || !defined (HAVE_GETPWENT)
   return (char *)NULL;
-#else /* !__WIN32__ && !__OPENNT) */
+#else /* !_WIN32 && !__OPENNT) && HAVE_GETPWENT */
   static char *username = (char *)NULL;
   static struct passwd *entry;
   static int namelen, first_char, first_char_loc;
@@ -2298,25 +2393,19 @@ rl_username_completion_function (const char *text, int state)
 
       username = savestring (&text[first_char_loc]);
       namelen = strlen (username);
-#if defined (HAVE_GETPWENT)
       setpwent ();
-#endif
     }
 
-#if defined (HAVE_GETPWENT)
   while (entry = getpwent ())
     {
       /* Null usernames should result in all users as possible completions. */
       if (namelen == 0 || (STREQN (username, entry->pw_name, namelen)))
        break;
     }
-#endif
 
   if (entry == 0)
     {
-#if defined (HAVE_GETPWENT)
       endpwent ();
-#endif
       return ((char *)NULL);
     }
   else
@@ -2332,7 +2421,7 @@ rl_username_completion_function (const char *text, int state)
 
       return (value);
     }
-#endif /* !__WIN32__ && !__OPENNT */
+#endif /* !_WIN32 && !__OPENNT && HAVE_GETPWENT */
 }
 
 /* Return non-zero if CONVFN matches FILENAME up to the length of FILENAME
@@ -2343,18 +2432,7 @@ rl_username_completion_function (const char *text, int state)
 static int
 complete_fncmp (const char *convfn, int convlen, const char *filename, int filename_len)
 {
-  register char *s1, *s2;
-  int d, len;
-#if defined (HANDLE_MULTIBYTE)
-  size_t v1, v2;
-  mbstate_t ps1, ps2;
-  WCHAR_T wc1, wc2;
-#endif
-
-#if defined (HANDLE_MULTIBYTE)
-  memset (&ps1, 0, sizeof (mbstate_t));
-  memset (&ps2, 0, sizeof (mbstate_t));
-#endif
+  size_t len;
 
   if (filename_len == 0)
     return 1;
@@ -2362,100 +2440,26 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen
     return 0;
 
   len = filename_len;
-  s1 = (char *)convfn;
-  s2 = (char *)filename;
 
   /* Otherwise, if these match up to the length of filename, then
      it is a match. */
-  if (_rl_completion_case_fold && _rl_completion_case_map)
+  if (_rl_completion_case_fold)
     {
-      /* Case-insensitive comparison treating _ and - as equivalent */
+      /* Case-insensitive comparison treating _ and - as equivalent if
+        _rl_completion_case_map is non-zero */
 #if defined (HANDLE_MULTIBYTE)
       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-       {
-         do
-           {
-             v1 = MBRTOWC (&wc1, s1, convlen, &ps1);
-             v2 = MBRTOWC (&wc2, s2, filename_len, &ps2);
-             if (v1 == 0 && v2 == 0)
-               return 1;
-             else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2))
-               {
-                 if (*s1 != *s2)               /* do byte comparison */
-                   return 0;
-                 else if ((*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_'))
-                   return 0;
-                 s1++; s2++; len--;
-                 continue;
-               }
-             wc1 = towlower (wc1);
-             wc2 = towlower (wc2);
-             s1 += v1;
-             s2 += v1;
-             len -= v1;
-             if ((wc1 == L'-' || wc1 == L'_') && (wc2 == L'-' || wc2 == L'_'))
-               continue;
-             if (wc1 != wc2)
-               return 0;
-           }
-         while (len != 0);
-       }
-      else
-#endif
-       {
-       do
-         {
-           d = _rl_to_lower (*s1) - _rl_to_lower (*s2);
-           /* *s1 == [-_] && *s2 == [-_] */
-           if ((*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_'))
-             d = 0;
-           if (d != 0)
-             return 0;
-           s1++; s2++; /* already checked convlen >= filename_len */
-         }
-       while (--len != 0);
-       }
-
-      return 1;
-    }
-  else if (_rl_completion_case_fold)
-    {
-#if defined (HANDLE_MULTIBYTE)
-      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
-       {
-         do
-           {
-             v1 = MBRTOWC (&wc1, s1, convlen, &ps1);
-             v2 = MBRTOWC (&wc2, s2, filename_len, &ps2);
-             if (v1 == 0 && v2 == 0)
-               return 1;
-             else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2))
-               {
-                 if (*s1 != *s2)               /* do byte comparison */
-                   return 0;
-                 s1++; s2++; len--;
-                 continue;
-               }
-             wc1 = towlower (wc1);
-             wc2 = towlower (wc2);
-             if (wc1 != wc2)
-               return 0;
-             s1 += v1;
-             s2 += v1;
-             len -= v1;
-           }
-         while (len != 0);
-         return 1;
-       }
+       return (_rl_mb_strcaseeqn (convfn, convlen, filename, filename_len, len, _rl_completion_case_map));
       else
 #endif
       if ((_rl_to_lower (convfn[0]) == _rl_to_lower (filename[0])) &&
-         (convlen >= filename_len) &&
-         (_rl_strnicmp (filename, convfn, filename_len) == 0))
-       return 1;
+         (convlen >= filename_len))
+       return (_rl_strcaseeqn (convfn, filename, len, _rl_completion_case_map));
     }
   else
     {
+      /* XXX - add new _rl_mb_streqn function (like mbsncmp) instead of
+        relying on byte equivalence? */
       if ((convfn[0] == filename[0]) &&
          (convlen >= filename_len) &&
          (strncmp (filename, convfn, filename_len) == 0))
@@ -2477,7 +2481,8 @@ rl_filename_completion_function (const char *text, int state)
   static char *users_dirname = (char *)NULL;
   static int filename_len;
   char *temp, *dentry, *convfn;
-  int dirlen, dentlen, convlen;
+  size_t dirlen;
+  int dentlen, convlen;
   int tilde_dirname;
   struct dirent *entry;
 
@@ -2586,6 +2591,18 @@ rl_filename_completion_function (const char *text, int state)
        }
       filename_len = strlen (filename);
 
+      /* Normalize the filename if the application has set a rewrite hook. */
+      if (*filename && rl_completion_rewrite_hook)
+       {
+         temp = (*rl_completion_rewrite_hook) (filename, filename_len);
+         if (temp != filename)
+           {
+             xfree (filename);
+             filename = temp;
+             filename_len = strlen (filename);
+           }
+       }
+
       rl_filename_completion_desired = 1;
     }
 
@@ -2598,6 +2615,7 @@ rl_filename_completion_function (const char *text, int state)
   /* Now that we have some state, we can read the directory. */
 
   entry = (struct dirent *)NULL;
+  convfn = dentry = 0;
   while (directory && (entry = readdir (directory)))
     {
       convfn = dentry = entry->d_name;
@@ -2615,17 +2633,20 @@ rl_filename_completion_function (const char *text, int state)
       if (filename_len == 0)
        {
          if (_rl_match_hidden_files == 0 && HIDDEN_FILE (convfn))
-           continue;
+           {
+             if (convfn != dentry)
+               xfree (convfn);
+             continue;
+           }
 
          if (convfn[0] != '.' ||
               (convfn[1] && (convfn[1] != '.' || convfn[2])))
            break;
        }
-      else
-       {
-         if (complete_fncmp (convfn, convlen, filename, filename_len))
-           break;
-       }
+      else if (complete_fncmp (convfn, convlen, filename, filename_len))
+       break;
+      else if (convfn != dentry)
+       xfree (convfn);
     }
 
   if (entry == 0)
@@ -2777,8 +2798,8 @@ rl_old_menu_complete (int count, int invoking_key)
 
       RL_UNSETSTATE(RL_STATE_COMPLETING);
 
-      for (match_list_size = 0; matches[match_list_size]; match_list_size++)
-        ;
+      match_list_size = vector_len (matches);
+
       /* matches[0] is lcd if match_list_size > 1, but the circular buffer
         code below should take care of it. */
 
@@ -2847,7 +2868,7 @@ rl_menu_complete (int count, int ignore)
   static int full_completion = 0;      /* set to 1 if menu completion should reinitialize on next call */
   static int orig_start, orig_end;
   static char quote_char;
-  static int delimiter, cstate;
+  static int delimiter;
 
   /* The first time through, we generate the list of matches and set things
      up to insert them. */
@@ -2912,8 +2933,7 @@ rl_menu_complete (int count, int ignore)
 
       RL_UNSETSTATE(RL_STATE_COMPLETING);
 
-      for (match_list_size = 0; matches[match_list_size]; match_list_size++)
-        ;
+      match_list_size = vector_len (matches);
 
       if (match_list_size == 0) 
        {
@@ -2943,7 +2963,7 @@ rl_menu_complete (int count, int ignore)
          if (rl_completion_query_items > 0 && match_list_size >= rl_completion_query_items)
            {
              rl_ding ();
-             FREE (matches);
+             _rl_free_match_list (matches);
              matches = (char **)0;
              full_completion = 1;
              return (0);
@@ -3012,3 +3032,58 @@ rl_backward_menu_complete (int count, int key)
      arguments for menu-complete, and vice versa. */
   return (rl_menu_complete (-count, key));
 }
+
+/* This implements a protocol to export completions to another process or
+   calling application via rl_outstream.
+
+   MATCHES are the possible completions for TEXT, which is the text between
+   START and END in rl_line_buffer.
+
+   We print:
+       N - the number of matches
+       T - the word being completed
+       S:E - the start and end offsets of T in rl_line_buffer
+       then each match, one per line
+
+  If there are no matches, MATCHES is NULL, N will be 0, and there will be
+  no output after S:E.
+
+  Since MATCHES[0] can be empty if there is no common prefix of the elements
+  of MATCHES, applications should be prepared to deal with an empty line
+  preceding the matches.
+*/
+
+static void
+_rl_export_completions (char **matches, char *text, int start, int end)
+{
+  size_t len, i;
+
+  len = vector_len (matches);
+
+  if (RL_ISSTATE (RL_STATE_TERMPREPPED))
+    fprintf (rl_outstream, "\r\n");
+  fprintf (rl_outstream, "%zd\n", len);
+  fprintf (rl_outstream, "%s\n", text);
+  fprintf (rl_outstream, "%d:%d\n", start, end);       /* : because it's not a radix character */
+  for (i = 0; i < len; i++)
+    {
+      print_filename (matches[i], matches[i], 0);
+      fprintf (rl_outstream, "\n");
+    }
+  fflush (rl_outstream);
+}
+
+int
+rl_export_completions (int count, int key)
+{
+  rl_complete_internal ('$');
+
+  /* Clear the line buffer, currently requires a count argument. */
+  if (count > 1)
+    {
+      rl_delete_text (0, rl_end);              /* undoable */
+      rl_point = rl_mark = 0;
+    }
+
+  return 0;
+}
index 521e7789ba79d1c11200824a1c15bd80c78557fc..71b051e2c80aa291dc4a8160d09203ba5bfc5e79 100644 (file)
@@ -1,3 +1,21 @@
+/* config.h.in for the GNU readline library. */
+
+/* Copyright (C) 1994-2024 Free Software Foundation, Inc.
+
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 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/>.
+*/
+
 /* config.h.in.  Maintained by hand. */
 
 /* Template definitions for autoconf */
@@ -27,6 +45,8 @@
 
 #undef ssize_t
 
+#undef mode_t
+
 #undef const
 
 #undef volatile
 /* Define if you have the mbrtowc function. */
 #undef HAVE_MBRTOWC
 
+/* Define if you have the mbscasecmp function. */
+#undef HAVE_MBSCASECMP
+
+/* Define if you have the mbscmp function. */
+#undef HAVE_MBSCMP
+
+/* Define if you have the mbsncmp function. */
+#undef HAVE_MBSNCMP
+
 /* Define if you have the mbsrtowcs function. */
 #undef HAVE_MBSRTOWCS
 
 /* Define if you have the tcgetattr function.  */
 #undef HAVE_TCGETATTR
 
+/* Define if you have the tcgetwinsize function.  */
+#undef HAVE_TCGETWINSIZE
+
+/* Define if you have the tcsetwinsize function.  */
+#undef HAVE_TCSETWINSIZE
+
 /* Define if you have the towlower function.  */
 #undef HAVE_TOWLOWER
 
 /* Define if you have the wcscoll function.  */
 #undef HAVE_WCSCOLL
 
+#undef HAVE_WCSLEN
+#undef HAVE_WCSNLEN
+
+/* Define if you have the wcsnrtombs function.  */
+#undef HAVE_WCSNRTOMBS
+
 /* Define if you have the wctype function.  */
 #undef HAVE_WCTYPE
 
index cb4e07a0004384c3167c63f3d21593f1ffd63299..e74c2292ede883cb0242c617b721cc3f81b88c0c 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,12 +1,12 @@
 #! /bin/sh
-# From configure.ac for Readline 8.2, version 2.97.
+# From configure.ac for Readline 8.3, version 2.103.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for readline 8.2.
+# Generated by GNU Autoconf 2.72 for readline 8.3.
 #
 # Report bugs to <bug-readline@gnu.org>.
 #
 #
-# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
 # Inc.
 #
 #
@@ -18,7 +18,6 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-as_nop=:
 if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
 then :
   emulate sh
@@ -27,12 +26,13 @@ then :
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else $as_nop
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
@@ -104,7 +104,7 @@ IFS=$as_save_IFS
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
@@ -134,15 +134,14 @@ case $- in # ((((
 esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
+# out after a failed 'exec'.
 printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
   fi
   # We don't want this to propagate to other subprocesses.
           { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="as_nop=:
-if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+  as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
 then :
   emulate sh
   NULLCMD=:
@@ -150,12 +149,13 @@ then :
   # is contrary to our usage.  Disable this feature.
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
-else \$as_nop
-  case \`(set -o) 2>/dev/null\` in #(
+else case e in #(
+  e) case \`(set -o) 2>/dev/null\` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 "
@@ -173,8 +173,9 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
 if ( set x; as_fn_ret_success y && test x = \"\$1\" )
 then :
 
-else \$as_nop
-  exitcode=1; echo positional parameters were not saved.
+else case e in #(
+  e) exitcode=1; echo positional parameters were not saved. ;;
+esac
 fi
 test x\$exitcode = x0 || exit 1
 blah=\$(echo \$(echo blah))
@@ -188,14 +189,15 @@ test \$(( 1 + 1 )) = 2 || exit 1"
   if (eval "$as_required") 2>/dev/null
 then :
   as_have_required=yes
-else $as_nop
-  as_have_required=no
+else case e in #(
+  e) as_have_required=no ;;
+esac
 fi
   if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
 then :
 
-else $as_nop
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
@@ -228,12 +230,13 @@ IFS=$as_save_IFS
 if $as_found
 then :
 
-else $as_nop
-  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+else case e in #(
+  e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
              as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
 then :
   CONFIG_SHELL=$SHELL as_have_required=yes
-fi
+fi ;;
+esac
 fi
 
 
@@ -255,7 +258,7 @@ case $- in # ((((
 esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
+# out after a failed 'exec'.
 printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
 fi
@@ -275,7 +278,8 @@ $0: a modern shell, or manually run the script under such a
 $0: shell if you do have one."
   fi
   exit 1
-fi
+fi ;;
+esac
 fi
 fi
 SHELL=${CONFIG_SHELL-/bin/sh}
@@ -314,14 +318,6 @@ as_fn_exit ()
   as_fn_set_status $1
   exit $1
 } # as_fn_exit
-# as_fn_nop
-# ---------
-# Do nothing but, unlike ":", preserve the value of $?.
-as_fn_nop ()
-{
-  return $?
-}
-as_nop=as_fn_nop
 
 # as_fn_mkdir_p
 # -------------
@@ -390,11 +386,12 @@ then :
   {
     eval $1+=\$2
   }'
-else $as_nop
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -408,21 +405,14 @@ then :
   {
     as_val=$(( $* ))
   }'
-else $as_nop
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
-# as_fn_nop
-# ---------
-# Do nothing but, unlike ":", preserve the value of $?.
-as_fn_nop ()
-{
-  return $?
-}
-as_nop=as_fn_nop
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
 # ----------------------------------------
@@ -496,6 +486,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
     /[$]LINENO/=
   ' <$as_myself |
     sed '
+      t clear
+      :clear
       s/[$]LINENO.*/&-/
       t lineno
       b
@@ -544,7 +536,6 @@ esac
 as_echo='printf %s\n'
 as_echo_n='printf %s'
 
-
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -556,9 +547,9 @@ if (echo >conf$$.file) 2>/dev/null; then
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -583,10 +574,12 @@ as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 
 test -n "$DJDIR" || exec 7<&0 </dev/null
@@ -612,8 +605,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='readline'
 PACKAGE_TARNAME='readline'
-PACKAGE_VERSION='8.2'
-PACKAGE_STRING='readline 8.2'
+PACKAGE_VERSION='8.3'
+PACKAGE_STRING='readline 8.3'
 PACKAGE_BUGREPORT='bug-readline@gnu.org'
 PACKAGE_URL=''
 
@@ -650,11 +643,13 @@ ac_includes_default="\
 #endif"
 
 ac_header_c_list=
+enable_year2038=no
 ac_subst_vars='LTLIBOBJS
 TERMCAP_PKG_CONFIG_LIB
 TERMCAP_LIB
 LIBVERSION
 ARFLAGS
+STYLE_CFLAGS
 LOCAL_DEFS
 LOCAL_LDFLAGS
 LOCAL_CFLAGS
@@ -682,15 +677,14 @@ SHOBJ_LD
 SHOBJ_CFLAGS
 SHOBJ_CC
 LIBOBJS
+CPP
 MAKE_SHELL
+install_sh
 RANLIB
 AR
 INSTALL_DATA
 INSTALL_SCRIPT
 INSTALL_PROGRAM
-EGREP
-GREP
-CPP
 OBJEXT
 EXEEXT
 ac_ct_CC
@@ -759,6 +753,7 @@ enable_static
 enable_install_examples
 enable_bracketed_paste_default
 enable_largefile
+enable_year2038
 '
       ac_precious_vars='build_alias
 host_alias
@@ -877,7 +872,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: \`$ac_useropt'"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -903,7 +898,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: \`$ac_useropt'"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1116,7 +1111,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: \`$ac_useropt'"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1132,7 +1127,7 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: \`$ac_useropt'"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
     ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
@@ -1162,8 +1157,8 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
+  -*) as_fn_error $? "unrecognized option: '$ac_option'
+Try '$0 --help' for more information"
     ;;
 
   *=*)
@@ -1171,7 +1166,7 @@ Try \`$0 --help' for more information"
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: '$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
@@ -1221,7 +1216,7 @@ do
   as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
-# There might be people who depend on the old broken behavior: `$host'
+# There might be people who depend on the old broken behavior: '$host'
 # used to hold the argument of --host etc.
 # FIXME: To remove some day.
 build=$build_alias
@@ -1289,7 +1284,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
   as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work"
 ac_abs_confdir=`(
        cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
        pwd)`
@@ -1317,7 +1312,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 8.2 to adapt to many kinds of systems.
+'configure' configures readline 8.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1331,11 +1326,11 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
+  -q, --quiet, --silent   do not print 'checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -C, --config-cache      alias for '--cache-file=config.cache'
   -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+      --srcdir=DIR        find the sources in DIR [configure dir or '..']
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
@@ -1343,10 +1338,10 @@ Installation directories:
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                           [PREFIX]
 
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
+By default, 'make install' will install all the files in
+'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than '$ac_default_prefix' using '--prefix',
+for instance '--prefix=\$HOME'.
 
 For better control, use the options below.
 
@@ -1383,7 +1378,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of readline 8.2:";;
+     short | recursive ) echo "Configuration of readline 8.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1400,6 +1395,7 @@ Optional Features:
                           disable bracketed paste by default
                           [[default=enable]]
   --disable-largefile     omit support for large files
+  --enable-year2038       support timestamps after 2038
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1420,7 +1416,7 @@ Some influential environment variables:
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
 
-Use these variables to override the choices made by `configure' or to help
+Use these variables to override the choices made by 'configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <bug-readline@gnu.org>.
@@ -1487,10 +1483,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-readline configure 8.2
-generated by GNU Autoconf 2.71
+readline configure 8.3
+generated by GNU Autoconf 2.72
 
-Copyright (C) 2021 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1529,11 +1525,12 @@ printf "%s\n" "$ac_try_echo"; } >&5
        } && test -s conftest.$ac_objext
 then :
   ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_retval=1
+       ac_retval=1 ;;
+esac
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
@@ -1552,8 +1549,8 @@ printf %s "checking for $2... " >&6; }
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 #include <$2>
@@ -1561,10 +1558,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   eval "$3=yes"
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$3
               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1573,44 +1572,6 @@ printf "%s\n" "$ac_res" >&6; }
 
 } # ac_fn_c_check_header_compile
 
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-printf "%s\n" "$ac_try_echo"; } >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } > conftest.i && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }
-then :
-  ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-    ac_retval=1
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
 # -------------------------------------------
 # Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -1623,8 +1584,8 @@ printf %s "checking for $2... " >&6; }
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
@@ -1654,12 +1615,14 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
 
-else $as_nop
-  eval "$3=yes"
+else case e in #(
+  e) eval "$3=yes" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$3
               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1699,11 +1662,12 @@ printf "%s\n" "$ac_try_echo"; } >&5
        }
 then :
   ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_retval=1
+       ac_retval=1 ;;
+esac
 fi
   # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
   # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
@@ -1726,15 +1690,15 @@ printf %s "checking for $2... " >&6; }
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
 #define $2 innocuous_$2
 
 /* System header to define __stub macros and hopefully few prototypes,
-   which can conflict with char $2 (); below.  */
+   which can conflict with char $2 (void); below.  */
 
 #include <limits.h>
 #undef $2
@@ -1745,7 +1709,7 @@ else $as_nop
 #ifdef __cplusplus
 extern "C"
 #endif
-char $2 ();
+char $2 (void);
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
@@ -1764,11 +1728,13 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   eval "$3=yes"
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$3
               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1807,12 +1773,13 @@ printf "%s\n" "$ac_try_echo"; } >&5
   test $ac_status = 0; }; }
 then :
   ac_retval=0
-else $as_nop
-  printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5
        printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_retval=$ac_status
+       ac_retval=$ac_status ;;
+esac
 fi
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
@@ -1820,6 +1787,45 @@ fi
 
 } # ac_fn_c_try_run
 
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }
+then :
+  ac_retval=0
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1 ;;
+esac
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
 # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
 # ----------------------------------------------------
 # Tries to find if the field MEMBER exists in type AGGR, after including
@@ -1832,8 +1838,8 @@ printf %s "checking for $2.$3... " >&6; }
 if eval test \${$4+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $5
 int
@@ -1849,8 +1855,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   eval "$4=yes"
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $5
 int
@@ -1866,12 +1872,15 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   eval "$4=yes"
-else $as_nop
-  eval "$4=no"
+else case e in #(
+  e) eval "$4=no" ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$4
               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1893,8 +1902,8 @@ printf %s "checking whether $as_decl_name is declared... " >&6; }
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+else case e in #(
+  e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
   eval ac_save_FLAGS=\$$6
   as_fn_append $6 " $5"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1918,12 +1927,14 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   eval "$3=yes"
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   eval $6=\$ac_save_FLAGS
-
+ ;;
+esac
 fi
 eval ac_res=\$$3
               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -1977,18 +1988,19 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_hi=$ac_mid; break
-else $as_nop
-  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+else case e in #(
+  e) 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
+                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   done
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
@@ -2023,20 +2035,23 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_lo=$ac_mid; break
-else $as_nop
-  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+else case e in #(
+  e) 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
+                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   done
-else $as_nop
-  ac_lo= ac_hi=
+else case e in #(
+  e) ac_lo= ac_hi= ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 # Binary search between lo and hi bounds.
@@ -2059,8 +2074,9 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_hi=$ac_mid
-else $as_nop
-  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+else case e in #(
+  e) as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 done
@@ -2108,8 +2124,9 @@ _ACEOF
 if ac_fn_c_try_run "$LINENO"
 then :
   echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else $as_nop
-  ac_retval=1
+else case e in #(
+  e) ac_retval=1 ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -2144,8 +2161,8 @@ 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 8.2, which was
-generated by GNU Autoconf 2.71.  Invocation command line was
+It was created by readline $as_me 8.3, which was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
 
@@ -2391,10 +2408,10 @@ esac
 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file" \
-      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
   fi
 done
 
@@ -2430,9 +2447,7 @@ struct stat;
 /* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
 struct buf { int x; };
 struct buf * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
+static char *e (char **p, int i)
 {
   return p[i];
 }
@@ -2446,6 +2461,21 @@ static char *f (char * (*g) (char **, int), char **p, ...)
   return s;
 }
 
+/* C89 style stringification. */
+#define noexpand_stringify(a) #a
+const char *stringified = noexpand_stringify(arbitrary+token=sequence);
+
+/* C89 style token pasting.  Exercises some of the corner cases that
+   e.g. old MSVC gets wrong, but not very hard. */
+#define noexpand_concat(a,b) a##b
+#define expand_concat(a,b) noexpand_concat(a,b)
+extern int vA;
+extern int vbee;
+#define aye A
+#define bee B
+int *pvA = &expand_concat(v,aye);
+int *pvbee = &noexpand_concat(v,bee);
+
 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
    function prototypes and stuff, but not \xHH hex character constants.
    These do not provoke an error unfortunately, instead are silently treated
@@ -2473,16 +2503,19 @@ ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
 
 # Test code for whether the C compiler supports C99 (global declarations)
 ac_c_conftest_c99_globals='
-// Does the compiler advertise C99 conformance?
+/* Does the compiler advertise C99 conformance? */
 #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
 # error "Compiler does not advertise C99 conformance"
 #endif
 
+// See if C++-style comments work.
+
 #include <stdbool.h>
 extern int puts (const char *);
 extern int printf (const char *, ...);
 extern int dprintf (int, const char *, ...);
 extern void *malloc (size_t);
+extern void free (void *);
 
 // Check varargs macros.  These examples are taken from C99 6.10.3.5.
 // dprintf is used instead of fprintf to avoid needing to declare
@@ -2532,7 +2565,6 @@ typedef const char *ccp;
 static inline int
 test_restrict (ccp restrict text)
 {
-  // See if C++-style comments work.
   // Iterate through items via the restricted pointer.
   // Also check for declarations in for loops.
   for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
@@ -2598,6 +2630,8 @@ ac_c_conftest_c99_main='
   ia->datasize = 10;
   for (int i = 0; i < ia->datasize; ++i)
     ia->data[i] = i * 1.234;
+  // Work around memory leak warnings.
+  free (ia);
 
   // Check named initializers.
   struct named_init ni = {
@@ -2619,7 +2653,7 @@ ac_c_conftest_c99_main='
 
 # Test code for whether the C compiler supports C11 (global declarations)
 ac_c_conftest_c11_globals='
-// Does the compiler advertise C11 conformance?
+/* Does the compiler advertise C11 conformance? */
 #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
 # error "Compiler does not advertise C11 conformance"
 #endif
@@ -2813,8 +2847,9 @@ IFS=$as_save_IFS
 if $as_found
 then :
 
-else $as_nop
-  as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+else case e in #(
+  e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;;
+esac
 fi
 
 
@@ -2842,12 +2877,12 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
@@ -2856,18 +2891,18 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
        ac_old_val_w=`echo x $ac_old_val`
        ac_new_val_w=`echo x $ac_new_val`
        if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;}
          ac_cache_corrupted=:
        else
-         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;}
          eval $ac_var=\$ac_old_val
        fi
-       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-printf "%s\n" "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  '$ac_old_val'" >&5
+printf "%s\n" "$as_me:   former value:  '$ac_old_val'" >&2;}
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: '$ac_new_val'" >&5
+printf "%s\n" "$as_me:   current value: '$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
@@ -2883,11 +2918,11 @@ printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}
   fi
 done
 if $ac_cache_corrupted; then
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+  as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file'
            and start over" "$LINENO" 5
 fi
 ## -------------------- ##
@@ -2909,7 +2944,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_config_headers="$ac_config_headers config.h"
 
 
-LIBVERSION=8.2
+LIBVERSION=8.3
 
 
 
@@ -2923,15 +2958,16 @@ printf %s "checking build system type... " >&6; }
 if test ${ac_cv_build+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_build_alias=$build_alias
+else case e in #(
+  e) ac_build_alias=$build_alias
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
 test "x$ac_build_alias" = x &&
   as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
   as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
 printf "%s\n" "$ac_cv_build" >&6; }
@@ -2958,14 +2994,15 @@ printf %s "checking host system type... " >&6; }
 if test ${ac_cv_host+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "x$host_alias" = x; then
+else case e in #(
+  e) if test "x$host_alias" = x; then
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
     as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
 printf "%s\n" "$ac_cv_host" >&6; }
@@ -3101,8 +3138,8 @@ ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
 if eval test \${ac_cv_prog_make_${ac_make}_set+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat >conftest.make <<\_ACEOF
+else case e in #(
+  e) cat >conftest.make <<\_ACEOF
 SHELL = /bin/sh
 all:
        @echo '@@@%%%=$(MAKE)=@@@%%%'
@@ -3114,7 +3151,8 @@ case `${MAKE-make} -f conftest.make 2>/dev/null` in
   *)
     eval ac_cv_prog_make_${ac_make}_set=no;;
 esac
-rm -f conftest.make
+rm -f conftest.make ;;
+esac
 fi
 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -3148,8 +3186,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3171,7 +3209,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
@@ -3193,8 +3232,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_ac_ct_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_CC"; then
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3216,7 +3255,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
@@ -3251,8 +3291,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3274,7 +3314,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
@@ -3296,8 +3337,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
   ac_prog_rejected=no
@@ -3336,7 +3377,8 @@ if test $ac_prog_rejected = yes; then
     ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
   fi
 fi
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
@@ -3360,8 +3402,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3383,7 +3425,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
@@ -3409,8 +3452,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_ac_ct_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_CC"; then
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3432,7 +3475,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
@@ -3470,8 +3514,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$CC"; then
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3493,7 +3537,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
@@ -3515,8 +3560,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_ac_ct_CC+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_CC"; then
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -3538,7 +3583,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
@@ -3567,10 +3613,10 @@ fi
 fi
 
 
-test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
 printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
@@ -3642,8 +3688,8 @@ printf "%s\n" "$ac_try_echo"; } >&5
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
 then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+  # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'.
+# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
 # so that the user can short-circuit this test for compilers unknown to
 # Autoconf.
@@ -3663,7 +3709,7 @@ do
           ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
        fi
        # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
+       # safe: cross compilers may not add the suffix if given an '-o'
        # argument, so we may need to know it at that point already.
        # Even if this section looks crufty: it has the advantage of
        # actually working.
@@ -3674,8 +3720,9 @@ do
 done
 test "$ac_cv_exeext" = no && ac_cv_exeext=
 
-else $as_nop
-  ac_file=''
+else case e in #(
+  e) ac_file='' ;;
+esac
 fi
 if test -z "$ac_file"
 then :
@@ -3684,13 +3731,14 @@ printf "%s\n" "no" >&6; }
 printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-printf "%s\n" "yes" >&6; }
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; } ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
 printf %s "checking for C compiler default output file name... " >&6; }
@@ -3714,10 +3762,10 @@ printf "%s\n" "$ac_try_echo"; } >&5
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
 then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
+  # If both 'conftest.exe' and 'conftest' are 'present' (well, observable)
+# catch 'conftest.exe'.  For instance with Cygwin, 'ls conftest' will
+# work properly (i.e., refer to 'conftest.exe'), while it won't with
+# 'rm'.
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
@@ -3727,11 +3775,12 @@ for ac_file in conftest.exe conftest conftest.*; do
     * ) break;;
   esac
 done
-else $as_nop
-  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+  e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
 rm -f conftest conftest$ac_cv_exeext
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
@@ -3747,6 +3796,8 @@ int
 main (void)
 {
 FILE *f = fopen ("conftest.out", "w");
+ if (!f)
+  return 1;
  return ferror (f) || fclose (f) != 0;
 
   ;
@@ -3786,26 +3837,27 @@ printf "%s\n" "$ac_try_echo"; } >&5
     if test "$cross_compiling" = maybe; then
        cross_compiling=yes
     else
-       { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+       { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error 77 "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
+If you meant to cross compile, use '--host'.
+See 'config.log' for more details" "$LINENO" 5; }
     fi
   fi
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
 printf "%s\n" "$cross_compiling" >&6; }
 
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+rm -f conftest.$ac_ext conftest$ac_cv_exeext \
+  conftest.o conftest.obj conftest.out
 ac_clean_files=$ac_clean_files_save
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
 printf %s "checking for suffix of object files... " >&6; }
 if test ${ac_cv_objext+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3837,16 +3889,18 @@ then :
        break;;
   esac
 done
-else $as_nop
-  printf "%s\n" "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
+rm -f conftest.$ac_cv_objext conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
 printf "%s\n" "$ac_cv_objext" >&6; }
@@ -3857,8 +3911,8 @@ printf %s "checking whether the compiler supports GNU C... " >&6; }
 if test ${ac_cv_c_compiler_gnu+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3875,12 +3929,14 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_compiler_gnu=yes
-else $as_nop
-  ac_compiler_gnu=no
+else case e in #(
+  e) ac_compiler_gnu=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
@@ -3898,8 +3954,8 @@ printf %s "checking whether $CC accepts -g... " >&6; }
 if test ${ac_cv_prog_cc_g+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_save_c_werror_flag=$ac_c_werror_flag
+else case e in #(
+  e) ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
@@ -3917,8 +3973,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_prog_cc_g=yes
-else $as_nop
-  CFLAGS=""
+else case e in #(
+  e) CFLAGS=""
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -3933,8 +3989,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
 
-else $as_nop
-  ac_c_werror_flag=$ac_save_c_werror_flag
+else case e in #(
+  e) ac_c_werror_flag=$ac_save_c_werror_flag
         CFLAGS="-g"
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -3951,12 +4007,15 @@ if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_prog_cc_g=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
+   ac_c_werror_flag=$ac_save_c_werror_flag ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
 printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
@@ -3983,8 +4042,8 @@ printf %s "checking for $CC option to enable C11 features... " >&6; }
 if test ${ac_cv_prog_cc_c11+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_prog_cc_c11=no
+else case e in #(
+  e) ac_cv_prog_cc_c11=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -4001,25 +4060,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam
   test "x$ac_cv_prog_cc_c11" != "xno" && break
 done
 rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
 fi
 
 if test "x$ac_cv_prog_cc_c11" = xno
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 printf "%s\n" "unsupported" >&6; }
-else $as_nop
-  if test "x$ac_cv_prog_cc_c11" = x
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c11" = x
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 printf "%s\n" "none needed" >&6; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
 printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
-     CC="$CC $ac_cv_prog_cc_c11"
+     CC="$CC $ac_cv_prog_cc_c11" ;;
+esac
 fi
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
-  ac_prog_cc_stdc=c11
+  ac_prog_cc_stdc=c11 ;;
+esac
 fi
 fi
 if test x$ac_prog_cc_stdc = xno
@@ -4029,8 +4091,8 @@ printf %s "checking for $CC option to enable C99 features... " >&6; }
 if test ${ac_cv_prog_cc_c99+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_prog_cc_c99=no
+else case e in #(
+  e) ac_cv_prog_cc_c99=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -4047,25 +4109,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam
   test "x$ac_cv_prog_cc_c99" != "xno" && break
 done
 rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
 fi
 
 if test "x$ac_cv_prog_cc_c99" = xno
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 printf "%s\n" "unsupported" >&6; }
-else $as_nop
-  if test "x$ac_cv_prog_cc_c99" = x
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c99" = x
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 printf "%s\n" "none needed" >&6; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
 printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
-     CC="$CC $ac_cv_prog_cc_c99"
+     CC="$CC $ac_cv_prog_cc_c99" ;;
+esac
 fi
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
-  ac_prog_cc_stdc=c99
+  ac_prog_cc_stdc=c99 ;;
+esac
 fi
 fi
 if test x$ac_prog_cc_stdc = xno
@@ -4075,8 +4140,8 @@ printf %s "checking for $CC option to enable C89 features... " >&6; }
 if test ${ac_cv_prog_cc_c89+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_prog_cc_c89=no
+else case e in #(
+  e) ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -4093,25 +4158,28 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
 rm -f conftest.$ac_ext
-CC=$ac_save_CC
+CC=$ac_save_CC ;;
+esac
 fi
 
 if test "x$ac_cv_prog_cc_c89" = xno
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
 printf "%s\n" "unsupported" >&6; }
-else $as_nop
-  if test "x$ac_cv_prog_cc_c89" = x
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c89" = x
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
 printf "%s\n" "none needed" >&6; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
 printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
-     CC="$CC $ac_cv_prog_cc_c89"
+     CC="$CC $ac_cv_prog_cc_c89" ;;
+esac
 fi
   ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
-  ac_prog_cc_stdc=c89
+  ac_prog_cc_stdc=c89 ;;
+esac
 fi
 fi
 
@@ -4162,8 +4230,8 @@ printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
 if test ${ac_cv_safe_to_define___extensions__+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #         define __EXTENSIONS__ 1
@@ -4179,10 +4247,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_safe_to_define___extensions__=yes
-else $as_nop
-  ac_cv_safe_to_define___extensions__=no
+else case e in #(
+  e) ac_cv_safe_to_define___extensions__=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
 printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
@@ -4192,8 +4262,8 @@ printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
 if test ${ac_cv_should_define__xopen_source+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_should_define__xopen_source=no
+else case e in #(
+  e) ac_cv_should_define__xopen_source=no
     if test $ac_cv_header_wchar_h = yes
 then :
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -4212,8 +4282,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
 
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
             #define _XOPEN_SOURCE 500
@@ -4231,10 +4301,12 @@ if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_should_define__xopen_source=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
+fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
 printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
@@ -4259,6 +4331,8 @@ printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
 
   printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
 
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h
+
   printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
 
   printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
@@ -4278,8 +4352,9 @@ then :
 
     printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
 
-else $as_nop
-  MINIX=
+else case e in #(
+  e) MINIX= ;;
+esac
 fi
   if test $ac_cv_safe_to_define___extensions__ = yes
 then :
 # If we're using gcc and the user hasn't specified CFLAGS, add -O2 to CFLAGS
 if test -n "$want_auto_cflags" ; then
        AUTO_CFLAGS="-g ${GCC:+-O2}"
-       STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}"
+#      STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}"
+       STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security}"
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-printf %s "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if test ${ac_cv_prog_CPP+y}
+
+  # Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test ${ac_cv_path_install+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-      # Double quotes because $CC needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
-    do
-      ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
-else $as_nop
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-  # Broken: success on invalid input.
-continue
-else $as_nop
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok
-then :
-  break
-fi
-
-    done
-    ac_cv_prog_CPP=$CPP
-
-fi
-  CPP=$ac_cv_prog_CPP
-else
-  ac_cv_prog_CPP=$CPP
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-printf "%s\n" "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <limits.h>
-                    Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-
-else $as_nop
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
-then :
-  # Broken: success on invalid input.
-continue
-else $as_nop
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok
-then :
-
-else $as_nop
-  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_prog in grep ggrep
-   do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  printf %s 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_prog in egrep
-   do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  printf %s 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-if test $ac_cv_c_compiler_gnu = yes; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
-printf %s "checking whether $CC needs -traditional... " >&6; }
-if test ${ac_cv_prog_gcc_traditional+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-    ac_pattern="Autoconf.*'x'"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sgtty.h>
-Autoconf TIOCGETP
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1
-then :
-  ac_cv_prog_gcc_traditional=yes
-else $as_nop
-  ac_cv_prog_gcc_traditional=no
-fi
-rm -rf conftest*
-
-
-  if test $ac_cv_prog_gcc_traditional = no; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <termio.h>
-Autoconf TCGETA
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1
-then :
-  ac_cv_prog_gcc_traditional=yes
-fi
-rm -rf conftest*
-
-  fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
-printf "%s\n" "$ac_cv_prog_gcc_traditional" >&6; }
-  if test $ac_cv_prog_gcc_traditional = yes; then
-    CC="$CC -traditional"
-  fi
-fi
-
-
-  # Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-printf %s "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if test ${ac_cv_path_install+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+else case e in #(
+  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   case $as_dir in #(((
@@ -4695,7 +4451,8 @@ esac
 IFS=$as_save_IFS
 
 rm -rf conftest.one conftest.two conftest.dir
-
+ ;;
+esac
 fi
   if test ${ac_cv_path_install+y}; then
     INSTALL=$ac_cv_path_install
@@ -4726,8 +4483,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_AR+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$AR"; then
+else case e in #(
+  e) if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4749,7 +4506,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
@@ -4771,8 +4529,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_ac_ct_AR+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_AR"; then
+else case e in #(
+  e) if test -n "$ac_ct_AR"; then
   ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4794,7 +4552,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
@@ -4829,8 +4588,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_RANLIB+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$RANLIB"; then
+else case e in #(
+  e) if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4852,7 +4611,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
@@ -4874,8 +4634,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_ac_ct_RANLIB+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_RANLIB"; then
+else case e in #(
+  e) if test -n "$ac_ct_RANLIB"; then
   ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -4897,7 +4657,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
@@ -4924,6 +4685,20 @@ else
 fi
 
 
+
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
+
+if test x"${install_sh+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+
 MAKE_SHELL=/bin/sh
 
 
@@ -4939,8 +4714,8 @@ printf %s "checking for an ANSI C-conforming const... " >&6; }
 if test ${ac_cv_c_const+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5004,10 +4779,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_c_const=yes
-else $as_nop
-  ac_cv_c_const=no
+else case e in #(
+  e) ac_cv_c_const=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
 printf "%s\n" "$ac_cv_c_const" >&6; }
@@ -5022,8 +4799,8 @@ printf %s "checking for inline... " >&6; }
 if test ${ac_cv_c_inline+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_c_inline=no
+else case e in #(
+  e) ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -5041,7 +4818,8 @@ fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   test "$ac_cv_c_inline" != no && break
 done
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
 printf "%s\n" "$ac_cv_c_inline" >&6; }
@@ -5075,8 +4853,8 @@ printf %s "checking whether char is unsigned... " >&6; }
 if test ${ac_cv_c_char_unsigned+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 int
@@ -5093,10 +4871,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_c_char_unsigned=no
-else $as_nop
-  ac_cv_c_char_unsigned=yes
+else case e in #(
+  e) ac_cv_c_char_unsigned=yes ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5
 printf "%s\n" "$ac_cv_c_char_unsigned" >&6; }
@@ -5110,8 +4890,8 @@ printf %s "checking for working volatile... " >&6; }
 if test ${ac_cv_c_volatile+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5128,10 +4908,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_c_volatile=yes
-else $as_nop
-  ac_cv_c_volatile=no
+else case e in #(
+  e) ac_cv_c_volatile=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
 printf "%s\n" "$ac_cv_c_volatile" >&6; }
@@ -5146,20 +4928,34 @@ ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
 if test "x$ac_cv_type_size_t" = xyes
 then :
 
-else $as_nop
-
+else case e in #(
+  e)
 printf "%s\n" "#define size_t unsigned int" >>confdefs.h
-
+ ;;
+esac
 fi
 
 ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
 if test "x$ac_cv_type_ssize_t" = xyes
 then :
 
-else $as_nop
-
+else case e in #(
+  e)
 printf "%s\n" "#define ssize_t int" >>confdefs.h
+ ;;
+esac
+fi
 
+
+ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
+if test "x$ac_cv_type_mode_t" = xyes
+then :
+
+else case e in #(
+  e)
+printf "%s\n" "#define mode_t int" >>confdefs.h
+ ;;
+esac
 fi
 
 
@@ -5168,8 +4964,8 @@ printf %s "checking whether stat file-mode macros are broken... " >&6; }
 if test ${ac_cv_header_stat_broken+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -5194,10 +4990,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_header_stat_broken=no
-else $as_nop
-  ac_cv_header_stat_broken=yes
+else case e in #(
+  e) ac_cv_header_stat_broken=yes ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5
 printf "%s\n" "$ac_cv_header_stat_broken" >&6; }
@@ -5209,14 +5007,14 @@ fi
 
 ac_header_dirent=no
 for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+  as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"`
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
 printf %s "checking for $ac_hdr that defines DIR... " >&6; }
 if eval test \${$as_ac_Header+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -5233,10 +5031,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   eval "$as_ac_Header=yes"
-else $as_nop
-  eval "$as_ac_Header=no"
+else case e in #(
+  e) eval "$as_ac_Header=no" ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$as_ac_Header
               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -5244,7 +5044,7 @@ printf "%s\n" "$ac_res" >&6; }
 if eval test \"x\$"$as_ac_Header"\" = x"yes"
 then :
   cat >>confdefs.h <<_ACEOF
-#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1
 _ACEOF
 
 ac_header_dirent=$ac_hdr; break
@@ -5258,15 +5058,21 @@ printf %s "checking for library containing opendir... " >&6; }
 if test ${ac_cv_search_opendir+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_func_search_save_LIBS=$LIBS
+else case e in #(
+  e) ac_func_search_save_LIBS=$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.  */
-char opendir ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir (void);
 int
 main (void)
 {
@@ -5297,11 +5103,13 @@ done
 if test ${ac_cv_search_opendir+y}
 then :
 
-else $as_nop
-  ac_cv_search_opendir=no
+else case e in #(
+  e) ac_cv_search_opendir=no ;;
+esac
 fi
 rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+LIBS=$ac_func_search_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
 printf "%s\n" "$ac_cv_search_opendir" >&6; }
@@ -5318,15 +5126,21 @@ printf %s "checking for library containing opendir... " >&6; }
 if test ${ac_cv_search_opendir+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_func_search_save_LIBS=$LIBS
+else case e in #(
+  e) ac_func_search_save_LIBS=$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.  */
-char opendir ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir (void);
 int
 main (void)
 {
@@ -5357,11 +5171,13 @@ done
 if test ${ac_cv_search_opendir+y}
 then :
 
-else $as_nop
-  ac_cv_search_opendir=no
+else case e in #(
+  e) ac_cv_search_opendir=no ;;
+esac
 fi
 rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+LIBS=$ac_func_search_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
 printf "%s\n" "$ac_cv_search_opendir" >&6; }
@@ -5477,6 +5293,18 @@ if test "x$ac_cv_func_tcgetattr" = xyes
 then :
   printf "%s\n" "#define HAVE_TCGETATTR 1" >>confdefs.h
 
+fi
+ac_fn_c_check_func "$LINENO" "tcgetwinsize" "ac_cv_func_tcgetwinsize"
+if test "x$ac_cv_func_tcgetwinsize" = xyes
+then :
+  printf "%s\n" "#define HAVE_TCGETWINSIZE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tcsetwinsize" "ac_cv_func_tcsetwinsize"
+if test "x$ac_cv_func_tcsetwinsize" = xyes
+then :
+  printf "%s\n" "#define HAVE_TCSETWINSIZE 1" >>confdefs.h
+
 fi
 ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
 if test "x$ac_cv_func_vsnprintf" = xyes
@@ -5518,36 +5346,26 @@ then :
 fi
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-printf %s "checking for uid_t in sys/types.h... " >&6; }
-if test ${ac_cv_type_uid_t+y}
+ac_fn_c_check_type "$LINENO" "uid_t" "ac_cv_type_uid_t" "$ac_includes_default"
+if test "x$ac_cv_type_uid_t" = xyes
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1
-then :
-  ac_cv_type_uid_t=yes
-else $as_nop
-  ac_cv_type_uid_t=no
-fi
-rm -rf conftest*
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-printf "%s\n" "$ac_cv_type_uid_t" >&6; }
-if test $ac_cv_type_uid_t = no; then
 
+else case e in #(
+  e)
 printf "%s\n" "#define uid_t int" >>confdefs.h
+ ;;
+esac
+fi
 
+ac_fn_c_check_type "$LINENO" "gid_t" "ac_cv_type_gid_t" "$ac_includes_default"
+if test "x$ac_cv_type_gid_t" = xyes
+then :
 
+else case e in #(
+  e)
 printf "%s\n" "#define gid_t int" >>confdefs.h
-
+ ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5
@@ -5555,8 +5373,8 @@ printf %s "checking for working chown... " >&6; }
 if test ${ac_cv_func_chown_works+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "$cross_compiling" = yes
+else case e in #(
+  e) if test "$cross_compiling" = yes
 then :
   case "$host_os" in # ((
                          # Guess yes on glibc systems.
@@ -5564,8 +5382,8 @@ then :
                          # If we don't know, assume the worst.
                  *)      ac_cv_func_chown_works=no ;;
                esac
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 #include <fcntl.h>
@@ -5593,15 +5411,18 @@ _ACEOF
 if ac_fn_c_try_run "$LINENO"
 then :
   ac_cv_func_chown_works=yes
-else $as_nop
-  ac_cv_func_chown_works=no
+else case e in #(
+  e) ac_cv_func_chown_works=no ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 rm -f conftest.chown
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5
 printf "%s\n" "$ac_cv_func_chown_works" >&6; }
@@ -5616,8 +5437,8 @@ printf %s "checking for working strcoll... " >&6; }
 if test ${ac_cv_func_strcoll_works+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "$cross_compiling" = yes
+else case e in #(
+  e) if test "$cross_compiling" = yes
 then :
   case "$host_os" in # ((
                          # Guess yes on glibc systems.
@@ -5625,8 +5446,8 @@ then :
                          # If we don't know, assume the worst.
                  *)      ac_cv_func_strcoll_works=no ;;
                esac
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 int
@@ -5642,13 +5463,16 @@ _ACEOF
 if ac_fn_c_try_run "$LINENO"
 then :
   ac_cv_func_strcoll_works=yes
-else $as_nop
-  ac_cv_func_strcoll_works=no
+else case e in #(
+  e) ac_cv_func_strcoll_works=no ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5
 printf "%s\n" "$ac_cv_func_strcoll_works" >&6; }
@@ -5806,31 +5630,34 @@ if test ${enable_largefile+y}
 then :
   enableval=$enable_largefile;
 fi
-
-if test "$enable_largefile" != no; then
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-printf %s "checking for special C compiler options needed for large files... " >&6; }
-if test ${ac_cv_sys_largefile_CC+y}
+if test "$enable_largefile,$enable_year2038" != no,no
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5
+printf %s "checking for $CC option to enable large file support... " >&6; }
+if test ${ac_cv_sys_largefile_opts+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-        # IRIX 6.2 and later do not support large files by default,
-        # so use the C compiler's -n32 option if that helps.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) ac_save_CC="$CC"
+  ac_opt_found=no
+  for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do
+    if test x"$ac_opt" != x"none needed"
+then :
+  CC="$ac_save_CC $ac_opt"
+fi
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+#ifndef FTYPE
+# define FTYPE off_t
+#endif
+ /* Check that FTYPE can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_FTYPE to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
+#define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31))
+  int FTYPE_is_large[(LARGE_FTYPE % 2147483629 == 721
+                      && LARGE_FTYPE % 2147483647 == 1)
                      ? 1 : -1];
 int
 main (void)
@@ -5840,142 +5667,88 @@ main (void)
   return 0;
 }
 _ACEOF
-        if ac_fn_c_try_compile "$LINENO"
+if ac_fn_c_try_compile "$LINENO"
 then :
-  break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam
-        CC="$CC -n32"
+  if test x"$ac_opt" = x"none needed"
+then :
+  # GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
+        CC="$CC -DFTYPE=ino_t"
         if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sys_largefile_CC=' -n32'; break
+
+else case e in #(
+  e) CC="$CC -D_FILE_OFFSET_BITS=64"
+           if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_opt='-D_FILE_OFFSET_BITS=64'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam
-        break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if test ${ac_cv_sys_file_offset_bits+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_sys_file_offset_bits=no; break
+      ac_cv_sys_largefile_opts=$ac_opt
+      ac_opt_found=yes
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main (void)
-{
+    test $ac_opt_found = no || break
+  done
+  CC="$ac_save_CC"
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
-  ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
+  test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *)
-printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
-;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5
+printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; }
+
+ac_have_largefile=yes
+case $ac_cv_sys_largefile_opts in #(
+  "none needed") :
+     ;; #(
+  "supported through gnulib") :
+     ;; #(
+  "support not detected") :
+    ac_have_largefile=no ;; #(
+  "-D_FILE_OFFSET_BITS=64") :
+
+printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h
+ ;; #(
+  "-D_LARGE_FILES=1") :
+
+printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h
+ ;; #(
+  "-n32") :
+    CC="$CC -n32" ;; #(
+  *) :
+    as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;;
 esac
-rm -rf conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
-if test ${ac_cv_sys_large_files+y}
+
+if test "$enable_year2038" != no
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option for timestamps after 2038" >&5
+printf %s "checking for $CC option for timestamps after 2038... " >&6; }
+if test ${ac_cv_sys_year2038_opts+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  while :; do
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main (void)
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
+else case e in #(
+  e) ac_save_CPPFLAGS="$CPPFLAGS"
+  ac_opt_found=no
+  for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do
+    if test x"$ac_opt" != x"none needed"
 then :
-  ac_cv_sys_large_files=no; break
+  CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
+
+  #include <time.h>
+  /* Check that time_t can represent 2**32 - 1 correctly.  */
+  #define LARGE_TIME_T \\
+    ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))
+  int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535
+                           && LARGE_TIME_T % 65537 == 0)
+                          ? 1 : -1];
+
 int
 main (void)
 {
@@ -5986,38 +5759,60 @@ main (void)
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
-  ac_cv_sys_large_files=1; break
+  ac_cv_sys_year2038_opts="$ac_opt"
+      ac_opt_found=yes
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
+    test $ac_opt_found = no || break
+  done
+  CPPFLAGS="$ac_save_CPPFLAGS"
+  test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-printf "%s\n" "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *)
-printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
-;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5
+printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; }
+
+ac_have_year2038=yes
+case $ac_cv_sys_year2038_opts in #(
+  "none needed") :
+     ;; #(
+  "support not detected") :
+    ac_have_year2038=no ;; #(
+  "-D_TIME_BITS=64") :
+
+printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h
+ ;; #(
+  "-D__MINGW_USE_VC2005_COMPAT") :
+
+printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h
+ ;; #(
+  "-U_USE_32_BIT_TIME_T"*) :
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "the 'time_t' type is currently forced to be 32-bit. It
+will stop working after mid-January 2038. Remove
+_USE_32BIT_TIME_T from the compiler flags.
+See 'config.log' for more details" "$LINENO" 5; } ;; #(
+  *) :
+    as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;;
 esac
-rm -rf conftest*
-  fi
+
 fi
 
+fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5
 printf %s "checking for type of signal functions... " >&6; }
 if test ${bash_cv_signal_vintage+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 if test ${bash_cv_posix_signals+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <signal.h>
@@ -6039,12 +5834,14 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   bash_cv_posix_signals=yes
-else $as_nop
-  bash_cv_posix_signals=no
-
+else case e in #(
+  e) bash_cv_posix_signals=no
+ ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 
 
@@ -6054,8 +5851,8 @@ else
   if test ${bash_cv_bsd_signals+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <signal.h>
@@ -6074,12 +5871,14 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   bash_cv_bsd_signals=yes
-else $as_nop
-  bash_cv_bsd_signals=no
-
+else case e in #(
+  e) bash_cv_bsd_signals=no
+ ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 
 
@@ -6089,8 +5888,8 @@ fi
     if test ${bash_cv_sysv_signals+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <signal.h>
@@ -6111,12 +5910,14 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   bash_cv_sysv_signals=yes
-else $as_nop
-  bash_cv_sysv_signals=no
-
+else case e in #(
+  e) bash_cv_sysv_signals=no
+ ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 
 
@@ -6127,7 +5928,8 @@ fi
     fi
   fi
 fi
-
+ ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5
@@ -6149,15 +5951,15 @@ printf %s "checking if signal handlers must be reinstalled when invoked... " >&6
 if test ${bash_cv_must_reinstall_sighandlers+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "$cross_compiling" = yes
+else case e in #(
+  e) if test "$cross_compiling" = yes
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5
 printf "%s\n" "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;}
     bash_cv_must_reinstall_sighandlers=no
 
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <signal.h>
@@ -6166,15 +5968,13 @@ else $as_nop
 #endif
 #include <stdlib.h>
 
-typedef void sigfunc();
+typedef void sigfunc(int);
 
 volatile int nsigint;
 
 #ifdef HAVE_POSIX_SIGNALS
 sigfunc *
-set_signal_handler(sig, handler)
-     int sig;
-     sigfunc *handler;
+set_signal_handler(int sig, sigfunc *handler)
 {
   struct sigaction act, oact;
   act.sa_handler = handler;
@@ -6189,8 +5989,7 @@ set_signal_handler(sig, handler)
 #endif
 
 void
-sigint(s)
-int s;
+sigint(int s)
 {
   nsigint++;
 }
@@ -6209,13 +6008,16 @@ _ACEOF
 if ac_fn_c_try_run "$LINENO"
 then :
   bash_cv_must_reinstall_sighandlers=no
-else $as_nop
-  bash_cv_must_reinstall_sighandlers=yes
+else case e in #(
+  e) bash_cv_must_reinstall_sighandlers=yes ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-
+ ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5
@@ -6232,8 +6034,8 @@ printf %s "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; }
 if test ${bash_cv_func_sigsetjmp+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "$cross_compiling" = yes
+else case e in #(
+  e) if test "$cross_compiling" = yes
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&5
 printf "%s\n" "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&2;}
@@ -6243,8 +6045,8 @@ printf "%s\n" "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-c
        bash_cv_func_sigsetjmp=missing
      fi
 
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef HAVE_UNISTD_H
@@ -6300,13 +6102,16 @@ _ACEOF
 if ac_fn_c_try_run "$LINENO"
 then :
   bash_cv_func_sigsetjmp=present
-else $as_nop
-  bash_cv_func_sigsetjmp=missing
+else case e in #(
+  e) bash_cv_func_sigsetjmp=missing ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-
+ ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5
@@ -6321,8 +6126,8 @@ printf %s "checking for lstat... " >&6; }
 if test ${bash_cv_func_lstat+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
                #include <sys/types.h>
@@ -6339,11 +6144,13 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   bash_cv_func_lstat=yes
-else $as_nop
-  bash_cv_func_lstat=no
+else case e in #(
+  e) bash_cv_func_lstat=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5
 printf "%s\n" "$bash_cv_func_lstat" >&6; }
@@ -6357,15 +6164,15 @@ printf %s "checking whether or not strcoll and strcmp differ... " >&6; }
 if test ${bash_cv_func_strcoll_broken+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "$cross_compiling" = yes
+else case e in #(
+  e) if test "$cross_compiling" = yes
 then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5
 printf "%s\n" "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;}
     bash_cv_func_strcoll_broken=no
 
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <stdio.h>
@@ -6376,9 +6183,7 @@ else $as_nop
 #include <stdlib.h>
 
 int
-main(c, v)
-int     c;
-char    *v[];
+main(int c, char **v)
 {
         int     r1, r2;
         char    *deflocale, *defcoll;
@@ -6410,30 +6215,306 @@ _ACEOF
 if ac_fn_c_try_run "$LINENO"
 then :
   bash_cv_func_strcoll_broken=yes
-else $as_nop
-  bash_cv_func_strcoll_broken=no
+else case e in #(
+  e) bash_cv_func_strcoll_broken=no ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
+ ;;
+esac
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5
+printf "%s\n" "$bash_cv_func_strcoll_broken" >&6; }
+if test $bash_cv_func_strcoll_broken = yes; then
+printf "%s\n" "#define STRCOLL_BROKEN 1" >>confdefs.h
+
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test ${ac_cv_prog_CPP+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e)     # Double quotes because $CC needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else case e in #(
+  e) # Broken: fails on valid input.
+continue ;;
+esac
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+  # Broken: success on invalid input.
+continue
+else case e in #(
+  e) # Passes both tests.
+ac_preproc_ok=:
+break ;;
+esac
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+   ;;
+esac
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else case e in #(
+  e) # Broken: fails on valid input.
+continue ;;
+esac
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+  # Broken: success on invalid input.
+continue
+else case e in #(
+  e) # Passes both tests.
+ac_preproc_ok=:
+break ;;
+esac
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+
+else case e in #(
+  e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in grep ggrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
+*GNU*)
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_TRADITIONAL_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
+  fi
+else
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
+fi
+
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
+then :
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in egrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
+*GNU*)
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
+      $ac_path_EGREP_TRADITIONAL_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5
-printf "%s\n" "$bash_cv_func_strcoll_broken" >&6; }
-if test $bash_cv_func_strcoll_broken = yes; then
-printf "%s\n" "#define STRCOLL_BROKEN 1" >>confdefs.h
-
+ ;;
+esac
+fi ;;
+esac
 fi
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5
 printf %s "checking whether getpw functions are declared in pwd.h... " >&6; }
 if test ${bash_cv_getpw_declared+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -6444,14 +6525,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "getpwuid" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "getpwuid" >/dev/null 2>&1
 then :
   bash_cv_getpw_declared=yes
-else $as_nop
-  bash_cv_getpw_declared=no
+else case e in #(
+  e) bash_cv_getpw_declared=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5
@@ -6467,25 +6550,23 @@ printf %s "checking whether termios.h defines TIOCGWINSZ... " >&6; }
 if test ${ac_cv_sys_tiocgwinsz_in_termios_h+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+$ac_includes_default
 #include <termios.h>
-#ifdef TIOCGWINSZ
-  yes
-#endif
+const int tiocgwinsz = TIOCGWINSZ;
 
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_sys_tiocgwinsz_in_termios_h=yes
-else $as_nop
-  ac_cv_sys_tiocgwinsz_in_termios_h=no
+else case e in #(
+  e) ac_cv_sys_tiocgwinsz_in_termios_h=no ;;
+esac
 fi
-rm -rf conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
 printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; }
@@ -6496,25 +6577,23 @@ printf %s "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; }
 if test ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
+$ac_includes_default
 #include <sys/ioctl.h>
-#ifdef TIOCGWINSZ
-  yes
-#endif
+const int tiocgwinsz = TIOCGWINSZ;
 
 _ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+if ac_fn_c_try_compile "$LINENO"
 then :
   ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes
-else $as_nop
-  ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no
+else case e in #(
+  e) ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no ;;
+esac
 fi
-rm -rf conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
 printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; }
@@ -6541,8 +6620,8 @@ printf %s "checking for sig_atomic_t in signal.h... " >&6; }
 if test ${ac_cv_have_sig_atomic_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
  #include <signal.h>
 int
@@ -6556,11 +6635,13 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_have_sig_atomic_t=yes
-else $as_nop
-  ac_cv_have_sig_atomic_t=no
+else case e in #(
+  e) ac_cv_have_sig_atomic_t=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5
 printf "%s\n" "$ac_cv_have_sig_atomic_t" >&6; }
@@ -6573,8 +6654,8 @@ printf %s "checking for sig_atomic_t... " >&6; }
 if test ${bash_cv_type_sig_atomic_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #if HAVE_STDLIB_H
@@ -6593,14 +6674,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "sig_atomic_t" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "sig_atomic_t" >/dev/null 2>&1
 then :
   bash_cv_type_sig_atomic_t=yes
-else $as_nop
-  bash_cv_type_sig_atomic_t=no
+else case e in #(
+  e) bash_cv_type_sig_atomic_t=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5
@@ -6619,8 +6702,8 @@ printf %s "checking for TIOCSTAT in sys/ioctl.h... " >&6; }
 if test ${bash_cv_tiocstat_in_ioctl+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -6636,11 +6719,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_tiocstat_in_ioctl=yes
-else $as_nop
-  bash_cv_tiocstat_in_ioctl=no
-
+else case e in #(
+  e) bash_cv_tiocstat_in_ioctl=no
+ ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5
@@ -6655,8 +6740,8 @@ printf %s "checking for FIONREAD in sys/ioctl.h... " >&6; }
 if test ${bash_cv_fionread_in_ioctl+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -6672,11 +6757,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_fionread_in_ioctl=yes
-else $as_nop
-  bash_cv_fionread_in_ioctl=no
-
+else case e in #(
+  e) bash_cv_fionread_in_ioctl=no
+ ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5
@@ -6691,8 +6778,8 @@ printf %s "checking for speed_t in sys/types.h... " >&6; }
 if test ${bash_cv_speed_t_in_sys_types+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 int
@@ -6706,10 +6793,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_speed_t_in_sys_types=yes
-else $as_nop
-  bash_cv_speed_t_in_sys_types=no
+else case e in #(
+  e) bash_cv_speed_t_in_sys_types=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5
@@ -6724,13 +6813,13 @@ printf %s "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; }
 if test ${bash_cv_struct_winsize_header+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 if test ${bash_cv_struct_winsize_ioctl+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -6750,19 +6839,21 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_struct_winsize_ioctl=yes
-else $as_nop
-  bash_cv_struct_winsize_ioctl=no
+else case e in #(
+  e) bash_cv_struct_winsize_ioctl=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
+ ;;
+esac
 fi
 
 
 if test ${bash_cv_struct_winsize_termios+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -6782,11 +6873,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_struct_winsize_termios=yes
-else $as_nop
-  bash_cv_struct_winsize_termios=no
+else case e in #(
+  e) bash_cv_struct_winsize_termios=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
+ ;;
+esac
 fi
 
 
@@ -6798,7 +6891,8 @@ elif test $bash_cv_struct_winsize_termios = yes; then
 else
   bash_cv_struct_winsize_header=other
 fi
-
+ ;;
+esac
 fi
 
 if test $bash_cv_struct_winsize_header = ioctl_h; then
@@ -6817,13 +6911,6 @@ printf "%s\n" "not found" >&6; }
 fi
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5
-printf %s "checking for struct dirent.d_ino... " >&6; }
-if test ${bash_cv_dirent_has_d_ino+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-
 
 ac_fn_c_check_member "$LINENO" "struct dirent" "d_ino" "ac_cv_member_struct_dirent_d_ino" "
 #include <stdio.h>
@@ -6852,28 +6939,10 @@ then :
 
 printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h
 
-bash_cv_dirent_has_d_ino=yes
-else $as_nop
-  bash_cv_dirent_has_d_ino=no
-fi
-
-
-fi
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_ino" >&5
-printf "%s\n" "$bash_cv_dirent_has_d_ino" >&6; }
-if test $bash_cv_dirent_has_d_ino = yes; then
-printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h
 
 fi
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5
-printf %s "checking for struct dirent.d_fileno... " >&6; }
-if test ${bash_cv_dirent_has_d_fileno+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
 
 
 ac_fn_c_check_member "$LINENO" "struct dirent" "d_fileno" "ac_cv_member_struct_dirent_d_fileno" "
@@ -6903,28 +6972,17 @@ then :
 
 printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h
 
-bash_cv_dirent_has_d_fileno=yes
-else $as_nop
-  bash_cv_dirent_has_d_fileno=no
-fi
-
 
 fi
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5
-printf "%s\n" "$bash_cv_dirent_has_d_fileno" >&6; }
-if test $bash_cv_dirent_has_d_fileno = yes; then
-printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h
-
-fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5
 printf %s "checking for struct timeval in sys/time.h and time.h... " >&6; }
 if test ${bash_cv_struct_timeval+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if HAVE_SYS_TIME_H
                  #include <sys/time.h>
@@ -6943,11 +7001,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_struct_timeval=yes
-else $as_nop
-  bash_cv_struct_timeval=no
+else case e in #(
+  e) bash_cv_struct_timeval=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-
+ ;;
+esac
 fi
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5
@@ -6970,8 +7030,8 @@ printf %s "checking for $CC options needed to detect all undeclared functions...
 if test ${ac_cv_c_undeclared_builtin_options+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_save_CFLAGS=$CFLAGS
+else case e in #(
+  e) ac_save_CFLAGS=$CFLAGS
    ac_cv_c_undeclared_builtin_options='cannot detect'
    for ac_arg in '' -fno-builtin; do
      CFLAGS="$ac_save_CFLAGS $ac_arg"
@@ -6990,8 +7050,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
 
-else $as_nop
-  # This test program should compile successfully.
+else case e in #(
+  e) # This test program should compile successfully.
         # No library function is consistently available on
         # freestanding implementations, so test against a dummy
         # declaration.  Include always-available headers on the
@@ -7019,26 +7079,29 @@ then :
   if test x"$ac_arg" = x
 then :
   ac_cv_c_undeclared_builtin_options='none needed'
-else $as_nop
-  ac_cv_c_undeclared_builtin_options=$ac_arg
+else case e in #(
+  e) ac_cv_c_undeclared_builtin_options=$ac_arg ;;
+esac
 fi
           break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     done
     CFLAGS=$ac_save_CFLAGS
-
+   ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
 printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
   case $ac_cv_c_undeclared_builtin_options in #(
   'cannot detect') :
-    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot make $CC report undeclared builtins
-See \`config.log' for more details" "$LINENO" 5; } ;; #(
+See 'config.log' for more details" "$LINENO" 5; } ;; #(
   'none needed') :
     ac_c_undeclared_builtin_options='' ;; #(
   *) :
@@ -7050,8 +7113,9 @@ ac_fn_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#i
 if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes
 then :
   ac_have_decl=1
-else $as_nop
-  ac_have_decl=0
+else case e in #(
+  e) ac_have_decl=0 ;;
+esac
 fi
 printf "%s\n" "#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl" >>confdefs.h
 
@@ -7070,27 +7134,33 @@ fi
 if test ${bash_cv_termcap_lib+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent"
+else case e in #(
+  e) ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent"
 if test "x$ac_cv_func_tgetent" = xyes
 then :
   bash_cv_termcap_lib=libc
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
 printf %s "checking for tgetent in -ltermcap... " >&6; }
 if test ${ac_cv_lib_termcap_tgetent+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-ltermcap  $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.  */
-char tgetent ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent (void);
 int
 main (void)
 {
@@ -7102,34 +7172,42 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_termcap_tgetent=yes
-else $as_nop
-  ac_cv_lib_termcap_tgetent=no
+else case e in #(
+  e) ac_cv_lib_termcap_tgetent=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5
 printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; }
 if test "x$ac_cv_lib_termcap_tgetent" = xyes
 then :
   bash_cv_termcap_lib=libtermcap
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
 printf %s "checking for tgetent in -ltinfo... " >&6; }
 if test ${ac_cv_lib_tinfo_tgetent+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-ltinfo  $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.  */
-char tgetent ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent (void);
 int
 main (void)
 {
@@ -7141,34 +7219,42 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_tinfo_tgetent=yes
-else $as_nop
-  ac_cv_lib_tinfo_tgetent=no
+else case e in #(
+  e) ac_cv_lib_tinfo_tgetent=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5
 printf "%s\n" "$ac_cv_lib_tinfo_tgetent" >&6; }
 if test "x$ac_cv_lib_tinfo_tgetent" = xyes
 then :
   bash_cv_termcap_lib=libtinfo
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5
 printf %s "checking for tgetent in -lcurses... " >&6; }
 if test ${ac_cv_lib_curses_tgetent+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcurses  $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.  */
-char tgetent ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent (void);
 int
 main (void)
 {
@@ -7180,34 +7266,42 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_lib_curses_tgetent=yes
-else $as_nop
-  ac_cv_lib_curses_tgetent=no
+else case e in #(
+  e) ac_cv_lib_curses_tgetent=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5
 printf "%s\n" "$ac_cv_lib_curses_tgetent" >&6; }
 if test "x$ac_cv_lib_curses_tgetent" = xyes
 then :
   bash_cv_termcap_lib=libcurses
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5
-printf %s "checking for tgetent in -lncurses... " >&6; }
-if test ${ac_cv_lib_ncurses_tgetent+y}
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
+printf %s "checking for tgetent in -lncursesw... " >&6; }
+if test ${ac_cv_lib_ncursesw_tgetent+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses  $LIBS"
+else case e in #(
+  e) 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.  */
-char tgetent ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent (void);
 int
 main (void)
 {
@@ -7218,35 +7312,43 @@ return tgetent ();
 _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
-  ac_cv_lib_ncurses_tgetent=yes
-else $as_nop
-  ac_cv_lib_ncurses_tgetent=no
+  ac_cv_lib_ncursesw_tgetent=yes
+else case e in #(
+  e) ac_cv_lib_ncursesw_tgetent=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5
-printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; }
-if test "x$ac_cv_lib_ncurses_tgetent" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_ncursesw_tgetent" >&6; }
+if test "x$ac_cv_lib_ncursesw_tgetent" = xyes
 then :
-  bash_cv_termcap_lib=libncurses
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
-printf %s "checking for tgetent in -lncursesw... " >&6; }
-if test ${ac_cv_lib_ncursesw_tgetent+y}
+  bash_cv_termcap_lib=libncursesw
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5
+printf %s "checking for tgetent in -lncurses... " >&6; }
+if test ${ac_cv_lib_ncurses_tgetent+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncursesw  $LIBS"
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncurses  $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.  */
-char tgetent ();
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char tgetent (void);
 int
 main (void)
 {
@@ -7257,33 +7359,42 @@ return tgetent ();
 _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
-  ac_cv_lib_ncursesw_tgetent=yes
-else $as_nop
-  ac_cv_lib_ncursesw_tgetent=no
+  ac_cv_lib_ncurses_tgetent=yes
+else case e in #(
+  e) ac_cv_lib_ncurses_tgetent=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
-printf "%s\n" "$ac_cv_lib_ncursesw_tgetent" >&6; }
-if test "x$ac_cv_lib_ncursesw_tgetent" = xyes
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; }
+if test "x$ac_cv_lib_ncurses_tgetent" = xyes
 then :
-  bash_cv_termcap_lib=libncursesw
-else $as_nop
-  bash_cv_termcap_lib=gnutermcap
+  bash_cv_termcap_lib=libncurses
+else case e in #(
+  e) bash_cv_termcap_lib=gnutermcap ;;
+esac
 fi
-
+ ;;
+esac
 fi
-
+ ;;
+esac
 fi
-
+ ;;
+esac
 fi
-
+ ;;
+esac
 fi
-
+ ;;
+esac
 fi
-
+ ;;
+esac
 fi
 
 if test "X$_bash_needmsg" = "Xyes"; then
@@ -7302,9 +7413,15 @@ TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libtinfo; then
 TERMCAP_LIB=-ltinfo
 TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libncursesw; then
+TERMCAP_LIB=-lncursesw
+TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libncurses; then
 TERMCAP_LIB=-lncurses
 TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libcurses; then
+TERMCAP_LIB=-lcurses
+TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libc; then
 TERMCAP_LIB=
 TERMCAP_DEP=
@@ -7339,6 +7456,7 @@ esac
 case "$TERMCAP_LIB" in
 -ltinfo)  TERMCAP_PKG_CONFIG_LIB=tinfo ;;
 -lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-lncursesw) TERMCAP_PKG_CONFIG_LIB=ncursesw ;;
 -lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
 -ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;;
 *) TERMCAP_PKG_CONFIG_LIB=termcap ;;
@@ -7350,8 +7468,8 @@ printf %s "checking for nl_langinfo and CODESET... " >&6; }
 if test ${am_cv_langinfo_codeset+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <langinfo.h>
 int
@@ -7365,16 +7483,20 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   am_cv_langinfo_codeset=yes
-else $as_nop
-  am_cv_langinfo_codeset=no
+else case e in #(
+  e) am_cv_langinfo_codeset=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-
+     ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
 printf "%s\n" "$am_cv_langinfo_codeset" >&6; }
   if test $am_cv_langinfo_codeset = yes; then
+    printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h
+
 
 printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
 
@@ -7421,7 +7543,7 @@ fi
 ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp"
 if test "x$ac_cv_func_mbscasecmp" = xyes
 then :
-  printf "%s\n" "#define HAVE_MBSCMP 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_MBSCASECMP 1" >>confdefs.h
 
 fi
 
@@ -7432,6 +7554,13 @@ then :
 
 fi
 
+ac_fn_c_check_func "$LINENO" "mbsncmp" "ac_cv_func_mbsncmp"
+if test "x$ac_cv_func_mbsncmp" = xyes
+then :
+  printf "%s\n" "#define HAVE_MBSNCMP 1" >>confdefs.h
+
+fi
+
 ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs"
 if test "x$ac_cv_func_mbsnrtowcs" = xyes
 then :
@@ -7452,13 +7581,14 @@ if test "x$ac_cv_func_mbschr" = xyes
 then :
   printf "%s\n" "#define HAVE_MBSCHR 1" >>confdefs.h
 
-else $as_nop
-  case " $LIBOBJS " in
+else case e in #(
+  e) case " $LIBOBJS " in
   *" mbschr.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS mbschr.$ac_objext"
  ;;
 esac
-
+ ;;
+esac
 fi
 
 
@@ -7497,19 +7627,27 @@ then :
 
 fi
 
+ac_fn_c_check_func "$LINENO" "wcsnrtombs" "ac_cv_func_wcsnrtombs"
+if test "x$ac_cv_func_wcsnrtombs" = xyes
+then :
+  printf "%s\n" "#define HAVE_WCSNRTOMBS 1" >>confdefs.h
+
+fi
+
 
 ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth"
 if test "x$ac_cv_func_wcswidth" = xyes
 then :
   printf "%s\n" "#define HAVE_WCSWIDTH 1" >>confdefs.h
 
-else $as_nop
-  case " $LIBOBJS " in
+else case e in #(
+  e) case " $LIBOBJS " in
   *" wcswidth.$ac_objext "* ) ;;
   *) LIBOBJS="$LIBOBJS wcswidth.$ac_objext"
  ;;
 esac
-
+ ;;
+esac
 fi
 
 
@@ -7519,8 +7657,8 @@ printf %s "checking whether mbrtowc and mbstate_t are properly declared... " >&6
 if test ${ac_cv_func_mbrtowc+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <wchar.h>
 int
@@ -7538,11 +7676,13 @@ _ACEOF
 if ac_fn_c_try_link "$LINENO"
 then :
   ac_cv_func_mbrtowc=yes
-else $as_nop
-  ac_cv_func_mbrtowc=no
+else case e in #(
+  e) ac_cv_func_mbrtowc=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext conftest.$ac_ext
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5
 printf "%s\n" "$ac_cv_func_mbrtowc" >&6; }
@@ -7596,8 +7736,8 @@ printf %s "checking for wchar_t in wchar.h... " >&6; }
 if test ${bash_cv_type_wchar_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <wchar.h>
@@ -7615,11 +7755,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_type_wchar_t=yes
-else $as_nop
-  bash_cv_type_wchar_t=no
-
+else case e in #(
+  e) bash_cv_type_wchar_t=no
+ ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5
 printf "%s\n" "$bash_cv_type_wchar_t" >&6; }
@@ -7634,8 +7776,8 @@ printf %s "checking for wctype_t in wctype.h... " >&6; }
 if test ${bash_cv_type_wctype_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <wctype.h>
@@ -7653,11 +7795,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_type_wctype_t=yes
-else $as_nop
-  bash_cv_type_wctype_t=no
-
+else case e in #(
+  e) bash_cv_type_wctype_t=no
+ ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5
 printf "%s\n" "$bash_cv_type_wctype_t" >&6; }
@@ -7672,8 +7816,8 @@ printf %s "checking for wint_t in wctype.h... " >&6; }
 if test ${bash_cv_type_wint_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <wctype.h>
@@ -7691,11 +7835,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   bash_cv_type_wint_t=yes
-else $as_nop
-  bash_cv_type_wint_t=no
-
+else case e in #(
+  e) bash_cv_type_wint_t=no
+ ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5
 printf "%s\n" "$bash_cv_type_wint_t" >&6; }
@@ -7710,13 +7856,13 @@ printf %s "checking for wcwidth broken with unicode combining characters... " >&
 if test ${bash_cv_wcwidth_broken+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test "$cross_compiling" = yes
+else case e in #(
+  e) if test "$cross_compiling" = yes
 then :
   bash_cv_wcwidth_broken=no
 
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <unistd.h>
@@ -7727,14 +7873,15 @@ else $as_nop
 #include <wchar.h>
 
 int
-main(c, v)
-int     c;
-char    **v;
+main(int c, char **v)
 {
         int     w;
 
         setlocale(LC_ALL, "en_US.UTF-8");
         w = wcwidth (0x0301);
+       if (w != 0)
+         exit (0);
+       w = wcwidth (0x200b);
         exit (w == 0);  /* exit 0 if wcwidth broken */
 }
 
@@ -7742,13 +7889,16 @@ _ACEOF
 if ac_fn_c_try_run "$LINENO"
 then :
   bash_cv_wcwidth_broken=yes
-else $as_nop
-  bash_cv_wcwidth_broken=no
+else case e in #(
+  e) bash_cv_wcwidth_broken=no ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5
 printf "%s\n" "$bash_cv_wcwidth_broken" >&6; }
@@ -7773,28 +7923,30 @@ 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]];'.
+# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
 printf %s "checking size of wchar_t... " >&6; }
 if test ${ac_cv_sizeof_wchar_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t"        "$ac_includes_default"
+else case e in #(
+  e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t"        "$ac_includes_default"
 then :
 
-else $as_nop
-  if test "$ac_cv_type_wchar_t" = yes; then
-     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+  e) if test "$ac_cv_type_wchar_t" = yes; then
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (wchar_t)
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
    else
      ac_cv_sizeof_wchar_t=0
-   fi
+   fi ;;
+esac
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
 printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; }
@@ -7919,6 +8071,7 @@ CFLAGS="$CFLAGS $STYLE_CFLAGS"
 
 
 
+
 ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc history.pc"
 
 
@@ -7935,8 +8088,8 @@ cat >confcache <<\_ACEOF
 # config.status only pays attention to the cache file if you give it
 # the --recheck option to rerun configure.
 #
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# 'ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* 'ac_cv_foo' will be assigned the
 # following values.
 
 _ACEOF
@@ -7966,14 +8119,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;}
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
+      # 'set' does not quote correctly, so add quotes: double-quote
       # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
        "s/'/'\\\\''/g;
          s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
       ;; #(
     *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      # 'set' quotes correctly as required by POSIX, so do not add quotes.
       sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
     esac |
@@ -8034,6 +8187,12 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+# Check whether --enable-year2038 was given.
+if test ${enable_year2038+y}
+then :
+  enableval=$enable_year2038;
+fi
+
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
@@ -8063,7 +8222,6 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-as_nop=:
 if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
 then :
   emulate sh
@@ -8072,12 +8230,13 @@ then :
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else $as_nop
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
@@ -8149,7 +8308,7 @@ IFS=$as_save_IFS
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
@@ -8178,7 +8337,6 @@ as_fn_error ()
 } # as_fn_error
 
 
-
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -8218,11 +8376,12 @@ then :
   {
     eval $1+=\$2
   }'
-else $as_nop
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -8236,11 +8395,12 @@ then :
   {
     as_val=$(( $* ))
   }'
-else $as_nop
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
 
@@ -8323,9 +8483,9 @@ if (echo >conf$$.file) 2>/dev/null; then
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -pR'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
       as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
@@ -8406,10 +8566,12 @@ as_test_x='test -x'
 as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 
 exec 6>&1
@@ -8424,8 +8586,8 @@ 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 8.2, which was
-generated by GNU Autoconf 2.71.  Invocation command line was
+This file was extended by readline $as_me 8.3, which was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -8457,7 +8619,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
+'$as_me' instantiates files and other configuration actions
 from templates according to the current configuration.  Unless the files
 and actions are specified as TAGs, all are instantiated by default.
 
@@ -8492,11 +8654,11 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-readline config.status 8.2
-configured by $0, generated by GNU Autoconf 2.71,
+readline config.status 8.3
+configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2021 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -8556,8 +8718,8 @@ do
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
+    as_fn_error $? "ambiguous option: '$1'
+Try '$0 --help' for more information.";;
   --help | --hel | -h )
     printf "%s\n" "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
@@ -8565,8 +8727,8 @@ Try \`$0 --help' for more information.";;
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
+  -*) as_fn_error $? "unrecognized option: '$1'
+Try '$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
@@ -8623,7 +8785,7 @@ do
     "history.pc") CONFIG_FILES="$CONFIG_FILES history.pc" ;;
     "stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS stamp-h" ;;
 
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -8643,7 +8805,7 @@ fi
 # creating and moving files from /tmp can sometimes cause problems.
 # Hook for its removal unless debugging.
 # Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
+# after its creation but before its name has been assigned to '$tmp'.
 $debug ||
 {
   tmp= ac_tmp=
@@ -8667,7 +8829,7 @@ ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
+# This happens for instance with './config.status config.h'.
 if test -n "$CONFIG_FILES"; then
 
 
@@ -8825,13 +8987,13 @@ fi # test -n "$CONFIG_FILES"
 
 # Set up the scripts for CONFIG_HEADERS section.
 # No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
+# This happens for instance with './config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
 cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
-# Transform confdefs.h into an awk script `defines.awk', embedded as
+# Transform confdefs.h into an awk script 'defines.awk', embedded as
 # here-document in config.status, that substitutes the proper values into
 # config.h.in to produce config.h.
 
@@ -8941,7 +9103,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -8963,19 +9125,19 @@ do
       -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
         # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
+        # because $ac_f cannot contain ':'.
         test -f "$ac_f" ||
           case $ac_f in
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+          as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;;
       esac
       case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
     done
 
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # Let's still pretend it is 'configure' which instantiates (i.e., don't
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
     configure_input='Generated from '`
@@ -9103,7 +9265,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 esac
 _ACEOF
 
-# Neutralize VPATH when `$srcdir' = `.'.
+# Neutralize VPATH when '$srcdir' = '.'.
 # Shell code in configure.ac might set extrasub.
 # FIXME: do we really want to maintain this feature?
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -9133,9 +9295,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
       "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
-printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$ac_tmp/stdin"
index 15501fa2dbfc4cd54759c0d596e9e65d2ec7abc5..5599d12affd39a79c015f19b2fba531d9be5c56c 100644 (file)
@@ -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-2022 Free Software Foundation, Inc.
+# Copyright (C) 1987-2024 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 8.2, version 2.97])
+AC_REVISION([for Readline 8.3, version 2.103])
 
-AC_INIT(readline, 8.2, bug-readline@gnu.org)
+AC_INIT(readline, 8.3, bug-readline@gnu.org)
 
 dnl make sure we are using a recent autoconf version
 AC_PREREQ(2.69)
@@ -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=8.2
+LIBVERSION=8.3
 
 AC_CANONICAL_HOST
 AC_CANONICAL_BUILD
@@ -118,10 +118,12 @@ AC_USE_SYSTEM_EXTENSIONS
 # If we're using gcc and the user hasn't specified CFLAGS, add -O2 to CFLAGS
 if test -n "$want_auto_cflags" ; then
        AUTO_CFLAGS="-g ${GCC:+-O2}"
-       STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}"
+#      STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}"
+       STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security}"
 fi
 
-AC_PROG_GCC_TRADITIONAL
+dnl this macro is obsolete
+dnl AC_PROG_GCC_TRADITIONAL
 AC_PROG_INSTALL
 AC_CHECK_TOOL(AR, ar)
 dnl Set default for ARFLAGS, since autoconf does not have a macro for it.
@@ -129,6 +131,8 @@ dnl This allows people to set it when running configure or make
 test -n "$ARFLAGS" || ARFLAGS="cr"
 AC_PROG_RANLIB
 
+AM_PROG_INSTALL_SH
+
 MAKE_SHELL=/bin/sh
 AC_SUBST(MAKE_SHELL)
 
@@ -145,12 +149,15 @@ AC_C_VOLATILE
 AC_TYPE_SIZE_T
 AC_CHECK_TYPE(ssize_t, int)
 
+AC_TYPE_MODE_T
+
 AC_HEADER_STAT
 AC_HEADER_DIRENT
 
 AC_CHECK_FUNCS(fcntl gettimeofday kill lstat pselect readlink select setitimer)
-AC_CHECK_FUNCS(fnmatch memmove putenv setenv setlocale \
-               strcasecmp strpbrk sysconf tcgetattr vsnprintf)
+AC_CHECK_FUNCS(fnmatch memmove putenv setenv setlocale strcasecmp \
+               strpbrk sysconf tcgetattr tcgetwinsize tcsetwinsize \
+               vsnprintf)
 AC_CHECK_FUNCS(isascii isxdigit)
 AC_CHECK_FUNCS(getpwent getpwnam getpwuid)
 
@@ -220,6 +227,7 @@ esac
 case "$TERMCAP_LIB" in
 -ltinfo)  TERMCAP_PKG_CONFIG_LIB=tinfo ;;
 -lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
+-lncursesw) TERMCAP_PKG_CONFIG_LIB=ncursesw ;;
 -lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;;
 -ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;;
 *) TERMCAP_PKG_CONFIG_LIB=termcap ;;
@@ -325,6 +333,7 @@ AC_SUBST(CFLAGS)
 AC_SUBST(LOCAL_CFLAGS)
 AC_SUBST(LOCAL_LDFLAGS)
 AC_SUBST(LOCAL_DEFS)
+AC_SUBST(STYLE_CFLAGS)
 
 AC_SUBST(AR)
 AC_SUBST(ARFLAGS)
index 803d4cebadba81cf1c792da1bf6a6c726497c83f..9aa8c7b50be798be1f327004b5811e95939e2133 100644 (file)
--- a/display.c
+++ b/display.c
@@ -1,6 +1,6 @@
 /* display.c -- readline redisplay facility. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.
 #include "rlprivate.h"
 #include "xmalloc.h"
 
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
 static void putc_face (int, int, char *);
 static void puts_face (const char *, const char *, int);
 static void norm_face (char *, int);
@@ -282,6 +278,10 @@ static int prompt_physical_chars;
    characters in the prompt or use heuristics about where they are. */
 static int *local_prompt_newlines;
 
+/* An array saying how many invisible characters are in each line of the
+   prompt. */
+static int *local_prompt_invis_chars;
+
 /* 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;
@@ -295,6 +295,7 @@ static int line_totbytes;
 static char *saved_local_prompt;
 static char *saved_local_prefix;
 static int *saved_local_prompt_newlines;
+static int *saved_local_prompt_invis_chars;
 
 static int saved_last_invisible;
 static int saved_visible_length;
@@ -356,7 +357,7 @@ 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, newlines, newlines_guess, bound, can_add_invis;
+  int mlen, newlines, newlines_guess, bound, can_add_invis, lastinvis;
   int mb_cur_max;
 
   /* We only expand the mode string for the last line of a multiline prompt
@@ -399,7 +400,8 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
            *vlp = l;
 
          local_prompt_newlines = (int *) xrealloc (local_prompt_newlines, sizeof (int) * 2);
-         local_prompt_newlines[0] = 0;
+         local_prompt_invis_chars = (int *) xrealloc (local_prompt_invis_chars, sizeof (int) * 2);
+         local_prompt_newlines[0] = local_prompt_invis_chars[0] = 0;
          local_prompt_newlines[1] = -1;
 
          return r;
@@ -414,15 +416,20 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
   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;
+  local_prompt_invis_chars = (int *) xrealloc (local_prompt_invis_chars, sizeof (int) * (newlines_guess + 1));
+  local_prompt_invis_chars[0] = 0;
   for (rl = 1; rl <= newlines_guess; rl++)
-    local_prompt_newlines[rl] = -1;
+    {
+      local_prompt_newlines[rl] = -1;
+      local_prompt_invis_chars[rl] = 0;
+    }
 
   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;         /* we're not ignoring any characters yet */
 
-  for (ignoring = last = ninvis = 0, p = nprompt; p && *p; p++)
+  for (ignoring = last = ninvis = lastinvis = 0, p = nprompt; p && *p; p++)
     {
       /* This code strips the invisible character string markers
         RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */
@@ -447,6 +454,8 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
                 counter. */
              if (invflset && newlines == 1)
                invfl = ninvis;
+             local_prompt_invis_chars[newlines - 1] = ninvis - lastinvis;
+             lastinvis = ninvis;
            }
          if (p != (igstart + 1))
            last = r - ret - 1;
@@ -511,6 +520,8 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
              else
                new = r - ret;
              local_prompt_newlines[++newlines] = new;
+             local_prompt_invis_chars[newlines - 1] = ninvis - lastinvis;
+             lastinvis = ninvis;
            }
 
          /* What if a physical character of width >= 2 is split? There is
@@ -525,6 +536,9 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
   if (rl <= _rl_screenwidth)
     invfl = ninvis;
 
+  /* Make sure we account for invisible characters on the last line. */
+  local_prompt_invis_chars[newlines] = ninvis - lastinvis;
+
   *r = '\0';
   if (lp)
     *lp = rl;
@@ -591,13 +605,22 @@ rl_expand_prompt (char *prompt)
   FREE (local_prompt);
   FREE (local_prompt_prefix);
 
+  /* Set default values for variables expand_prompt sets */
   local_prompt = local_prompt_prefix = (char *)0;
   local_prompt_len = 0;
   prompt_last_invisible = prompt_invis_chars_first_line = 0;
   prompt_visible_length = prompt_physical_chars = 0;
 
+  if (local_prompt_invis_chars == 0)
+    local_prompt_invis_chars = (int *)xmalloc (sizeof (int));
+  local_prompt_invis_chars[0] = 0;
+
   if (prompt == 0 || *prompt == 0)
-    return (0);
+    {
+      local_prompt = xmalloc (sizeof (char));
+      local_prompt[0] = '\0';
+      return (0);
+    }
 
   p = strrchr (prompt, '\n');
   if (p == 0)
@@ -641,8 +664,8 @@ rl_expand_prompt (char *prompt)
 static void
 realloc_line (int minsize)
 {
-  int minimum_size;
-  int newsize, delta;
+  size_t minimum_size;
+  size_t newsize, delta;
 
   minimum_size = DEFAULT_LINE_BUFFER_SIZE;
   if (minsize < minimum_size)
@@ -684,7 +707,7 @@ init_line_structures (int minsize)
       if (line_size > minsize)
        minsize = line_size;
     }
-   realloc_line (minsize); 
+  realloc_line (minsize); 
 
   if (vis_lbreaks == 0)
     {
@@ -758,16 +781,39 @@ _rl_optimize_redisplay (void)
     _rl_quick_redisplay = 1;
 }  
 
+/* Useful shorthand used by rl_redisplay, update_line, rl_move_cursor_relative */
+#define INVIS_FIRST()  (local_prompt_invis_chars[0])
+#define WRAP_OFFSET(line, offset)  ((line <= prompt_last_screen_line) ? local_prompt_invis_chars[line] : 0)
+
+#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
+#define VIS_LLEN(l)    ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
+#define INV_LLEN(l)    (inv_lbreaks[l+1] - inv_lbreaks[l])
+#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
+#define VIS_FACE(line) (vis_face + vis_lbreaks[line])
+#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
+#define VIS_LINE_FACE(line) ((line) > _rl_vis_botlin) ? "" : VIS_FACE(line)
+#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
+#define INV_LINE_FACE(line) (inv_face + inv_lbreaks[line])
+
+#define INV_CHARS_CURRENT_PROMPT_LINE(line) \
+       (local_prompt_invis_chars[line] > 0)
+
+#define OLD_CPOS_IN_PROMPT() (cpos_adjusted == 0 && \
+                       _rl_last_c_pos != o_cpos && \
+                       _rl_last_c_pos > wrap_offset && \
+                       o_cpos < prompt_last_invisible)
+
 /* Basic redisplay algorithm.  See comments inline. */
 void
 rl_redisplay (void)
 {
   int in, out, c, linenum, cursor_linenum;
   int inv_botlin, lb_botlin, lb_linenum, o_cpos;
-  int newlines, lpos, temp, n0, num, prompt_lines_estimate;
+  int newlines, lpos, temp, num;
   char *prompt_this_line;
   char cur_face;
   int hl_begin, hl_end;
+  int short_circuit;
   int mb_cur_max = MB_CUR_MAX;
 #if defined (HANDLE_MULTIBYTE)
   WCHAR_T wc;
@@ -953,7 +999,7 @@ rl_redisplay (void)
      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;
+  lpos = local_prompt ? prompt_physical_chars + modmark : 0;
 
 #if defined (HANDLE_MULTIBYTE)
   memset (line_state_invisible->wrapped_line, 0, line_state_invisible->wbsize * sizeof (int));
@@ -964,9 +1010,9 @@ rl_redisplay (void)
      in the first physical line of the prompt.
      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;
+  /* XXX - There is code that assumes that all the invisible characters occur
+     on the first and last prompt lines; change that to use
+     local_prompt_invis_chars */
 
   /* what if lpos is already >= _rl_screenwidth before we start drawing the
      contents of the command line? */
@@ -982,6 +1028,7 @@ rl_redisplay (void)
        }  
 
       /* Now set lpos from the last newline */
+      /* XXX - change to use local_prompt_invis_chars[] */
       if (mb_cur_max > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
         lpos = _rl_col_width (local_prompt, temp, local_prompt_len, 1) - (wrap_offset - prompt_invis_chars_first_line);
       else
@@ -1044,6 +1091,8 @@ rl_redisplay (void)
              wc_width = (temp >= 0) ? temp : 1;
            }
        }
+      else
+       wc_width = 1;           /* make sure it's set for the META_CHAR check */
 #endif
 
       if (in == rl_point)
@@ -1053,31 +1102,32 @@ rl_redisplay (void)
        }
 
 #if defined (HANDLE_MULTIBYTE)
-      if (META_CHAR (c) && _rl_output_meta_chars == 0) /* XXX - clean up */
+      if (META_CHAR (c) && wc_bytes == 1 && wc_width == 1)
 #else
       if (META_CHAR (c))
 #endif
        {
+#if 0
+         /* TAG: readline-8.4 20230227 */
+         /* https://savannah.gnu.org/support/index.php?110830
+            asking for non-printing meta characters to be printed using an
+            escape sequence. */
+
+         /* isprint(c) handles bytes up to UCHAR_MAX */
+         if (_rl_output_meta_chars == 0 || isprint (c) == 0)
+#else
          if (_rl_output_meta_chars == 0)
+#endif
            {
              char obuf[5];
              int olen;
 
+#if defined (HAVE_VSNPRINTF)
+             olen = snprintf (obuf, sizeof (obuf), "\\%o", c);
+#else
              olen = sprintf (obuf, "\\%o", c);
-         
-             if (lpos + olen >= _rl_screenwidth)
-               {
-                 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 = olen - temp;
-               }
-             else
-               lpos += olen;
-
+         
              for (temp = 0; temp < olen; temp++)
                {
                  invis_addc (&out, obuf[temp], cur_face);
@@ -1249,26 +1299,6 @@ rl_redisplay (void)
             second and subsequent lines start at inv_lbreaks[N], offset by
             OFFSET (which has already been calculated above).  */
 
-#define INVIS_FIRST()  (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset)
-#define WRAP_OFFSET(line, offset)  ((line == 0) \
-                                       ? (offset ? INVIS_FIRST() : 0) \
-                                       : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0))
-#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
-#define VIS_LLEN(l)    ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
-#define INV_LLEN(l)    (inv_lbreaks[l+1] - inv_lbreaks[l])
-#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
-#define VIS_FACE(line) (vis_face + vis_lbreaks[line])
-#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
-#define VIS_LINE_FACE(line) ((line) > _rl_vis_botlin) ? "" : VIS_FACE(line)
-#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
-#define INV_LINE_FACE(line) (inv_face + inv_lbreaks[line])
-
-#define OLD_CPOS_IN_PROMPT() (cpos_adjusted == 0 && \
-                       _rl_last_c_pos != o_cpos && \
-                       _rl_last_c_pos > wrap_offset && \
-                       o_cpos < prompt_last_invisible)
-
-
          /* We don't want to highlight anything that's going to be off the top
             of the display; if the current line takes up more than an entire
            screen, just mark the lines that won't be displayed as having a
@@ -1283,9 +1313,54 @@ rl_redisplay (void)
                norm_face (INV_LINE_FACE(linenum), INV_LLEN (linenum));
            }
 
+         /* XXX - experimental new code */
+         /* Now that _rl_last_v_pos is a logical count, not bounded by the
+            number of physical screen lines, this is a start at being able
+            to redisplay lines that consume more than the number of physical
+            screen lines in more than a simple `move-to-the-next-line' way.
+
+            If the new line has more lines than there are physical screen
+            lines, and the cursor would be off the top of the screen if we
+            displayed all the new lines, clear the screen without killing
+            the scrollback buffer, clear out the visible line so we do a
+            complete redraw, and make the loop break when we have displayed
+            a physical screen full of lines. Do the same if we are going to
+            move the cursor to a line that's greater than the number of
+            physical screen lines when we weren't before.
+
+            SHORT_CIRCUIT says where to break the loop. Pretty simple right now. */
+         short_circuit = -1;
+         if (inv_botlin >= _rl_screenheight)
+           {
+             int extra;
+
+             extra = inv_botlin - _rl_screenheight;    /* lines off the top */
+             /* cursor in portion of line that would be off screen or in
+                the lines that exceed the number of physical screen lines. */
+             if (cursor_linenum <= extra || 
+                  (cursor_linenum >= _rl_screenheight && _rl_vis_botlin <= _rl_screenheight))
+               {
+                 if (cursor_linenum <= extra)
+                   short_circuit = _rl_screenheight;
+                 _rl_clear_screen (0);
+                 if (visible_line)
+                   memset (visible_line, 0, line_size);
+                 rl_on_new_line ();
+               }
+             /* The cursor is beyond the number of lines that would be off
+                the top, but we still want to display only the first
+                _RL_SCREENHEIGHT lines starting at the beginning of the line. */
+             else if (cursor_linenum > extra && cursor_linenum <= _rl_screenheight &&
+                       _rl_vis_botlin <= _rl_screenheight)
+               short_circuit = _rl_screenheight;
+           }
+
          /* For each line in the buffer, do the updating display. */
          for (linenum = 0; linenum <= inv_botlin; linenum++)
            {
+             if (short_circuit >= 0 && linenum == short_circuit)
+               break;
+
              /* This can lead us astray if we execute a program that changes
                 the locale from a non-multibyte to a multibyte one. */
              o_cpos = _rl_last_c_pos;
@@ -1319,6 +1394,7 @@ rl_redisplay (void)
                   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 */
+               /* XXX - use local_prompt_invis_chars[linenum] */
                _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
 
              /* If this is the line with the prompt, we might need to
@@ -1388,20 +1464,29 @@ rl_redisplay (void)
                    ((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
                }
            }
-         _rl_vis_botlin = inv_botlin;
+         _rl_vis_botlin = (short_circuit >= 0) ? short_circuit : inv_botlin;
 
          /* CHANGED_SCREEN_LINE is set to 1 if we have moved to a
             different screen line during this redisplay. */
          changed_screen_line = _rl_last_v_pos != cursor_linenum;
          if (changed_screen_line)
            {
+             int physpos;
+
+             /* The physpos calculation is to account for lines with differing
+                numbers of invisible characters. */
+             if (mb_cur_max == 1 || rl_byte_oriented)
+               physpos = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset);
+
+             /* Move to the line where the cursor will be. */
              _rl_move_vert (cursor_linenum);
+
              /* If we moved up to the line with the prompt using _rl_term_up,
                 the physical cursor position on the screen stays the same,
                 but the buffer position needs to be adjusted to account
                 for invisible characters. */
-             if ((mb_cur_max == 1 || rl_byte_oriented) && cursor_linenum == 0 && wrap_offset)
-               _rl_last_c_pos += wrap_offset;
+             if ((mb_cur_max == 1 || rl_byte_oriented) && cursor_linenum == prompt_last_screen_line)
+               _rl_last_c_pos = physpos + WRAP_OFFSET (cursor_linenum, wrap_offset);
            }
 
          /* Now we move the cursor to where it needs to be.  First, make
@@ -1414,18 +1499,53 @@ rl_redisplay (void)
             invisible character in the prompt string. */
          /* XXX - why not use local_prompt_len? */
          nleft = prompt_visible_length + wrap_offset;
-         if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 &&
-             _rl_last_c_pos < PROMPT_ENDING_INDEX && local_prompt)
+         if (cursor_linenum == prompt_last_screen_line)
            {
-             _rl_cr ();
-             if (modmark)
-               _rl_output_some_chars ("*", 1);
-
-             _rl_output_some_chars (local_prompt, nleft);
-             if (mb_cur_max > 1 && rl_byte_oriented == 0)
-               _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft, 1) - wrap_offset + modmark;
+             int pmt_offset = local_prompt_newlines ? local_prompt_newlines[cursor_linenum] : 0;
+             int curline_invchars = local_prompt_invis_chars ? local_prompt_invis_chars[cursor_linenum] : wrap_offset;
+             int cursor_bufpos;
+
+             /* cursor_bufpos is where the portion of the prompt that appears
+                on the current screen line begins in the buffer. It is a
+                buffer position, an index into curline
+                (local_prompt + pmt_offset) */
+             cursor_bufpos = pmt_offset;
+             if (mb_cur_max == 1 || rl_byte_oriented)
+               cursor_bufpos += _rl_last_c_pos;
              else
-               _rl_last_c_pos = nleft + modmark;
+               cursor_bufpos += _rl_last_c_pos + curline_invchars;
+
+             if (local_prompt && local_prompt_invis_chars[cursor_linenum] &&
+                   _rl_last_c_pos > 0 &&
+                   cursor_bufpos <= prompt_last_invisible)
+               {
+                 _rl_cr ();
+                 if (modmark)
+                   _rl_output_some_chars ("*", 1);
+
+                 /* If the number of characters in local_prompt is greater
+                    than the screen width, the prompt wraps. We only want to
+                    print the portion after the line wrap. */
+
+                 /* Make sure we set _rl_last_c_pos based on the number of
+                    characters we actually output, since we start at column 0. */
+                 if (cursor_linenum > 0 && pmt_offset > 0 && nleft > pmt_offset)
+                   _rl_output_some_chars (local_prompt + pmt_offset, nleft - pmt_offset);
+                 else
+                   {
+                     _rl_output_some_chars (local_prompt, nleft);
+                     pmt_offset = 0;           /* force for calculation below */
+                   }
+       
+                 if (mb_cur_max > 1 && rl_byte_oriented == 0)
+                   /* Start width calculation where we started output. */
+                   _rl_last_c_pos = _rl_col_width (local_prompt, pmt_offset, nleft, 1) - WRAP_OFFSET(cursor_linenum, wrap_offset) + modmark;
+                 else
+                   /* Index into invisible_line+inv_lbreaks[cursor_linenum],
+                      since that's what we use in the call to
+                      _rl_move_cursor_relative below. */
+                   _rl_last_c_pos = nleft + modmark - inv_lbreaks[cursor_linenum];     /* buffer position */
+               }
            }
 
          /* Where on that line?  And where does that line start
@@ -1444,6 +1564,7 @@ rl_redisplay (void)
             the prompt, and there's no good way to tell it, we compensate for
             those characters here and call _rl_backspace() directly if
             necessary */
+         /* XXX - might need to check cursor_linenum == prompt_last_screen_line like above. */
          if (wrap_offset && cursor_linenum == 0 && nleft < _rl_last_c_pos)
            {
              /* TX == new physical cursor position in multibyte locale. */
@@ -1652,7 +1773,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
 {
   char *ofd, *ols, *oe, *nfd, *nls, *ne;
   char *ofdf, *nfdf, *olsf, *nlsf;
-  int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
+  int temp, lendiff, wsatend, od, nd, o_cpos;
   int current_invis_chars;
   int col_lendiff, col_temp;
   int bytes_to_insert;
@@ -1783,8 +1904,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
             _rl_output_some_chars below. */
          if (newwidth > 0)
            {
-             int count, i, j;
-             char *optr;
+             int i, j;
 
              puts_face (new, new_face, newbytes);
              _rl_last_c_pos = newwidth;
@@ -1895,6 +2015,8 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
       /* See comments at dumb_update: for an explanation of this heuristic */
       if (nmax < omax)
        goto clear_rest_of_line;
+      /* XXX - need to use WRAP_OFFSET(current_line, wrap_offset) instead of
+        W_OFFSET - XXX */
       else if ((nmax - W_OFFSET(current_line, wrap_offset)) < (omax - W_OFFSET (current_line, visible_wrap_offset)))
        goto clear_rest_of_line;
       else
@@ -1981,7 +2103,11 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
         assume it's a combining character and back one up so the two base
         characters no longer compare equivalently. */
       t = MBRTOWC (&wc, ofd, mb_cur_max, &ps);
+#if 0
       if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0)
+#else
+      if (t > 0 && IS_COMBINING_CHAR (wc))
+#endif
        {
          old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY);
          new_offset = _rl_find_prev_mbchar (new, nfd - new, MB_FIND_ANY);
@@ -1998,6 +2124,8 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
 #if defined (HANDLE_MULTIBYTE)
   /* Find the last character that is the same between the two lines.  This
      bounds the region that needs to change. */
+  /* In this case, `last character' means the one farthest from the end of
+     the line. */
   if (mb_cur_max > 1 && rl_byte_oriented == 0)
     {
       ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
@@ -2014,7 +2142,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
                *olsf != *nlsf)
            break;
 
-         if (*ols == ' ')
+         if (*ols != ' ')
            wsatend = 0;
 
          ols = old + _rl_find_prev_mbchar (old, ols - old, MB_FIND_ANY);
@@ -2076,14 +2204,30 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
     }
 
   /* count of invisible characters in the current invisible line. */
-  current_invis_chars = W_OFFSET (current_line, wrap_offset);
+  current_invis_chars = WRAP_OFFSET (current_line, wrap_offset);
   if (_rl_last_v_pos != current_line)
     {
       _rl_move_vert (current_line);
       /* We have moved up to a new screen line.  This line may or may not have
          invisible characters on it, but we do our best to recalculate
          visible_wrap_offset based on what we know. */
-      if (current_line == 0)
+       /* This first clause handles the case where the prompt has been
+         recalculated (e.g., by rl_message) but the old prompt is still on
+         the visible line because we haven't overwritten it yet. We want
+         to somehow use the old prompt information, but we only want to do
+         this once. */
+      if (current_line == 0 && saved_local_prompt && old[0] == saved_local_prompt[0] && memcmp (old, saved_local_prompt, saved_local_length) == 0)
+       visible_wrap_offset = saved_invis_chars_first_line;
+      /* This clause handles the opposite: the prompt has been restored (e.g.,
+        by rl_clear_message) but the old saved_local_prompt (now NULL, so we
+        can't directly check it) is still on the visible line because we
+        haven't overwritten it yet. We guess that there aren't any invisible
+        characters in any of the prompts we put in with rl_message */
+      else if (current_line == 0 && local_prompt && new[0] == local_prompt[0] &&
+                (memcmp (new, local_prompt, local_prompt_len) == 0) &&
+                (memcmp (old, local_prompt, local_prompt_len) != 0))
+       visible_wrap_offset = 0;
+      else if (current_line == 0)
        visible_wrap_offset = prompt_invis_chars_first_line;    /* XXX */
 #if 0          /* XXX - not yet */
       else if (current_line == prompt_last_screen_line && wrap_offset > prompt_invis_chars_first_line)
@@ -2140,6 +2284,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
          else
            /* We take wrap_offset into account here so we can pass correct
               information to _rl_move_cursor_relative. */
+           /* XXX - can use local_prompt_invis_chars[0] instead of wrap_offset */
            _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff, 1) - wrap_offset + modmark;
          cpos_adjusted = 1;
        }
@@ -2183,6 +2328,7 @@ dumb_update:
                        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. */
+                 /* XXX - CHANGE THIS USING local_prompt_invis_chars[current_line] */
                  if (wrap_offset > prompt_invis_chars_first_line &&
                      current_line == prompt_last_screen_line &&
                      prompt_physical_chars > _rl_screenwidth &&
@@ -2201,6 +2347,20 @@ dumb_update:
                           wrap_offset >= prompt_invis_chars_first_line &&
                           _rl_horizontal_scroll_mode == 0)
                    ADJUST_CPOS (prompt_invis_chars_first_line);
+                 /* XXX - This is experimental. It's a start at supporting
+                    prompts where a non-terminal line contains the last
+                    invisible characters. We assume that we can use the
+                    local_prompt_invis_chars array and that the current line
+                    is completely filled with characters to _rl_screenwidth,
+                    so we can either adjust by the number of bytes in the
+                    current line or just go straight to _rl_screenwidth */
+                 else if (current_line > 0 && current_line < prompt_last_screen_line &&
+                          INV_CHARS_CURRENT_PROMPT_LINE(current_line) &&
+                          _rl_horizontal_scroll_mode == 0)
+                   {
+                     _rl_last_c_pos = _rl_screenwidth;
+                     cpos_adjusted = 1;
+                   }
                }
              else
                _rl_last_c_pos += temp;
@@ -2212,6 +2372,8 @@ dumb_update:
             know for sure, so we use another heuristic calclulation below. */
          if (nmax < omax)
            goto clear_rest_of_line;    /* XXX */
+         /* XXX - use WRAP_OFFSET(current_line, wrap_offset) here instead of
+            W_OFFSET since current_line == 0 */
          else if ((nmax - W_OFFSET(current_line, wrap_offset)) < (omax - W_OFFSET (current_line, visible_wrap_offset)))
            goto clear_rest_of_line;
          else
@@ -2680,8 +2842,6 @@ rl_on_new_line_with_prompt (void)
 int
 rl_forced_update_display (void)
 {
-  register char *temp;
-
   if (visible_line)
     memset (visible_line, 0, line_size);
 
@@ -2763,7 +2923,7 @@ _rl_move_cursor_relative (int new, const char *data, const char *dataf)
         (prompt_last_invisible) in the last line.  IN_INVISLINE is the
         offset of DATA in invisible_line */
       in_invisline = 0;
-      if (data > invisible_line && data < invisible_line+inv_lbreaks[_rl_inv_botlin+1])
+      if (data > invisible_line && _rl_inv_botlin < inv_lbsize && data < invisible_line+inv_lbreaks[_rl_inv_botlin+1])
        in_invisline = data - invisible_line;
 
       /* Use NEW when comparing against the last invisible character in the
@@ -2866,9 +3026,25 @@ _rl_move_vert (int to)
 {
   register int delta, i;
 
-  if (_rl_last_v_pos == to || to > _rl_screenheight)
+  if (_rl_last_v_pos == to)
     return;
 
+#if 0
+  /* If we're being asked to move to a line beyond the screen height, and
+     we're currently at the last physical line, issue a newline and let the
+     terminal take care of scrolling the display. */
+  if (to >= _rl_screenheight)
+    {
+      if (_rl_last_v_pos == _rl_screenheight)
+       {
+         putc ('\n', rl_outstream);
+         _rl_cr ();
+         _rl_last_c_pos = 0;
+       }
+      return;
+    }
+#endif
+
   if ((delta = to - _rl_last_v_pos) > 0)
     {
       for (i = 0; i < delta; i++)
@@ -2952,29 +3128,15 @@ rl_character_len (int c, int pos)
    mini-modeline. */
 static int msg_saved_prompt = 0;
 
-#if defined (USE_VARARGS)
 int
-#if defined (PREFER_STDARG)
 rl_message (const char *format, ...)
-#else
-rl_message (va_alist)
-     va_dcl
-#endif
 {
   va_list args;
-#if defined (PREFER_VARARGS)
-  char *format;
-#endif
 #if defined (HAVE_VSNPRINTF)
   int bneed;
 #endif
 
-#if defined (PREFER_STDARG)
   va_start (args, format);
-#else
-  va_start (args);
-  format = va_arg (args, char *);
-#endif
 
   if (msg_buf == 0)
     msg_buf = xmalloc (msg_bufsiz = 128);
@@ -2987,12 +3149,7 @@ rl_message (va_alist)
       msg_buf = xrealloc (msg_buf, msg_bufsiz);
       va_end (args);
 
-#if defined (PREFER_STDARG)
       va_start (args, format);
-#else
-      va_start (args);
-      format = va_arg (args, char *);
-#endif
       vsnprintf (msg_buf, msg_bufsiz - 1, format, args);
     }
 #else
@@ -3023,40 +3180,6 @@ rl_message (va_alist)
 
   return 0;
 }
-#else /* !USE_VARARGS */
-int
-rl_message (format, arg1, arg2)
-     char *format;
-{
-  if (msg_buf == 0)
-    msg_buf = xmalloc (msg_bufsiz = 128);
-
-  sprintf (msg_buf, format, arg1, arg2);
-  msg_buf[msg_bufsiz - 1] = '\0';      /* overflow? */
-
-  rl_display_prompt = msg_buf;
-  if (saved_local_prompt == 0)
-    {
-      rl_save_prompt ();
-      msg_saved_prompt = 1;
-    }
-  else if (local_prompt != saved_local_prompt)
-    {
-      FREE (local_prompt);
-      FREE (local_prompt_prefix);
-      local_prompt = (char *)NULL;
-    }
-  local_prompt = expand_prompt (msg_buf, 0, &prompt_visible_length,
-                                           &prompt_last_invisible,
-                                           &prompt_invis_chars_first_line,
-                                           &prompt_physical_chars);
-  local_prompt_prefix = (char *)NULL;
-  local_prompt_len = local_prompt ? strlen (local_prompt) : 0;
-  (*rl_redisplay_function) ();
-      
-  return 0;
-}
-#endif /* !USE_VARARGS */
 
 /* How to clear things from the "echo-area". */
 int
@@ -3098,10 +3221,12 @@ rl_save_prompt (void)
   saved_invis_chars_first_line = prompt_invis_chars_first_line;
   saved_physical_chars = prompt_physical_chars;
   saved_local_prompt_newlines = local_prompt_newlines;
+  saved_local_prompt_invis_chars = local_prompt_invis_chars;
 
   local_prompt = local_prompt_prefix = (char *)0;
   local_prompt_len = 0;
   local_prompt_newlines = (int *)0;
+  local_prompt_invis_chars = (int *)0;
 
   prompt_last_invisible = prompt_visible_length = prompt_prefix_length = 0;
   prompt_invis_chars_first_line = prompt_physical_chars = 0;
@@ -3113,11 +3238,13 @@ rl_restore_prompt (void)
   FREE (local_prompt);
   FREE (local_prompt_prefix);
   FREE (local_prompt_newlines);
+  FREE (local_prompt_invis_chars);
 
   local_prompt = saved_local_prompt;
   local_prompt_prefix = saved_local_prefix;
   local_prompt_len = saved_local_length;
   local_prompt_newlines = saved_local_prompt_newlines;
+  local_prompt_invis_chars = saved_local_prompt_invis_chars;
 
   prompt_prefix_length = saved_prefix_length;
   prompt_last_invisible = saved_last_invisible;
@@ -3130,7 +3257,7 @@ rl_restore_prompt (void)
   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;
+  saved_local_prompt_newlines = saved_local_prompt_invis_chars = 0;
 }
 
 char *
@@ -3318,7 +3445,7 @@ _rl_update_final (void)
       full_lines = 1;
     }
   _rl_move_vert (_rl_vis_botlin);
-  woff = W_OFFSET(_rl_vis_botlin, wrap_offset);
+  woff = W_OFFSET(_rl_vis_botlin, wrap_offset);                /* XXX - 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 && botline_length == _rl_screenwidth)
@@ -3327,7 +3454,7 @@ _rl_update_final (void)
 
       /* 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,
+        This needs to be done both for 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); */
index 20a36184f7508a9cc114275cf211eef3be042788..b0ac6d976484f47680fb5c17979c28bd7c122e18 100644 (file)
@@ -1,7 +1,7 @@
 # This makefile for Readline library documentation is in -*- text -*- mode.
 # Emacs likes it that way.
 
-# Copyright (C) 1996-2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2024 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
@@ -38,7 +38,7 @@ man3ext = .3
 man3dir = $(mandir)/$(manpfx)3
 
 # set this to a value to have the HTML documentation installed
-htmldir =
+htmldir = @htmldir@
 
 # Support an alternate destination root directory for package building
 DESTDIR =
@@ -73,7 +73,7 @@ HISTSRC = $(srcdir)/history.texi $(srcdir)/hsuser.texi \
          $(srcdir)/hstech.texi $(srcdir)/version.texi $(srcdir)/fdl.texi
 
 # This should be a program that converts troff to an ascii-readable format
-NROFF       = groff -Tascii
+NROFF       = groff -Tascii -P -c
 
 # This should be a program that converts troff to postscript
 GROFF       = groff
@@ -83,7 +83,7 @@ INFOOBJ = readline.info history.info rluserman.info
 PSOBJ = readline.ps history.ps rluserman.ps readline_3.ps history_3.ps
 HTMLOBJ = readline.html history.html rluserman.html
 TEXTOBJ = readline.0 history.0
-PDFOBJ = readline.pdf history.pdf rluserman.pdf
+PDFOBJ = readline.pdf history.pdf rluserman.pdf readline_3.pdf history_3.pdf
 
 INTERMEDIATE_OBJ = rlman.dvi
 
@@ -95,9 +95,17 @@ DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ) $(PDFOBJ)
        $(RM) $@
        -${NROFF} -man $< > $@
 
-.ps.pdf:
+.3.pdf:
        $(RM) $@
-       -${PSPDF} $<
+       -${GROFF} -man -T pdf $< > $@
+
+.3.ps:
+       $(RM) $@
+       -${GROFF} -man $< > $@
+
+#.ps.pdf:
+#      $(RM) $@
+#      -${PSPDF} $<
 
 .dvi.pdf:
        $(RM) $@
@@ -107,8 +115,9 @@ DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ) $(INFOOBJ) $(TEXTOBJ) $(PDFOBJ)
 #      $(RM) $@
 #      -${TEXI2PDF} $<
 
-all: info dvi html ps text pdf
+all: info html text pdf dvi
 nodvi: info html text
+everything: all ps
 
 xdist: $(DIST_DOCS)
 
@@ -120,24 +129,38 @@ text:     $(TEXTOBJ)
 pdf:   $(PDFOBJ)
 
 readline.dvi: $(RLSRC)
-       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi
-       mv rlman.dvi readline.dvi
+       $(RM) $@
+       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) -o $@ $(srcdir)/rlman.texi
 
 readline.info: $(RLSRC)
+       $(RM) $@
        $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
 
+readline.pdf:  $(RLSRC)
+       $(RM) $@
+       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) -o $@ $(srcdir)/rlman.texi
+
 rluserman.dvi: $(RLSRC)
+       $(RM) $@
        TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texi
 
 rluserman.info: $(RLSRC)
+       $(RM) $@
        $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texi
 
+rluserman.pdf: $(RLSRC)
+       $(RM) $@
+       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) -o $@ $(srcdir)/rlman.texi
+
 history.dvi: ${HISTSRC}
        TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/history.texi
 
 history.info: ${HISTSRC}
        $(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/history.texi
 
+history.pdf:   $(HISTSRC)
+       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/history.texi
+
 readline.ps:   readline.dvi
        $(RM) $@
        $(DVIPS) readline.dvi
@@ -154,7 +177,7 @@ history.ps: history.dvi
 # This leaves readline.html and rlman.html -- rlman.html is for www.gnu.org
 #
 readline.html: ${RLSRC}
-       $(MAKEINFO) -o $@ --html --no-split -I$(TEXINPUTDIR) $(srcdir)/rlman.texi
+       $(MAKEINFO) -o $@ --html --no-split -I$(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texi
 
 rlman.html:    ${RLSRC}
        $(MAKEINFO) -o $@ --html --no-split -I$(TEXINPUTDIR) $(srcdir)/rlman.texi
@@ -166,47 +189,47 @@ history.html:     ${HISTSRC}
        $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/history.texi
 
 readline.0: readline.3
+history.0: history.3
 
 readline_3.ps: $(srcdir)/readline.3
-       ${RM} $@
-       ${GROFF} -man < $(srcdir)/readline.3 > $@ 
+       $(RM) $@
+       -${GROFF} -man $< > $@
 
-history.0: history.3
+readline_3.pdf: $(srcdir)/readline.3
+       $(RM) $@
+       -${GROFF} -man -T pdf $< > $@
 
 history_3.ps: $(srcdir)/history.3
-       ${RM} $@
-       ${GROFF} -man < $(srcdir)/history.3 > $@ 
-
-readline.pdf:  $(RLSRC)
-       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/rlman.texi
-       mv rlman.pdf $@
+       $(RM) $@
+       -${GROFF} -man $< > $@
 
-history.pdf:   $(HISTSRC)
-       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/history.texi
+history_3.pdf: $(srcdir)/history.3
+       $(RM) $@
+       -${GROFF} -man -T pdf $< > $@
 
-rluserman.pdf: $(RLSRC)
-       TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2PDF) $(srcdir)/rluserman.texi
+.PHONY: clean maintainer-clean distclean mostlyclean maybe-clean
 
-clean:
+mostlyclean:
        $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \
              *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o \
              core *.core
 
-mostlyclean: clean
+clean: mostlyclean
 
 distclean: clean maybe-clean
        $(RM) $(INTERMEDIATE_OBJ)
        $(RM) Makefile
 
 maybe-clean:
-       -if test "X$(topdir)" != "X.." && test "X$(topdir)" != "X$(BUILD_DIR)"; then \
+       -TD=$$(cd $(topdir) && pwd -P) ; \
+       BD=$$(cd $(BUILD_DIR) && pwd -P) ; \
+       if test "X$$TD" != "X$$BD"; then \
                $(RM) $(DIST_DOCS); \
        fi
 
 maintainer-clean: clean
        $(RM) $(DIST_DOCS)
        $(RM) $(INTERMEDIATE_OBJ)
-       $(RM) $(PDFOBJ)
        $(RM) Makefile
 
 installdirs:   $(topdir)/support/mkdirs
@@ -259,6 +282,29 @@ install:   installdirs
                fi ; \
        fi
 
+install-html:  html
+       -if test -n "${htmldir}" ; then \
+               if test -f readline.html; then \
+                       ${INSTALL_DATA} readline.html $(DESTDIR)$(htmldir)/readline.html; \
+               else \
+                       ${INSTALL_DATA} $(srcdir)/readline.html $(DESTDIR)$(htmldir)/readline.html; \
+               fi ; \
+               if test -f history.html; then \
+                       ${INSTALL_DATA} history.html $(DESTDIR)$(htmldir)/history.html; \
+               else \
+                       ${INSTALL_DATA} $(srcdir)/history.html $(DESTDIR)$(htmldir)/history.html; \
+               fi ; \
+               if test -f rluserman.html; then \
+                       ${INSTALL_DATA} rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
+               else \
+                       ${INSTALL_DATA} $(srcdir)/rluserman.html $(DESTDIR)$(htmldir)/rluserman.html; \
+               fi ; \
+       fi
+
+install-dvi:
+install-pdf:
+install-ps:
+
 uninstall:
        $(RM) $(DESTDIR)$(infodir)/readline.info
        $(RM) $(DESTDIR)$(infodir)/rluserman.info
@@ -270,3 +316,10 @@ uninstall:
                $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \
                $(RM) $(DESTDIR)$(htmldir)/history.html ; \
        fi
+
+uninstall-html:
+       -if test -n "${htmldir}" ; then \
+               $(RM) $(DESTDIR)$(htmldir)/readline.html ; \
+               $(RM) $(DESTDIR)$(htmldir)/rluserman.html ; \
+               $(RM) $(DESTDIR)$(htmldir)/history.html ; \
+       fi
index 2bf3b1af77d2d3570b607967a0abd1c33bbc2eec..1b94885413362011a6a3b04982fcb26866c92062 100644 (file)
@@ -1,23 +1,28 @@
-HISTORY(3)                 Library Functions Manual                 HISTORY(3)
+_\bH_\bI_\bS_\bT_\bO_\bR_\bY(3)                 Library Functions Manual                 _\bH_\bI_\bS_\bT_\bO_\bR_\bY(3)
 
-
-
-\e[1mNAME\e[0m
+N\bNA\bAM\bME\bE
        history - GNU History Library
 
-\e[1mCOPYRIGHT\e[0m
-       The GNU History Library is Copyright (C) 1989-2020 by the Free Software
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       The GNU History Library is Copyright (C) 1989-2025 by the Free Software
        Foundation, Inc.
 
-\e[1mDESCRIPTION\e[0m
-       Many programs read input from the user a line at a time.  The GNU  His-
-       tory  library is able to keep track of those lines, associate arbitrary
-       data with each line, and utilize information  from  previous  lines  in
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       Many  programs read input from the user a line at a time.  The GNU His-
+       tory library is able to keep track of those lines, associate  arbitrary
+       data  with  each line, and utilize information from previous lines when
        composing new ones.
 
-\e[1mHISTORY EXPANSION\e[0m
-       The  history library supports a history expansion feature that is iden-
-       tical to the history expansion in \e[1mbash.  \e[22mThis  section  describes  what
+       The History library provides functions that allow applications to their
+       _\bh_\bi_\bs_\bt_\bo_\br_\by, the set of previously-typed lines, which it keeps in  a  list.
+       Applications  can  choose  which lines to save into a history list, how
+       many commands to save, save a history list to a file,  read  a  history
+       list  from  a  file, and display lines from the history in various for-
+       mats.
+
+H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
+       The history library supports a history expansion feature that is  iden-
+       tical  to  the  history expansion in b\bba\bas\bsh\bh.  This section describes what
        syntax features are available.
 
        History expansions introduce words from the history list into the input
@@ -25,116 +30,139 @@ HISTORY(3)                 Library Functions Manual                 HISTORY(3)
        previous command into the current input line, or fix errors in previous
        commands quickly.
 
-       History expansion is usually performed  immediately  after  a  complete
-       line  is read.  It takes place in two parts.  The first is to determine
-       which line from the history list to use during substitution.  The  sec-
-       ond  is  to select portions of that line for inclusion into the current
-       one.  The line selected from the history is the \e[4mevent\e[24m, and the portions
-       of  that  line  that  are  acted upon are \e[4mwords\e[24m.  Various \e[4mmodifiers\e[24m are
-       available to manipulate the selected words.  The line  is  broken  into
-       words in the same fashion as \e[1mbash \e[22mdoes when reading input, so that sev-
-       eral words that would otherwise be separated are  considered  one  word
-       when  surrounded  by  quotes (see the description of \e[1mhistory_tokenize()\e[0m
-       below).  History expansions are introduced by  the  appearance  of  the
-       history expansion character, which is \e[1m! \e[22mby default.  Only backslash (\e[1m\\e[22m)
-       and single quotes can quote the history expansion character.
-
-   \e[1mEvent Designators\e[0m
-       An event designator is a reference to a command line entry in the  his-
-       tory  list.   Unless  the reference is absolute, events are relative to
-       the current position in the history list.
-
-       \e[1m!      \e[22mStart a history substitution, except when followed by  a  \e[1mblank\e[22m,
-              newline, = or (.
-       \e[1m!\e[4m\e[22mn\e[24m     Refer to command line \e[4mn\e[24m.
-       \e[1m!-\e[4m\e[22mn\e[24m    Refer to the current command minus \e[4mn\e[24m.
-       \e[1m!!     \e[22mRefer to the previous command.  This is a synonym for `!-1'.
-       \e[1m!\e[4m\e[22mstring\e[0m
-              Refer  to the most recent command preceding the current position
-              in the history list starting with \e[4mstring\e[24m.
-       \e[1m!?\e[4m\e[22mstring\e[24m\e[1m[?]\e[0m
+       History  expansion  is  usually  performed immediately after a complete
+       line is read.  It takes place in two parts.  The first is to  determine
+       which  history list entry to use during substitution.  The second is to
+       select portions of that entry to include into the current one.
+
+       The entry selected from the history is the _\be_\bv_\be_\bn_\bt, and the  portions  of
+       that entry that are acted upon are _\bw_\bo_\br_\bd_\bs.  Various _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs are avail-
+       able  to  manipulate the selected words.  The entry is split into words
+       in the same fashion as b\bba\bas\bsh\bh does when reading input,  so  that  several
+       words  that  would  otherwise be separated are considered one word when
+       surrounded by quotes (see the description of h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be(\b()\b) below).
+       The _\be_\bv_\be_\bn_\bt _\bd_\be_\bs_\bi_\bg_\bn_\ba_\bt_\bo_\br selects the event, the  optional  _\bw_\bo_\br_\bd  _\bd_\be_\bs_\bi_\bg_\bn_\ba_\bt_\bo_\br
+       selects words from the event, and various optional _\bm_\bo_\bd_\bi_\bf_\bi_\be_\br_\bs are avail-
+       able to manipulate the selected words.
+
+       History  expansions are introduced by the appearance of the history ex-
+       pansion character, which is !\b! by default.  History expansions  may  ap-
+       pear anywhere in the input, but do not nest.
+
+       Only  backslash  (\\b\)  and single quotes can quote the history expansion
+       character.
+
+       There is a special abbreviation for substitution, active when the _\bq_\bu_\bi_\bc_\bk
+       _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn character (default ^\b^) is the first character on the  line.
+       It  selects  the previous history list entry, using an event designator
+       equivalent to !\b!!\b!, and substitutes one string for another in that entry.
+       It is described below under E\bEv\bve\ben\bnt\bt D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs.  This is the  only  his-
+       tory  expansion  that does not begin with the history expansion charac-
+       ter.
+
+   E\bEv\bve\ben\bnt\bt D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs
+       An event designator is a reference to an entry  in  the  history  list.
+       The event designator consists of the portion of the word beginning with
+       the  history expansion character and ending with the word designator if
+       present, or the end of the word.  Unless  the  reference  is  absolute,
+       events are relative to the current position in the history list.
+
+       !\b!      Start  a  history substitution, except when followed by a b\bbl\bla\ban\bnk\bk,
+              newline, carriage return, =, or (.
+       !\b!_\bn     Refer to history list entry _\bn.
+       !\b!-\b-_\bn    Refer to the current entry minus _\bn.
+       !\b!!\b!     Refer to the previous entry.  This is a synonym for "!-1".
+       !\b!_\bs_\bt_\br_\bi_\bn_\bg
               Refer to the most recent command preceding the current  position
-              in  the  history  list containing \e[4mstring\e[24m.  The trailing \e[1m? \e[22mmay be
-              omitted if \e[4mstring\e[24m is followed  immediately  by  a  newline.   If
-              \e[4mstring\e[24m  is  missing,  the  string from the most recent search is
-              used; it is an error if there is no previous search string.
-       \e[1m^\e[4m\e[22mstring1\e[24m\e[1m^\e[4m\e[22mstring2\e[24m\e[1m^\e[0m
-              Quick substitution.  Repeat the last command, replacing  \e[4mstring1\e[0m
-              with \e[4mstring2\e[24m.  Equivalent to ``!!:s^\e[4mstring1\e[24m^\e[4mstring2\e[24m^'' (see \e[1mMod-\e[0m
-              \e[1mifiers \e[22mbelow).
-       \e[1m!#     \e[22mThe entire command line typed so far.
-
-   \e[1mWord Designators\e[0m
-       Word designators are used to select desired words from the event.  A  \e[1m:\e[0m
-       separates  the event specification from the word designator.  It may be
-       omitted if the word designator begins with a \e[1m^\e[22m, \e[1m$\e[22m, \e[1m*\e[22m, \e[1m-\e[22m, or  \e[1m%\e[22m.   Words
-       are  numbered from the beginning of the line, with the first word being
-       denoted by 0 (zero).  Words are inserted into the  current  line  sepa-
-       rated by single spaces.
-
-       \e[1m0 (zero)\e[0m
-              The zeroth word.  For the shell, this is the command word.
-       \e[4mn\e[24m      The \e[4mn\e[24mth word.
-       \e[1m^      \e[22mThe first argument.  That is, word 1.
-       \e[1m$      \e[22mThe  last word.  This is usually the last argument, but will ex-
-              pand to the zeroth word if there is only one word in the line.
-       \e[1m%      \e[22mThe first word matched by the most recent `?\e[4mstring\e[24m?' search,  if
-              the  search  string  begins  with  a character that is part of a
-              word.
-       \e[4mx\e[24m\e[1m-\e[4m\e[22my\e[24m    A range of words; `-\e[4my\e[24m' abbreviates `0-\e[4my\e[24m'.
-       \e[1m*      \e[22mAll of the words but the zeroth.  This is a synonym  for  `\e[4m1-$\e[24m'.
-              It  is  not  an  error to use \e[1m* \e[22mif there is just one word in the
-              event; the empty string is returned in that case.
-       \e[1mx*     \e[22mAbbreviates \e[4mx-$\e[24m.
-       \e[1mx-     \e[22mAbbreviates \e[4mx-$\e[24m like \e[1mx*\e[22m, but omits the last word.  If \e[1mx \e[22mis miss-
+              in the history list starting with _\bs_\bt_\br_\bi_\bn_\bg.
+       !\b!?\b?_\bs_\bt_\br_\bi_\bn_\bg[\b[?\b?]\b]
+              Refer  to the most recent command preceding the current position
+              in the history list containing _\bs_\bt_\br_\bi_\bn_\bg.  The trailing  ?\b?  may  be
+              omitted  if  _\bs_\bt_\br_\bi_\bn_\bg  is  followed  immediately by a newline.  If
+              _\bs_\bt_\br_\bi_\bn_\bg is missing, this uses the string  from  the  most  recent
+              search; it is an error if there is no previous search string.
+       ^\b^_\bs_\bt_\br_\bi_\bn_\bg_\b1^\b^_\bs_\bt_\br_\bi_\bn_\bg_\b2^\b^
+              Quick  substitution.   Repeat  the  previous  command, replacing
+              _\bs_\bt_\br_\bi_\bn_\bg_\b1 with  _\bs_\bt_\br_\bi_\bn_\bg_\b2.   Equivalent  to  "!!:s^_\bs_\bt_\br_\bi_\bn_\bg_\b1^_\bs_\bt_\br_\bi_\bn_\bg_\b2^"
+              (see M\bMo\bod\bdi\bif\bfi\bie\ber\brs\bs below).
+       !\b!#\b#     The entire command line typed so far.
+
+   W\bWo\bor\brd\bd D\bDe\bes\bsi\big\bgn\bna\bat\bto\bor\brs\bs
+       Word designators are used to select desired words from the event.  They
+       are optional; if the word designator isn't supplied, the history expan-
+       sion uses the entire event.  A :\b: separates the event specification from
+       the  word  designator.  It may be omitted if the word designator begins
+       with a ^\b^, $\b$, *\b*, -\b-, or %\b%.  Words are numbered from the beginning of  the
+       line,  with  the  first  word being denoted by 0 (zero).  Words are in-
+       serted into the current line separated by single spaces.
+
+       0\b0 (\b(z\bze\ber\bro\bo)\b)
+              The zeroth word.  For the shell, and  many  other  applications,
+              this is the command word.
+       _\bn      The _\bnth word.
+       ^\b^      The first argument: word 1.
+       $\b$      The  last  word.  This is usually the last argument, but expands
+              to the zeroth word if there is only one word in the line.
+       %\b%      The first word matched by the most recent "?_\bs_\bt_\br_\bi_\bn_\bg?"  search, if
+              the search string begins with a character  that  is  part  of  a
+              word.   By  default,  searches begin at the end of each line and
+              proceed to the beginning, so the first word matched is  the  one
+              closest to the end of the line.
+       _\bx-\b-_\by    A range of words; "-_\by" abbreviates "0-_\by".
+       *\b*      All  of  the words but the zeroth.  This is a synonym for "_\b1_\b-_\b$".
+              It is not an error to use *\b* if there is just  one  word  in  the
+              event; it expands to the empty string in that case.
+       x\bx*\b*     Abbreviates _\bx_\b-_\b$.
+       x\bx-\b-     Abbreviates _\bx_\b-_\b$ like x\bx*\b*, but omits the last word.  If x\bx is miss-
               ing, it defaults to 0.
 
        If  a  word  designator is supplied without an event specification, the
-       previous command is used as the event.
-
-   \e[1mModifiers\e[0m
-       After the optional word designator, there may appear a sequence of  one
-       or more of the following modifiers, each preceded by a `:'.  These mod-
-       ify, or edit, the word or words selected from the history event.
-
-       \e[1mh      \e[22mRemove a trailing file name component, leaving only the head.
-       \e[1mt      \e[22mRemove all leading file name components, leaving the tail.
-       \e[1mr      \e[22mRemove a trailing suffix of the form \e[4m.xxx\e[24m, leaving the basename.
-       \e[1me      \e[22mRemove all but the trailing suffix.
-       \e[1mp      \e[22mPrint the new command but do not execute it.
-       \e[1mq      \e[22mQuote the substituted words, escaping further substitutions.
-       \e[1mx      \e[22mQuote the substituted words as with \e[1mq\e[22m, but break into  words  at
-              \e[1mblanks  \e[22mand newlines.  The \e[1mq \e[22mand \e[1mx \e[22mmodifiers are mutually exclu-
-              sive; the last one supplied is used.
-       \e[1ms/\e[4m\e[22mold\e[24m\e[1m/\e[4m\e[22mnew\e[24m\e[1m/\e[0m
-              Substitute \e[4mnew\e[24m for the first occurrence  of  \e[4mold\e[24m  in  the  event
+       previous command is used as the event, equivalent to !\b!!\b!.
+
+   M\bMo\bod\bdi\bif\bfi\bie\ber\brs\bs
+       After the optional word designator, the expansion  may  include  a  se-
+       quence  of  one  or more of the following modifiers, each preceded by a
+       ":".  These modify, or edit, the word or words selected from  the  his-
+       tory event.
+
+       h\bh      Remove a trailing filename component, leaving only the head.
+       t\bt      Remove all leading filename components, leaving the tail.
+       r\br      Remove a trailing suffix of the form _\b._\bx_\bx_\bx, leaving the basename.
+       e\be      Remove all but the trailing suffix.
+       p\bp      Print the new command but do not execute it.
+       q\bq      Quote the substituted words, escaping further substitutions.
+       x\bx      Quote  the  substituted words as with q\bq, but break into words at
+              b\bbl\bla\ban\bnk\bks\bs and newlines.  The q\bq and x\bx modifiers are mutually  exclu-
+              sive; expansion uses the last one supplied.
+       s\bs/\b/_\bo_\bl_\bd/\b/_\bn_\be_\bw/\b/
+              Substitute  _\bn_\be_\bw  for  the  first  occurrence of _\bo_\bl_\bd in the event
               line.  Any character may be used as the delimiter in place of /.
               The final delimiter is optional if it is the last  character  of
-              the event line.  The delimiter may be quoted in \e[4mold\e[24m and \e[4mnew\e[24m with
-              a single backslash.  If & appears in \e[4mnew\e[24m, it is replaced by \e[4mold\e[24m.
-              A  single backslash will quote the &.  If \e[4mold\e[24m is null, it is set
-              to the last \e[4mold\e[24m substituted, or, if no previous history  substi-
-              tutions  took  place,  the last \e[4mstring\e[24m in a \e[1m!?\e[4m\e[22mstring\e[24m\e[1m[?]  \e[22msearch.
-              If \e[4mnew\e[24m is null, each matching \e[4mold\e[24m is deleted.
-       \e[1m&      \e[22mRepeat the previous substitution.
-       \e[1mg      \e[22mCause changes to be applied over the entire event line.  This is
-              used  in  conjunction  with `\e[1m:s\e[22m' (e.g., `\e[1m:gs/\e[4m\e[22mold\e[24m\e[1m/\e[4m\e[22mnew\e[24m\e[1m/\e[22m') or `\e[1m:&\e[22m'.
-              If used with `\e[1m:s\e[22m', any delimiter can be used in place of /,  and
+              the  event line.  A single backslash quotes the delimiter in _\bo_\bl_\bd
+              and _\bn_\be_\bw.  If & appears in _\bn_\be_\bw, it is replaced with _\bo_\bl_\bd.  A  sin-
+              gle  backslash  quotes  the &.  If _\bo_\bl_\bd is null, it is set to the
+              last _\bo_\bl_\bd substituted, or, if no previous  history  substitutions
+              took place, the last _\bs_\bt_\br_\bi_\bn_\bg in a !\b!?\b?_\bs_\bt_\br_\bi_\bn_\bg[\b[?\b?]\b]  search.  If _\bn_\be_\bw is
+              null, each matching _\bo_\bl_\bd is deleted.
+       &\b&      Repeat the previous substitution.
+       g\bg      Cause changes to be applied over the entire event line.  This is
+              used  in  conjunction  with ":\b:s\bs" (e.g., ":\b:g\bgs\bs/\b/_\bo_\bl_\bd/\b/_\bn_\be_\bw/\b/") or ":\b:&\b&".
+              If used with ":\b:s\bs", any delimiter can be used in place of /,  and
               the  final  delimiter is optional if it is the last character of
-              the event line.  An \e[1ma \e[22mmay be used as a synonym for \e[1mg\e[22m.
-       \e[1mG      \e[22mApply the following `\e[1ms\e[22m' or `\e[1m&\e[22m' modifier once to each word in the
+              the event line.  An a\ba may be used as a synonym for g\bg.
+       G\bG      Apply the following "s\bs" or "&\b&" modifier once to each word in the
               event line.
 
-\e[1mPROGRAMMING WITH HISTORY FUNCTIONS\e[0m
-       This  section  describes  how  to use the History library in other pro-
+P\bPR\bRO\bOG\bGR\bRA\bAM\bMM\bMI\bIN\bNG\bG W\bWI\bIT\bTH\bH H\bHI\bIS\bST\bTO\bOR\bRY\bY F\bFU\bUN\bNC\bCT\bTI\bIO\bON\bNS\bS
+       This section describes how to use the History  library  in  other  pro-
        grams.
 
-   \e[1mIntroduction to History\e[0m
-       A programmer using the History library has available functions for  re-
-       membering  lines  on  a history list, associating arbitrary data with a
-       line, removing lines from the list, searching through the  list  for  a
-       line  containing  an arbitrary text string, and referencing any line in
-       the list directly.  In addition, a history \e[4mexpansion\e[24m function is avail-
+   I\bIn\bnt\btr\bro\bod\bdu\buc\bct\bti\bio\bon\bn t\bto\bo H\bHi\bis\bst\bto\bor\bry\by
+       A  programmer using the History library has available functions for re-
+       membering lines on a history list, associating arbitrary  data  with  a
+       line,  removing  lines  from the list, searching through the list for a
+       line containing an arbitrary text string, and referencing any  line  in
+       the list directly.  In addition, a history _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn function is avail-
        able  which  provides  for a consistent user interface across different
        programs.
 
@@ -142,24 +170,24 @@ HISTORY(3)                 Library Functions Manual                 HISTORY(3)
        fit  of  a  consistent user interface with a set of well-known commands
        for manipulating the text of previous lines and using that text in  new
        commands.  The basic history manipulation commands are identical to the
-       history substitution provided by \e[1mbash\e[22m.
+       history substitution provided by b\bba\bas\bsh\bh.
 
-       The programmer can also use the readline library, which  includes  some
+       The  programmer  can also use the readline library, which includes some
        history manipulation by default, and has the added advantage of command
        line editing.
 
        Before declaring any functions using any functionality the History  li-
        brary  provides in other code, an application writer should include the
-       file \e[4m<readline/history.h>\e[24m in any file that uses the  History  library's
+       file _\b<_\br_\be_\ba_\bd_\bl_\bi_\bn_\be_\b/_\bh_\bi_\bs_\bt_\bo_\br_\by_\b._\bh_\b> in any file that uses the  History  library's
        features.   It  supplies  extern  declarations for all of the library's
        public functions and variables, and declares all  of  the  public  data
        structures.
 
-   \e[1mHistory Storage\e[0m
+   H\bHi\bis\bst\bto\bor\bry\by S\bSt\bto\bor\bra\bag\bge\be
        The  history  list  is an array of history entries.  A history entry is
        declared as follows:
 
-       \e[4mtypedef\e[24m \e[4mvoid\e[24m \e[4m*\e[24m \e[1mhistdata_t;\e[0m
+       _\bt_\by_\bp_\be_\bd_\be_\bf _\bv_\bo_\bi_\bd _\b* h\bhi\bis\bst\btd\bda\bat\bta\ba_\b_t\bt;\b;
 
        typedef struct _hist_entry {
          char *line;
@@ -169,7 +197,7 @@ HISTORY(3)                 Library Functions Manual                 HISTORY(3)
 
        The history list itself might therefore be declared as
 
-       \e[4mHIST_ENTRY\e[24m \e[4m**\e[24m \e[1mthe_history_list;\e[0m
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*_\b* t\bth\bhe\be_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_l\bli\bis\bst\bt;\b;
 
        The state of the History library is encapsulated into a  single  struc-
        ture:
@@ -178,328 +206,330 @@ HISTORY(3)                 Library Functions Manual                 HISTORY(3)
         * A structure used to pass around the current state of the history.
         */
        typedef struct _hist_state {
-         HIST_ENTRY **entries; /* Pointer to the entries themselves. */
-         int offset;           /* The location pointer within this array. */
-         int length;           /* Number of elements within this array. */
-         int size;             /* Number of slots allocated to this array. */
+         HIST_ENTRY **entries; /* Pointer to entry records. */
+         int offset;           /* The current record. */
+         int length;           /* Number of records in list. */
+         int size;             /* Number of records allocated. */
          int flags;
        } HISTORY_STATE;
 
-       If the flags member includes \e[1mHS_STIFLED\e[22m, the history has been stifled.
+       If the flags member includes H\bHS\bS_\b_S\bST\bTI\bIF\bFL\bLE\bED\bD, the history has been stifled.
 
-\e[1mHistory Functions\e[0m
+H\bHi\bis\bst\bto\bor\bry\by F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs
        This  section  describes the calling sequence for the various functions
        exported by the GNU History library.
 
-   \e[1mInitializing History and State Management\e[0m
+   I\bIn\bni\bit\bti\bia\bal\bli\biz\bzi\bin\bng\bg H\bHi\bis\bst\bto\bor\bry\by a\ban\bnd\bd S\bSt\bta\bat\bte\be M\bMa\ban\bna\bag\bge\bem\bme\ben\bnt\bt
        This section describes functions used  to  initialize  and  manage  the
        state of the History library when you want to use the history functions
        in your program.
 
-       \e[4mvoid\e[24m \e[1musing_history \e[22m(\e[4mvoid\e[24m)
-       Begin a session in which the history functions  might  be  used.   This
+       _\bv_\bo_\bi_\bd u\bus\bsi\bin\bng\bg_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+       Begin  a  session  in  which the history functions might be used.  This
        initializes the interactive variables.
 
-       \e[4mHISTORY_STATE\e[24m \e[4m*\e[24m \e[1mhistory_get_history_state \e[22m(\e[4mvoid\e[24m)
+       _\bH_\bI_\bS_\bT_\bO_\bR_\bY_\b__\bS_\bT_\bA_\bT_\bE _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_g\bge\bet\bt_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_s\bst\bta\bat\bte\be (_\bv_\bo_\bi_\bd)
        Return a structure describing the current state of the input history.
 
-       \e[4mvoid\e[24m \e[1mhistory_set_history_state \e[22m(\e[4mHISTORY_STATE\e[24m \e[4m*state\e[24m)
-       Set the state of the history list according to \e[4mstate\e[24m.
+       _\bv_\bo_\bi_\bd h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bet\bt_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_s\bst\bta\bat\bte\be (_\bH_\bI_\bS_\bT_\bO_\bR_\bY_\b__\bS_\bT_\bA_\bT_\bE _\b*_\bs_\bt_\ba_\bt_\be)
+       Set the state of the history list according to _\bs_\bt_\ba_\bt_\be.
 
-
-   \e[1mHistory List Management\e[0m
-       These  functions  manage individual entries on the history list, or set
+   H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt M\bMa\ban\bna\bag\bge\bem\bme\ben\bnt\bt
+       These functions manage individual entries on the history list,  or  set
        parameters managing the list itself.
 
-       \e[4mvoid\e[24m \e[1madd_history \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string\e[24m)
-       Place \e[4mstring\e[24m at the end of the history list.  The associated data field
-       (if  any) is set to \e[1mNULL\e[22m.  If the maximum number of history entries has
-       been set using \e[1mstifle_history()\e[22m, and the new number of history  entries
+       _\bv_\bo_\bi_\bd a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
+       Place _\bs_\bt_\br_\bi_\bn_\bg at the end of the history list.  The associated data field
+       (if  any) is set to N\bNU\bUL\bLL\bL.  If the maximum number of history entries has
+       been set using s\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b), and the new number of history  entries
        would exceed that maximum, the oldest history entry is removed.
 
-       \e[4mvoid\e[24m \e[1madd_history_time \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string\e[24m)
+       _\bv_\bo_\bi_\bd a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_t\bti\bim\bme\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
        Change  the time stamp associated with the most recent history entry to
-       \e[4mstring\e[24m.
+       _\bs_\bt_\br_\bi_\bn_\bg.
 
-       \e[4mHIST_ENTRY\e[24m \e[4m*\e[24m \e[1mremove_history \e[22m(\e[4mint\e[24m \e[4mwhich\e[24m)
-       Remove history entry at offset \e[4mwhich\e[24m from the history.  The removed el-
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* r\bre\bem\bmo\bov\bve\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bi_\bn_\bt _\bw_\bh_\bi_\bc_\bh)
+       Remove history entry at offset _\bw_\bh_\bi_\bc_\bh from the history.  The removed el-
        ement is returned so you can free the line, data, and containing struc-
        ture.
 
-       \e[4mhistdata_t\e[24m \e[1mfree_history_entry \e[22m(\e[4mHIST_ENTRY\e[24m \e[4m*histent\e[24m)
-       Free the history entry \e[4mhistent\e[24m and any history library private data as-
-       sociated  with it.  Returns the application-specific data so the caller
+       _\bh_\bi_\bs_\bt_\bd_\ba_\bt_\ba_\b__\bt f\bfr\bre\bee\be_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_e\ben\bnt\btr\bry\by (_\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*_\bh_\bi_\bs_\bt_\be_\bn_\bt)
+       Free the history entry _\bh_\bi_\bs_\bt_\be_\bn_\bt and any history library private data as-
+       sociated with it.  Returns the application-specific data so the  caller
        can dispose of it.
 
-       \e[4mHIST_ENTRY\e[24m \e[4m*\e[24m \e[1mreplace_history_entry \e[22m(\e[4mint\e[24m \e[4mwhich,\e[24m \e[4mconst\e[24m \e[4mchar\e[24m \e[4m*line,\e[24m  \e[4mhist-\e[0m
-       \e[4mdata_t\e[24m \e[4mdata\e[24m)
-       Make  the  history  entry at offset \e[4mwhich\e[24m have \e[4mline\e[24m and \e[4mdata\e[24m.  This re-
-       turns the old entry so the caller can dispose of  any  application-spe-
-       cific  data.   In  the  case of an invalid \e[4mwhich\e[24m, a \e[1mNULL \e[22mpointer is re-
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY  _\b* r\bre\bep\bpl\bla\bac\bce\be_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_e\ben\bnt\btr\bry\by (_\bi_\bn_\bt _\bw_\bh_\bi_\bc_\bh_\b, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bl_\bi_\bn_\be_\b, _\bh_\bi_\bs_\bt_\b-
+       _\bd_\ba_\bt_\ba_\b__\bt _\bd_\ba_\bt_\ba)
+       Make the history entry at offset _\bw_\bh_\bi_\bc_\bh have _\bl_\bi_\bn_\be and  _\bd_\ba_\bt_\ba.   This  re-
+       turns  the  old entry so the caller can dispose of any application-spe-
+       cific data.  In the case of an invalid _\bw_\bh_\bi_\bc_\bh, a  N\bNU\bUL\bLL\bL  pointer  is  re-
        turned.
 
-       \e[4mvoid\e[24m \e[1mclear_history \e[22m(\e[4mvoid\e[24m)
+       _\bv_\bo_\bi_\bd c\bcl\ble\bea\bar\br_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
        Clear the history list by deleting all the entries.
 
-       \e[4mvoid\e[24m \e[1mstifle_history \e[22m(\e[4mint\e[24m \e[4mmax\e[24m)
-       Stifle the history list, remembering only the last  \e[4mmax\e[24m  entries.   The
-       history list will contain only \e[4mmax\e[24m entries at a time.
+       _\bv_\bo_\bi_\bd s\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bi_\bn_\bt _\bm_\ba_\bx)
+       Stifle  the  history  list, remembering only the last _\bm_\ba_\bx entries.  The
+       history list will contain only _\bm_\ba_\bx entries at a time.
 
-       \e[4mint\e[24m \e[1munstifle_history \e[22m(\e[4mvoid\e[24m)
-       Stop  stifling  the  history.   This returns the previously-set maximum
-       number of history entries (as set by  \e[1mstifle_history()\e[22m).   history  was
+       _\bi_\bn_\bt u\bun\bns\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+       Stop stifling the history.  This  returns  the  previously-set  maximum
+       number  of  history  entries (as set by s\bst\bti\bif\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b)).  history was
        stifled.  The value is positive if the history was stifled, negative if
        it wasn't.
 
-       \e[4mint\e[24m \e[1mhistory_is_stifled \e[22m(\e[4mvoid\e[24m)
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_i\bis\bs_\b_s\bst\bti\bif\bfl\ble\bed\bd (_\bv_\bo_\bi_\bd)
        Returns non-zero if the history is stifled, zero if it is not.
 
-
-   \e[1mInformation About the History List\e[0m
+   I\bIn\bnf\bfo\bor\brm\bma\bat\bti\bio\bon\bn A\bAb\bbo\bou\but\bt t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt
        These functions return information about the entire history list or in-
        dividual list entries.
 
-       \e[4mHIST_ENTRY\e[24m \e[4m**\e[24m \e[1mhistory_list \e[22m(\e[4mvoid\e[24m)
-       Return a \e[1mNULL \e[22mterminated array of \e[4mHIST_ENTRY\e[24m \e[4m*\e[24m which is the current in-
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*_\b* h\bhi\bis\bst\bto\bor\bry\by_\b_l\bli\bis\bst\bt (_\bv_\bo_\bi_\bd)
+       Return a N\bNU\bUL\bLL\bL terminated array of _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* which is the current in-
        put history.  Element 0 of this list is  the  beginning  of  time.   If
-       there is no history, return \e[1mNULL\e[22m.
+       there is no history, return N\bNU\bUL\bLL\bL.
 
-       \e[4mint\e[24m \e[1mwhere_history \e[22m(\e[4mvoid\e[24m)
+       _\bi_\bn_\bt w\bwh\bhe\ber\bre\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
        Returns the offset of the current history element.
 
-       \e[4mHIST_ENTRY\e[24m \e[4m*\e[24m \e[1mcurrent_history \e[22m(\e[4mvoid\e[24m)
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* c\bcu\bur\brr\bre\ben\bnt\bt_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
        Return  the  history  entry  at  the current position, as determined by
-       \e[1mwhere_history()\e[22m.  If there is no entry there, return a \e[1mNULL \e[22mpointer.
+       w\bwh\bhe\ber\bre\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b).  If there is no entry there, return a N\bNU\bUL\bLL\bpointer.
 
-       \e[4mHIST_ENTRY\e[24m \e[4m*\e[24m \e[1mhistory_get \e[22m(\e[4mint\e[24m \e[4moffset\e[24m)
-       Return the history entry at position \e[4moffset\e[24m.  The range of valid values
-       of  \e[4moffset\e[24m  starts  at \e[1mhistory_base \e[22mand ends at \e[1mhistory_length \e[22m- 1.  If
-       there is no entry there, or if \e[4moffset\e[24m is outside the valid  range,  re-
-       turn a \e[1mNULL \e[22mpointer.
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_g\bge\bet\bt (_\bi_\bn_\bt _\bo_\bf_\bf_\bs_\be_\bt)
+       Return the history entry at position _\bo_\bf_\bf_\bs_\be_\bt.  The range of valid values
+       of _\bo_\bf_\bf_\bs_\be_\bt starts at h\bhi\bis\bst\bto\bor\bry\by_\b_b\bba\bas\bse\be and ends at h\bhi\bis\bst\bto\bor\bry\by_\b_l\ble\ben\bng\bgt\bth\bh  -  1.   If
+       there  is  no entry there, or if _\bo_\bf_\bf_\bs_\be_\bt is outside the valid range, re-
+       turn a N\bNU\bUL\bLL\bpointer.
 
-       \e[4mtime_t\e[24m \e[1mhistory_get_time \e[22m(\e[4mHIST_ENTRY\e[24m \e[4m*\e[24m)
-       Return  the  time stamp associated with the history entry passed as the
+       _\bt_\bi_\bm_\be_\b__\bt h\bhi\bis\bst\bto\bor\bry\by_\b_g\bge\bet\bt_\b_t\bti\bim\bme\be (_\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b*)
+       Return the time stamp associated with the history entry passed  as  the
        argument.
 
-       \e[4mint\e[24m \e[1mhistory_total_bytes \e[22m(\e[4mvoid\e[24m)
-       Return the number of bytes that the primary history entries are  using.
-       This  function  returns  the sum of the lengths of all the lines in the
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bot\bta\bal\bl_\b_b\bby\byt\bte\bes\bs (_\bv_\bo_\bi_\bd)
+       Return  the number of bytes that the primary history entries are using.
+       This function returns the sum of the lengths of all the  lines  in  the
        history.
 
-
-   \e[1mMoving Around the History List\e[0m
+   M\bMo\bov\bvi\bin\bng\bg A\bAr\bro\bou\bun\bnd\bd t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt
        These functions allow the current index into the history list to be set
        or changed.
 
-       \e[4mint\e[24m \e[1mhistory_set_pos \e[22m(\e[4mint\e[24m \e[4mpos\e[24m)
-       Set the current history offset to \e[4mpos\e[24m, an absolute index into the list.
-       Returns 1 on success, 0 if \e[4mpos\e[24m is less than zero or  greater  than  the
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bet\bt_\b_p\bpo\bos\bs (_\bi_\bn_\bt _\bp_\bo_\bs)
+       Set the current history offset to _\bp_\bo_\bs, an absolute index into the list.
+       Returns  1  on  success, 0 if _\bp_\bo_\bs is less than zero or greater than the
        number of history entries.
 
-       \e[4mHIST_ENTRY\e[24m \e[4m*\e[24m \e[1mprevious_history \e[22m(\e[4mvoid\e[24m)
-       Back  up  the current history offset to the previous history entry, and
-       return a pointer to that entry.  If there is no previous entry,  return
-       a \e[1mNULL \e[22mpointer.
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* p\bpr\bre\bev\bvi\bio\bou\bus\bs_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+       Back up the current history offset to the previous history  entry,  and
+       return  a pointer to that entry.  If there is no previous entry, return
+       a N\bNU\bUL\bLL\bpointer.
 
-       \e[4mHIST_ENTRY\e[24m \e[4m*\e[24m \e[1mnext_history \e[22m(\e[4mvoid\e[24m)
-       If  the  current history offset refers to a valid history entry, incre-
-       ment the current history offset.  If the  possibly-incremented  history
+       _\bH_\bI_\bS_\bT_\b__\bE_\bN_\bT_\bR_\bY _\b* n\bne\bex\bxt\bt_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bv_\bo_\bi_\bd)
+       If the current history offset refers to a valid history  entry,  incre-
+       ment  the  current history offset.  If the possibly-incremented history
        offset refers to a valid history entry, return a pointer to that entry;
-       otherwise, return a \e[1mNULL \e[22mpointer.
-
+       otherwise, return a N\bNU\bUL\bLL\bL pointer.
 
-   \e[1mSearching the History List\e[0m
+   S\bSe\bea\bar\brc\bch\bhi\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by L\bLi\bis\bst\bt
        These functions allow searching of the history list  for  entries  con-
        taining a specific string.  Searching may be performed both forward and
-       backward from the current history position.   The  search  may  be  \e[4man-\e[0m
-       \e[4mchored\e[24m, meaning that the string must match at the beginning of the his-
+       backward  from  the  current  history  position.  The search may be _\ba_\bn_\b-
+       _\bc_\bh_\bo_\br_\be_\bd, meaning that the string must match at the beginning of the his-
        tory entry.
 
-       \e[4mint\e[24m \e[1mhistory_search \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string,\e[24m \e[4mint\e[24m \e[4mdirection\e[24m)
-       Search the history for \e[4mstring\e[24m, starting at the current history  offset.
-       If  \e[4mdirection\e[24m  is  less than 0, then the search is through previous en-
-       tries, otherwise through subsequent entries.  If \e[4mstring\e[24m is found,  then
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn)
+       Search the history for _\bs_\bt_\br_\bi_\bn_\bg, starting at the current history  offset.
+       If  _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn  is  less than 0, then the search is through previous en-
+       tries, otherwise through subsequent entries.  If _\bs_\bt_\br_\bi_\bn_\bg is found,  then
        the  current  history index is set to that history entry, and the value
-       returned is the offset in the line of the entry where \e[4mstring\e[24m was found.
-       Otherwise, nothing is changed, and a -1 is returned.
-
-       \e[4mint\e[24m \e[1mhistory_search_prefix \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string,\e[24m \e[4mint\e[24m \e[4mdirection\e[24m)
-       Search  the history for \e[4mstring\e[24m, starting at the current history offset.
-       The search is anchored: matching lines must begin with \e[4mstring\e[24m.  If  \e[4mdi-\e[0m
-       \e[4mrection\e[24m  is  less  than 0, then the search is through previous entries,
-       otherwise through subsequent entries.  If \e[4mstring\e[24m  is  found,  then  the
-       current  history index is set to that entry, and the return value is 0.
-       Otherwise, nothing is changed, and a -1 is returned.
-
-       \e[4mint\e[24m \e[1mhistory_search_pos \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string,\e[24m \e[4mint\e[24m \e[4mdirection,\e[24m \e[4mint\e[24m \e[4mpos\e[24m)
-       Search for \e[4mstring\e[24m in the history list, starting at \e[4mpos\e[24m, an absolute in-
-       dex into the list.  If \e[4mdirection\e[24m is negative, the search proceeds back-
-       ward from \e[4mpos\e[24m, otherwise forward.  Returns the absolute  index  of  the
-       history element where \e[4mstring\e[24m was found, or -1 otherwise.
-
-
-   \e[1mManaging the History File\e[0m
-       The  History  library can read the history from and write it to a file.
+       returned is the offset in the line of the entry where _\bs_\bt_\br_\bi_\bn_\bg was found.
+       Otherwise, nothing is changed, and the function returns -1.
+
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh_\b_p\bpr\bre\bef\bfi\bix\bx (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn)
+       Search the history for _\bs_\bt_\br_\bi_\bn_\bg, starting at the current history  offset.
+       The  search is anchored: matching lines must begin with _\bs_\bt_\br_\bi_\bn_\bg.  If _\bd_\bi_\b-
+       _\br_\be_\bc_\bt_\bi_\bo_\bn is less than 0, then the search is  through  previous  entries,
+       otherwise  through  subsequent  entries.   If _\bs_\bt_\br_\bi_\bn_\bg is found, then the
+       current history index is set to that entry, and the return value is  0.
+       Otherwise, nothing is changed, and the function returns -1.
+
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh_\b_p\bpo\bos\bs (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn_\b, _\bi_\bn_\bt _\bp_\bo_\bs)
+       Search for _\bs_\bt_\br_\bi_\bn_\bg in the history list, starting at _\bp_\bo_\bs, an absolute in-
+       dex into the list.  If _\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn is negative, the search proceeds back-
+       ward  from  _\bp_\bo_\bs,  otherwise forward.  Returns the absolute index of the
+       history element where _\bs_\bt_\br_\bi_\bn_\bg was found, or -1 otherwise.
+
+   M\bMa\ban\bna\bag\bgi\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by F\bFi\bil\ble\be
+       The History library can read the history from and write it to  a  file.
        This section documents the functions for managing a history file.
 
-       \e[4mint\e[24m \e[1mread_history \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*filename\e[24m)
-       Add the contents of \e[4mfilename\e[24m to the history list, a line at a time.  If
-       \e[4mfilename\e[24m  is \e[1mNULL\e[22m, then read from \e[4m~/.history\e[24m.  Returns 0 if successful,
-       or \e[1merrno \e[22mif not.
-
-       \e[4mint\e[24m \e[1mread_history_range \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*filename,\e[24m \e[4mint\e[24m \e[4mfrom,\e[24m \e[4mint\e[24m \e[4mto\e[24m)
-       Read a range of lines from \e[4mfilename\e[24m, adding them to the  history  list.
-       Start  reading  at  line \e[4mfrom\e[24m and end at \e[4mto\e[24m.  If \e[4mfrom\e[24m is zero, start at
-       the beginning.  If \e[4mto\e[24m is less than \e[4mfrom\e[24m, then read until the end of the
-       file.   If  \e[4mfilename\e[24m  is \e[1mNULL\e[22m, then read from \e[4m~/.history\e[24m.  Returns 0 if
-       successful, or \e[1merrno \e[22mif not.
-
-       \e[4mint\e[24m \e[1mwrite_history \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*filename\e[24m)
-       Write the current history to \e[4mfilename\e[24m, overwriting \e[4mfilename\e[24m  if  neces-
-       sary.   If \e[4mfilename\e[24m is \e[1mNULL\e[22m, then write the history list to \e[4m~/.history\e[24m.
-       Returns 0 on success, or \e[1merrno \e[22mon a read or write error.
-
-
-       \e[4mint\e[24m \e[1mappend_history \e[22m(\e[4mint\e[24m \e[4mnelements,\e[24m \e[4mconst\e[24m \e[4mchar\e[24m \e[4m*filename\e[24m)
-       Append the last \e[4mnelements\e[24m of the history list to \e[4mfilename\e[24m.  If \e[4mfilename\e[0m
-       is  \e[1mNULL\e[22m, then append to \e[4m~/.history\e[24m.  Returns 0 on success, or \e[1merrno \e[22mon
+       _\bi_\bn_\bt r\bre\bea\bad\bd_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be)
+       Add the contents of _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be to the history list, a line at a time.  If
+       _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be  is N\bNU\bUL\bLL\bL, then read from _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by.  Returns 0 if successful,
+       or e\ber\brr\brn\bno\bo if not.
+
+       _\bi_\bn_\bt r\bre\bea\bad\bd_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_r\bra\ban\bng\bge\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be_\b, _\bi_\bn_\bt _\bf_\br_\bo_\bm_\b, _\bi_\bn_\bt _\bt_\bo)
+       Read a range of lines from _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, adding them to the  history  list.
+       Start  reading  at  line _\bf_\br_\bo_\bm and end at _\bt_\bo.  If _\bf_\br_\bo_\bm is zero, start at
+       the beginning.  If _\bt_\bo is less than _\bf_\br_\bo_\bm, then read until the end of the
+       file.  If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is N\bNU\bUL\bLL\bL, then read from _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by.   Returns  0  if
+       successful, or e\ber\brr\brn\bno\bo if not.
+
+       _\bi_\bn_\bt w\bwr\bri\bit\bte\be_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be)
+       Write  the  current history to _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, overwriting _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be if neces-
+       sary.  If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is N\bNU\bUL\bLL\bL, then write the history list to  _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by.
+       Returns 0 on success, or e\ber\brr\brn\bno\bo on a read or write error.
+
+       _\bi_\bn_\bt a\bap\bpp\bpe\ben\bnd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by (_\bi_\bn_\bt _\bn_\be_\bl_\be_\bm_\be_\bn_\bt_\bs_\b, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be)
+       Append the last _\bn_\be_\bl_\be_\bm_\be_\bn_\bt_\bs of the history list to _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be.  If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+       is  N\bNU\bUL\bLL\bL, then append to _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by.  Returns 0 on success, or e\ber\brr\brn\bno\bo on
        a read or write error.
 
-       \e[4mint\e[24m \e[1mhistory_truncate_file \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*filename,\e[24m \e[4mint\e[24m \e[4mnlines\e[24m)
-       Truncate the history file \e[4mfilename\e[24m, leaving only the last \e[4mnlines\e[24m lines.
-       If  \e[4mfilename\e[24m  is \e[1mNULL\e[22m, then \e[4m~/.history\e[24m is truncated.  Returns 0 on suc-
-       cess, or \e[1merrno \e[22mon failure.
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_t\btr\bru\bun\bnc\bca\bat\bte\be_\b_f\bfi\bil\ble\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be_\b, _\bi_\bn_\bt _\bn_\bl_\bi_\bn_\be_\bs)
+       Truncate the history file _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, leaving only the last _\bn_\bl_\bi_\bn_\be_\bs lines.
+       If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is N\bNU\bUL\bLL\bL, then _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by is truncated.  Returns 0  on  suc-
+       cess, or e\ber\brr\brn\bno\bon failure.
 
-
-   \e[1mHistory Expansion\e[0m
+   H\bHi\bis\bst\bto\bor\bry\by E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
        These functions implement history expansion.
 
-       \e[4mint\e[24m \e[1mhistory_expand \e[22m(\e[4mchar\e[24m \e[4m*string,\e[24m \e[4mchar\e[24m \e[4m**output\e[24m)
-       Expand \e[4mstring\e[24m, placing the result into \e[4moutput\e[24m, a pointer to  a  string.
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_e\bex\bxp\bpa\ban\bnd\bd (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bc_\bh_\ba_\br _\b*_\b*_\bo_\bu_\bt_\bp_\bu_\bt)
+       Expand  _\bs_\bt_\br_\bi_\bn_\bg,  placing the result into _\bo_\bu_\bt_\bp_\bu_\bt, a pointer to a string.
        Returns:
-              0      If  no  expansions  took place (or, if the only change in
-                     the text was the removal of escape  characters  preceding
+              0      If no expansions took place (or, if the  only  change  in
+                     the  text  was the removal of escape characters preceding
                      the history expansion character);
               1      if expansions did take place;
               -1     if there was an error in expansion;
-              2      if  the  returned  line should be displayed, but not exe-
-                     cuted, as with the \e[1m:p \e[22mmodifier.
-       If an error occurred in expansion, then \e[4moutput\e[24m contains  a  descriptive
+              2      if the returned line should be displayed,  but  not  exe-
+                     cuted, as with the :\b:p\bmodifier.
+       If  an  error occurred in expansion, then _\bo_\bu_\bt_\bp_\bu_\bt contains a descriptive
        error message.
 
-       \e[4mchar\e[24m \e[4m*\e[24m \e[1mget_history_event \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string,\e[24m \e[4mint\e[24m \e[4m*cindex,\e[24m \e[4mint\e[24m \e[4mqchar\e[24m)
-       Returns  the  text  of the history event beginning at \e[4mstring\e[24m + \e[4m*cindex\e[24m.
-       \e[4m*cindex\e[24m is modified to point to after the event specifier.  At function
-       entry,  \e[4mcindex\e[24m  points to the index into \e[4mstring\e[24m where the history event
-       specification begins.  \e[4mqchar\e[24m is a character that is allowed to end  the
-       event  specification  in addition to the ``normal'' terminating charac-
-       ters.
-
-       \e[4mchar\e[24m \e[4m**\e[24m \e[1mhistory_tokenize \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string\e[24m)
-       Return an array of tokens parsed out  of  \e[4mstring\e[24m,  much  as  the  shell
-       might.   The tokens are split on the characters in the \e[1mhistory_word_de-\e[0m
-       \e[1mlimiters \e[22mvariable, and shell quoting conventions are obeyed.
+       _\bc_\bh_\ba_\br _\b* g\bge\bet\bt_\b_h\bhi\bis\bst\bto\bor\bry\by_\b_e\bev\bve\ben\bnt\bt (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b, _\bi_\bn_\bt _\b*_\bc_\bi_\bn_\bd_\be_\bx_\b, _\bi_\bn_\bt _\bq_\bc_\bh_\ba_\br)
+       Returns the text of the history event beginning at  _\bs_\bt_\br_\bi_\bn_\bg  +  _\b*_\bc_\bi_\bn_\bd_\be_\bx.
+       _\b*_\bc_\bi_\bn_\bd_\be_\bx is modified to point to after the event specifier.  At function
+       entry,  _\bc_\bi_\bn_\bd_\be_\bx  points to the index into _\bs_\bt_\br_\bi_\bn_\bg where the history event
+       specification begins.  _\bq_\bc_\bh_\ba_\br is a character that is allowed to end  the
+       event specification in addition to the "normal" terminating characters.
 
-       \e[4mchar\e[24m \e[4m*\e[24m \e[1mhistory_arg_extract \e[22m(\e[4mint\e[24m \e[4mfirst,\e[24m \e[4mint\e[24m \e[4mlast,\e[24m \e[4mconst\e[24m \e[4mchar\e[24m \e[4m*string\e[24m)
-       Extract a string segment consisting of the \e[4mfirst\e[24m through \e[4mlast\e[24m arguments
-       present in \e[4mstring\e[24m.  Arguments are split using \e[1mhistory_tokenize()\e[22m.
+       _\bc_\bh_\ba_\br _\b*_\b* h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
+       Return  an  array  of  tokens  parsed  out of _\bs_\bt_\br_\bi_\bn_\bg, much as the shell
+       might.  The tokens are split on the characters in the  h\bhi\bis\bst\bto\bor\bry\by_\b_w\bwo\bor\brd\bd_\b_d\bde\be-\b-
+       l\bli\bim\bmi\bit\bte\ber\brs\bs variable, and shell quoting conventions are obeyed.
 
+       _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_a\bar\brg\bg_\b_e\bex\bxt\btr\bra\bac\bct\bt (_\bi_\bn_\bt _\bf_\bi_\br_\bs_\bt_\b, _\bi_\bn_\bt _\bl_\ba_\bs_\bt_\b, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bt_\br_\bi_\bn_\bg)
+       Extract a string segment consisting of the _\bf_\bi_\br_\bs_\bt through _\bl_\ba_\bs_\bt arguments
+       present in _\bs_\bt_\br_\bi_\bn_\bg.  Arguments are split using h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be(\b()\b).
 
-   \e[1mHistory Variables\e[0m
+   H\bHi\bis\bst\bto\bor\bry\by V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs
        This section describes the externally-visible variables exported by the
        GNU History Library.
 
-       \e[4mint\e[24m \e[1mhistory_base\e[0m
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_b\bba\bas\bse\be
        The logical offset of the first entry in the history list.
 
-       \e[4mint\e[24m \e[1mhistory_length\e[0m
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_l\ble\ben\bng\bgt\bth\bh
        The number of entries currently stored in the history list.
 
-       \e[4mint\e[24m \e[1mhistory_max_entries\e[0m
-       The maximum number of history entries.  This must be changed using \e[1msti-\e[0m
-       \e[1mfle_history()\e[22m.
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_m\bma\bax\bx_\b_e\ben\bnt\btr\bri\bie\bes\bs
+       The maximum number of history entries.  This must be changed using s\bst\bti\bi-\b-
+       f\bfl\ble\be_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b).
 
-       \e[4mint\e[24m \e[1mhistory_write_timestamps\e[0m
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_w\bwr\bri\bit\bte\be_\b_t\bti\bim\bme\bes\bst\bta\bam\bmp\bps\bs
        If non-zero, timestamps are written to the history file, so they can be
        preserved between sessions.  The default value is 0, meaning that time-
        stamps  are  not saved.  The current timestamp format uses the value of
-       \e[4mhistory_comment_char\e[24m to delimit timestamp entries in the history  file.
-       If  that  variable does not have a value (the default), timestamps will
-       not be written.
+       _\bh_\bi_\bs_\bt_\bo_\br_\by_\b__\bc_\bo_\bm_\bm_\be_\bn_\bt_\b__\bc_\bh_\ba_\br to delimit timestamp entries in the history  file.
+       If  that  variable does not have a value (the default), the history li-
+       brary will not write timestamps.
 
-       \e[4mchar\e[24m \e[1mhistory_expansion_char\e[0m
-       The character that introduces a history event.  The default is \e[1m!\e[22m.  Set-
+       _\bc_\bh_\ba_\br h\bhi\bis\bst\bto\bor\bry\by_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn_\b_c\bch\bha\bar\br
+       The character that introduces a history event.  The default is !\b!.  Set-
        ting this to 0 inhibits history expansion.
 
-       \e[4mchar\e[24m \e[1mhistory_subst_char\e[0m
+       _\bc_\bh_\ba_\br h\bhi\bis\bst\bto\bor\bry\by_\b_s\bsu\bub\bbs\bst\bt_\b_c\bch\bha\bar\br
        The character that invokes word substitution if found at the start of a
-       line.  The default is \e[1m^\e[22m.
+       line.  The default is ^\b^.
 
-       \e[4mchar\e[24m \e[1mhistory_comment_char\e[0m
+       _\bc_\bh_\ba_\br h\bhi\bis\bst\bto\bor\bry\by_\b_c\bco\bom\bmm\bme\ben\bnt\bt_\b_c\bch\bha\bar\br
        During tokenization, if this character is seen as the  first  character
        of  a  word,  then it and all subsequent characters up to a newline are
        ignored, suppressing history expansion for the remainder of  the  line.
        This is disabled by default.
 
-       \e[4mchar\e[24m \e[4m*\e[24m \e[1mhistory_word_delimiters\e[0m
-       The  characters  that  separate tokens for \e[1mhistory_tokenize()\e[22m.  The de-
-       fault value is \e[1m" \t\n()<>;&|"\e[22m.
+       _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_w\bwo\bor\brd\bd_\b_d\bde\bel\bli\bim\bmi\bit\bte\ber\brs\bs
+       The  characters  that  separate tokens for h\bhi\bis\bst\bto\bor\bry\by_\b_t\bto\bok\bke\ben\bni\biz\bze\be(\b()\b).  The de-
+       fault value is "\b" \\b\t\bt\\b\n\bn(\b()\b)<\b<>\b>;\b;&\b&|\b|"\b".
 
-       \e[4mchar\e[24m \e[4m*\e[24m \e[1mhistory_no_expand_chars\e[0m
+       _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_n\bno\bo_\b_e\bex\bxp\bpa\ban\bnd\bd_\b_c\bch\bha\bar\brs\bs
        The list of characters which inhibit history expansion if found immedi-
-       ately  following  \e[1mhistory_expansion_char\e[22m.   The  default is space, tab,
-       newline, \e[1m\r\e[22m, and \e[1m=\e[22m.
+       ately following h\bhi\bis\bst\bto\bor\bry\by_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn_\b_c\bch\bha\bar\br.  The  default  is  space,  tab,
+       newline, \\b\r\br, and =\b=.
 
-       \e[4mchar\e[24m \e[4m*\e[24m \e[1mhistory_search_delimiter_chars\e[0m
-       The list of additional characters which can delimit  a  history  search
-       string,  in  addition to space, tab, \e[4m:\e[24m and \e[4m?\e[24m in the case of a substring
+       _\bc_\bh_\ba_\br _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_s\bse\bea\bar\brc\bch\bh_\b_d\bde\bel\bli\bim\bmi\bit\bte\ber\br_\b_c\bch\bha\bar\brs\bs
+       The  list  of  additional characters which can delimit a history search
+       string, in addition to space, tab, _\b: and _\b? in the case of  a  substring
        search.  The default is empty.
 
-       \e[4mint\e[24m \e[1mhistory_quotes_inhibit_expansion\e[0m
-       If non-zero, double-quoted words are not scanned for the history expan-
-       sion  character or the history comment character.  The default value is
-       0.
-
-       \e[4mrl_linebuf_func_t\e[24m \e[4m*\e[24m \e[1mhistory_inhibit_expansion_function\e[0m
-       This should be set to the address of a function that  takes  two  argu-
-       ments:  a  \e[1mchar  *  \e[22m(\e[4mstring\e[24m) and an \e[1mint \e[22mindex into that string (\e[4mi\e[24m).  It
-       should return a non-zero value if the  history  expansion  starting  at
-       \e[4mstring[i]\e[24m  should  not  be  performed;  zero if the expansion should be
-       done.  It is intended for use by applications like \e[1mbash  \e[22mthat  use  the
-       history  expansion character for additional purposes.  By default, this
-       variable is set to \e[1mNULL\e[22m.
-
-\e[1mFILES\e[0m
-       \e[4m~/.history\e[0m
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_q\bqu\buo\bot\bte\bes\bs_\b_i\bin\bnh\bhi\bib\bbi\bit\bt_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn
+       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 his-
+       tory expansion performed, since single quotes are  not  special  within
+       double quotes.  The default value is 0.
+
+       _\bi_\bn_\bt h\bhi\bis\bst\bto\bor\bry\by_\b_q\bqu\buo\bot\bti\bin\bng\bg_\b_s\bst\bta\bat\bte\be
+       An  application may set this variable to indicate that the current line
+       being expanded is subject to existing quoting.  If set  to  _\b',  history
+       expansion  assumes that the line is single-quoted and inhibit expansion
+       until it reads an unquoted closing single quote; if set to  _\b",  history
+       expansion  assumes the line is double quoted until it reads an unquoted
+       closing double quote.  If set to zero, the default,  history  expansion
+       assumes  the  line is not quoted and treats quote characters within the
+       line as described above.  This is only effective if  h\bhi\bis\bst\bto\bor\bry\by_\b_q\bqu\buo\bot\bte\bes\bs_\b_i\bin\bn-\b-
+       h\bhi\bib\bbi\bit\bt_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn is set.
+
+       _\br_\bl_\b__\bl_\bi_\bn_\be_\bb_\bu_\bf_\b__\bf_\bu_\bn_\bc_\b__\bt _\b* h\bhi\bis\bst\bto\bor\bry\by_\b_i\bin\bnh\bhi\bib\bbi\bit\bt_\b_e\bex\bxp\bpa\ban\bns\bsi\bio\bon\bn_\b_f\bfu\bun\bnc\bct\bti\bio\bon\bn
+       This  should  be  set to the address of a function that takes two argu-
+       ments: a c\bch\bha\bar\br *\b* (_\bs_\bt_\br_\bi_\bn_\bg) and an i\bin\bnt\bt index into  that  string  (_\bi).   It
+       should  return  a  non-zero  value if the history expansion starting at
+       _\bs_\bt_\br_\bi_\bn_\bg_\b[_\bi_\b] should not be performed; zero  if  the  expansion  should  be
+       done.   It  is  intended for use by applications like b\bba\bas\bsh\bh that use the
+       history expansion character for additional purposes.  By default,  this
+       variable is set to N\bNU\bUL\bLL\bL.
+
+F\bFI\bIL\bLE\bES\bS
+       _\b~_\b/_\b._\bh_\bi_\bs_\bt_\bo_\br_\by
               Default filename for reading and writing saved history
 
-\e[1mSEE ALSO\e[0m
-       \e[4mThe\e[24m \e[4mGnu\e[24m \e[4mReadline\e[24m \e[4mLibrary\e[24m, Brian Fox and Chet Ramey
-       \e[4mThe\e[24m \e[4mGnu\e[24m \e[4mHistory\e[24m \e[4mLibrary\e[24m, Brian Fox and Chet Ramey
-       \e[4mbash\e[24m(1)
-       \e[4mreadline\e[24m(3)
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       _\bT_\bh_\be _\bG_\bn_\bu _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+       _\bT_\bh_\be _\bG_\bn_\bu _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+       _\bb_\ba_\bs_\bh(1)
+       _\br_\be_\ba_\bd_\bl_\bi_\bn_\be(3)
 
-\e[1mAUTHORS\e[0m
+A\bAU\bUT\bTH\bHO\bOR\bRS\bS
        Brian Fox, Free Software Foundation
        bfox@gnu.org
 
        Chet Ramey, Case Western Reserve University
        chet.ramey@case.edu
 
-\e[1mBUG REPORTS\e[0m
-       If you find a bug in the \e[1mhistory \e[22mlibrary, you should  report  it.   But
-       first,  you  should  make sure that it really is a bug, and that it ap-
-       pears in the latest version of the \e[1mhistory \e[22mlibrary that you have.
+B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
+       If  you  find  a bug in the h\bhi\bis\bst\bto\bor\bry\by library, you should report it.  But
+       first, you should make sure that it really is a bug, and  that  it  ap-
+       pears in the latest version of the h\bhi\bis\bst\bto\bor\bry\blibrary that you have.
 
-       Once you have determined that a bug actually exists, mail a bug  report
-       to  \e[4mbug-readline\e[24m@\e[4mgnu.org\e[24m.   If  you have a fix, you are welcome to mail
-       that as well!  Suggestions  and  `philosophical'  bug  reports  may  be
-       mailed  to  \e[4mbug-readline\e[24m@\e[4mgnu.org\e[24m  or  posted  to  the  Usenet newsgroup
-       \e[1mgnu.bash.bug\e[22m.
+       Once  you have determined that a bug actually exists, mail a bug report
+       to _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg.  If you have a fix, you are  welcome  to  mail
+       that  as  well!   Suggestions  and  "philosophical"  bug reports may be
+       mailed to  _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg  or  posted  to  the  Usenet  newsgroup
+       g\bgn\bnu\bu.\b.b\bba\bas\bsh\bh.\b.b\bbu\bug\bg.
 
        Comments and bug reports concerning this manual page should be directed
-       to \e[4mchet.ramey@case.edu\e[24m.
-
-
+       to _\bc_\bh_\be_\bt_\b._\br_\ba_\bm_\be_\by_\b@_\bc_\ba_\bs_\be_\b._\be_\bd_\bu.
 
-GNU History 8.1                  2020 July 17                       HISTORY(3)
+GNU History 8.3                2024 December 31                     _\bH_\bI_\bS_\bT_\bO_\bR_\bY(3)
index 06419cff564359ef8b3f633a1de83ca148bedfc3..53be12014358a2e4ab808860b449070d9f40aa55 100644 (file)
@@ -6,29 +6,68 @@
 .\"    Case Western Reserve University
 .\"    chet.ramey@case.edu
 .\"
-.\"    Last Change: Fri Jul 17 09:43:01 EDT 2020
+.\"    Last Change: Tue Dec 31 13:35:52 EST 2024
 .\"
-.TH HISTORY 3 "2020 July 17" "GNU History 8.1"
+.TH HISTORY 3 "2024 December 31" "GNU History 8.3"
 .\"
+.ie \n(.g \{\
+.ds ' \(aq
+.ds " \(dq
+.ds ^ \(ha
+.ds ~ \(ti
+.\}
+.el \{\
+.ds ' '
+.\" \*" is not usable in macro arguments on AT&T troff (DWB, Solaris 10)
+.ds " ""\" two adjacent quotes and no space before this comment
+.ds ^ ^
+.ds ~ ~
+.\}
+.
+.\" Fix broken EX/EE macros on DWB troff.
+.\" Detect it: only DWB sets up a `)Y` register.
+.if \n(.g .nr )Y 0 \" silence "groff -wreg" warning
+.if \n()Y \{\
+.\" Revert the undesired changes to indentation.
+.am EX
+.in -5n
+..
+.am EE
+.in +5n
+..
+.\}
+.
 .\" File Name macro.  This used to be `.PN', for Path Name,
 .\" but Sun doesn't seem to like that very much.
+.\" \% at the beginning of the string protects the filename from hyphenation.
 .\"
 .de FN
-\fI\|\\$1\|\fP
+\%\fI\|\\$1\|\fP
+..
+.\"
+.\" Quotation macro: generate consistent quoted strings that don't rely
+.\" on the presence of the `CW' constant-width font.
+.\"
+.de Q
+.ie \n(.g \(lq\\$1\(rq\\$2
+.el \{\
+.  if t ``\\$1''\\$2
+.  if n "\\$1"\\$2
+.\}
 ..
 .ds lp \fR\|(\fP
 .ds rp \fR\|)\fP
 .\" FnN return-value fun-name N arguments
-.de Fn1
+.de F1
 \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3\fP\\*(rp
 .br
 ..
-.de Fn2
+.de F2
 .if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4\fP\\*(rp
 .if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4\fP\\*(rp
 .br
 ..
-.de Fn3
+.de F3
 .if t \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3,\|\\$4,\|\\$5\fP\|\\*(rp
 .if n \fI\\$1\fP \fB\\$2\fP \\*(lp\fI\\$3, \\$4, \\$5\fP\\*(rp
 .br
 .SH NAME
 history \- GNU History Library
 .SH COPYRIGHT
-.if t The GNU History Library is Copyright \(co 1989-2020 by the Free Software Foundation, Inc.
-.if n The GNU History Library is Copyright (C) 1989-2020 by the Free Software Foundation, Inc.
+.if t The GNU History Library is Copyright \(co 1989-2025 by the Free Software Foundation, Inc.
+.if n The GNU History Library is Copyright (C) 1989-2025 by the Free Software Foundation, Inc.
 .SH DESCRIPTION
-Many programs read input from the user a line at a time.  The GNU
+Many programs read input from the user a line at a time.
+The GNU
 History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones. 
+data with each line, and utilize information from previous lines when
+composing new ones.
 .PP
+The History library provides functions that allow applications to their
+\fIhistory\fP, the set of previously-typed lines,
+which it keeps in a list.
+Applications can choose which lines to save into a history list, how
+many commands to save, save a history list to a file, read a history
+list from a file, and display lines from the history in various
+formats.
 .SH "HISTORY EXPANSION"
 The history library supports a history expansion feature that
 is identical to the history expansion in
-.BR bash.
+.BR bash .
 This section describes what syntax features are available.
 .PP
 History expansions introduce words from the history list into
@@ -62,25 +109,46 @@ fix errors in previous commands quickly.
 History expansion is usually performed immediately after a complete line
 is read.
 It takes place in two parts.
-The first is to determine which line from the history list
+The first is to determine which history list entry
 to use during substitution.
-The second is to select portions of that line for inclusion into
+The second is to select portions of that entry to include into
 the current one.
-The line selected from the history is the \fIevent\fP,
-and the portions of that line that are acted upon are \fIwords\fP.
+.PP
+The entry selected from the history is the \fIevent\fP,
+and the portions of that entry that are acted upon are \fIwords\fP.
 Various \fImodifiers\fP are available to manipulate the selected words.
-The line is broken into words in the same fashion as \fBbash\fP
+The entry is split into words in the same fashion as \fBbash\fP
 does when reading input,
-so that several words that would otherwise be separated 
+so that several words that would otherwise be separated
 are considered one word when surrounded by quotes (see the
 description of \fBhistory_tokenize()\fP below).
+The \fIevent designator\fP selects the event, the optional
+\fIword designator\fP selects words from the event, and
+various optional \fImodifiers\fP are available to manipulate the
+selected words.
+.PP
 History expansions are introduced by the appearance of the
 history expansion character, which is \^\fB!\fP\^ by default.
+History expansions may appear anywhere in the input, but do not nest.
+.PP
 Only backslash (\^\fB\e\fP\^) and single quotes can quote
 the history expansion character.
+.PP
+There is a special abbreviation for substitution, active when the
+\fIquick substitution\fP character (default \fB\*^\fP)
+is the first character on the line.
+It selects the previous history list entry, using an event designator
+equivalent to \fB!!\fP,
+and substitutes one string for another in that entry.
+It is described below under \fBEvent Designators\fP.
+This is the only history expansion that does not begin with the history
+expansion character.
 .SS Event Designators
-An event designator is a reference to a command line entry in the
-history list.
+An event designator is a reference to an entry in the history list.
+The event designator
+consists of the portion of the word beginning with the history
+expansion character and ending with the word designator if present,
+or the end of the word.
 Unless the reference is absolute, events are relative to the current
 position in the history list.
 .PP
@@ -89,43 +157,48 @@ position in the history list.
 .B !
 Start a history substitution, except when followed by a
 .BR blank ,
-newline, = or (.
+newline, carriage return, =,
+or (.
 .TP
-.B !\fIn\fR
-Refer to command line
+.B !\fIn\fP
+Refer to history list entry
 .IR n .
 .TP
-.B !\-\fIn\fR
-Refer to the current command minus
+.B !\-\fIn\fP
+Refer to the current entry minus
 .IR n .
 .TP
 .B !!
-Refer to the previous command.  This is a synonym for `!\-1'.
+Refer to the previous entry.
+This is a synonym for
+.Q !\-1 .
 .TP
-.B !\fIstring\fR
-Refer to the most recent command
-preceding the current position in the history list
-starting with
+.B !\fIstring\fP
+Refer to the most recent command preceding the current position in the
+history list starting with
 .IR string .
 .TP
-.B !?\fIstring\fR\fB[?]\fR
-Refer to the most recent command
-preceding the current position in the history list
-containing
+.B !?\fIstring\fR\fB[?]\fP
+Refer to the most recent command preceding the current position in the
+history list containing
 .IR string .
 The trailing \fB?\fP may be omitted if
 .I string
 is followed immediately by a newline.
-If \fIstring\fP is missing, the string from the most recent search is used;
+If \fIstring\fP is missing, this uses
+the string from the most recent search;
 it is an error if there is no previous search string.
 .TP
-.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
-Quick substitution.  Repeat the last command, replacing
+.B \d\s+2\*^\s-2\u\fIstring1\fP\d\s+2\*^\s-2\u\fIstring2\fP\d\s+2\*^\s-2\u
+.\" was .B \*^\fIstring1\fP\*^\fIstring2\fP\*^
+Quick substitution.
+Repeat the previous command, replacing
 .I string1
 with
 .IR string2 .
 Equivalent to
-``!!:s\d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u''
+.Q !!:s\d\s+2\*^\s-2\u\fIstring1\fP\d\s+2\*^\s-2\u\fIstring2\fP\d\s+2\*^\s-2\u
+.\" was .Q !!:s\*^\fIstring1\fP\*^\fIstring2\fP\*^
 (see \fBModifiers\fP below).
 .TP
 .B !#
@@ -133,11 +206,13 @@ The entire command line typed so far.
 .PD
 .SS Word Designators
 Word designators are used to select desired words from the event.
+They are optional; if the word designator isn't supplied, the history
+expansion uses the entire event.
 A
 .B :
 separates the event specification from the word designator.
 It may be omitted if the word designator begins with a
-.BR ^ ,
+.BR \*^ ,
 .BR $ ,
 .BR * ,
 .BR \- ,
@@ -150,32 +225,43 @@ Words are inserted into the current line separated by single spaces.
 .PD 0
 .TP
 .B 0 (zero)
-The zeroth word.  For the shell, this is the command
-word.
+The zeroth word.
+For the shell, and many other applications, this is the command word.
 .TP
 .I n
-The \fIn\fRth word.
+The \fIn\fPth word.
 .TP
-.B ^
-The first argument.  That is, word 1.
+.B \*^
+The first argument: word 1.
 .TP
 .B $
-The last word.  This is usually the last argument, but will expand to the
+The last word.
+This is usually the last argument, but expands to the
 zeroth word if there is only one word in the line.
 .TP
 .B %
-The first word matched by the most recent `?\fIstring\fR?' search,
+The first word matched by the most recent
+.Q ?\fIstring\fP?
+search,
 if the search string begins with a character that is part of a word.
+By default, searches begin at the end of each line and proceed to the
+beginning, so the first word matched is the one closest to the end of
+the line.
 .TP
 .I x\fB\-\fPy
-A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
+A range of words;
+.Q \-\fIy\fP
+abbreviates
+.Q 0\-\fIy\fP .
 .TP
 .B *
-All of the words but the zeroth.  This is a synonym
-for `\fI1\-$\fP'.  It is not an error to use
+All of the words but the zeroth.
+This is a synonym for
+.Q \fI1\-$\fP .
+It is not an error to use
 .B *
-if there is just one
-word in the event; the empty string is returned in that case.
+if there is just one word in the event;
+it expands to the empty string in that case.
 .TP
 .B x*
 Abbreviates \fIx\-$\fP.
@@ -186,20 +272,20 @@ If \fBx\fP is missing, it defaults to 0.
 .PD
 .PP
 If a word designator is supplied without an event specification, the
-previous command is used as the event.
+previous command is used as the event, equivalent to \fB!!\fP.
 .SS Modifiers
-After the optional word designator, there may appear a sequence of
-one or more of the following modifiers, each preceded by a `:'.
+After the optional word designator, the expansion may include a
+sequence of one or more of the following modifiers, each preceded by a
+.Q : .
 These modify, or edit, the word or words selected from the history event.
 .PP
 .PD 0
-.PP
 .TP
 .B h
-Remove a trailing file name component, leaving only the head.
+Remove a trailing filename component, leaving only the head.
 .TP
 .B t
-Remove all leading file name components, leaving the tail.
+Remove all leading filename components, leaving the tail.
 .TP
 .B r
 Remove a trailing suffix of the form \fI.xxx\fP, leaving the
@@ -220,8 +306,8 @@ Quote the substituted words as with
 but break into words at
 .B blanks
 and newlines.
-The \fBq\fP and \fBx\fP modifiers are mutually exclusive; the last one
-supplied is used.
+The \fBq\fP and \fBx\fP modifiers are mutually exclusive;
+expansion uses the last one supplied.
 .TP
 .B s/\fIold\fP/\fInew\fP/
 Substitute
@@ -232,15 +318,15 @@ in the event line.
 Any character may be used as the delimiter in place of /.
 The final delimiter is optional if it is the last character of the
 event line.
-The delimiter may be quoted in
+A single backslash quotes the delimiter in
 .I old
 and
-.I new
-with a single backslash.  If & appears in
+.IR new .
+If & appears in
 .IR new ,
-it is replaced by
+it is replaced with
 .IR old .
-A single backslash will quote the &.
+A single backslash quotes the &.
 If
 .I old
 is null, it is set to the last
@@ -249,7 +335,7 @@ substituted, or, if no previous history substitutions took place,
 the last
 .I string
 in a
-.B !?\fIstring\fR\fB[?]\fR
+.B !?\fIstring\fP[?]
 search.
 If
 .I new
@@ -261,21 +347,30 @@ is deleted.
 Repeat the previous substitution.
 .TP
 .B g
-Cause changes to be applied over the entire event line.  This is
-used in conjunction with `\fB:s\fP' (e.g., `\fB:gs/\fIold\fP/\fInew\fP/\fR')
-or `\fB:&\fP'.  If used with
-`\fB:s\fP', any delimiter can be used
-in place of /, and the final delimiter is optional
+Cause changes to be applied over the entire event line.
+This is used in conjunction with
+.Q \fB:s\fP
+(e.g.,
+.Q \fB:gs/\fIold\fP/\fInew\fP/\fR )
+or
+.Q \fB:&\fP .
+If used with
+.Q \fB:s\fP ,
+any delimiter can be used in place of /,
+and the final delimiter is optional
 if it is the last character of the event line.
 An \fBa\fP may be used as a synonym for \fBg\fP.
 .TP
 .B G
-Apply the following `\fBs\fP' or `\fB&\fP' modifier once to each word
-in the event line.
+Apply the following
+.Q \fBs\fP
+or
+.Q \fB&\fP
+modifier once to each word in the event line.
 .PD
 .SH "PROGRAMMING WITH HISTORY FUNCTIONS"
 This section describes how to use the History library in other programs.
-.SS Introduction to History
+.SS "Introduction to History"
 A programmer using the History library has available functions
 for remembering lines on a history list, associating arbitrary data
 with a line, removing lines from the list, searching through the list
@@ -310,11 +405,13 @@ declared as follows:
 .Vb "typedef void *" histdata_t;
 .PP
 .nf
+.EX
 typedef struct _hist_entry {
   char *line;
   char *timestamp;
   histdata_t data;
 } HIST_ENTRY;
+.EE
 .fi
 .PP
 The history list itself might therefore be declared as
@@ -324,16 +421,18 @@ The history list itself might therefore be declared as
 The state of the History library is encapsulated into a single structure:
 .PP
 .nf
+.EX
 /*
  * A structure used to pass around the current state of the history.
  */
 typedef struct _hist_state {
-  HIST_ENTRY **entries; /* Pointer to the entries themselves. */
-  int offset;           /* The location pointer within this array. */
-  int length;           /* Number of elements within this array. */
-  int size;             /* Number of slots allocated to this array. */
+  HIST_ENTRY **entries; /* Pointer to entry records. */
+  int offset;           /* The current record. */
+  int length;           /* Number of records in list. */
+  int size;             /* Number of records allocated. */
   int flags;
 } HISTORY_STATE;
+.EE
 .fi
 .PP
 If the flags member includes \fBHS_STIFLED\fP, the history has been
@@ -345,192 +444,182 @@ exported by the GNU History library.
 This section describes functions used to initialize and manage
 the state of the History library when you want to use the history
 functions in your program.
-
-.Fn1 void using_history void
+.PP
+.F1 void using_history void
 Begin a session in which the history functions might be used.  This
 initializes the interactive variables.
-
-.Fn1 "HISTORY_STATE *" history_get_history_state void
+.PP
+.F1 "HISTORY_STATE *" history_get_history_state void
 Return a structure describing the current state of the input history.
-
-.Fn1 void history_set_history_state "HISTORY_STATE *state"
+.PP
+.F1 void history_set_history_state "HISTORY_STATE *state"
 Set the state of the history list according to \fIstate\fP.
-
 .SS History List Management
 These functions manage individual entries on the history list, or set
 parameters managing the list itself.
-
-.Fn1 void add_history "const char *string"
+.PP
+.F1 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"
+.PP
+.F1 void add_history_time "const char *string"
 Change the time stamp associated with the most recent history entry to
 \fIstring\fP.
-
-.Fn1 "HIST_ENTRY *" remove_history "int which"
+.PP
+.F1 "HIST_ENTRY *" remove_history "int which"
 Remove history entry at offset \fIwhich\fP from the history.  The
 removed element is returned so you can free the line, data,
 and containing structure.
-
-.Fn1 "histdata_t" free_history_entry "HIST_ENTRY *histent"
+.PP
+.F1 "histdata_t" free_history_entry "HIST_ENTRY *histent"
 Free the history entry \fIhistent\fP and any history library private
 data associated with it.  Returns the application-specific data
 so the caller can dispose of it.
-
-.Fn3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
+.PP
+.F3 "HIST_ENTRY *" replace_history_entry "int which" "const char *line" "histdata_t data"
 Make the history entry at offset \fIwhich\fP have \fIline\fP and \fIdata\fP.
 This returns the old entry so the caller can dispose of any
 application-specific data.  In the case
 of an invalid \fIwhich\fP, a \fBNULL\fP pointer is returned.
-
-.Fn1 void clear_history "void"
+.PP
+.F1 void clear_history "void"
 Clear the history list by deleting all the entries.
-
-.Fn1 void stifle_history "int max"
+.PP
+.F1 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"
+.PP
+.F1 int unstifle_history "void"
 Stop stifling the history.  This returns the previously-set
 maximum number of history entries (as set by \fBstifle_history()\fP).
-history was stifled.  The value is positive if the history was
+history was stifled.
+The value is positive if the history was
 stifled, negative if it wasn't.
-
-.Fn1 int history_is_stifled "void"
+.PP
+.F1 int history_is_stifled "void"
 Returns non-zero if the history is stifled, zero if it is not.
-
 .SS Information About the History List
-
 These functions return information about the entire history list or
 individual list entries.
-
-.Fn1 "HIST_ENTRY **" history_list "void"
+.PP
+.F1 "HIST_ENTRY **" history_list "void"
 Return a \fBNULL\fP terminated array of \fIHIST_ENTRY *\fP which is the
 current input history.  Element 0 of this list is the beginning of time.
 If there is no history, return \fBNULL\fP.
-
-.Fn1 int where_history "void"
+.PP
+.F1 int where_history "void"
 Returns the offset of the current history element.
-
-.Fn1 "HIST_ENTRY *" current_history "void"
+.PP
+.F1 "HIST_ENTRY *" current_history "void"
 Return the history entry at the current position, as determined by
 \fBwhere_history()\fP.  If there is no entry there, return a \fBNULL\fP
 pointer.
-
-.Fn1 "HIST_ENTRY *" history_get "int offset"
+.PP
+.F1 "HIST_ENTRY *" history_get "int offset"
 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 *"
+.PP
+.F1 "time_t" history_get_time "HIST_ENTRY *"
 Return the time stamp associated with the history entry passed as the argument.
-
-.Fn1 int history_total_bytes "void"
+.PP
+.F1 int history_total_bytes "void"
 Return the number of bytes that the primary history entries are using.
 This function returns the sum of the lengths of all the lines in the
 history.
-
 .SS Moving Around the History List
-
 These functions allow the current index into the history list to be
 set or changed.
-
-.Fn1 int history_set_pos "int pos"
+.PP
+.F1 int history_set_pos "int pos"
 Set the current history offset to \fIpos\fP, an absolute index
 into the list.
 Returns 1 on success, 0 if \fIpos\fP is less than zero or greater
 than the number of history entries.
-
-.Fn1 "HIST_ENTRY *" previous_history "void"
+.PP
+.F1 "HIST_ENTRY *" previous_history "void"
 Back up the current history offset to the previous history entry, and
 return a pointer to that entry.  If there is no previous entry, return
 a \fBNULL\fP pointer.
-
-.Fn1 "HIST_ENTRY *" next_history "void"
+.PP
+.F1 "HIST_ENTRY *" next_history "void"
 If the current history offset refers to a valid history entry,
 increment the current history offset.
 If the possibly-incremented history offset refers to a valid history
 entry, return a pointer to that entry;
 otherwise, return a \fBNULL\fP pointer.
-
 .SS Searching the History List
-
 These functions allow searching of the history list for entries containing
 a specific string.  Searching may be performed both forward and backward
 from the current history position.  The search may be \fIanchored\fP,
 meaning that the string must match at the beginning of the history entry.
-
-.Fn2 int history_search "const char *string" "int direction"
+.PP
+.F2 int history_search "const char *string" "int direction"
 Search the history for \fIstring\fP, starting at the current history offset.
 If \fIdirection\fP is less than 0, then the search is through
 previous entries, otherwise through subsequent entries.
 If \fIstring\fP is found, then
 the current history index is set to that history entry, and the value
 returned is the offset in the line of the entry where
-\fIstring\fP was found.  Otherwise, nothing is changed, and a -1 is
-returned.
-
-.Fn2 int history_search_prefix "const char *string" "int direction"
+\fIstring\fP was found.
+Otherwise, nothing is changed, and the function returns \-1.
+.PP
+.F2 int history_search_prefix "const char *string" "int direction"
 Search the history for \fIstring\fP, starting at the current history
 offset.  The search is anchored: matching lines must begin with
 \fIstring\fP.  If \fIdirection\fP is less than 0, then the search is
 through previous entries, otherwise through subsequent entries.
 If \fIstring\fP is found, then the
-current history index is set to that entry, and the return value is 0. 
-Otherwise, nothing is changed, and a -1 is returned. 
-
-.Fn3 int history_search_pos "const char *string" "int direction" "int pos"
+current history index is set to that entry, and the return value is 0.
+Otherwise, nothing is changed, and the function returns \-1.
+.PP
+.F3 int history_search_pos "const char *string" "int direction" "int pos"
 Search for \fIstring\fP in the history list, starting at \fIpos\fP, an
 absolute index into the list.  If \fIdirection\fP is negative, the search
 proceeds backward from \fIpos\fP, otherwise forward.  Returns the absolute
-index of the history element where \fIstring\fP was found, or -1 otherwise.
-
+index of the history element where \fIstring\fP was found, or \-1 otherwise.
 .SS Managing the History File
 The History library can read the history from and write it to a file.
 This section documents the functions for managing a history file.
-
-.Fn1 int read_history "const char *filename"
+.PP
+.F1 int read_history "const char *filename"
 Add the contents of \fIfilename\fP to the history list, a line at a time.
-If \fIfilename\fP is \fBNULL\fP, then read from \fI~/.history\fP.
+If \fIfilename\fP is \fBNULL\fP, then read from \fI\*~/.history\fP.
 Returns 0 if successful, or \fBerrno\fP if not.
-
-.Fn3 int read_history_range "const char *filename" "int from" "int to"
+.PP
+.F3 int read_history_range "const char *filename" "int from" "int to"
 Read a range of lines from \fIfilename\fP, adding them to the history list.
 Start reading at line \fIfrom\fP and end at \fIto\fP.
 If \fIfrom\fP is zero, start at the beginning.  If \fIto\fP is less than
 \fIfrom\fP, then read until the end of the file.  If \fIfilename\fP is
-\fBNULL\fP, then read from \fI~/.history\fP.  Returns 0 if successful,
+\fBNULL\fP, then read from \fI\*~/.history\fP.  Returns 0 if successful,
 or \fBerrno\fP if not.
-
-.Fn1 int write_history "const char *filename"
+.PP
+.F1 int write_history "const char *filename"
 Write the current history to \fIfilename\fP, overwriting \fIfilename\fP
 if necessary.
-If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI~/.history\fP.
+If \fIfilename\fP is \fBNULL\fP, then write the history list to \fI\*~/.history\fP.
 Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-
-.Fn2 int append_history "int nelements" "const char *filename"
+.PP
+.F2 int append_history "int nelements" "const char *filename"
 Append the last \fInelements\fP of the history list to \fIfilename\fP.
-If \fIfilename\fP is \fBNULL\fP, then append to \fI~/.history\fP.
+If \fIfilename\fP is \fBNULL\fP, then append to \fI\*~/.history\fP.
 Returns 0 on success, or \fBerrno\fP on a read or write error.
-
-.Fn2 int history_truncate_file "const char *filename" "int nlines"
+.PP
+.F2 int history_truncate_file "const char *filename" "int nlines"
 Truncate the history file \fIfilename\fP, leaving only the last
 \fInlines\fP lines.
-If \fIfilename\fP is \fBNULL\fP, then \fI~/.history\fP is truncated.
+If \fIfilename\fP is \fBNULL\fP, then \fI\*~/.history\fP is truncated.
 Returns 0 on success, or \fBerrno\fP on failure.
-
 .SS History Expansion
-
 These functions implement history expansion.
-
-.Fn2 int history_expand "char *string" "char **output"
+.PP
+.F2 int history_expand "const char *string" "char **output"
 Expand \fIstring\fP, placing the result into \fIoutput\fP, a pointer
 to a string.  Returns:
 .RS
@@ -544,7 +633,7 @@ character);
 1
 if expansions did take place;
 .TP
--1
+\-1
 if there was an error in expansion;
 .TP
 2
@@ -554,82 +643,103 @@ as with the \fB:p\fP modifier.
 .RE
 If an error occurred in expansion, then \fIoutput\fP contains a descriptive
 error message.
-
-.Fn3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
+.PP
+.F3 "char *" get_history_event "const char *string" "int *cindex" "int qchar"
 Returns the text of the history event beginning at \fIstring\fP +
 \fI*cindex\fP.  \fI*cindex\fP is modified to point to after the event
 specifier.  At function entry, \fIcindex\fP points to the index into
 \fIstring\fP where the history event specification begins.  \fIqchar\fP
 is a character that is allowed to end the event specification in addition
-to the ``normal'' terminating characters.
-
-.Fn1 "char **" history_tokenize "const char *string"
+to the
+.Q normal
+terminating characters.
+.PP
+.F1 "char **" history_tokenize "const char *string"
 Return an array of tokens parsed out of \fIstring\fP, much as the
 shell might.
 The tokens are split on the characters in the
 \fBhistory_word_delimiters\fP variable,
 and shell quoting conventions are obeyed.
-
-.Fn3 "char *" history_arg_extract "int first" "int last" "const char *string"
+.PP
+.F3 "char *" history_arg_extract "int first" "int last" "const char *string"
 Extract a string segment consisting of the \fIfirst\fP through \fIlast\fP
 arguments present in \fIstring\fP.  Arguments are split using
 \fBhistory_tokenize()\fP.
-
 .SS History Variables
-
 This section describes the externally-visible variables exported by
 the GNU History Library.
-
+.PP
 .Vb int history_base
 The logical offset of the first entry in the history list.
-
+.PP
 .Vb int history_length
 The number of entries currently stored in the history list.
-
+.PP
 .Vb int history_max_entries
 The maximum number of history entries.  This must be changed using
 \fBstifle_history()\fP.
-
+.PP
 .Vb int history_write_timestamps
 If non-zero, timestamps are written to the history file, so they can be
 preserved between sessions.  The default value is 0, meaning that
 timestamps are not saved.
 The current timestamp format uses the value of \fIhistory_comment_char\fP
-to delimit timestamp entries in the history file.  If that variable does
-not have a value (the default), timestamps will not be written.
-
+to delimit timestamp entries in the history file.
+If that variable does
+not have a value (the default),
+the history library will not write timestamps.
+.PP
 .Vb char history_expansion_char
-The character that introduces a history event.  The default is \fB!\fP.
+The character that introduces a history event.
+The default is \fB!\fP.
 Setting this to 0 inhibits history expansion.
-
+.PP
 .Vb char history_subst_char
 The character that invokes word substitution if found at the start of
-a line.  The default is \fB^\fP.
-
+a line.
+The default is \fB\*^\fP.
+.PP
 .Vb char history_comment_char
 During tokenization, if this character is seen as the first character
 of a word, then it and all subsequent characters up to a newline are
 ignored, suppressing history expansion for the remainder of the line.
 This is disabled by default.
-
+.PP
 .Vb "char *" history_word_delimiters
 The characters that separate tokens for \fBhistory_tokenize()\fP.
-The default value is \fB"\ \et\en()<>;&|"\fP.
-
+The default value is \fB\*"\ \et\en()<>;&|\*"\fP.
+.PP
 .Vb "char *" history_no_expand_chars
 The list of characters which inhibit history expansion if found immediately
 following \fBhistory_expansion_char\fP.  The default is space, tab, newline,
 \fB\er\fP, and \fB=\fP.
-
+.PP
 .Vb "char *" history_search_delimiter_chars
 The list of additional characters which can delimit a history search
 string, in addition to space, tab, \fI:\fP and \fI?\fP in the case of
 a substring search.  The default is empty.
-
+.PP
 .Vb 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.
+.PP
+.Vb 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 \fI\*'\fP,
+history expansion assumes that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote;
+if set to \fI\*"\fP, history expansion assumes the line is double quoted
+until it reads an unquoted closing double quote.
+If set to zero, the default,
+history expansion assumes the line is not quoted and
+treats quote characters within the line as described above.
+This is only effective if \fBhistory_quotes_inhibit_expansion\fP is set.
+.PP
 .Vb "rl_linebuf_func_t *" history_inhibit_expansion_function
 This should be set to the address of a function that takes two arguments:
 a \fBchar *\fP (\fIstring\fP)
@@ -641,9 +751,9 @@ It is intended for use by applications like \fBbash\fP that use the history
 expansion character for additional purposes.
 By default, this variable is set to \fBNULL\fP.
 .SH FILES
-.PD 0 
+.PD 0
 .TP
-.FN ~/.history
+.FN \*~/.history
 Default filename for reading and writing saved history
 .PD
 .SH "SEE ALSO"
@@ -677,8 +787,10 @@ library that you have.
 Once you have determined that a bug actually exists, mail a
 bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
 If you have a fix, you are welcome to mail that
-as well!  Suggestions and `philosophical' bug reports may be mailed
-to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
+as well!  Suggestions and
+.Q philosophical
+bug reports may be mailed
+to \fIbug\-readline\fP@\fIgnu.org\fP or posted to the Usenet
 newsgroup
 .BR gnu.bash.bug .
 .PP
index bf33fe4fe16d8443c10debc72b40fa9910be4006..1cdf80606693a23e094e2e42fc9b71439ae33324 100644 (file)
Binary files a/doc/history.dvi and b/doc/history.dvi differ
index 3c258f4061de1d63d13075d1e305bc7573792841..62803d81e89c7cbae8036be1c1ac466617d9ca19 100644 (file)
@@ -1,14 +1,14 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <!-- This document describes the GNU History library
-(version 8.2, 19 September 2022),
+(version 8.3, 30 December 2024),
 a programming tool that provides a consistent user interface for
 recalling lines of previously typed input.
 
-Copyright (C) 1988-2022 Free Software Foundation, Inc.
+Copyright © 1988-2025 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -32,21 +32,19 @@ A copy of the license is included in the section entitled
 <link href="#Using-History-Interactively" rel="next" title="Using History Interactively">
 <style type="text/css">
 <!--
-a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
-a.summary-letter {text-decoration: none}
-blockquote.indentedblock {margin-right: 0em}
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+a.summary-letter-printindex {text-decoration: none}
+div.center {text-align:center}
 div.display {margin-left: 3.2em}
 div.example {margin-left: 3.2em}
-kbd {font-style: oblique}
-pre.display {font-family: inherit}
-pre.format {font-family: inherit}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-span.nolinebreak {white-space: nowrap}
-span.roman {font-family: initial; font-weight: normal}
-span.sansserif {font-family: sans-serif; font-weight: normal}
-span:hover a.copiable-anchor {visibility: visible}
-ul.no-bullet {list-style: none}
+pre.display-preformatted {font-family: inherit}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top; padding-left: 1em}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left; padding-left: 1em}
+ul.toc-numbered-mark {list-style: none}
 -->
 </style>
 
@@ -54,7 +52,6 @@ ul.no-bullet {list-style: none}
 </head>
 
 <body lang="en">
-<h1 class="settitle" align="center">GNU History Library</h1>
 
 
 
@@ -64,12 +61,12 @@ ul.no-bullet {list-style: none}
 
 
 
-<div class="top" id="Top">
-<div class="header">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
 <p>
 Next: <a href="#Using-History-Interactively" accesskey="n" rel="next">Using History Interactively</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="GNU-History-Library"></span><h1 class="top">GNU History Library</h1>
+<h1 class="top" id="GNU-History-Library"><span>GNU History Library<a class="copiable-link" href="#GNU-History-Library"> &para;</a></span></h1>
 
 <p>This document describes the GNU History library, a programming tool that
 provides a consistent user interface for recalling lines of previously
@@ -78,27 +75,27 @@ typed input.
 
 
 
-<div class="Contents_element" id="SEC_Contents">
+<div class="element-contents" id="SEC_Contents">
 <h2 class="contents-heading">Table of Contents</h2>
 
 <div class="contents">
 
-<ul class="no-bullet">
+<ul class="toc-numbered-mark">
   <li><a id="toc-Using-History-Interactively-1" href="#Using-History-Interactively">1 Using History Interactively</a>
-  <ul class="no-bullet">
+  <ul class="toc-numbered-mark">
     <li><a id="toc-History-Expansion-1" href="#History-Interaction">1.1 History Expansion</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Event-Designators-1" href="#Event-Designators">1.1.1 Event Designators</a></li>
       <li><a id="toc-Word-Designators-1" href="#Word-Designators">1.1.2 Word Designators</a></li>
       <li><a id="toc-Modifiers-1" href="#Modifiers">1.1.3 Modifiers</a></li>
     </ul></li>
   </ul></li>
   <li><a id="toc-Programming-with-GNU-History-1" href="#Programming-with-GNU-History">2 Programming with GNU History</a>
-  <ul class="no-bullet">
+  <ul class="toc-numbered-mark">
     <li><a id="toc-Introduction-to-History-1" href="#Introduction-to-History">2.1 Introduction to History</a></li>
     <li><a id="toc-History-Storage-1" href="#History-Storage">2.2 History Storage</a></li>
     <li><a id="toc-History-Functions-1" href="#History-Functions">2.3 History Functions</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Initializing-History-and-State-Management-1" href="#Initializing-History-and-State-Management">2.3.1 Initializing History and State Management</a></li>
       <li><a id="toc-History-List-Management-1" href="#History-List-Management">2.3.2 History List Management</a></li>
       <li><a id="toc-Information-About-the-History-List-1" href="#Information-About-the-History-List">2.3.3 Information About the History List</a></li>
@@ -117,54 +114,68 @@ typed input.
 </div>
 </div>
 <hr>
-<div class="chapter" id="Using-History-Interactively">
-<div class="header">
+<div class="chapter-level-extent" id="Using-History-Interactively">
+<div class="nav-panel">
 <p>
 Next: <a href="#Programming-with-GNU-History" accesskey="n" rel="next">Programming with GNU History</a>, Previous: <a href="#Top" accesskey="p" rel="prev">GNU History Library</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU History Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Using-History-Interactively-1"></span><h2 class="chapter">1 Using History Interactively</h2>
+<h2 class="chapter" id="Using-History-Interactively-1"><span>1 Using History Interactively<a class="copiable-link" href="#Using-History-Interactively-1"> &para;</a></span></h2>
 
 
-<p>This chapter describes how to use the <small>GNU</small> History Library interactively,
-from a user&rsquo;s standpoint.  It should be considered a user&rsquo;s guide.  For
-information on using the <small>GNU</small> History Library in your own programs,
-see <a href="#Programming-with-GNU-History">Programming with GNU History</a>.
+<p>This chapter describes how to use the <small class="sc">GNU</small> History Library
+interactively, from a user&rsquo;s standpoint.
+It should be considered a user&rsquo;s guide.
+For information on using the <small class="sc">GNU</small> History Library in your own programs,
+see <a class="pxref" href="#Programming-with-GNU-History">Programming with GNU History</a>.
 </p>
 
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#History-Interaction" accesskey="1">History Expansion</a></li>
 </ul>
 <hr>
-<div class="section" id="History-Interaction">
-<div class="header">
+<div class="section-level-extent" id="History-Interaction">
+<div class="nav-panel">
 <p>
 Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="History-Expansion-1"></span><h3 class="section">1.1 History Expansion</h3>
-<span id="index-history-expansion"></span>
+<h3 class="section" id="History-Expansion-1"><span>1.1 History Expansion<a class="copiable-link" href="#History-Expansion-1"> &para;</a></span></h3>
+<a class="index-entry-id" id="index-history-expansion"></a>
 
-<p>The History library provides a history expansion feature that is similar
-to the history expansion provided by <code>csh</code>.  This section
-describes the syntax used to manipulate the history information.
+<p>The History library
+provides a history expansion feature that is similar
+to the history expansion provided by <code class="code">csh</code>
+(also referred to as history substitution where appropriate).
+This section describes the syntax used to manipulate the
+history information.
 </p>
+
 <p>History expansions introduce words from the history list into
 the input stream, making it easy to repeat commands, insert the
 arguments to a previous command into the current input line, or
 fix errors in previous commands quickly.
 </p>
 
-<p>History expansion takes place in two parts.  The first is to determine
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one.  The line selected from the history is called the
-<em>event</em>, and the portions of that line that are acted upon are
-called <em>words</em>.  Various <em>modifiers</em> are available to manipulate
-the selected words.  The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
-History expansions are introduced by the appearance of the
-history expansion character, which is &lsquo;<samp>!</samp>&rsquo; by default.
+<p>History expansion takes place in two parts.
+The first is to determine
+which entry from the history list should be used during substitution.
+The second is to select portions of that entry to include into the
+current one.
+</p>
+<p>The entry selected from the history is called the <em class="dfn">event</em>,
+and the portions of that entry that are acted upon are <em class="dfn">words</em>.
+Various <em class="dfn">modifiers</em> are available to manipulate the selected words.
+The entry is split into words in the same fashion that Bash
+does when reading input,
+so that several words surrounded by quotes are considered one word.
+The <em class="dfn">event designator</em> selects the event, the optional
+<em class="dfn">word designator</em> selects words from the event, and
+various optional <em class="dfn">modifiers</em> are available to manipulate the
+selected words.
+</p>
+<p>History expansions are introduced by the appearance of the
+history expansion character, which is &lsquo;<samp class="samp">!</samp>&rsquo; by default.
+History expansions may appear anywhere in the input, but do not nest.
 </p>
 <p>History expansion implements shell-like quoting conventions:
 a backslash can be used to remove the special handling for the next character;
@@ -176,70 +187,85 @@ but single quotes may not, since they are not treated specially within
 double quotes.
 </p>
 
+<p>There is a special abbreviation for substitution, active when the
+<var class="var">quick substitution</var> character
+(default &lsquo;<samp class="samp">^</samp>&rsquo;)
+is the first character on the line.
+It selects the previous history list entry, using an event designator
+equivalent to <code class="code">!!</code>,
+and substitutes one string for another in that entry.
+It is described below (see <a class="pxref" href="#Event-Designators">Event Designators</a>).
+This is the only history expansion that does not begin with the history
+expansion character.
+</p>
 
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Event-Designators" accesskey="1">Event Designators</a></li>
 <li><a href="#Word-Designators" accesskey="2">Word Designators</a></li>
 <li><a href="#Modifiers" accesskey="3">Modifiers</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Event-Designators">
-<div class="header">
+<div class="subsection-level-extent" id="Event-Designators">
+<div class="nav-panel">
 <p>
 Next: <a href="#Word-Designators" accesskey="n" rel="next">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Expansion</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Event-Designators-1"></span><h4 class="subsection">1.1.1 Event Designators</h4>
-<span id="index-event-designators"></span>
+<h4 class="subsection" id="Event-Designators-1"><span>1.1.1 Event Designators<a class="copiable-link" href="#Event-Designators-1"> &para;</a></span></h4>
+<a class="index-entry-id" id="index-event-designators"></a>
 
-<p>An event designator is a reference to a command line entry in the
-history list.
+<p>An event designator is a reference to an entry in the history list.
+The event designator consists of the portion of the word beginning
+with the history expansion character, and ending with the word designator
+if one is present, or the end of the word.
 Unless the reference is absolute, events are relative to the current
 position in the history list.
-<span id="index-history-events"></span>
+<a class="index-entry-id" id="index-history-events"></a>
 </p>
-<dl compact="compact">
-<dt><span><code>!</code></span></dt>
+<dl class="table">
+<dt><code class="code">!</code></dt>
 <dd><p>Start a history substitution, except when followed by a space, tab,
-the end of the line, or &lsquo;<samp>=</samp>&rsquo;.
+the end of the line, or &lsquo;<samp class="samp">=</samp>&rsquo;.
 </p>
 </dd>
-<dt><span><code>!<var>n</var></code></span></dt>
-<dd><p>Refer to command line <var>n</var>.
+<dt><code class="code">!<var class="var">n</var></code></dt>
+<dd><p>Refer to history list entry <var class="var">n</var>.
 </p>
 </dd>
-<dt><span><code>!-<var>n</var></code></span></dt>
-<dd><p>Refer to the command <var>n</var> lines back.
+<dt><code class="code">!-<var class="var">n</var></code></dt>
+<dd><p>Refer to the history entry minus <var class="var">n</var>.
 </p>
 </dd>
-<dt><span><code>!!</code></span></dt>
-<dd><p>Refer to the previous command.  This is a synonym for &lsquo;<samp>!-1</samp>&rsquo;.
+<dt><code class="code">!!</code></dt>
+<dd><p>Refer to the previous entry.
+This is a synonym for &lsquo;<samp class="samp">!-1</samp>&rsquo;.
 </p>
 </dd>
-<dt><span><code>!<var>string</var></code></span></dt>
+<dt><code class="code">!<var class="var">string</var></code></dt>
 <dd><p>Refer to the most recent command
 preceding the current position in the history list
-starting with <var>string</var>.
+starting with <var class="var">string</var>.
 </p>
 </dd>
-<dt><span><code>!?<var>string</var>[?]</code></span></dt>
+<dt><code class="code">!?<var class="var">string</var>[?]</code></dt>
 <dd><p>Refer to the most recent command
 preceding the current position in the history list
-containing <var>string</var>.
+containing <var class="var">string</var>.
 The trailing
-&lsquo;<samp>?</samp>&rsquo; may be omitted if the <var>string</var> is followed immediately by
+&lsquo;<samp class="samp">?</samp>&rsquo; may be omitted if the <var class="var">string</var> is followed immediately by
 a newline.
-If <var>string</var> is missing, the string from the most recent search is used;
+If <var class="var">string</var> is missing, this uses
+the string from the most recent search;
 it is an error if there is no previous search string.
 </p>
 </dd>
-<dt><span><code>^<var>string1</var>^<var>string2</var>^</code></span></dt>
-<dd><p>Quick Substitution.  Repeat the last command, replacing <var>string1</var>
-with <var>string2</var>.  Equivalent to
-<code>!!:s^<var>string1</var>^<var>string2</var>^</code>.
+<dt><code class="code">^<var class="var">string1</var>^<var class="var">string2</var>^</code></dt>
+<dd><p>Quick Substitution.
+Repeat the last command, replacing <var class="var">string1</var> with <var class="var">string2</var>.
+Equivalent to <code class="code">!!:s^<var class="var">string1</var>^<var class="var">string2</var>^</code>.
 </p>
 </dd>
-<dt><span><code>!#</code></span></dt>
+<dt><code class="code">!#</code></dt>
 <dd><p>The entire command line typed so far.
 </p>
 </dd>
@@ -247,154 +273,167 @@ with <var>string2</var>.  Equivalent to
 
 <hr>
 </div>
-<div class="subsection" id="Word-Designators">
-<div class="header">
+<div class="subsection-level-extent" id="Word-Designators">
+<div class="nav-panel">
 <p>
 Next: <a href="#Modifiers" accesskey="n" rel="next">Modifiers</a>, Previous: <a href="#Event-Designators" accesskey="p" rel="prev">Event Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Expansion</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Word-Designators-1"></span><h4 class="subsection">1.1.2 Word Designators</h4>
+<h4 class="subsection" id="Word-Designators-1"><span>1.1.2 Word Designators<a class="copiable-link" href="#Word-Designators-1"> &para;</a></span></h4>
 
 <p>Word designators are used to select desired words from the event.
-A &lsquo;<samp>:</samp>&rsquo; separates the event specification from the word designator.  It
-may be omitted if the word designator begins with a &lsquo;<samp>^</samp>&rsquo;, &lsquo;<samp>$</samp>&rsquo;,
-&lsquo;<samp>*</samp>&rsquo;, &lsquo;<samp>-</samp>&rsquo;, or &lsquo;<samp>%</samp>&rsquo;.  Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero).  Words are
-inserted into the current line separated by single spaces.
+They are optional; if the word designator isn&rsquo;t supplied, the history
+expansion uses the entire event.
+A &lsquo;<samp class="samp">:</samp>&rsquo; separates the event specification from the word designator.
+It may be omitted if the word designator begins with a &lsquo;<samp class="samp">^</samp>&rsquo;, &lsquo;<samp class="samp">$</samp>&rsquo;,
+&lsquo;<samp class="samp">*</samp>&rsquo;, &lsquo;<samp class="samp">-</samp>&rsquo;, or &lsquo;<samp class="samp">%</samp>&rsquo;.
+Words are numbered from the beginning of the line,
+with the first word being denoted by 0 (zero).
+That first word is usually the command word, and the arguments begin
+with the second word.
+Words are inserted into the current line separated by single spaces.
 </p>
 <p>For example,
 </p>
-<dl compact="compact">
-<dt><span><code>!!</code></span></dt>
-<dd><p>designates the preceding command.  When you type this, the preceding
-command is repeated in toto.
+<dl class="table">
+<dt><code class="code">!!</code></dt>
+<dd><p>designates the preceding command.
+When you type this, the preceding command is repeated in toto.
 </p>
 </dd>
-<dt><span><code>!!:$</code></span></dt>
-<dd><p>designates the last argument of the preceding command.  This may be
-shortened to <code>!$</code>.
+<dt><code class="code">!!:$</code></dt>
+<dd><p>designates the last word of the preceding command.
+This may be shortened to <code class="code">!$</code>.
 </p>
 </dd>
-<dt><span><code>!fi:2</code></span></dt>
+<dt><code class="code">!fi:2</code></dt>
 <dd><p>designates the second argument of the most recent command starting with
-the letters <code>fi</code>.
+the letters <code class="code">fi</code>.
 </p></dd>
 </dl>
 
 <p>Here are the word designators:
-</p> 
-<dl compact="compact">
-<dt><span><code>0 (zero)</code></span></dt>
-<dd><p>The <code>0</code>th word.  For many applications, this is the command word.
+</p>
+<dl class="table">
+<dt><code class="code">0 (zero)</code></dt>
+<dd><p>The <code class="code">0</code>th word.
+For the shell, and many other, applications, this is the command word.
 </p>
 </dd>
-<dt><span><code><var>n</var></code></span></dt>
-<dd><p>The <var>n</var>th word.
+<dt><code class="code"><var class="var">n</var></code></dt>
+<dd><p>The <var class="var">n</var>th word.
 </p>
 </dd>
-<dt><span><code>^</code></span></dt>
-<dd><p>The first argument; that is, word 1.
+<dt><code class="code">^</code></dt>
+<dd><p>The first argument: word 1.
 </p>
 </dd>
-<dt><span><code>$</code></span></dt>
-<dd><p>The last argument.
+<dt><code class="code">$</code></dt>
+<dd><p>The last word.
+This is usually the last argument, but expands to the
+zeroth word if there is only one word in the line.
 </p>
 </dd>
-<dt><span><code>%</code></span></dt>
-<dd><p>The first word matched by the most recent &lsquo;<samp>?<var>string</var>?</samp>&rsquo; search,
+<dt><code class="code">%</code></dt>
+<dd><p>The first word matched by the most recent &lsquo;<samp class="samp">?<var class="var">string</var>?</samp>&rsquo; search,
 if the search string begins with a character that is part of a word.
+By default, searches begin at the end of each line and proceed to the
+beginning, so the first word matched is the one closest to the end of
+the line.
 </p>
 </dd>
-<dt><span><code><var>x</var>-<var>y</var></code></span></dt>
-<dd><p>A range of words; &lsquo;<samp>-<var>y</var></samp>&rsquo; abbreviates &lsquo;<samp>0-<var>y</var></samp>&rsquo;.
+<dt><code class="code"><var class="var">x</var>-<var class="var">y</var></code></dt>
+<dd><p>A range of words; &lsquo;<samp class="samp">-<var class="var">y</var></samp>&rsquo; abbreviates &lsquo;<samp class="samp">0-<var class="var">y</var></samp>&rsquo;.
 </p>
 </dd>
-<dt><span><code>*</code></span></dt>
-<dd><p>All of the words, except the <code>0</code>th.  This is a synonym for &lsquo;<samp>1-$</samp>&rsquo;.
-It is not an error to use &lsquo;<samp>*</samp>&rsquo; if there is just one word in the event;
-the empty string is returned in that case.
+<dt><code class="code">*</code></dt>
+<dd><p>All of the words, except the <code class="code">0</code>th.
+This is a synonym for &lsquo;<samp class="samp">1-$</samp>&rsquo;.
+It is not an error to use &lsquo;<samp class="samp">*</samp>&rsquo; if there is just one word in the event;
+it expands to the empty string in that case.
 </p>
 </dd>
-<dt><span><code><var>x</var>*</code></span></dt>
-<dd><p>Abbreviates &lsquo;<samp><var>x</var>-$</samp>&rsquo;
+<dt><code class="code"><var class="var">x</var>*</code></dt>
+<dd><p>Abbreviates &lsquo;<samp class="samp"><var class="var">x</var>-$</samp>&rsquo;.
 </p>
 </dd>
-<dt><span><code><var>x</var>-</code></span></dt>
-<dd><p>Abbreviates &lsquo;<samp><var>x</var>-$</samp>&rsquo; like &lsquo;<samp><var>x</var>*</samp>&rsquo;, but omits the last word.
-If &lsquo;<samp>x</samp>&rsquo; is missing, it defaults to 0.
+<dt><code class="code"><var class="var">x</var>-</code></dt>
+<dd><p>Abbreviates &lsquo;<samp class="samp"><var class="var">x</var>-$</samp>&rsquo; like &lsquo;<samp class="samp"><var class="var">x</var>*</samp>&rsquo;, but omits the last word.
+If &lsquo;<samp class="samp">x</samp>&rsquo; is missing, it defaults to 0.
 </p>
 </dd>
 </dl>
 
 <p>If a word designator is supplied without an event specification, the
-previous command is used as the event.
+previous command is used as the event, equivalent to <code class="code">!!</code>. 
 </p>
 <hr>
 </div>
-<div class="subsection" id="Modifiers">
-<div class="header">
+<div class="subsection-level-extent" id="Modifiers">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Word-Designators" accesskey="p" rel="prev">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Expansion</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Modifiers-1"></span><h4 class="subsection">1.1.3 Modifiers</h4>
+<h4 class="subsection" id="Modifiers-1"><span>1.1.3 Modifiers<a class="copiable-link" href="#Modifiers-1"> &para;</a></span></h4>
 
 <p>After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a &lsquo;<samp>:</samp>&rsquo;.
+of the following modifiers, each preceded by a &lsquo;<samp class="samp">:</samp>&rsquo;.
 These modify, or edit, the word or words selected from the history event.
 </p>
-<dl compact="compact">
-<dt><span><code>h</code></span></dt>
-<dd><p>Remove a trailing pathname component, leaving only the head.
+<dl class="table">
+<dt><code class="code">h</code></dt>
+<dd><p>Remove a trailing filename component, leaving only the head.
 </p>
 </dd>
-<dt><span><code>t</code></span></dt>
-<dd><p>Remove all leading pathname components, leaving the tail.
+<dt><code class="code">t</code></dt>
+<dd><p>Remove all leading filename components, leaving the tail.
 </p>
 </dd>
-<dt><span><code>r</code></span></dt>
-<dd><p>Remove a trailing suffix of the form &lsquo;<samp>.<var>suffix</var></samp>&rsquo;, leaving
+<dt><code class="code">r</code></dt>
+<dd><p>Remove a trailing suffix of the form &lsquo;<samp class="samp">.<var class="var">suffix</var></samp>&rsquo;, leaving
 the basename.
 </p>
 </dd>
-<dt><span><code>e</code></span></dt>
+<dt><code class="code">e</code></dt>
 <dd><p>Remove all but the trailing suffix.
 </p>
 </dd>
-<dt><span><code>p</code></span></dt>
+<dt><code class="code">p</code></dt>
 <dd><p>Print the new command but do not execute it.
 </p>
 
 </dd>
-<dt><span><code>s/<var>old</var>/<var>new</var>/</code></span></dt>
-<dd><p>Substitute <var>new</var> for the first occurrence of <var>old</var> in the
+<dt><code class="code">s/<var class="var">old</var>/<var class="var">new</var>/</code></dt>
+<dd><p>Substitute <var class="var">new</var> for the first occurrence of <var class="var">old</var> in the
 event line.
-Any character may be used as the delimiter in place of &lsquo;<samp>/</samp>&rsquo;.
-The delimiter may be quoted in <var>old</var> and <var>new</var>
-with a single backslash.  If &lsquo;<samp>&amp;</samp>&rsquo; appears in <var>new</var>,
-it is replaced by <var>old</var>.  A single backslash will quote
-the &lsquo;<samp>&amp;</samp>&rsquo;.
-If <var>old</var> is null, it is set to the last <var>old</var>
+Any character may be used as the delimiter in place of &lsquo;<samp class="samp">/</samp>&rsquo;.
+The delimiter may be quoted in <var class="var">old</var> and <var class="var">new</var>
+with a single backslash.
+If &lsquo;<samp class="samp">&amp;</samp>&rsquo; appears in <var class="var">new</var>, it is replaced with <var class="var">old</var>.
+A single backslash quotes the &lsquo;<samp class="samp">&amp;</samp>&rsquo; in <var class="var">old</var> and <var class="var">new</var>.
+If <var class="var">old</var> is null, it is set to the last <var class="var">old</var>
 substituted, or, if no previous history substitutions took place,
-the last <var>string</var>
-in a !?<var>string</var><code>[?]</code>
+the last <var class="var">string</var>
+in a !?<var class="var">string</var><code class="code">[?]</code>
 search.
-If <var>new</var> is null, each matching <var>old</var> is deleted.
+If <var class="var">new</var> is null, each matching <var class="var">old</var> is deleted.
 The final delimiter is optional if it is the last
 character on the input line.
 </p>
 </dd>
-<dt><span><code>&amp;</code></span></dt>
+<dt><code class="code">&amp;</code></dt>
 <dd><p>Repeat the previous substitution.
 </p>
 </dd>
-<dt><span><code>g</code></span></dt>
-<dt><span><code>a</code></span></dt>
-<dd><p>Cause changes to be applied over the entire event line.  Used in
-conjunction with &lsquo;<samp>s</samp>&rsquo;, as in <code>gs/<var>old</var>/<var>new</var>/</code>,
-or with &lsquo;<samp>&amp;</samp>&rsquo;.
+<dt><code class="code">g</code></dt>
+<dt><code class="code">a</code></dt>
+<dd><p>Cause changes to be applied over the entire event line.
+This is used in conjunction with
+&lsquo;<samp class="samp">s</samp>&rsquo;, as in <code class="code">gs/<var class="var">old</var>/<var class="var">new</var>/</code>,
+or with &lsquo;<samp class="samp">&amp;</samp>&rsquo;.
 </p>
 </dd>
-<dt><span><code>G</code></span></dt>
-<dd><p>Apply the following &lsquo;<samp>s</samp>&rsquo; or &lsquo;<samp>&amp;</samp>&rsquo; modifier once to each word
+<dt><code class="code">G</code></dt>
+<dd><p>Apply the following &lsquo;<samp class="samp">s</samp>&rsquo; or &lsquo;<samp class="samp">&amp;</samp>&rsquo; modifier once to each word
 in the event.
 </p>
 </dd>
@@ -404,20 +443,21 @@ in the event.
 </div>
 </div>
 </div>
-<div class="chapter" id="Programming-with-GNU-History">
-<div class="header">
+<div class="chapter-level-extent" id="Programming-with-GNU-History">
+<div class="nav-panel">
 <p>
 Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Using-History-Interactively" accesskey="p" rel="prev">Using History Interactively</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU History Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Programming-with-GNU-History-1"></span><h2 class="chapter">2 Programming with GNU History</h2>
+<h2 class="chapter" id="Programming-with-GNU-History-1"><span>2 Programming with GNU History<a class="copiable-link" href="#Programming-with-GNU-History-1"> &para;</a></span></h2>
 
 <p>This chapter describes how to interface programs that you write
-with the <small>GNU</small> History Library.
+with the <small class="sc">GNU</small> History Library.
 It should be considered a technical guide.
-For information on the interactive use of <small>GNU</small> History, see <a href="#Using-History-Interactively">Using History Interactively</a>.
+For information on the interactive use of <small class="sc">GNU</small> History,
+see <a class="pxref" href="#Using-History-Interactively">Using History Interactively</a>.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Introduction-to-History" accesskey="1">Introduction to History</a></li>
 <li><a href="#History-Storage" accesskey="2">History Storage</a></li>
 <li><a href="#History-Functions" accesskey="3">History Functions</a></li>
@@ -425,31 +465,35 @@ For information on the interactive use of <small>GNU</small> History, see <a hre
 <li><a href="#History-Programming-Example" accesskey="5">History Programming Example</a></li>
 </ul>
 <hr>
-<div class="section" id="Introduction-to-History">
-<div class="header">
+<div class="section-level-extent" id="Introduction-to-History">
+<div class="nav-panel">
 <p>
 Next: <a href="#History-Storage" accesskey="n" rel="next">History Storage</a>, Up: <a href="#Programming-with-GNU-History" accesskey="u" rel="up">Programming with GNU History</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Introduction-to-History-1"></span><h3 class="section">2.1 Introduction to History</h3>
-
-<p>Many programs read input from the user a line at a time.  The <small>GNU</small>
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones. 
-</p>
-<p>A programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-with a line, removing lines from the list, searching through the list
-for a line containing an arbitrary text string, and referencing any line
-in the list directly.  In addition, a history <em>expansion</em> function
+<h3 class="section" id="Introduction-to-History-1"><span>2.1 Introduction to History<a class="copiable-link" href="#Introduction-to-History-1"> &para;</a></span></h3>
+
+<p>Many programs read input from the user a line at a time.
+The <small class="sc">GNU</small> History library is able to keep track of those lines,
+associate arbitrary data with each line, and utilize information from
+previous lines when composing new ones. 
+</p>
+<p>A programmer using the History library can use functions
+to save commands on a history list,
+associate arbitrary data with history list entries,
+remove entries from the list,
+search through the list for a line containing an arbitrary text string,
+reference any entry in the list directly,
+and read and write the history list from and to a file.
+In addition, a history <em class="dfn">expansion</em> function
 is available which provides for a consistent user interface across
 different programs.
 </p>
-<p>The user using programs written with the History library has the
+<p>Someone using programs written with the History library has the
 benefit of a consistent user interface with a set of well-known
 commands for manipulating the text of previous lines and using that text
-in new commands.  The basic history manipulation commands are similar to
-the history substitution provided by <code>csh</code>.
+in new commands.
+The basic history manipulation commands are similar to
+the history substitution provided by <code class="code">csh</code>.
 </p>
 <p>The programmer can also use the Readline library, which
 includes some history manipulation by default, and has the added
@@ -457,25 +501,26 @@ advantage of command line editing.
 </p>
 <p>Before declaring any functions using any functionality the History
 library provides in other code, an application writer should include
-the file <code>&lt;readline/history.h&gt;</code> in any file that uses the
-History library&rsquo;s features.  It supplies extern declarations for all
-of the library&rsquo;s public functions and variables, and declares all of
-the public data structures.
+the file <code class="code">&lt;readline/history.h&gt;</code> in any file that uses the
+History library&rsquo;s features.
+It supplies declarations for all of the library&rsquo;s
+public functions and variables,
+and declares all of the public data structures.
 </p>
 <hr>
 </div>
-<div class="section" id="History-Storage">
-<div class="header">
+<div class="section-level-extent" id="History-Storage">
+<div class="nav-panel">
 <p>
 Next: <a href="#History-Functions" accesskey="n" rel="next">History Functions</a>, Previous: <a href="#Introduction-to-History" accesskey="p" rel="prev">Introduction to History</a>, Up: <a href="#Programming-with-GNU-History" accesskey="u" rel="up">Programming with GNU History</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="History-Storage-1"></span><h3 class="section">2.2 History Storage</h3>
+<h3 class="section" id="History-Storage-1"><span>2.2 History Storage<a class="copiable-link" href="#History-Storage-1"> &para;</a></span></h3>
 
-<p>The history list is an array of history entries.  A history entry is
-declared as follows:
+<p>The history list is an array of history entries.
+A history entry is declared as follows:
 </p>
 <div class="example">
-<pre class="example">typedef void *histdata_t;
+<pre class="example-preformatted">typedef void *histdata_t;
 
 typedef struct _hist_entry {
   char *line;
@@ -487,13 +532,13 @@ typedef struct _hist_entry {
 <p>The history list itself might therefore be declared as
 </p>
 <div class="example">
-<pre class="example">HIST_ENTRY **the_history_list;
+<pre class="example-preformatted">HIST_ENTRY **the_history_list;
 </pre></div>
 
 <p>The state of the History library is encapsulated into a single structure:
 </p>
 <div class="example">
-<pre class="example">/*
+<pre class="example-preformatted">/*
  * A structure used to pass around the current state of the history.
  */
 typedef struct _hist_state {
@@ -505,23 +550,23 @@ typedef struct _hist_state {
 } HISTORY_STATE;
 </pre></div>
 
-<p>If the flags member includes <code>HS_STIFLED</code>, the history has been
-stifled.
+<p>If the flags member includes <code class="code">HS_STIFLED</code>, the history has been
+stifled (limited to a maximum number of entries).
 </p>
 <hr>
 </div>
-<div class="section" id="History-Functions">
-<div class="header">
+<div class="section-level-extent" id="History-Functions">
+<div class="nav-panel">
 <p>
 Next: <a href="#History-Variables" accesskey="n" rel="next">History Variables</a>, Previous: <a href="#History-Storage" accesskey="p" rel="prev">History Storage</a>, Up: <a href="#Programming-with-GNU-History" accesskey="u" rel="up">Programming with GNU History</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="History-Functions-1"></span><h3 class="section">2.3 History Functions</h3>
+<h3 class="section" id="History-Functions-1"><span>2.3 History Functions<a class="copiable-link" href="#History-Functions-1"> &para;</a></span></h3>
 
 <p>This section describes the calling sequence for the various functions
-exported by the <small>GNU</small> History library.
+exported by the <small class="sc">GNU</small> History library.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Initializing-History-and-State-Management" accesskey="1">Initializing History and State Management</a></li>
 <li><a href="#History-List-Management" accesskey="2">History List Management</a></li>
 <li><a href="#Information-About-the-History-List" accesskey="3">Information About the History List</a></li>
@@ -531,155 +576,159 @@ exported by the <small>GNU</small> History library.
 <li><a href="#History-Expansion" accesskey="7">History Expansion</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Initializing-History-and-State-Management">
-<div class="header">
+<div class="subsection-level-extent" id="Initializing-History-and-State-Management">
+<div class="nav-panel">
 <p>
 Next: <a href="#History-List-Management" accesskey="n" rel="next">History List Management</a>, Up: <a href="#History-Functions" accesskey="u" rel="up">History Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Initializing-History-and-State-Management-1"></span><h4 class="subsection">2.3.1 Initializing History and State Management</h4>
+<h4 class="subsection" id="Initializing-History-and-State-Management-1"><span>2.3.1 Initializing History and State Management<a class="copiable-link" href="#Initializing-History-and-State-Management-1"> &para;</a></span></h4>
 
 <p>This section describes functions used to initialize and manage
 the state of the History library when you want to use the history
 functions in your program.
 </p>
-<dl class="def">
-<dt id="index-using_005fhistory"><span class="category">Function: </span><span><em>void</em> <strong>using_history</strong> <em>(void)</em><a href='#index-using_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Begin a session in which the history functions might be used.  This
-initializes the interactive variables.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-using_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">using_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-using_005fhistory"> &para;</a></span></dt>
+<dd><p>Begin a session that will use the history functions.
+This initializes the interactive variables.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fget_005fhistory_005fstate"><span class="category">Function: </span><span><em>HISTORY_STATE *</em> <strong>history_get_history_state</strong> <em>(void)</em><a href='#index-history_005fget_005fhistory_005fstate' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fget_005fhistory_005fstate"><span class="category-def">Function: </span><span><code class="def-type">HISTORY_STATE *</code> <strong class="def-name">history_get_history_state</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-history_005fget_005fhistory_005fstate"> &para;</a></span></dt>
 <dd><p>Return a structure describing the current state of the input history.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fset_005fhistory_005fstate"><span class="category">Function: </span><span><em>void</em> <strong>history_set_history_state</strong> <em>(HISTORY_STATE *state)</em><a href='#index-history_005fset_005fhistory_005fstate' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set the state of the history list according to <var>state</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fset_005fhistory_005fstate"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">history_set_history_state</strong> <code class="def-code-arguments">(HISTORY_STATE *state)</code><a class="copiable-link" href="#index-history_005fset_005fhistory_005fstate"> &para;</a></span></dt>
+<dd><p>Set the state of the history list according to <var class="var">state</var>.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="History-List-Management">
-<div class="header">
+<div class="subsection-level-extent" id="History-List-Management">
+<div class="nav-panel">
 <p>
 Next: <a href="#Information-About-the-History-List" accesskey="n" rel="next">Information About the History List</a>, Previous: <a href="#Initializing-History-and-State-Management" accesskey="p" rel="prev">Initializing History and State Management</a>, Up: <a href="#History-Functions" accesskey="u" rel="up">History Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="History-List-Management-1"></span><h4 class="subsection">2.3.2 History List Management</h4>
+<h4 class="subsection" id="History-List-Management-1"><span>2.3.2 History List Management<a class="copiable-link" href="#History-List-Management-1"> &para;</a></span></h4>
 
 <p>These functions manage individual entries on the history list, or set
 parameters managing the list itself.
 </p>
-<dl class="def">
-<dt id="index-add_005fhistory"><span class="category">Function: </span><span><em>void</em> <strong>add_history</strong> <em>(const char *string)</em><a href='#index-add_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Place <var>string</var> at the end of the history list.  The associated data
-field (if any) is set to <code>NULL</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-add_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">add_history</strong> <code class="def-code-arguments">(const char *string)</code><a class="copiable-link" href="#index-add_005fhistory"> &para;</a></span></dt>
+<dd><p>Add <var class="var">string</var> to the end of the history list, and
+set the associated data field (if any) to <code class="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.
+<code class="code">stifle_history()</code>, and the new number of history entries
+would exceed that maximum, this removes the oldest history entry.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-add_005fhistory_005ftime"><span class="category">Function: </span><span><em>void</em> <strong>add_history_time</strong> <em>(const char *string)</em><a href='#index-add_005fhistory_005ftime' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-add_005fhistory_005ftime"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">add_history_time</strong> <code class="def-code-arguments">(const char *string)</code><a class="copiable-link" href="#index-add_005fhistory_005ftime"> &para;</a></span></dt>
 <dd><p>Change the time stamp associated with the most recent history entry to
-<var>string</var>.
+<var class="var">string</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-remove_005fhistory"><span class="category">Function: </span><span><em>HIST_ENTRY *</em> <strong>remove_history</strong> <em>(int which)</em><a href='#index-remove_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Remove history entry at offset <var>which</var> from the history.  The
-removed element is returned so you can free the line, data,
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-remove_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">HIST_ENTRY *</code> <strong class="def-name">remove_history</strong> <code class="def-code-arguments">(int which)</code><a class="copiable-link" href="#index-remove_005fhistory"> &para;</a></span></dt>
+<dd><p>Remove the history entry at offset <var class="var">which</var> from the history list.
+This returns the removed element so you can free the line, data,
 and containing structure.
+Since the data is private to your application, the History library
+doesn&rsquo;t know how to free it, if necessary.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-free_005fhistory_005fentry"><span class="category">Function: </span><span><em>histdata_t</em> <strong>free_history_entry</strong> <em>(HIST_ENTRY *histent)</em><a href='#index-free_005fhistory_005fentry' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Free the history entry <var>histent</var> and any history library private
-data associated with it.  Returns the application-specific data
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-free_005fhistory_005fentry"><span class="category-def">Function: </span><span><code class="def-type">histdata_t</code> <strong class="def-name">free_history_entry</strong> <code class="def-code-arguments">(HIST_ENTRY *histent)</code><a class="copiable-link" href="#index-free_005fhistory_005fentry"> &para;</a></span></dt>
+<dd><p>Free the history entry <var class="var">histent</var> and any history library private
+data associated with it.
+Returns the application-specific data
 so the caller can dispose of it.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-replace_005fhistory_005fentry"><span class="category">Function: </span><span><em>HIST_ENTRY *</em> <strong>replace_history_entry</strong> <em>(int which, const char *line, histdata_t data)</em><a href='#index-replace_005fhistory_005fentry' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Make the history entry at offset <var>which</var> have <var>line</var> and <var>data</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-replace_005fhistory_005fentry"><span class="category-def">Function: </span><span><code class="def-type">HIST_ENTRY *</code> <strong class="def-name">replace_history_entry</strong> <code class="def-code-arguments">(int which, const char *line, histdata_t data)</code><a class="copiable-link" href="#index-replace_005fhistory_005fentry"> &para;</a></span></dt>
+<dd><p>Make the history entry at offset <var class="var">which</var> have <var class="var">line</var> and <var class="var">data</var>.
 This returns the old entry so the caller can dispose of any
-application-specific data.  In the case
-of an invalid <var>which</var>, a <code>NULL</code> pointer is returned.
+application-specific data.
+In the case of an invalid <var class="var">which</var>, this returns <code class="code">NULL</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-clear_005fhistory"><span class="category">Function: </span><span><em>void</em> <strong>clear_history</strong> <em>(void)</em><a href='#index-clear_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-clear_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">clear_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-clear_005fhistory"> &para;</a></span></dt>
 <dd><p>Clear the history list by deleting all the entries.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-stifle_005fhistory"><span class="category">Function: </span><span><em>void</em> <strong>stifle_history</strong> <em>(int max)</em><a href='#index-stifle_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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 class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-stifle_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">stifle_history</strong> <code class="def-code-arguments">(int max)</code><a class="copiable-link" href="#index-stifle_005fhistory"> &para;</a></span></dt>
+<dd><p>Stifle the history list, remembering only the last <var class="var">max</var> entries.
+The history list will contain only <var class="var">max</var> entries at a time.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-unstifle_005fhistory"><span class="category">Function: </span><span><em>int</em> <strong>unstifle_history</strong> <em>(void)</em><a href='#index-unstifle_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Stop stifling the history.  This returns the previously-set
-maximum number of history entries (as set by <code>stifle_history()</code>).
-The value is positive if the history was
-stifled, negative if it wasn&rsquo;t.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-unstifle_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">unstifle_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-unstifle_005fhistory"> &para;</a></span></dt>
+<dd><p>Stop stifling the history.
+This returns the previously-set maximum number of history
+entries (as set by <code class="code">stifle_history()</code>).
+The value is positive if the history was stifled, negative if it wasn&rsquo;t.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fis_005fstifled"><span class="category">Function: </span><span><em>int</em> <strong>history_is_stifled</strong> <em>(void)</em><a href='#index-history_005fis_005fstifled' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fis_005fstifled"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_is_stifled</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-history_005fis_005fstifled"> &para;</a></span></dt>
 <dd><p>Returns non-zero if the history is stifled, zero if it is not.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Information-About-the-History-List">
-<div class="header">
+<div class="subsection-level-extent" id="Information-About-the-History-List">
+<div class="nav-panel">
 <p>
 Next: <a href="#Moving-Around-the-History-List" accesskey="n" rel="next">Moving Around the History List</a>, Previous: <a href="#History-List-Management" accesskey="p" rel="prev">History List Management</a>, Up: <a href="#History-Functions" accesskey="u" rel="up">History Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Information-About-the-History-List-1"></span><h4 class="subsection">2.3.3 Information About the History List</h4>
+<h4 class="subsection" id="Information-About-the-History-List-1"><span>2.3.3 Information About the History List<a class="copiable-link" href="#Information-About-the-History-List-1"> &para;</a></span></h4>
 
 <p>These functions return information about the entire history list or
 individual list entries.
 </p>
-<dl class="def">
-<dt id="index-history_005flist"><span class="category">Function: </span><span><em>HIST_ENTRY **</em> <strong>history_list</strong> <em>(void)</em><a href='#index-history_005flist' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return a <code>NULL</code> terminated array of <code>HIST_ENTRY *</code> which is the
-current input history.  Element 0 of this list is the beginning of time.
-If there is no history, return <code>NULL</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005flist"><span class="category-def">Function: </span><span><code class="def-type">HIST_ENTRY **</code> <strong class="def-name">history_list</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-history_005flist"> &para;</a></span></dt>
+<dd><p>Return a <code class="code">NULL</code> terminated array of <code class="code">HIST_ENTRY *</code> which is the
+current input history.
+Element 0 of this list is the beginning of time.
+Return <code class="code">NULL</code> if there is no history.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-where_005fhistory"><span class="category">Function: </span><span><em>int</em> <strong>where_history</strong> <em>(void)</em><a href='#index-where_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Returns the offset of the current history element.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-where_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">where_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-where_005fhistory"> &para;</a></span></dt>
+<dd><p>Return the offset of the current history entry.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-current_005fhistory"><span class="category">Function: </span><span><em>HIST_ENTRY *</em> <strong>current_history</strong> <em>(void)</em><a href='#index-current_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-current_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">HIST_ENTRY *</code> <strong class="def-name">current_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-current_005fhistory"> &para;</a></span></dt>
 <dd><p>Return the history entry at the current position, as determined by
-<code>where_history()</code>.  If there is no entry there, return a <code>NULL</code>
-pointer.
+<code class="code">where_history()</code>.
+If there is no entry there, return <code class="code">NULL</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fget"><span class="category">Function: </span><span><em>HIST_ENTRY *</em> <strong>history_get</strong> <em>(int offset)</em><a href='#index-history_005fget' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return the history entry at position <var>offset</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fget"><span class="category-def">Function: </span><span><code class="def-type">HIST_ENTRY *</code> <strong class="def-name">history_get</strong> <code class="def-code-arguments">(int offset)</code><a class="copiable-link" href="#index-history_005fget"> &para;</a></span></dt>
+<dd><p>Return the history entry at position <var class="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 <a href="#History-Variables">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.
+values of <var class="var">offset</var> starts at <code class="code">history_base</code> and ends at
+<var class="var">history_length</var> - 1 (see <a class="pxref" href="#History-Variables">History Variables</a>).
+If there is no entry there, or if <var class="var">offset</var> is outside the valid
+range, return <code class="code">NULL</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fget_005ftime"><span class="category">Function: </span><span><em>time_t</em> <strong>history_get_time</strong> <em>(HIST_ENTRY *entry)</em><a href='#index-history_005fget_005ftime' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return the time stamp associated with the history entry <var>entry</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fget_005ftime"><span class="category-def">Function: </span><span><code class="def-type">time_t</code> <strong class="def-name">history_get_time</strong> <code class="def-code-arguments">(HIST_ENTRY *entry)</code><a class="copiable-link" href="#index-history_005fget_005ftime"> &para;</a></span></dt>
+<dd><p>Return the time stamp associated with the history entry <var class="var">entry</var>.
 If the timestamp is missing or invalid, return 0.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005ftotal_005fbytes"><span class="category">Function: </span><span><em>int</em> <strong>history_total_bytes</strong> <em>(void)</em><a href='#index-history_005ftotal_005fbytes' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005ftotal_005fbytes"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_total_bytes</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-history_005ftotal_005fbytes"> &para;</a></span></dt>
 <dd><p>Return the number of bytes that the primary history entries are using.
 This function returns the sum of the lengths of all the lines in the
 history.
@@ -687,284 +736,311 @@ history.
 
 <hr>
 </div>
-<div class="subsection" id="Moving-Around-the-History-List">
-<div class="header">
+<div class="subsection-level-extent" id="Moving-Around-the-History-List">
+<div class="nav-panel">
 <p>
 Next: <a href="#Searching-the-History-List" accesskey="n" rel="next">Searching the History List</a>, Previous: <a href="#Information-About-the-History-List" accesskey="p" rel="prev">Information About the History List</a>, Up: <a href="#History-Functions" accesskey="u" rel="up">History Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Moving-Around-the-History-List-1"></span><h4 class="subsection">2.3.4 Moving Around the History List</h4>
+<h4 class="subsection" id="Moving-Around-the-History-List-1"><span>2.3.4 Moving Around the History List<a class="copiable-link" href="#Moving-Around-the-History-List-1"> &para;</a></span></h4>
 
 <p>These functions allow the current index into the history list to be
 set or changed.
 </p>
-<dl class="def">
-<dt id="index-history_005fset_005fpos"><span class="category">Function: </span><span><em>int</em> <strong>history_set_pos</strong> <em>(int pos)</em><a href='#index-history_005fset_005fpos' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set the current history offset to <var>pos</var>, an absolute index
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fset_005fpos"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_set_pos</strong> <code class="def-code-arguments">(int pos)</code><a class="copiable-link" href="#index-history_005fset_005fpos"> &para;</a></span></dt>
+<dd><p>Set the current history offset to <var class="var">pos</var>, an absolute index
 into the list.
-Returns 1 on success, 0 if <var>pos</var> is less than zero or greater
+Returns 1 on success, 0 if <var class="var">pos</var> is less than zero or greater
 than the number of history entries.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-previous_005fhistory"><span class="category">Function: </span><span><em>HIST_ENTRY *</em> <strong>previous_history</strong> <em>(void)</em><a href='#index-previous_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-previous_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">HIST_ENTRY *</code> <strong class="def-name">previous_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-previous_005fhistory"> &para;</a></span></dt>
 <dd><p>Back up the current history offset to the previous history entry, and
-return a pointer to that entry.  If there is no previous entry, return
-a <code>NULL</code> pointer.
+return a pointer to that entry.
+If there is no previous entry, return <code class="code">NULL</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-next_005fhistory"><span class="category">Function: </span><span><em>HIST_ENTRY *</em> <strong>next_history</strong> <em>(void)</em><a href='#index-next_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-next_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">HIST_ENTRY *</code> <strong class="def-name">next_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-next_005fhistory"> &para;</a></span></dt>
 <dd><p>If the current history offset refers to a valid history entry,
 increment the current history offset.
 If the possibly-incremented history offset refers to a valid history
 entry, return a pointer to that entry;
-otherwise, return a <code>BNULL</code> pointer.
+otherwise, return <code class="code">NULL</code>.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Searching-the-History-List">
-<div class="header">
+<div class="subsection-level-extent" id="Searching-the-History-List">
+<div class="nav-panel">
 <p>
 Next: <a href="#Managing-the-History-File" accesskey="n" rel="next">Managing the History File</a>, Previous: <a href="#Moving-Around-the-History-List" accesskey="p" rel="prev">Moving Around the History List</a>, Up: <a href="#History-Functions" accesskey="u" rel="up">History Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Searching-the-History-List-1"></span><h4 class="subsection">2.3.5 Searching the History List</h4>
-<span id="index-History-Searching"></span>
-
-<p>These functions allow searching of the history list for entries containing
-a specific string.  Searching may be performed both forward and backward
-from the current history position.  The search may be <em>anchored</em>,
-meaning that the string must match at the beginning of the history entry.
-<span id="index-anchored-search"></span>
-</p>
-<dl class="def">
-<dt id="index-history_005fsearch"><span class="category">Function: </span><span><em>int</em> <strong>history_search</strong> <em>(const char *string, int direction)</em><a href='#index-history_005fsearch' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search the history for <var>string</var>, starting at the current history offset.
-If <var>direction</var> is less than 0, then the search is through
+<h4 class="subsection" id="Searching-the-History-List-1"><span>2.3.5 Searching the History List<a class="copiable-link" href="#Searching-the-History-List-1"> &para;</a></span></h4>
+<a class="index-entry-id" id="index-History-Searching"></a>
+
+<p>These functions search the history list for entries containing
+a specific string.
+Searching may be performed both forward and backward
+from the current history position.
+The search may be <em class="dfn">anchored</em>,
+meaning that the string must match at the beginning of a history entry.
+<a class="index-entry-id" id="index-anchored-search"></a>
+</p>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fsearch"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_search</strong> <code class="def-code-arguments">(const char *string, int direction)</code><a class="copiable-link" href="#index-history_005fsearch"> &para;</a></span></dt>
+<dd><p>Search the history for <var class="var">string</var>, starting at the current history offset.
+If <var class="var">direction</var> is less than 0, then the search is through
 previous entries, otherwise through subsequent entries.
-If <var>string</var> is found, then
-the current history index is set to that history entry, and the value
-returned is the offset in the line of the entry where
-<var>string</var> was found.  Otherwise, nothing is changed, and a -1 is
-returned.
+If <var class="var">string</var> is found, then the current history index is set to
+that history entry, and <code class="code">history_search</code>
+returns the offset in the line of the entry where
+<var class="var">string</var> was found.
+Otherwise, nothing is changed, and this returns -1.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fsearch_005fprefix"><span class="category">Function: </span><span><em>int</em> <strong>history_search_prefix</strong> <em>(const char *string, int direction)</em><a href='#index-history_005fsearch_005fprefix' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search the history for <var>string</var>, starting at the current history
-offset.  The search is anchored: matching lines must begin with
-<var>string</var>.  If <var>direction</var> is less than 0, then the search is
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fsearch_005fprefix"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_search_prefix</strong> <code class="def-code-arguments">(const char *string, int direction)</code><a class="copiable-link" href="#index-history_005fsearch_005fprefix"> &para;</a></span></dt>
+<dd><p>Search the history for <var class="var">string</var>, starting at the current history
+offset.
+The search is anchored: matching history entries must begin with <var class="var">string</var>.
+If <var class="var">direction</var> is less than 0, then the search is
 through previous entries, otherwise through subsequent entries.
-If <var>string</var> is found, then the
-current history index is set to that entry, and the return value is 0. 
-Otherwise, nothing is changed, and a -1 is returned
+If <var class="var">string</var> is found, then the current history index is set to
+that entry, and the return value is 0. 
+Otherwise, nothing is changed, and this returns -1
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fsearch_005fpos"><span class="category">Function: </span><span><em>int</em> <strong>history_search_pos</strong> <em>(const char *string, int direction, int pos)</em><a href='#index-history_005fsearch_005fpos' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search for <var>string</var> in the history list, starting at <var>pos</var>, an
-absolute index into the list.  If <var>direction</var> is negative, the search
-proceeds backward from <var>pos</var>, otherwise forward.  Returns the absolute
-index of the history element where <var>string</var> was found, or -1 otherwise.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fsearch_005fpos"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_search_pos</strong> <code class="def-code-arguments">(const char *string, int direction, int pos)</code><a class="copiable-link" href="#index-history_005fsearch_005fpos"> &para;</a></span></dt>
+<dd><p>Search for <var class="var">string</var> in the history list, starting at <var class="var">pos</var>, an
+absolute index into the list.
+If <var class="var">direction</var> is negative, the search
+proceeds backward from <var class="var">pos</var>, otherwise forward.
+Returns the index in the history list
+of the history element where <var class="var">string</var> was
+found, or -1 otherwise.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Managing-the-History-File">
-<div class="header">
+<div class="subsection-level-extent" id="Managing-the-History-File">
+<div class="nav-panel">
 <p>
 Next: <a href="#History-Expansion" accesskey="n" rel="next">History Expansion</a>, Previous: <a href="#Searching-the-History-List" accesskey="p" rel="prev">Searching the History List</a>, Up: <a href="#History-Functions" accesskey="u" rel="up">History Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Managing-the-History-File-1"></span><h4 class="subsection">2.3.6 Managing the History File</h4>
+<h4 class="subsection" id="Managing-the-History-File-1"><span>2.3.6 Managing the History File<a class="copiable-link" href="#Managing-the-History-File-1"> &para;</a></span></h4>
 
 <p>The History library can read the history from and write it to a file.
 This section documents the functions for managing a history file.
 </p>
-<dl class="def">
-<dt id="index-read_005fhistory"><span class="category">Function: </span><span><em>int</em> <strong>read_history</strong> <em>(const char *filename)</em><a href='#index-read_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Add the contents of <var>filename</var> to the history list, a line at a time.
-If <var>filename</var> is <code>NULL</code>, then read from <samp>~/.history</samp>.
-Returns 0 if successful, or <code>errno</code> if not.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-read_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">read_history</strong> <code class="def-code-arguments">(const char *filename)</code><a class="copiable-link" href="#index-read_005fhistory"> &para;</a></span></dt>
+<dd><p>Add the contents of <var class="var">filename</var> to the history list, one entry
+at a time.
+If <var class="var">filename</var> is <code class="code">NULL</code>, this reads from <samp class="file">~/.history</samp>,
+if it exists.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
+Returns 0 if successful, or <code class="code">errno</code> if not.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-read_005fhistory_005frange"><span class="category">Function: </span><span><em>int</em> <strong>read_history_range</strong> <em>(const char *filename, int from, int to)</em><a href='#index-read_005fhistory_005frange' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Read a range of lines from <var>filename</var>, adding them to the history list.
-Start reading at line <var>from</var> and end at <var>to</var>.
-If <var>from</var> is zero, start at the beginning.  If <var>to</var> is less than
-<var>from</var>, then read until the end of the file.  If <var>filename</var> is
-<code>NULL</code>, then read from <samp>~/.history</samp>.  Returns 0 if successful,
-or <code>errno</code> if not.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-read_005fhistory_005frange"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">read_history_range</strong> <code class="def-code-arguments">(const char *filename, int from, int to)</code><a class="copiable-link" href="#index-read_005fhistory_005frange"> &para;</a></span></dt>
+<dd><p>Read a range of lines from <var class="var">filename</var>, adding them to the history list.
+Start reading at line <var class="var">from</var> and end at <var class="var">to</var>.
+If <var class="var">from</var> is zero, start at the beginning.
+If <var class="var">to</var> is less than <var class="var">from</var>, this reads until the end of the file.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
+If <var class="var">filename</var> is <code class="code">NULL</code>, this reads from <samp class="file">~/.history</samp>,
+if it exists.
+Returns 0 if successful, or <code class="code">errno</code> if not.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-write_005fhistory"><span class="category">Function: </span><span><em>int</em> <strong>write_history</strong> <em>(const char *filename)</em><a href='#index-write_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Write the current history to <var>filename</var>, overwriting <var>filename</var>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-write_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">write_history</strong> <code class="def-code-arguments">(const char *filename)</code><a class="copiable-link" href="#index-write_005fhistory"> &para;</a></span></dt>
+<dd><p>Write the current history to <var class="var">filename</var>, overwriting <var class="var">filename</var>
 if necessary.
-If <var>filename</var> is <code>NULL</code>, then write the history list to
-<samp>~/.history</samp>.
-Returns 0 on success, or <code>errno</code> on a read or write error.
+This writes timestamp information if the
+<code class="code">history_write_timestamps</code> variable is set to a non-zero value.
+If <var class="var">filename</var> is <code class="code">NULL</code>, then write the history list to
+<samp class="file">~/.history</samp>.
+Returns 0 on success, or <code class="code">errno</code> on a read or write error.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-append_005fhistory"><span class="category">Function: </span><span><em>int</em> <strong>append_history</strong> <em>(int nelements, const char *filename)</em><a href='#index-append_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Append the last <var>nelements</var> of the history list to <var>filename</var>.
-If <var>filename</var> is <code>NULL</code>, then append to <samp>~/.history</samp>.
-Returns 0 on success, or <code>errno</code> on a read or write error.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-append_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">append_history</strong> <code class="def-code-arguments">(int nelements, const char *filename)</code><a class="copiable-link" href="#index-append_005fhistory"> &para;</a></span></dt>
+<dd><p>Append the last <var class="var">nelements</var> of the history list to <var class="var">filename</var>.
+This writes timestamp information if the
+<code class="code">history_write_timestamps</code> variable is set to a non-zero value.
+If <var class="var">filename</var> is <code class="code">NULL</code>, then append to <samp class="file">~/.history</samp>.
+Returns 0 on success, or <code class="code">errno</code> on a read or write error.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005ftruncate_005ffile"><span class="category">Function: </span><span><em>int</em> <strong>history_truncate_file</strong> <em>(const char *filename, int nlines)</em><a href='#index-history_005ftruncate_005ffile' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Truncate the history file <var>filename</var>, leaving only the last
-<var>nlines</var> lines.
-If <var>filename</var> is <code>NULL</code>, then <samp>~/.history</samp> is truncated.
-Returns 0 on success, or <code>errno</code> on failure.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005ftruncate_005ffile"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_truncate_file</strong> <code class="def-code-arguments">(const char *filename, int nlines)</code><a class="copiable-link" href="#index-history_005ftruncate_005ffile"> &para;</a></span></dt>
+<dd><p>Truncate the history file <var class="var">filename</var>, leaving only the last
+<var class="var">nlines</var> lines.
+If <var class="var">filename</var> is <code class="code">NULL</code>, this truncates <samp class="file">~/.history</samp>.
+Returns 0 on success, or <code class="code">errno</code> on failure.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="History-Expansion">
-<div class="header">
+<div class="subsection-level-extent" id="History-Expansion">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Managing-the-History-File" accesskey="p" rel="prev">Managing the History File</a>, Up: <a href="#History-Functions" accesskey="u" rel="up">History Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="History-Expansion-2"></span><h4 class="subsection">2.3.7 History Expansion</h4>
+<h4 class="subsection" id="History-Expansion-2"><span>2.3.7 History Expansion<a class="copiable-link" href="#History-Expansion-2"> &para;</a></span></h4>
 
 <p>These functions implement history expansion.
 </p>
-<dl class="def">
-<dt id="index-history_005fexpand"><span class="category">Function: </span><span><em>int</em> <strong>history_expand</strong> <em>(char *string, char **output)</em><a href='#index-history_005fexpand' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Expand <var>string</var>, placing the result into <var>output</var>, a pointer
-to a string (see <a href="#History-Interaction">History Expansion</a>).  Returns:
-</p><dl compact="compact">
-<dt><span><code>0</code></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005fexpand"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">history_expand</strong> <code class="def-code-arguments">(const char *string, char **output)</code><a class="copiable-link" href="#index-history_005fexpand"> &para;</a></span></dt>
+<dd><p>Expand <var class="var">string</var>, placing the result into <var class="var">output</var>, a pointer
+to a string (see <a class="pxref" href="#History-Interaction">History Expansion</a>).
+Returns:
+</p><dl class="table">
+<dt><code class="code">0</code></dt>
 <dd><p>If no expansions took place (or, if the only change in
 the text was the removal of escape characters preceding the history expansion
 character);
 </p></dd>
-<dt><span><code>1</code></span></dt>
+<dt><code class="code">1</code></dt>
 <dd><p>if expansions did take place;
 </p></dd>
-<dt><span><code>-1</code></span></dt>
+<dt><code class="code">-1</code></dt>
 <dd><p>if there was an error in expansion;
 </p></dd>
-<dt><span><code>2</code></span></dt>
+<dt><code class="code">2</code></dt>
 <dd><p>if the returned line should be displayed, but not executed,
-as with the <code>:p</code> modifier (see <a href="#Modifiers">Modifiers</a>).
+as with the <code class="code">:p</code> modifier (see <a class="pxref" href="#Modifiers">Modifiers</a>).
 </p></dd>
 </dl>
 
-<p>If an error occurred in expansion, then <var>output</var> contains a descriptive
-error message.
+<p>If an error occurred during expansion,
+then <var class="var">output</var> contains a descriptive error message.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-get_005fhistory_005fevent"><span class="category">Function: </span><span><em>char *</em> <strong>get_history_event</strong> <em>(const char *string, int *cindex, int qchar)</em><a href='#index-get_005fhistory_005fevent' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Returns the text of the history event beginning at <var>string</var> +
-<var>*cindex</var>.  <var>*cindex</var> is modified to point to after the event
-specifier.  At function entry, <var>cindex</var> points to the index into
-<var>string</var> where the history event specification begins.  <var>qchar</var>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-get_005fhistory_005fevent"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">get_history_event</strong> <code class="def-code-arguments">(const char *string, int *cindex, int qchar)</code><a class="copiable-link" href="#index-get_005fhistory_005fevent"> &para;</a></span></dt>
+<dd><p>Returns the text of the history event beginning at <var class="var">string</var> +
+<var class="var">*cindex</var>.
+Modifies <var class="var">*cindex</var> to point to after the event specifier.
+At function entry, <var class="var">cindex</var> points to the index into <var class="var">string</var>
+where the history event specification begins.
+<var class="var">qchar</var>
 is a character that is allowed to end the event specification in addition
 to the &ldquo;normal&rdquo; terminating characters.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005ftokenize"><span class="category">Function: </span><span><em>char **</em> <strong>history_tokenize</strong> <em>(const char *string)</em><a href='#index-history_005ftokenize' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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,
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005ftokenize"><span class="category-def">Function: </span><span><code class="def-type">char **</code> <strong class="def-name">history_tokenize</strong> <code class="def-code-arguments">(const char *string)</code><a class="copiable-link" href="#index-history_005ftokenize"> &para;</a></span></dt>
+<dd><p>Return an array of tokens parsed out of <var class="var">string</var>, much as the
+shell might.
+The tokens are split on the characters in the
+<var class="var">history_word_delimiters</var> variable,
 and shell quoting conventions are obeyed as described below.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005farg_005fextract"><span class="category">Function: </span><span><em>char *</em> <strong>history_arg_extract</strong> <em>(int first, int last, const char *string)</em><a href='#index-history_005farg_005fextract' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Extract a string segment consisting of the <var>first</var> through <var>last</var>
-arguments present in <var>string</var>.  Arguments are split using
-<code>history_tokenize</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-history_005farg_005fextract"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">history_arg_extract</strong> <code class="def-code-arguments">(int first, int last, const char *string)</code><a class="copiable-link" href="#index-history_005farg_005fextract"> &para;</a></span></dt>
+<dd><p>Extract a string segment consisting of the <var class="var">first</var> through <var class="var">last</var>
+arguments present in <var class="var">string</var>.
+This splits <var class="var">string</var> into arguments using <code class="code">history_tokenize</code>.
 </p></dd></dl>
 
 <hr>
 </div>
 </div>
-<div class="section" id="History-Variables">
-<div class="header">
+<div class="section-level-extent" id="History-Variables">
+<div class="nav-panel">
 <p>
 Next: <a href="#History-Programming-Example" accesskey="n" rel="next">History Programming Example</a>, Previous: <a href="#History-Functions" accesskey="p" rel="prev">History Functions</a>, Up: <a href="#Programming-with-GNU-History" accesskey="u" rel="up">Programming with GNU History</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="History-Variables-1"></span><h3 class="section">2.4 History Variables</h3>
+<h3 class="section" id="History-Variables-1"><span>2.4 History Variables<a class="copiable-link" href="#History-Variables-1"> &para;</a></span></h3>
 
 <p>This section describes the externally-visible variables exported by
-the <small>GNU</small> History Library.
+the <small class="sc">GNU</small> History Library.
 </p>
-<dl class="def">
-<dt id="index-history_005fbase"><span class="category">Variable: </span><span><em>int</em> <strong>history_base</strong><a href='#index-history_005fbase' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fbase"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">history_base</strong><a class="copiable-link" href="#index-history_005fbase"> &para;</a></span></dt>
 <dd><p>The logical offset of the first entry in the history list.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005flength"><span class="category">Variable: </span><span><em>int</em> <strong>history_length</strong><a href='#index-history_005flength' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005flength"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">history_length</strong><a class="copiable-link" href="#index-history_005flength"> &para;</a></span></dt>
 <dd><p>The number of entries currently stored in the history list.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fmax_005fentries"><span class="category">Variable: </span><span><em>int</em> <strong>history_max_entries</strong><a href='#index-history_005fmax_005fentries' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The maximum number of history entries.  This must be changed using
-<code>stifle_history()</code>.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fmax_005fentries"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">history_max_entries</strong><a class="copiable-link" href="#index-history_005fmax_005fentries"> &para;</a></span></dt>
+<dd><p>The maximum number of history entries.
+This must be changed using <code class="code">stifle_history()</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fwrite_005ftimestamps"><span class="category">Variable: </span><span><em>int</em> <strong>history_write_timestamps</strong><a href='#index-history_005fwrite_005ftimestamps' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fwrite_005ftimestamps"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">history_write_timestamps</strong><a class="copiable-link" href="#index-history_005fwrite_005ftimestamps"> &para;</a></span></dt>
 <dd><p>If non-zero, timestamps are written to the history file, so they can be
-preserved between sessions.  The default value is 0, meaning that
-timestamps are not saved.
+preserved between sessions.
+The default value is 0, meaning that timestamps are not saved.
 </p>
-<p>The current timestamp format uses the value of <var>history_comment_char</var>
-to delimit timestamp entries in the history file.  If that variable does
-not have a value (the default), timestamps will not be written.
+<p>The current timestamp format uses the value of <var class="var">history_comment_char</var>
+to delimit timestamp entries in the history file.
+If that variable does not have a value (the default),
+the history library will not write timestamps.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fexpansion_005fchar"><span class="category">Variable: </span><span><em>char</em> <strong>history_expansion_char</strong><a href='#index-history_005fexpansion_005fchar' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The character that introduces a history event.  The default is &lsquo;<samp>!</samp>&rsquo;.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fexpansion_005fchar"><span class="category-def">Variable: </span><span><code class="def-type">char</code> <strong class="def-name">history_expansion_char</strong><a class="copiable-link" href="#index-history_005fexpansion_005fchar"> &para;</a></span></dt>
+<dd><p>The character that introduces a history event.
+The default is &lsquo;<samp class="samp">!</samp>&rsquo;.
 Setting this to 0 inhibits history expansion.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fsubst_005fchar"><span class="category">Variable: </span><span><em>char</em> <strong>history_subst_char</strong><a href='#index-history_005fsubst_005fchar' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fsubst_005fchar"><span class="category-def">Variable: </span><span><code class="def-type">char</code> <strong class="def-name">history_subst_char</strong><a class="copiable-link" href="#index-history_005fsubst_005fchar"> &para;</a></span></dt>
 <dd><p>The character that invokes word substitution if found at the start of
-a line.  The default is &lsquo;<samp>^</samp>&rsquo;.
+a line.
+The default is &lsquo;<samp class="samp">^</samp>&rsquo;.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fcomment_005fchar"><span class="category">Variable: </span><span><em>char</em> <strong>history_comment_char</strong><a href='#index-history_005fcomment_005fchar' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>During tokenization, if this character is seen as the first character
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fcomment_005fchar"><span class="category-def">Variable: </span><span><code class="def-type">char</code> <strong class="def-name">history_comment_char</strong><a class="copiable-link" href="#index-history_005fcomment_005fchar"> &para;</a></span></dt>
+<dd><p>During tokenization, if this character appears as the first character
 of a word, then it and all subsequent characters up to a newline are
 ignored, suppressing history expansion for the remainder of the line.
 This is disabled by default.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fword_005fdelimiters"><span class="category">Variable: </span><span><em>char *</em> <strong>history_word_delimiters</strong><a href='#index-history_005fword_005fdelimiters' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The characters that separate tokens for <code>history_tokenize()</code>.
-The default value is <code>&quot; \t\n()&lt;&gt;;&amp;|&quot;</code>.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fword_005fdelimiters"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">history_word_delimiters</strong><a class="copiable-link" href="#index-history_005fword_005fdelimiters"> &para;</a></span></dt>
+<dd><p>The characters that separate tokens for <code class="code">history_tokenize()</code>.
+The default value is <code class="code">&quot; \t\n()&lt;&gt;;&amp;|&quot;</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fsearch_005fdelimiter_005fchars"><span class="category">Variable: </span><span><em>char *</em> <strong>history_search_delimiter_chars</strong><a href='#index-history_005fsearch_005fdelimiter_005fchars' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fsearch_005fdelimiter_005fchars"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">history_search_delimiter_chars</strong><a class="copiable-link" href="#index-history_005fsearch_005fdelimiter_005fchars"> &para;</a></span></dt>
 <dd><p>The list of additional characters which can delimit a history search
-string, in addition to space, TAB, &lsquo;<samp>:</samp>&rsquo; and &lsquo;<samp>?</samp>&rsquo; in the case of
-a substring search.  The default is empty.
+string, in addition to space, TAB, &lsquo;<samp class="samp">:</samp>&rsquo; and &lsquo;<samp class="samp">?</samp>&rsquo; in the case of
+a substring search.
+The default is empty.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fno_005fexpand_005fchars"><span class="category">Variable: </span><span><em>char *</em> <strong>history_no_expand_chars</strong><a href='#index-history_005fno_005fexpand_005fchars' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fno_005fexpand_005fchars"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">history_no_expand_chars</strong><a class="copiable-link" href="#index-history_005fno_005fexpand_005fchars"> &para;</a></span></dt>
 <dd><p>The list of characters which inhibit history expansion if found immediately
-following <var>history_expansion_char</var>.  The default is space, tab, newline,
-carriage return, and &lsquo;<samp>=</samp>&rsquo;.
+following <var class="var">history_expansion_char</var>.
+The default is space, tab, newline, carriage return, and &lsquo;<samp class="samp">=</samp>&rsquo;.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fquotes_005finhibit_005fexpansion"><span class="category">Variable: </span><span><em>int</em> <strong>history_quotes_inhibit_expansion</strong><a href='#index-history_005fquotes_005finhibit_005fexpansion' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fquotes_005finhibit_005fexpansion"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">history_quotes_inhibit_expansion</strong><a class="copiable-link" href="#index-history_005fquotes_005finhibit_005fexpansion"> &para;</a></span></dt>
 <dd><p>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
@@ -973,50 +1049,54 @@ within double quotes.
 The default value is 0.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005fquoting_005fstate"><span class="category">Variable: </span><span><em>int</em> <strong>history_quoting_state</strong><a href='#index-history_005fquoting_005fstate' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005fquoting_005fstate"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">history_quoting_state</strong><a class="copiable-link" href="#index-history_005fquoting_005fstate"> &para;</a></span></dt>
 <dd><p>An application may set this variable to indicate that the current line
-being expanded is subject to existing quoting. If set to &lsquo;<samp>'</samp>&rsquo;, 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 &lsquo;<samp>&quot;</samp>&rsquo;, 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.
+being expanded is subject to existing quoting.
+If set to &lsquo;<samp class="samp">'</samp>&rsquo;,
+history expansion assumes that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote;
+if set to &lsquo;<samp class="samp">&quot;</samp>&rsquo;,
+history expansion assumes the line is double quoted
+until it reads an unquoted closing double quote.
+If set to 0, the default,
+history expansion assumes the line is not quoted and
+treats quote characters within the line as described above.
+This is only effective if <var class="var">history_quotes_inhibit_expansion</var> is set.
+This is intended for use by applications like Bash which allow
+quoted strings to span multiple lines.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-history_005finhibit_005fexpansion_005ffunction"><span class="category">Variable: </span><span><em>rl_linebuf_func_t *</em> <strong>history_inhibit_expansion_function</strong><a href='#index-history_005finhibit_005fexpansion_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-history_005finhibit_005fexpansion_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_linebuf_func_t *</code> <strong class="def-name">history_inhibit_expansion_function</strong><a class="copiable-link" href="#index-history_005finhibit_005fexpansion_005ffunction"> &para;</a></span></dt>
 <dd><p>This should be set to the address of a function that takes two arguments:
-a <code>char *</code> (<var>string</var>)
-and an <code>int</code> index into that string (<var>i</var>).
+a <code class="code">char *</code> (<var class="var">string</var>)
+and an <code class="code">int</code> index into that string (<var class="var">i</var>).
 It should return a non-zero value if the history expansion starting at
-<var>string[i]</var> should not be performed; zero if the expansion should
+<var class="var">string[i]</var> should not be performed; zero if the expansion should
 be done.
 It is intended for use by applications like Bash that use the history
 expansion character for additional purposes.
-By default, this variable is set to <code>NULL</code>.
+By default, this variable is set to <code class="code">NULL</code>.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="section" id="History-Programming-Example">
-<div class="header">
+<div class="section-level-extent" id="History-Programming-Example">
+<div class="nav-panel">
 <p>
 Previous: <a href="#History-Variables" accesskey="p" rel="prev">History Variables</a>, Up: <a href="#Programming-with-GNU-History" accesskey="u" rel="up">Programming with GNU History</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="History-Programming-Example-1"></span><h3 class="section">2.5 History Programming Example</h3>
+<h3 class="section" id="History-Programming-Example-1"><span>2.5 History Programming Example<a class="copiable-link" href="#History-Programming-Example-1"> &para;</a></span></h3>
 
-<p>The following program demonstrates simple use of the <small>GNU</small> History Library.
+<p>The following program demonstrates simple use of the <small class="sc">GNU</small> History Library.
 </p>
-<div class="example">
-<pre class="example">#include &lt;stdio.h&gt;
+<div class="example smallexample">
+<pre class="example-preformatted">#include &lt;stdio.h&gt;
 #include &lt;readline/history.h&gt;
 
-main (argc, argv)
-     int argc;
-     char **argv;
+int
+main (int argc, char **argv)
 {
   char line[1024], *t;
   int len, done = 0;
@@ -1101,29 +1181,29 @@ main (argc, argv)
 <hr>
 </div>
 </div>
-<div class="appendix" id="GNU-Free-Documentation-License">
-<div class="header">
+<div class="appendix-level-extent" id="GNU-Free-Documentation-License">
+<div class="nav-panel">
 <p>
 Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Programming-with-GNU-History" accesskey="p" rel="prev">Programming with GNU History</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU History Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix A GNU Free Documentation License</h2>
+<h2 class="appendix" id="GNU-Free-Documentation-License-1"><span>Appendix A GNU Free Documentation License<a class="copiable-link" href="#GNU-Free-Documentation-License-1"> &para;</a></span></h2>
 
-<div align="center">Version 1.3, 3 November 2008
+<div class="center">Version 1.3, 3 November 2008
 </div>
 
 <div class="display">
-<pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-<a href="http://fsf.org/">http://fsf.org/</a>
+<pre class="display-preformatted">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<a class="uref" href="http://fsf.org/">http://fsf.org/</a>
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
 </pre></div>
 
-<ol start="0">
+<ol class="enumerate" start="0">
 <li> PREAMBLE
 
 <p>The purpose of this License is to make a manual, textbook, or other
-functional and useful document <em>free</em> in the sense of freedom: to
+functional and useful document <em class="dfn">free</em> in the sense of freedom: to
 assure everyone the effective freedom to copy and redistribute it,
 with or without modifying it, either commercially or noncommercially.
 Secondarily, this License preserves for the author and publisher a way
@@ -1197,16 +1277,16 @@ An image format is not Transparent if used for any substantial amount
 of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
 </p>
 <p>Examples of suitable formats for Transparent copies include plain
-<small>ASCII</small> without markup, Texinfo input format, LaTeX input
-format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
-<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
-of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
-<acronym>JPG</acronym>.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, <acronym>SGML</acronym> or
-<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
-not generally available, and the machine-generated <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> produced by some word processors for
+<small class="sc">ASCII</small> without markup, Texinfo input format, LaTeX input
+format, <abbr class="acronym">SGML</abbr> or <abbr class="acronym">XML</abbr> using a publicly available
+<abbr class="acronym">DTD</abbr>, and standard-conforming simple <abbr class="acronym">HTML</abbr>,
+PostScript or <abbr class="acronym">PDF</abbr> designed for human modification.  Examples
+of transparent image formats include <abbr class="acronym">PNG</abbr>, <abbr class="acronym">XCF</abbr> and
+<abbr class="acronym">JPG</abbr>.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <abbr class="acronym">SGML</abbr> or
+<abbr class="acronym">XML</abbr> for which the <abbr class="acronym">DTD</abbr> and/or processing tools are
+not generally available, and the machine-generated <abbr class="acronym">HTML</abbr>,
+PostScript or <abbr class="acronym">PDF</abbr> produced by some word processors for
 output purposes only.
 </p>
 <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
@@ -1295,7 +1375,7 @@ Version filling the role of the Document, thus licensing distribution
 and modification of the Modified Version to whoever possesses a copy
 of it.  In addition, you must do these things in the Modified Version:
 </p>
-<ol type="A" start="1">
+<ol class="enumerate" type="A" start="1">
 <li> Use in the Title Page (and on the covers, if any) a title distinct
 from that of the Document, and from those of previous versions
 (which should, if there were any, be listed in the History section
@@ -1495,7 +1575,7 @@ not give you any rights to use it.
 of the GNU Free Documentation License from time to time.  Such new
 versions will be similar in spirit to the present version, but may
 differ in detail to address new problems or concerns.  See
-<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+<a class="uref" href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
 </p>
 <p>Each version of the License is given a distinguishing version number.
 If the Document specifies that a particular numbered version of this
@@ -1541,30 +1621,30 @@ provided the MMC is eligible for relicensing.
 </p>
 </li></ol>
 
-<span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
+<h3 class="heading" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"><span>ADDENDUM: How to use this License for your documents<a class="copiable-link" href="#ADDENDUM_003a-How-to-use-this-License-for-your-documents"> &para;</a></span></h3>
 
 <p>To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and
 license notices just after the title page:
 </p>
-<div class="example">
-<pre class="example">  Copyright (C)  <var>year</var>  <var>your name</var>.
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted">  Copyright (C)  <var class="var">year</var>  <var class="var">your name</var>.
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   Texts.  A copy of the license is included in the section entitled ``GNU
   Free Documentation License''.
-</pre></div>
+</pre></div></div>
 
 <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
 replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
 </p>
-<div class="example">
-<pre class="example">    with the Invariant Sections being <var>list their titles</var>, with
-    the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
-    being <var>list</var>.
-</pre></div>
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted">    with the Invariant Sections being <var class="var">list their titles</var>, with
+    the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts
+    being <var class="var">list</var>.
+</pre></div></div>
 
 <p>If you have Invariant Sections without Cover Texts, or some other
 combination of the three, merge those two alternatives to suit the
@@ -1579,168 +1659,172 @@ to permit their use in free software.
 
 <hr>
 </div>
-<div class="appendix" id="Concept-Index">
-<div class="header">
+<div class="appendix-level-extent" id="Concept-Index">
+<div class="nav-panel">
 <p>
 Next: <a href="#Function-and-Variable-Index" accesskey="n" rel="next">Function and Variable Index</a>, Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU History Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Concept-Index-1"></span><h2 class="appendix">Appendix B Concept Index</h2>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+<h2 class="appendix" id="Concept-Index-1"><span>Appendix B Concept Index<a class="copiable-link" href="#Concept-Index-1"> &para;</a></span></h2>
+<div class="printindex cp-printindex">
+<table class="cp-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a>
  &nbsp; 
 </td></tr></table>
-<table class="index-cp" border="0">
-<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-A">A</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-anchored-search">anchored search</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-event-designators">event designators</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Event-Designators">Event Designators</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-H">H</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history-events">history events</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Event-Designators">Event Designators</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history-expansion">history expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Interaction">History Interaction</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-History-Searching">History Searching</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
+<table class="cp-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-A">A</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-anchored-search">anchored search</a></td><td class="printindex-index-section"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-E">E</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-event-designators">event designators</a></td><td class="printindex-index-section"><a href="#Event-Designators">Event Designators</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-H">H</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history-events">history events</a></td><td class="printindex-index-section"><a href="#Event-Designators">Event Designators</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history-expansion">history expansion</a></td><td class="printindex-index-section"><a href="#History-Interaction">History Interaction</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-History-Searching">History Searching</a></td><td class="printindex-index-section"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
 </table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+<table class="cp-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-H"><b>H</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-H"><b>H</b></a>
  &nbsp; 
 </td></tr></table>
+</div>
 
 <hr>
 </div>
-<div class="appendix" id="Function-and-Variable-Index">
-<div class="header">
+<div class="appendix-level-extent" id="Function-and-Variable-Index">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Concept-Index" accesskey="p" rel="prev">Concept Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU History Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Function-and-Variable-Index-1"></span><h2 class="appendix">Appendix C Function and Variable Index</h2>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-A"><b>A</b></a>
+<h2 class="appendix" id="Function-and-Variable-Index-1"><span>Appendix C Function and Variable Index<a class="copiable-link" href="#Function-and-Variable-Index-1"> &para;</a></span></h2>
+<div class="printindex vr-printindex">
+<table class="vr-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-C"><b>C</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-C"><b>C</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-F"><b>F</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-F"><b>F</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-G"><b>G</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-G"><b>G</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-H"><b>H</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-H"><b>H</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-N"><b>N</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-N"><b>N</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-P"><b>P</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-P"><b>P</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-R"><b>R</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-R"><b>R</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-S"><b>S</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-S"><b>S</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-U"><b>U</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-U"><b>U</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-W"><b>W</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-W"><b>W</b></a>
  &nbsp; 
 </td></tr></table>
-<table class="index-vr" border="0">
-<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-A">A</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add_005fhistory"><code>add_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-add_005fhistory_005ftime"><code>add_history_time</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-append_005fhistory"><code>append_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-C">C</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-clear_005fhistory"><code>clear_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-current_005fhistory"><code>current_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-F">F</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-free_005fhistory_005fentry"><code>free_history_entry</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-G">G</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-get_005fhistory_005fevent"><code>get_history_event</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Expansion">History Expansion</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-H">H</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005farg_005fextract"><code>history_arg_extract</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Expansion">History Expansion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fbase"><code>history_base</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fcomment_005fchar"><code>history_comment_char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fexpand"><code>history_expand</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Expansion">History Expansion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fexpansion_005fchar"><code>history_expansion_char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fget"><code>history_get</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fget_005fhistory_005fstate"><code>history_get_history_state</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Initializing-History-and-State-Management">Initializing History and State Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fget_005ftime"><code>history_get_time</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005finhibit_005fexpansion_005ffunction"><code>history_inhibit_expansion_function</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fis_005fstifled"><code>history_is_stifled</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005flength"><code>history_length</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005flist"><code>history_list</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fmax_005fentries"><code>history_max_entries</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fno_005fexpand_005fchars"><code>history_no_expand_chars</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fquotes_005finhibit_005fexpansion"><code>history_quotes_inhibit_expansion</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fquoting_005fstate"><code>history_quoting_state</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fsearch"><code>history_search</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fsearch_005fdelimiter_005fchars"><code>history_search_delimiter_chars</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fsearch_005fpos"><code>history_search_pos</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fsearch_005fprefix"><code>history_search_prefix</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fset_005fhistory_005fstate"><code>history_set_history_state</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Initializing-History-and-State-Management">Initializing History and State Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fset_005fpos"><code>history_set_pos</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Moving-Around-the-History-List">Moving Around the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fsubst_005fchar"><code>history_subst_char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005ftokenize"><code>history_tokenize</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Expansion">History Expansion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005ftotal_005fbytes"><code>history_total_bytes</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005ftruncate_005ffile"><code>history_truncate_file</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fword_005fdelimiters"><code>history_word_delimiters</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_005fwrite_005ftimestamps"><code>history_write_timestamps</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Variables">History Variables</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-N">N</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-next_005fhistory"><code>next_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Moving-Around-the-History-List">Moving Around the History List</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-P">P</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-previous_005fhistory"><code>previous_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Moving-Around-the-History-List">Moving Around the History List</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-R">R</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-read_005fhistory"><code>read_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-read_005fhistory_005frange"><code>read_history_range</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-remove_005fhistory"><code>remove_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-replace_005fhistory_005fentry"><code>replace_history_entry</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-S">S</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-stifle_005fhistory"><code>stifle_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-U">U</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unstifle_005fhistory"><code>unstifle_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-List-Management">History List Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-using_005fhistory"><code>using_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Initializing-History-and-State-Management">Initializing History and State Management</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_vr_letter-W">W</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-where_005fhistory"><code>where_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-write_005fhistory"><code>write_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
+<table class="vr-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-A">A</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-add_005fhistory"><code>add_history</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-add_005fhistory_005ftime"><code>add_history_time</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-append_005fhistory"><code>append_history</code></a></td><td class="printindex-index-section"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-C">C</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-clear_005fhistory"><code>clear_history</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-current_005fhistory"><code>current_history</code></a></td><td class="printindex-index-section"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-F">F</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-free_005fhistory_005fentry"><code>free_history_entry</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-G">G</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-get_005fhistory_005fevent"><code>get_history_event</code></a></td><td class="printindex-index-section"><a href="#History-Expansion">History Expansion</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-H">H</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005farg_005fextract"><code>history_arg_extract</code></a></td><td class="printindex-index-section"><a href="#History-Expansion">History Expansion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fbase"><code>history_base</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fcomment_005fchar"><code>history_comment_char</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fexpand"><code>history_expand</code></a></td><td class="printindex-index-section"><a href="#History-Expansion">History Expansion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fexpansion_005fchar"><code>history_expansion_char</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fget"><code>history_get</code></a></td><td class="printindex-index-section"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fget_005fhistory_005fstate"><code>history_get_history_state</code></a></td><td class="printindex-index-section"><a href="#Initializing-History-and-State-Management">Initializing History and State Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fget_005ftime"><code>history_get_time</code></a></td><td class="printindex-index-section"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005finhibit_005fexpansion_005ffunction"><code>history_inhibit_expansion_function</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fis_005fstifled"><code>history_is_stifled</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005flength"><code>history_length</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005flist"><code>history_list</code></a></td><td class="printindex-index-section"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fmax_005fentries"><code>history_max_entries</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fno_005fexpand_005fchars"><code>history_no_expand_chars</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fquotes_005finhibit_005fexpansion"><code>history_quotes_inhibit_expansion</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fquoting_005fstate"><code>history_quoting_state</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fsearch"><code>history_search</code></a></td><td class="printindex-index-section"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fsearch_005fdelimiter_005fchars"><code>history_search_delimiter_chars</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fsearch_005fpos"><code>history_search_pos</code></a></td><td class="printindex-index-section"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fsearch_005fprefix"><code>history_search_prefix</code></a></td><td class="printindex-index-section"><a href="#Searching-the-History-List">Searching the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fset_005fhistory_005fstate"><code>history_set_history_state</code></a></td><td class="printindex-index-section"><a href="#Initializing-History-and-State-Management">Initializing History and State Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fset_005fpos"><code>history_set_pos</code></a></td><td class="printindex-index-section"><a href="#Moving-Around-the-History-List">Moving Around the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fsubst_005fchar"><code>history_subst_char</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005ftokenize"><code>history_tokenize</code></a></td><td class="printindex-index-section"><a href="#History-Expansion">History Expansion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005ftotal_005fbytes"><code>history_total_bytes</code></a></td><td class="printindex-index-section"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005ftruncate_005ffile"><code>history_truncate_file</code></a></td><td class="printindex-index-section"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fword_005fdelimiters"><code>history_word_delimiters</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_005fwrite_005ftimestamps"><code>history_write_timestamps</code></a></td><td class="printindex-index-section"><a href="#History-Variables">History Variables</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-N">N</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-next_005fhistory"><code>next_history</code></a></td><td class="printindex-index-section"><a href="#Moving-Around-the-History-List">Moving Around the History List</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-P">P</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-previous_005fhistory"><code>previous_history</code></a></td><td class="printindex-index-section"><a href="#Moving-Around-the-History-List">Moving Around the History List</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-R">R</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-read_005fhistory"><code>read_history</code></a></td><td class="printindex-index-section"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-read_005fhistory_005frange"><code>read_history_range</code></a></td><td class="printindex-index-section"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-remove_005fhistory"><code>remove_history</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-replace_005fhistory_005fentry"><code>replace_history_entry</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-S">S</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-stifle_005fhistory"><code>stifle_history</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-U">U</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unstifle_005fhistory"><code>unstifle_history</code></a></td><td class="printindex-index-section"><a href="#History-List-Management">History List Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-using_005fhistory"><code>using_history</code></a></td><td class="printindex-index-section"><a href="#Initializing-History-and-State-Management">Initializing History and State Management</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_vr_letter-W">W</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-where_005fhistory"><code>where_history</code></a></td><td class="printindex-index-section"><a href="#Information-About-the-History-List">Information About the History List</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-write_005fhistory"><code>write_history</code></a></td><td class="printindex-index-section"><a href="#Managing-the-History-File">Managing the History File</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
 </table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-A"><b>A</b></a>
+<table class="vr-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-C"><b>C</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-C"><b>C</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-F"><b>F</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-F"><b>F</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-G"><b>G</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-G"><b>G</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-H"><b>H</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-H"><b>H</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-N"><b>N</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-N"><b>N</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-P"><b>P</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-P"><b>P</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-R"><b>R</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-R"><b>R</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-S"><b>S</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-S"><b>S</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-U"><b>U</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-U"><b>U</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_vr_letter-W"><b>W</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_vr_letter-W"><b>W</b></a>
  &nbsp; 
 </td></tr></table>
+</div>
 
 </div>
 </div>
index a6799c38edeba8ffea535ff2e55f100c0d90fd70..3663d06b53c9f4ad6a5b91d04c038198274acef4 100644 (file)
@@ -1,11 +1,11 @@
-This is history.info, produced by makeinfo version 6.8 from
+This is history.info, produced by makeinfo version 7.1 from
 history.texi.
 
-This document describes the GNU History library (version 8.2, 19
-September 2022), a programming tool that provides a consistent user
+This document describes the GNU History library (version 8.3, 30
+December 2024), a programming tool that provides a consistent user
 interface for recalling lines of previously typed input.
 
-   Copyright (C) 1988-2022 Free Software Foundation, Inc.
+   Copyright © 1988-2025 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -60,8 +60,9 @@ File: history.info,  Node: History Interaction,  Up: Using History Interactively
 =====================
 
 The History library provides a history expansion feature that is similar
-to the history expansion provided by 'csh'.  This section describes the
-syntax used to manipulate the history information.
+to the history expansion provided by ‘csh’ (also referred to as history
+substitution where appropriate).  This section describes the syntax used
+to manipulate the history information.
 
    History expansions introduce words from the history list into the
 input stream, making it easy to repeat commands, insert the arguments to
@@ -69,15 +70,22 @@ a previous command into the current input line, or fix errors in
 previous commands quickly.
 
    History expansion takes place in two parts.  The first is to
-determine which line from the history list should be used during
-substitution.  The second is to select portions of that line for
-inclusion into the current one.  The line selected from the history is
-called the "event", and the portions of that line that are acted upon
-are called "words".  Various "modifiers" are available to manipulate the
-selected words.  The line is broken into words in the same fashion that
-Bash does, so that several words surrounded by quotes are considered one
-word.  History expansions are introduced by the appearance of the
-history expansion character, which is '!' by default.
+determine which entry from the history list should be used during
+substitution.  The second is to select portions of that entry to include
+into the current one.
+
+   The entry selected from the history is called the “event”, and the
+portions of that entry that are acted upon are “words”.  Various
+“modifiers” are available to manipulate the selected words.  The entry
+is split into words in the same fashion that Bash does when reading
+input, so that several words surrounded by quotes are considered one
+word.  The “event designator” selects the event, the optional “word
+designator” selects words from the event, and various optional
+“modifiers” are available to manipulate the selected words.
+
+   History expansions are introduced by the appearance of the history
+expansion character, which is ‘!’ by default.  History expansions may
+appear anywhere in the input, but do not nest.
 
    History expansion implements shell-like quoting conventions: a
 backslash can be used to remove the special handling for the next
@@ -87,6 +95,14 @@ 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.
 
+   There is a special abbreviation for substitution, active when the
+QUICK SUBSTITUTION character (default ‘^’) is the first character on the
+line.  It selects the previous history list entry, using an event
+designator equivalent to ‘!!’, and substitutes one string for another in
+that entry.  It is described below (*note Event Designators::).  This is
+the only history expansion that does not begin with the history
+expansion character.
+
 * Menu:
 
 * Event Designators::  How to specify which history line to use.
@@ -99,39 +115,41 @@ File: history.info,  Node: Event Designators,  Next: Word Designators,  Up: Hist
 1.1.1 Event Designators
 -----------------------
 
-An event designator is a reference to a command line entry in the
-history list.  Unless the reference is absolute, events are relative to
-the current position in the history list.
+An event designator is a reference to an entry in the history list.  The
+event designator consists of the portion of the word beginning with the
+history expansion character, and ending with the word designator if one
+is present, or the end of the word.  Unless the reference is absolute,
+events are relative to the current position in the history list.
 
-'!'
+‘!’
      Start a history substitution, except when followed by a space, tab,
-     the end of the line, or '='.
+     the end of the line, or ‘=’.
 
-'!N'
-     Refer to command line N.
+‘!N’
+     Refer to history list entry N.
 
-'!-N'
-     Refer to the command N lines back.
+‘!-N’
+     Refer to the history entry minus N.
 
-'!!'
-     Refer to the previous command.  This is a synonym for '!-1'.
+‘!!’
+     Refer to the previous entry.  This is a synonym for ‘!-1’.
 
-'!STRING'
+‘!STRING’
      Refer to the most recent command preceding the current position in
      the history list starting with STRING.
 
-'!?STRING[?]'
+‘!?STRING[?]’
      Refer to the most recent command preceding the current position in
-     the history list containing STRING.  The trailing '?' may be
+     the history list containing STRING.  The trailing ‘?’ may be
      omitted if the STRING is followed immediately by a newline.  If
-     STRING is missing, the string from the most recent search is used;
-     it is an error if there is no previous search string.
+     STRING is missing, this uses the string from the most recent
+     search; it is an error if there is no previous search string.
 
-'^STRING1^STRING2^'
+‘^STRING1^STRING2^’
      Quick Substitution.  Repeat the last command, replacing STRING1
-     with STRING2.  Equivalent to '!!:s^STRING1^STRING2^'.
+     with STRING2.  Equivalent to ‘!!:s^STRING1^STRING2^’.
 
-'!#'
+‘!#’
      The entire command line typed so far.
 
 \1f
@@ -140,62 +158,70 @@ File: history.info,  Node: Word Designators,  Next: Modifiers,  Prev: Event Desi
 1.1.2 Word Designators
 ----------------------
 
-Word designators are used to select desired words from the event.  A ':'
-separates the event specification from the word designator.  It may be
-omitted if the word designator begins with a '^', '$', '*', '-', or '%'.
-Words are numbered from the beginning of the line, with the first word
-being denoted by 0 (zero).  Words are inserted into the current line
+Word designators are used to select desired words from the event.  They
+are optional; if the word designator isn't supplied, the history
+expansion uses the entire event.  A ‘:’ separates the event
+specification from the word designator.  It may be omitted if the word
+designator begins with a ‘^’, ‘$’, ‘*’, ‘-’, or ‘%’.  Words are numbered
+from the beginning of the line, with the first word being denoted by 0
+(zero).  That first word is usually the command word, and the arguments
+begin with the second word.  Words are inserted into the current line
 separated by single spaces.
 
    For example,
 
-'!!'
+‘!!’
      designates the preceding command.  When you type this, the
      preceding command is repeated in toto.
 
-'!!:$'
-     designates the last argument of the preceding command.  This may be
-     shortened to '!$'.
+‘!!:$’
+     designates the last word of the preceding command.  This may be
+     shortened to ‘!$’.
 
-'!fi:2'
+‘!fi:2’
      designates the second argument of the most recent command starting
-     with the letters 'fi'.
+     with the letters ‘fi’.
 
    Here are the word designators:
 
-'0 (zero)'
-     The '0'th word.  For many applications, this is the command word.
+‘0 (zero)’
+     The ‘0’th word.  For the shell, and many other, applications, this
+     is the command word.
 
-'N'
+‘N’
      The Nth word.
 
-'^'
-     The first argument; that is, word 1.
+‘^’
+     The first argument: word 1.
 
-'$'
-     The last argument.
+‘$’
+     The last word.  This is usually the last argument, but expands to
+     the zeroth word if there is only one word in the line.
 
-'%'
-     The first word matched by the most recent '?STRING?' search, if the
-     search string begins with a character that is part of a word.
+‘%’
+     The first word matched by the most recent ‘?STRING?’ search, if the
+     search string begins with a character that is part of a word.  By
+     default, searches begin at the end of each line and proceed to the
+     beginning, so the first word matched is the one closest to the end
+     of the line.
 
-'X-Y'
-     A range of words; '-Y' abbreviates '0-Y'.
+‘X-Y’
+     A range of words; ‘-Y’ abbreviates ‘0-Y’.
 
-'*'
-     All of the words, except the '0'th.  This is a synonym for '1-$'.
-     It is not an error to use '*' if there is just one word in the
-     event; the empty string is returned in that case.
+‘*’
+     All of the words, except the ‘0’th.  This is a synonym for ‘1-$’.
+     It is not an error to use ‘*’ if there is just one word in the
+     event; it expands to the empty string in that case.
 
-'X*'
-     Abbreviates 'X-$'
+‘X*’
+     Abbreviates ‘X-$’.
 
-'X-'
-     Abbreviates 'X-$' like 'X*', but omits the last word.  If 'x' is
+‘X-’
+     Abbreviates ‘X-$’ like ‘X*’, but omits the last word.  If ‘x’ is
      missing, it defaults to 0.
 
    If a word designator is supplied without an event specification, the
-previous command is used as the event.
+previous command is used as the event, equivalent to ‘!!’.
 
 \1f
 File: history.info,  Node: Modifiers,  Prev: Word Designators,  Up: History Interaction
@@ -204,46 +230,46 @@ File: history.info,  Node: Modifiers,  Prev: Word Designators,  Up: History Inte
 ---------------
 
 After the optional word designator, you can add a sequence of one or
-more of the following modifiers, each preceded by a ':'.  These modify,
+more of the following modifiers, each preceded by a ‘:’.  These modify,
 or edit, the word or words selected from the history event.
 
-'h'
-     Remove a trailing pathname component, leaving only the head.
+‘h’
+     Remove a trailing filename component, leaving only the head.
 
-'t'
-     Remove all leading pathname components, leaving the tail.
+‘t’
+     Remove all leading filename components, leaving the tail.
 
-'r'
-     Remove a trailing suffix of the form '.SUFFIX', leaving the
+‘r’
+     Remove a trailing suffix of the form ‘.SUFFIX’, leaving the
      basename.
 
-'e'
+‘e’
      Remove all but the trailing suffix.
 
-'p'
+‘p’
      Print the new command but do not execute it.
 
-'s/OLD/NEW/'
+‘s/OLD/NEW/’
      Substitute NEW for the first occurrence of OLD in the event line.
-     Any character may be used as the delimiter in place of '/'.  The
+     Any character may be used as the delimiter in place of ‘/’.  The
      delimiter may be quoted in OLD and NEW with a single backslash.  If
-     '&' appears in NEW, it is replaced by OLD.  A single backslash will
-     quote the '&'.  If OLD is null, it is set to the last OLD
-     substituted, or, if no previous history substitutions took place,
-     the last STRING in a !?STRING'[?]' search.  If NEW is null, each
-     matching OLD is deleted.  The final delimiter is optional if it is
-     the last character on the input line.
-
-'&'
+     ‘&’ appears in NEW, it is replaced with OLD.  A single backslash
+     quotes the ‘&’ in OLD and NEW.  If OLD is null, it is set to the
+     last OLD substituted, or, if no previous history substitutions took
+     place, the last STRING in a !?STRING‘[?]’ search.  If NEW is null,
+     each matching OLD is deleted.  The final delimiter is optional if
+     it is the last character on the input line.
+
+‘&’
      Repeat the previous substitution.
 
-'g'
-'a'
-     Cause changes to be applied over the entire event line.  Used in
-     conjunction with 's', as in 'gs/OLD/NEW/', or with '&'.
+‘g’
+‘a’
+     Cause changes to be applied over the entire event line.  This is
+     used in conjunction with ‘s’, as in ‘gs/OLD/NEW/’, or with ‘&’.
 
-'G'
-     Apply the following 's' or '&' modifier once to each word in the
+‘G’
+     Apply the following ‘s’ or ‘&’ modifier once to each word in the
      event.
 
 \1f
@@ -262,7 +288,7 @@ Interactively::.
 * Introduction to History::    What is the GNU History library for?
 * History Storage::            How information is stored.
 * History Functions::          Functions that you can use.
-* History Variables::          Variables that control behaviour.
+* History Variables::          Variables that control behavior.
 * History Programming Example::        Example of using the GNU History Library.
 
 \1f
@@ -274,21 +300,21 @@ File: history.info,  Node: Introduction to History,  Next: History Storage,  Up:
 Many programs read input from the user a line at a time.  The GNU
 History library is able to keep track of those lines, associate
 arbitrary data with each line, and utilize information from previous
-lines in composing new ones.
+lines when composing new ones.
 
-   A programmer using the History library has available functions for
-remembering lines on a history list, associating arbitrary data with a
-line, removing lines from the list, searching through the list for a
-line containing an arbitrary text string, and referencing any line in
-the list directly.  In addition, a history "expansion" function is
-available which provides for a consistent user interface across
-different programs.
+   A programmer using the History library can use functions to save
+commands on a history list, associate arbitrary data with history list
+entries, remove entries from the list, search through the list for a
+line containing an arbitrary text string, reference any entry in the
+list directly, and read and write the history list from and to a file.
+In addition, a history “expansion” function is available which provides
+for a consistent user interface across different programs.
 
-   The user using programs written with the History library has the
+   Someone using programs written with the History library has the
 benefit of a consistent user interface with a set of well-known commands
 for manipulating the text of previous lines and using that text in new
 commands.  The basic history manipulation commands are similar to the
-history substitution provided by 'csh'.
+history substitution provided by ‘csh’.
 
    The programmer can also use the Readline library, which includes some
 history manipulation by default, and has the added advantage of command
@@ -296,10 +322,9 @@ line editing.
 
    Before declaring any functions using any functionality the History
 library provides in other code, an application writer should include the
-file '<readline/history.h>' in any file that uses the History library's
-features.  It supplies extern declarations for all of the library's
-public functions and variables, and declares all of the public data
-structures.
+file ‘<readline/history.h>’ in any file that uses the History library's
+features.  It supplies declarations for all of the library's public
+functions and variables, and declares all of the public data structures.
 
 \1f
 File: history.info,  Node: History Storage,  Next: History Functions,  Prev: Introduction to History,  Up: Programming with GNU History
@@ -336,8 +361,8 @@ structure:
        int flags;
      } HISTORY_STATE;
 
-   If the flags member includes 'HS_STIFLED', the history has been
-stifled.
+   If the flags member includes ‘HS_STIFLED’, the history has been
+stifled (limited to a maximum number of entries).
 
 \1f
 File: history.info,  Node: History Functions,  Next: History Variables,  Prev: History Storage,  Up: Programming with GNU History
@@ -377,7 +402,7 @@ of the History library when you want to use the history functions in
 your program.
 
  -- Function: void using_history (void)
-     Begin a session in which the history functions might be used.  This
+     Begin a session that will use the history functions.  This
      initializes the interactive variables.
 
  -- Function: HISTORY_STATE * history_get_history_state (void)
@@ -397,20 +422,22 @@ These functions manage individual entries on the history list, or set
 parameters managing the list itself.
 
  -- Function: void add_history (const char *string)
-     Place STRING at the end of the history list.  The associated data
-     field (if any) is set to 'NULL'.  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.
+     Add STRING to the end of the history list, and set the associated
+     data field (if any) 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, this removes the
+     oldest history entry.
 
  -- Function: void add_history_time (const char *string)
      Change the time stamp associated with the most recent history entry
      to STRING.
 
  -- Function: HIST_ENTRY * remove_history (int which)
-     Remove history entry at offset WHICH from the history.  The removed
-     element is returned so you can free the line, data, and containing
-     structure.
+     Remove the history entry at offset WHICH from the history list.
+     This returns the removed element so you can free the line, data,
+     and containing structure.  Since the data is private to your
+     application, the History library doesn't know how to free it, if
+     necessary.
 
  -- Function: histdata_t free_history_entry (HIST_ENTRY *histent)
      Free the history entry HISTENT and any history library private data
@@ -421,8 +448,8 @@ parameters managing the list itself.
           *line, histdata_t data)
      Make the history entry at offset WHICH have LINE and DATA.  This
      returns the old entry so the caller can dispose of any
-     application-specific data.  In the case of an invalid WHICH, a
-     'NULL' pointer is returned.
+     application-specific data.  In the case of an invalid WHICH, this
+     returns ‘NULL’.
 
  -- Function: void clear_history (void)
      Clear the history list by deleting all the entries.
@@ -433,7 +460,7 @@ parameters managing the list itself.
 
  -- Function: int unstifle_history (void)
      Stop stifling the history.  This returns the previously-set maximum
-     number of history entries (as set by 'stifle_history()').  The
+     number of history entries (as set by ‘stifle_history()’).  The
      value is positive if the history was stifled, negative if it
      wasn't.
 
@@ -450,24 +477,23 @@ These functions return information about the entire history list or
 individual list entries.
 
  -- Function: HIST_ENTRY ** history_list (void)
-     Return a 'NULL' terminated array of 'HIST_ENTRY *' which is the
+     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'.
+     time.  Return ‘NULL’ if there is no history.
 
  -- Function: int where_history (void)
-     Returns the offset of the current history element.
+     Return the offset of the current history entry.
 
  -- Function: HIST_ENTRY * current_history (void)
      Return the history entry at the current position, as determined by
-     'where_history()'.  If there is no entry there, return a 'NULL'
-     pointer.
+     ‘where_history()’.  If there is no entry there, return ‘NULL’.
 
  -- Function: HIST_ENTRY * history_get (int offset)
      Return the history entry at position OFFSET.  The range of valid
-     values of OFFSET starts at 'history_base' and ends at
+     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.
+     entry there, or if OFFSET is outside the valid range, return
+     ‘NULL’.
 
  -- Function: time_t history_get_time (HIST_ENTRY *entry)
      Return the time stamp associated with the history entry ENTRY.  If
@@ -495,13 +521,13 @@ or changed.
  -- Function: HIST_ENTRY * previous_history (void)
      Back up the current history offset to the previous history entry,
      and return a pointer to that entry.  If there is no previous entry,
-     return a 'NULL' pointer.
+     return ‘NULL’.
 
  -- Function: HIST_ENTRY * next_history (void)
      If the current history offset refers to a valid history entry,
      increment the current history offset.  If the possibly-incremented
      history offset refers to a valid history entry, return a pointer to
-     that entry; otherwise, return a 'BNULL' pointer.
+     that entry; otherwise, return ‘NULL’.
 
 \1f
 File: history.info,  Node: Searching the History List,  Next: Managing the History File,  Prev: Moving Around the History List,  Up: History Functions
@@ -509,37 +535,37 @@ File: history.info,  Node: Searching the History List,  Next: Managing the Histo
 2.3.5 Searching the History List
 --------------------------------
 
-These functions allow searching of the history list for entries
-containing a specific string.  Searching may be performed both forward
-and backward from the current history position.  The search may be
-"anchored", meaning that the string must match at the beginning of the
-history entry.
+These functions search the history list for entries containing a
+specific string.  Searching may be performed both forward and backward
+from the current history position.  The search may be “anchored”,
+meaning that the string must match at the beginning of a history entry.
 
  -- Function: int history_search (const char *string, int direction)
      Search the history for STRING, starting at the current history
      offset.  If DIRECTION is less than 0, then the search is through
      previous entries, otherwise through subsequent entries.  If STRING
      is found, then the current history index is set to that history
-     entry, and the value returned is the offset in the line of the
-     entry where STRING was found.  Otherwise, nothing is changed, and a
-     -1 is returned.
+     entry, and ‘history_search’ returns the offset in the line of the
+     entry where STRING was found.  Otherwise, nothing is changed, and
+     this returns -1.
 
  -- Function: int history_search_prefix (const char *string, int
           direction)
      Search the history for STRING, starting at the current history
-     offset.  The search is anchored: matching lines must begin with
-     STRING.  If DIRECTION is less than 0, then the search is through
-     previous entries, otherwise through subsequent entries.  If STRING
-     is found, then the current history index is set to that entry, and
-     the return value is 0.  Otherwise, nothing is changed, and a -1 is
-     returned.
+     offset.  The search is anchored: matching history entries must
+     begin with STRING.  If DIRECTION is less than 0, then the search is
+     through previous entries, otherwise through subsequent entries.  If
+     STRING is found, then the current history index is set to that
+     entry, and the return value is 0.  Otherwise, nothing is changed,
+     and this returns -1.
 
  -- Function: int history_search_pos (const char *string, int direction,
           int pos)
      Search for STRING in the history list, starting at POS, an absolute
      index into the list.  If DIRECTION is negative, the search proceeds
-     backward from POS, otherwise forward.  Returns the absolute index
-     of the history element where STRING was found, or -1 otherwise.
+     backward from POS, otherwise forward.  Returns the index in the
+     history list of the history element where STRING was found, or -1
+     otherwise.
 
 \1f
 File: history.info,  Node: Managing the History File,  Next: History Expansion,  Prev: Searching the History List,  Up: History Functions
@@ -551,34 +577,43 @@ The History library can read the history from and write it to a file.
 This section documents the functions for managing a history file.
 
  -- Function: int read_history (const char *filename)
-     Add the contents of FILENAME to the history list, a line at a time.
-     If FILENAME is 'NULL', then read from '~/.history'.  Returns 0 if
-     successful, or 'errno' if not.
+     Add the contents of FILENAME to the history list, one entry at a
+     time.  If FILENAME is ‘NULL’, this reads from ‘~/.history’, if it
+     exists.  This attempts to determine whether the history file
+     includes timestamp information, and assigns timestamps to the
+     history entries it reads if so.  Returns 0 if successful, or
+     ‘errno’ if not.
 
  -- Function: int read_history_range (const char *filename, int from,
           int to)
      Read a range of lines from FILENAME, adding them to the history
      list.  Start reading at line FROM and end at TO.  If FROM is zero,
-     start at the beginning.  If TO is less than FROM, then read until
-     the end of the file.  If FILENAME is 'NULL', then read from
-     '~/.history'.  Returns 0 if successful, or 'errno' if not.
+     start at the beginning.  If TO is less than FROM, this reads until
+     the end of the file.  This attempts to determine whether the
+     history file includes timestamp information, and assigns timestamps
+     to the history entries it reads if so.  If FILENAME is ‘NULL’, this
+     reads from ‘~/.history’, if it exists.  Returns 0 if successful, or
+     ‘errno’ if not.
 
  -- Function: int write_history (const char *filename)
      Write the current history to FILENAME, overwriting FILENAME if
-     necessary.  If FILENAME is 'NULL', then write the history list to
-     '~/.history'.  Returns 0 on success, or 'errno' on a read or write
-     error.
+     necessary.  This writes timestamp information if the
+     ‘history_write_timestamps’ variable is set to a non-zero value.  If
+     FILENAME is ‘NULL’, then write the history list to ‘~/.history’.
+     Returns 0 on success, or ‘errno’ on a read or write error.
 
  -- Function: int append_history (int nelements, const char *filename)
-     Append the last NELEMENTS of the history list to FILENAME.  If
-     FILENAME is 'NULL', then append to '~/.history'.  Returns 0 on
-     success, or 'errno' on a read or write error.
+     Append the last NELEMENTS of the history list to FILENAME.  This
+     writes timestamp information if the ‘history_write_timestamps’
+     variable is set to a non-zero value.  If FILENAME is ‘NULL’, then
+     append to ‘~/.history’.  Returns 0 on success, or ‘errno’ on a read
+     or write error.
 
  -- Function: int history_truncate_file (const char *filename, int
           nlines)
      Truncate the history file FILENAME, leaving only the last NLINES
-     lines.  If FILENAME is 'NULL', then '~/.history' is truncated.
-     Returns 0 on success, or 'errno' on failure.
+     lines.  If FILENAME is ‘NULL’, this truncates ‘~/.history’.
+     Returns 0 on success, or ‘errno’ on failure.
 
 \1f
 File: history.info,  Node: History Expansion,  Prev: Managing the History File,  Up: History Functions
@@ -588,32 +623,32 @@ File: history.info,  Node: History Expansion,  Prev: Managing the History File,
 
 These functions implement history expansion.
 
- -- Function: int history_expand (char *string, char **output)
+ -- Function: int history_expand (const char *string, char **output)
      Expand STRING, placing the result into OUTPUT, a pointer to a
      string (*note History Interaction::).  Returns:
-     '0'
+     ‘0’
           If no expansions took place (or, if the only change in the
           text was the removal of escape characters preceding the
           history expansion character);
-     '1'
+     ‘1’
           if expansions did take place;
-     '-1'
+     ‘-1’
           if there was an error in expansion;
-     '2'
+     ‘2’
           if the returned line should be displayed, but not executed, as
-          with the ':p' modifier (*note Modifiers::).
+          with the ‘:p’ modifier (*note Modifiers::).
 
-     If an error occurred in expansion, then OUTPUT contains a
+     If an error occurred during expansion, then OUTPUT contains a
      descriptive error message.
 
  -- Function: char * get_history_event (const char *string, int *cindex,
           int qchar)
      Returns the text of the history event beginning at STRING +
-     *CINDEX.  *CINDEX is modified to point to after the event
-     specifier.  At function entry, CINDEX points to the index into
-     STRING where the history event specification begins.  QCHAR is a
-     character that is allowed to end the event specification in
-     addition to the "normal" terminating characters.
+     *CINDEX.  Modifies *CINDEX to point to after the event specifier.
+     At function entry, CINDEX points to the index into STRING where the
+     history event specification begins.  QCHAR is a character that is
+     allowed to end the event specification in addition to the "normal"
+     terminating characters.
 
  -- Function: char ** history_tokenize (const char *string)
      Return an array of tokens parsed out of STRING, much as the shell
@@ -624,8 +659,8 @@ These functions implement history expansion.
  -- Function: char * history_arg_extract (int first, int last, const
           char *string)
      Extract a string segment consisting of the FIRST through LAST
-     arguments present in STRING.  Arguments are split using
-     'history_tokenize'.
+     arguments present in STRING.  This splits STRING into arguments
+     using ‘history_tokenize’.
 
 \1f
 File: history.info,  Node: History Variables,  Next: History Programming Example,  Prev: History Functions,  Up: Programming with GNU History
@@ -644,7 +679,7 @@ GNU History Library.
 
  -- Variable: int history_max_entries
      The maximum number of history entries.  This must be changed using
-     'stifle_history()'.
+     ‘stifle_history()’.
 
  -- Variable: int history_write_timestamps
      If non-zero, timestamps are written to the history file, so they
@@ -653,36 +688,36 @@ GNU History Library.
 
      The current timestamp format uses the value of HISTORY_COMMENT_CHAR
      to delimit timestamp entries in the history file.  If that variable
-     does not have a value (the default), timestamps will not be
-     written.
+     does not have a value (the default), the history library will not
+     write timestamps.
 
  -- Variable: char history_expansion_char
-     The character that introduces a history event.  The default is '!'.
+     The character that introduces a history event.  The default is ‘!’.
      Setting this to 0 inhibits history expansion.
 
  -- Variable: char history_subst_char
      The character that invokes word substitution if found at the start
-     of a line.  The default is '^'.
+     of a line.  The default is ‘^’.
 
  -- Variable: char history_comment_char
-     During tokenization, if this character is seen as the first
+     During tokenization, if this character appears as the first
      character of a word, then it and all subsequent characters up to a
      newline are ignored, suppressing history expansion for the
      remainder of the line.  This is disabled by default.
 
  -- Variable: char * history_word_delimiters
-     The characters that separate tokens for 'history_tokenize()'.  The
-     default value is '" \t\n()<>;&|"'.
+     The characters that separate tokens for ‘history_tokenize()’.  The
+     default value is ‘" \t\n()<>;&|"’.
 
  -- Variable: char * history_search_delimiter_chars
      The list of additional characters which can delimit a history
-     search string, in addition to space, TAB, ':' and '?' in the case
+     search string, in addition to space, TAB, ‘:’ and ‘?’ in the case
      of a substring search.  The default is empty.
 
  -- Variable: char * history_no_expand_chars
      The list of characters which inhibit history expansion if found
      immediately following HISTORY_EXPANSION_CHAR.  The default is
-     space, tab, newline, carriage return, and '='.
+     space, tab, newline, carriage return, and ‘=’.
 
  -- Variable: int history_quotes_inhibit_expansion
      If non-zero, the history expansion code implements shell-like
@@ -694,24 +729,25 @@ GNU History Library.
 
  -- 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.
+     line being expanded is subject to existing quoting.  If set to ‘'’,
+     history expansion assumes that the line is single-quoted and
+     inhibit expansion until it reads an unquoted closing single quote;
+     if set to ‘"’, history expansion assumes the line is double quoted
+     until it reads an unquoted closing double quote.  If set to 0, the
+     default, history expansion assumes the line is not quoted and
+     treats quote characters within the line as described above.  This
+     is only effective if HISTORY_QUOTES_INHIBIT_EXPANSION is set.  This
+     is intended for use by applications like Bash which allow quoted
+     strings to span multiple lines.
 
  -- 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
+     arguments: a ‘char *’ (STRING) and an ‘int’ index into that string
      (I).  It should return a non-zero value if the history expansion
      starting at STRING[I] should not be performed; zero if the
      expansion should be done.  It is intended for use by applications
      like Bash that use the history expansion character for additional
-     purposes.  By default, this variable is set to 'NULL'.
+     purposes.  By default, this variable is set to ‘NULL’.
 
 \1f
 File: history.info,  Node: History Programming Example,  Prev: History Variables,  Up: Programming with GNU History
@@ -725,9 +761,8 @@ Library.
      #include <stdio.h>
      #include <readline/history.h>
 
-     main (argc, argv)
-          int argc;
-          char **argv;
+     int
+     main (int argc, char **argv)
      {
        char line[1024], *t;
        int len, done = 0;
@@ -816,7 +851,7 @@ Appendix A GNU Free Documentation License
 
                      Version 1.3, 3 November 2008
 
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
      <http://fsf.org/>
 
      Everyone is permitted to copy and distribute verbatim copies
@@ -825,7 +860,7 @@ Appendix A GNU Free Documentation License
   0. PREAMBLE
 
      The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
+     functional and useful document “free” in the sense of freedom: to
      assure everyone the effective freedom to copy and redistribute it,
      with or without modifying it, either commercially or
      noncommercially.  Secondarily, this License preserves for the
@@ -1302,7 +1337,7 @@ Appendix B Concept Index
 * anchored search:                       Searching the History List.
                                                                (line 10)
 * event designators:                     Event Designators.    (line  6)
-* history events:                        Event Designators.    (line  8)
+* history events:                        Event Designators.    (line 10)
 * history expansion:                     History Interaction.  (line  6)
 * History Searching:                     Searching the History List.
                                                                (line  6)
@@ -1321,13 +1356,13 @@ Appendix C Function and Variable Index
 * add_history_time:                      History List Management.
                                                                (line 16)
 * append_history:                        Managing the History File.
-                                                               (line 28)
+                                                               (line 35)
 * clear_history:                         History List Management.
-                                                               (line 37)
+                                                               (line 39)
 * current_history:                       Information About the History List.
                                                                (line 17)
 * free_history_entry:                    History List Management.
-                                                               (line 25)
+                                                               (line 27)
 * get_history_event:                     History Expansion.    (line 26)
 * history_arg_extract:                   History Expansion.    (line 41)
 * history_base:                          History Variables.    (line  9)
@@ -1335,14 +1370,14 @@ Appendix C Function and Variable Index
 * history_expand:                        History Expansion.    (line  8)
 * history_expansion_char:                History Variables.    (line 29)
 * history_get:                           Information About the History List.
-                                                               (line 22)
+                                                               (line 21)
 * history_get_history_state:             Initializing History and State Management.
                                                                (line 14)
 * history_get_time:                      Information About the History List.
-                                                               (line 29)
-* history_inhibit_expansion_function:    History Variables.    (line 77)
+                                                               (line 28)
+* history_inhibit_expansion_function:    History Variables.    (line 78)
 * history_is_stifled:                    History List Management.
-                                                               (line 50)
+                                                               (line 52)
 * history_length:                        History Variables.    (line 12)
 * history_list:                          Information About the History List.
                                                                (line  9)
@@ -1351,12 +1386,12 @@ Appendix C Function and Variable Index
 * history_quotes_inhibit_expansion:      History Variables.    (line 57)
 * history_quoting_state:                 History Variables.    (line 65)
 * history_search:                        Searching the History List.
-                                                               (line 12)
+                                                               (line 11)
 * history_search_delimiter_chars:        History Variables.    (line 47)
 * history_search_pos:                    Searching the History List.
-                                                               (line 31)
+                                                               (line 30)
 * history_search_prefix:                 Searching the History List.
-                                                               (line 21)
+                                                               (line 20)
 * history_set_history_state:             Initializing History and State Management.
                                                                (line 18)
 * history_set_pos:                       Moving Around the History List.
@@ -1364,9 +1399,9 @@ 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 33)
+                                                               (line 32)
 * history_truncate_file:                 Managing the History File.
-                                                               (line 33)
+                                                               (line 42)
 * history_word_delimiters:               History Variables.    (line 43)
 * history_write_timestamps:              History Variables.    (line 19)
 * next_history:                          Moving Around the History List.
@@ -1376,47 +1411,47 @@ Appendix C Function and Variable Index
 * read_history:                          Managing the History File.
                                                                (line  9)
 * read_history_range:                    Managing the History File.
-                                                               (line 14)
+                                                               (line 17)
 * remove_history:                        History List Management.
                                                                (line 20)
 * replace_history_entry:                 History List Management.
-                                                               (line 30)
+                                                               (line 32)
 * stifle_history:                        History List Management.
-                                                               (line 40)
+                                                               (line 42)
 * unstifle_history:                      History List Management.
-                                                               (line 44)
+                                                               (line 46)
 * using_history:                         Initializing History and State Management.
                                                                (line 10)
 * where_history:                         Information About the History List.
                                                                (line 14)
 * write_history:                         Managing the History File.
-                                                               (line 22)
+                                                               (line 28)
 
 
 \1f
 Tag Table:
-Node: Top\7f850
-Node: Using History Interactively\7f1495
-Node: History Interaction\7f2003
-Node: Event Designators\7f3901
-Node: Word Designators\7f5175
-Node: Modifiers\7f6935
-Node: Programming with GNU History\7f8477
-Node: Introduction to History\7f9221
-Node: History Storage\7f10899
-Node: History Functions\7f12034
-Node: Initializing History and State Management\7f13023
-Node: History List Management\7f13835
-Node: Information About the History List\7f16129
-Node: Moving Around the History List\7f17743
-Node: Searching the History List\7f18836
-Node: Managing the History File\7f20761
-Node: History Expansion\7f22581
-Node: History Variables\7f24510
-Node: History Programming Example\7f28490
-Node: GNU Free Documentation License\7f31167
-Node: Concept Index\7f56339
-Node: Function and Variable Index\7f57044
+Node: Top\7f848
+Node: Using History Interactively\7f1493
+Node: History Interaction\7f2001
+Node: Event Designators\7f4715
+Node: Word Designators\7f6217
+Node: Modifiers\7f8612
+Node: Programming with GNU History\7f10259
+Node: Introduction to History\7f11002
+Node: History Storage\7f12734
+Node: History Functions\7f13914
+Node: Initializing History and State Management\7f14903
+Node: History List Management\7f15706
+Node: Information About the History List\7f18137
+Node: Moving Around the History List\7f19750
+Node: Searching the History List\7f20830
+Node: Managing the History File\7f22776
+Node: History Expansion\7f25246
+Node: History Variables\7f27219
+Node: History Programming Example\7f31334
+Node: GNU Free Documentation License\7f33988
+Node: Concept Index\7f59163
+Node: Function and Variable Index\7f59868
 \1f
 End Tag Table
 
index 07325859ecdbc2d8778177ec2655c3865f20d24b..c85ebefdfb96562ecb1e0ee02daec4e005ce75e5 100644 (file)
Binary files a/doc/history.pdf and b/doc/history.pdf differ
index 3776eabae2f53434f01aea9ec4e08306859da159..c34cb771fbe47f1c4c0ce25035d26d6ee8b2e1c5 100644 (file)
@@ -1,18 +1,18 @@
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 2022.1 (TeX Live 2022)  Copyright 2022 Radical Eye Software
+%%Creator: dvips(k) 2024.1 (TeX Live 2024)  Copyright 2024 Radical Eye Software
 %%Title: history.dvi
-%%CreationDate: Tue Sep 20 14:17:06 2022
-%%Pages: 24
+%%CreationDate: Wed Jun 25 20:09:16 2025
+%%Pages: 25
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
-%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMCSC10 CMSL10 CMSLTT10
+%%DocumentFonts: CMR10 CMBX12 CMTT10 CMSY10 CMCSC10 CMSL10 CMSLTT10
 %%+ CMSS10 CMTT9 CMR9 CMMI9
 %%DocumentPaperSizes: Letter
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 600 -t letter -o history.ps history.dvi
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2022.09.20:1017
+%DVIPSSource:  TeX output 2025.03.31:1028
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -1085,49 +1085,51 @@ DC17E6EF8DEEBDABCD84172AEAE450A585EA54FFCABB66E652B885000A457D7D
 cleartomark
 {restore}if
 %%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.0: CMR10 003.002
-%%Title: CMR10
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.0: CMTT9 003.002
+%%Title: CMTT9
 %Version: 003.002
 %%CreationDate: Mon Jul 13 16:17:00 2009
 %%Creator: David M. Jones
 %Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
 % This Font Software is licensed under the SIL Open Font License, Version 1.1.
 % This license is in the accompanying file OFL.txt, and is also
 % available with a FAQ at: http://scripts.sil.org/OFL.
 %%EndComments
-FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
-/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
+FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
+/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
 {save true}{false}ifelse}{false}ifelse
 11 dict begin
 /FontType 1 def
 /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMR10 def
-/FontBBox {-40 -250 1009 750 }readonly def
+/FontName /CMTT9 def
+/FontBBox {-6 -233 542 698 }readonly def
 /PaintType 0 def
 /FontInfo 9 dict dup begin
 /version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
-/FullName (CMR10) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
+/FullName (CMTT9) readonly def
 /FamilyName (Computer Modern) readonly def
 /Weight (Medium) readonly def
 /ItalicAngle 0 def
-/isFixedPitch false def
+/isFixedPitch true def
 /UnderlinePosition -100 def
 /UnderlineThickness 50 def
 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 14 /ffi put
 dup 33 /exclam put
-dup 34 /quotedblright put
+dup 34 /quotedbl put
+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
+dup 43 /plus put
 dup 44 /comma put
 dup 45 /hyphen put
 dup 46 /period put
@@ -1137,14 +1139,12 @@ dup 49 /one put
 dup 50 /two put
 dup 51 /three put
 dup 52 /four put
-dup 53 /five put
 dup 54 /six put
-dup 55 /seven put
-dup 56 /eight put
-dup 57 /nine put
 dup 58 /colon put
 dup 59 /semicolon put
-dup 63 /question put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
 dup 65 /A put
 dup 66 /B put
 dup 67 /C put
@@ -1154,26 +1154,19 @@ dup 70 /F put
 dup 71 /G put
 dup 72 /H put
 dup 73 /I put
-dup 74 /J put
-dup 75 /K put
 dup 76 /L put
-dup 77 /M put
 dup 78 /N put
-dup 79 /O put
 dup 80 /P put
-dup 81 /Q put
 dup 82 /R put
 dup 83 /S put
 dup 84 /T put
 dup 85 /U put
 dup 86 /V put
-dup 87 /W put
-dup 88 /X put
 dup 89 /Y put
-dup 90 /Z put
 dup 91 /bracketleft put
-dup 92 /quotedblleft put
+dup 92 /backslash put
 dup 93 /bracketright put
+dup 95 /underscore put
 dup 96 /quoteleft put
 dup 97 /a put
 dup 98 /b put
@@ -1184,7 +1177,6 @@ dup 102 /f put
 dup 103 /g put
 dup 104 /h put
 dup 105 /i put
-dup 106 /j put
 dup 107 /k put
 dup 108 /l put
 dup 109 /m put
@@ -1201,870 +1193,9 @@ dup 119 /w put
 dup 120 /x put
 dup 121 /y put
 dup 122 /z put
-dup 123 /endash put
-dup 124 /emdash put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
-0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
-51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
-7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
-E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
-0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
-C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
-569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
-24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
-2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
-8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
-3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
-D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
-D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
-03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
-767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
-8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
-DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
-94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
-22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
-72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
-8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
-344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
-64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
-07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
-1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
-78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
-CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
-7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
-BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
-4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
-5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
-EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
-EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
-4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
-0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
-C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
-314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
-DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
-EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
-DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
-DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
-7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
-1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
-69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
-EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
-7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
-CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
-38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
-22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
-0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
-BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
-4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
-3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
-B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
-15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
-849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
-FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
-4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
-1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
-84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
-7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
-CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
-4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
-3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
-F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
-F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
-DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
-D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
-56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
-8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
-59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
-49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
-87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
-8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
-C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
-D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
-D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
-F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
-0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
-5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
-229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
-17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
-01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
-F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
-3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
-689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
-4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
-A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
-DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
-364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
-7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
-26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
-43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
-8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
-C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
-94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
-C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
-B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
-4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
-7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
-204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
-B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
-7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
-279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
-E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
-CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
-65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
-BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
-6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
-B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
-63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
-4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
-A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
-67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
-DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
-5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
-C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
-9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
-B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
-963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
-D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
-B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
-72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
-B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
-8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
-3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
-668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
-ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
-69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
-C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
-3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
-407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
-11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
-2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
-4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
-2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
-9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
-CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
-DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
-0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
-5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
-9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
-EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
-09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
-2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
-AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
-324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
-486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
-EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
-52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
-9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
-4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
-B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
-BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
-6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
-B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
-16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
-E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
-546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
-6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
-559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
-C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
-ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
-04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
-7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
-8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
-A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
-94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
-C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
-41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
-7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
-18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
-9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
-E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
-5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
-4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
-E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
-9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
-89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
-7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
-AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
-3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
-61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
-F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
-D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
-652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
-07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
-6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
-EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
-BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
-2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3
-9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B
-B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E
-CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E00091A2315EA8C071AB631CCD
-04C3EA77541646B7F9D70B7EA564D92A65C4DED8966517660EFB9F77E172CD8F
-1B5FA83270898C3709DE964B0C4A899418435F92C13E94F5C1C5B9D7DF3E8793
-5F9E83CE1430E3EF275C26835080FD2AC78DE88BF65298A8EB4181F215181356
-A09245577F997AB5F23F31DB7E081C7385F461B083E96E3F08890BCEFBFBB6FC
-E597C3F22E0F0F7B6A93C55879A8EA022411E0C1864E987D2F00CE0427E4E8DE
-D92F9621E3F7751A3CE5CF1EC306A78C0D1CC6781A016A285C0D195E17B59A63
-C593D2DC78B6071636FFBF968B8E7970871E4B60DF79B9BF341528C4F0C5008F
-191FABC891AD46A68212B20FCC87E25AE386DFA935CC1563EA96F1339B6CC859
-CEA88CCE5DD0993F19E3902D9683ADA47980535FB5597CF57C046C48E0D0140A
-C40AF806F16E94FA0C046C0F32AB5BE121A7157A42654E7C1FCBA31379FDA9F7
-BFA8A0D0384D3B29B9DEA1500AFBE314EF78B201E5F679AA38F12A87D1E1512F
-F71D12EF75F3DC48BD8BA01A6D091F0C5B2B961F4371E588F79C825EBC124C1C
-E334BD4714EDEBB709068CE0669738B49AF675692317C3E530C6AE57CA21B59A
-0B542AC77FF404DEEF116796DFAF46DD8C9290CDCA4A16FFE88A0D60ACD6CB47
-440014F30DA7C27C199D99A1E6D89D0A0C31CD1AD4891668DFF5FFFAE992F10E
-C7B88872E9AC808E0663929D199AB424136E03E284D8F44DF9235246B9D22C9D
-79BBFCC936171A58B943DF0EA5ADFE2818992B46DF97AE05915E078FD6AAF8B7
-1047AD85A1CB13CAF70D095264B8AF9A3FFE6A603B10EFC6A20DD56A9947DC94
-06DE0A6AC5B655C71870FA1BA99322E51D46A52D3E7AEF8189C9F1DE58AC9833
-7B325CC59375D0F61488AD740909A855DC069F260A465080F5570CE7D41CBADA
-47C1AB404D32CBE9E1B8220A27C8003ADE08A63AB714709CE4312179218E4924
-6CDEBDCAE80C39AC4063789B6A407EA9C19D12688DF86B62D63BC05E9D65ACD6
-CD5DBF04B896DA28B466D584426F531F4A3F9C4A717A0C5ED8C8CB4191E950DB
-CCD311A20B14B417714501AEB2F6F8510242AF91BEDB6D70B1A52B91FB3BBC8F
-A8F9731E745F2BA8ED8B00CFD8A93B2BB05DC2DFFB5EF265CAE08E9B046C3F0D
-9DD51BECA540149E202F9042A94113745077BCC293DDF27CEB36D7B0C78E1B9C
-0308C3A413492F0D59409D923BB699CC6F59285CBF31CF7F1B464AF4BC054880
-B279621391D022E71427F275BF550881FEFF31BA2071293421FF99BCAC2D5483
-B7E56EDB7929BFF410A35BC193DEB96C4A1894D3D262DDCE224ADC5C6E85178B
-40FE0E15AD22D7B2F6D066B0DB42E32B026967088FC62BF250842B195D82AB30
-4A5263BEC475A33ADE6EF9B4205BC44543AE6912F1B9BB3D694AF8E9CFA440C2
-E2CA5DD42B637763D9C96DA8DCE38246532ACA6AC4BD7B8F2D348A0A4BBFFCA3
-4CF17A22BF7AF3BC490D254639584011D9D515EEBB719246499AA89CCFBAF34C
-77541F2112ABE03FF03C5C8B2BB07DDA99390C222C7CBC96AAAFAB4EE6391224
-6BF97923CCA98DDAF09E5E01C94798C4AE609E954BF1E40330D66423C3CF96A8
-F6879E2135374C80689F757F71375E333A3582C2886F0615F2379DB47721F6B4
-04385DAC971DE716D5AA2CA014EAE9FD0859A89CC62667BD404A071154F7015C
-4E1C734081F61F33176F8805AEA5A95E427712789EF20881BAC36C6190971AFD
-B876670811FEB1DBC25014AA98D3D0D9A29CA7D853C8118DDE2DC2402DC99211
-438F8A380EF1BD24B442988AE5DD9FE3A87B54BB834F2AB8F69241E7A10559EE
-9E1F3DD7597A041F96313568639B2BB50A76FE62D7714AB955DA07C374F642E5
-2060C46160DE1F11ED73A837DEB4EF5FEF9BA654837203FE8BCEAC3F500A0957
-9E673A257569C4D4E6B00BF84FBE1A8C9A566A77B3693FD20159F95F66AF9559
-A80D47C776CD363E299BEEE2D5BB9B10B58B1AF2A76242D59997773834D8945E
-F42FBB1E75B90B6BDE5E4DB2E2FE96BB5B8E485E42682E9F4ECF97D61D441707
-9D2DCF09A0E67F4027A9D1072FA8934106E9D7156F7333342BC640D6094EC706
-5BED449D636E42046EEF2AE810351BF1E38581FC71D1BE17BA690B2567F52A39
-1205F2704B712B22C4AA4684CB74785537AE120F66EE7FBB73A8C475477E1E83
-8D6CE79D788B1AE7A159013A2E070123EBDA58BE4DFC8BB39C3D561E2A2917CF
-1B3F64217ED680EAF63F04F9415D7F9CB6A5D3E0BC2A6EA4165E69CD8F93727A
-4F4E9EDA653BCA0422BFECC33066DFDF3E4AFB32361ACA3A0C339E1B4B1F99EE
-EF4C3C3ED1FC3E7078F7FE282F0F6793A4C18A484F1062F780D2947F2AFF2E84
-182DCBFBE1BA25E8346045859715EA2437263F6CE83BE0B858CEE6A5CAD60BBB
-45723E3858702B52B9AC50EA918DACB15EC541ACDF19782024143AE9ADC39A0C
-AF0B2E4FCD4E97EB36923F31341B9D72B917711F55F4ABE40E6B5F732D46C76F
-02BF82C68500194FF7CDEE3CAFE3316C4643295F769C4BD964C3BD4196F7DD45
-EA2E80DA6C2B8A23DADADD50BD28E2DD1BE5852CB88CAA6FB71C40F8EECDA3BD
-CE874BAABB668133D5001FA651BE928981AD1A8D95ACDFD83095F12B3E460DF7
-2B68B2C84DB441EB1ABA2DED0E9BF8A04B1572284498AFA3F6DBD1D4DAE8D4EA
-877B0AF0944DCF4B6F6B55ED1D99ECBB2A7393DDB4634FC166A47B4D5236C543
-F066200A255781DC3E2E583A0288C1874BE8C25A7C13214A79DA8062B0274429
-57264A9AD87F246982C80FF9E34473082B8A836A0C83FBB736DA740688432090
-3EC63BE175131C8CC487F76FF44F247B7951454D01876332B4DFC27CCEE5476B
-68B432744A0C3689D1D79F2B876A30975783B96F904B92F39D2D3FAE7ACB1DFE
-A19A42AFE6A2318B0E3542440A40A69FAC261313DAF36C61FBA307C908682BF6
-658BB9FAF140EE91B182D763130FCDF172B811359D669E86C106679FADF3E2C1
-F83685B6CA73CB8E1D58323B6A733EEEBC0323A6F23BE68E5977EB3D881522F2
-0E49440AF248939790089CD9615F24D9370355054A7077585637E6D80E13574E
-B802422BDE06ABFA0D1601D78E215DEBFEA118A5CB82E68C5EA656FE97A5E1AD
-01A8CD577848C5DA4B9D780BD1B0B4362FA271BEA800890613D8247171938596
-CEBD54A77CA281A5326F2E6F6111C5CB507FF35387ED3D870BEE3C9F06E6E756
-7E84D952B39B49905AC2C1BFF606AD3C07E45A768BA1969F865C58F3455FA101
-2657884B120E69D4D515F8BED9D9FBE928CEAC720A707BA004D95434D4236957
-86A7AB03ECCC79A9D33039559291483B27C66EFF11B3540F7A0E8716584BB29C
-EA6259399E5FE1962DCEE55E4AFE699A7BE7E2C5081D6F025F66E4A236E95C01
-9ED2BC2B369D0F7DBDE3F53DEF90FC9F29DDADA413EE3589BA2C9B802F9B5F44
-E00109A44BBAB43AA4E86B63C6E1FE10E8C7049EA6ABAB908C0386FC64BD8C6B
-BD8A089A521EB06ED2F433059D5AF5B4E1E86D6F0ACC65A5AA9665651E82F38F
-10ACD33897B4612A7D0E08C92FB67193C5F16DAE8017F3F246E509422F8AA656
-ED88EAE8608354A2F6334559DE541445AC1EAB60FC9D4A66110AE5DED90584F3
-EE278836F121144C3038D3B47D9751E0E2285085544558F53464BD908A71B94B
-57A71E94C110C8D8DB565A8C6E527BF7E7030848FD2BA4E6748459CB4ED3D0BB
-3017EFB793B2A8627F7AD99A9602161C8FA3B0A8B89334D2082370A87CBBF01C
-5F420760AB1F70F2794B3C98CDB70BCD5F437BF4593B1BCCFCEDA9577FB496F3
-7E86D7D3235A4CCB9D4320925AC726AE1A27113235E24FAD6CF43365609990F0
-466CEE79F0C0EDE02D2102CB024C9DD90E9863AC9F2C8A6E1ED0C4A2193103BD
-C2426B358A2CD7ADC8C1F875D672E220883FFED285666956EC8CCD2F6D5BBDA9
-4907A3E13EC09DA98DEFA48721B1B1E140ABF1CCECC3D17D364D5CE4021B8D28
-546FAEB139027DEF6E4A11312A6357B25B6601E8F6816C413BB16D9CB7535E89
-3CDCFD4A08C51D5310A114E474CF1C48B06C87FBE85E2186D1B8081A3C9BFA67
-6CE5AB3C5ED7539F05344A2A061F5D409EC6D03E5769BC69C6BA042714A6DA0F
-890B03838426C5C69D393469CD8FC4BF4C5D7BAAACF20F905FD7BC3246189A36
-E1EEDEFD3F488362478967755E9C2476A76E8197F91F855586B9D8D8E79FC4F0
-66C4D6E151ACA5B821C74BE4A19E86229BFCB3EEF07A2F6DD59F4CB5511FBA40
-378633B1E5B6040ADCBBBD31C7722A828642A38E80A42A90A1984881D9107671
-91F2A5E50887AA1B0D3E96673A3FB85D73EA75007D7E30D21C54FC8224944F8B
-6FF866AC71499C6F5F38A54EA4269AE591E9BE9543FCD72C49BCDE00A2FDDCDF
-130133FE649CBA9A607428F71FD761EF81046CCA214F7DDCC1A0BE0EFC7B05BE
-85D1DF5606F398DDB0413766DDE50E614EEEE1EF52500129D3C6E25E09B7594D
-E5F86EBEDC9A262FBC012BE5E4044B64E8F86327FB10EE5AF01746A46971BF45
-73A7804D9FBFFC791A2B38674EB34688108D1A05C6A58117CF47CE531FB6B84D
-7419C0C6A3E29C6BFDD122FB1D4675D2510F27032BCBEC6BA2705EBB37367CDB
-40EB8C8ECF19E2B507FA4B64F1C1293578380F289D6F006E78428669BE48730C
-9DFEF090304F4EA254E12F422316BCF1D3BE6FC7DCCF5963A646A909380BC6A2
-32B67F5C312FEA9A1AC7281EFCBDB4D7ED9FACD9616DBC2B14D513BBE956F29D
-191748D03650D722C48A49F12CA6A7C5E211E526AA7071D951511CDA58BD0CD8
-A6F821F4D20C219BE6DCBEC9C04B61CD7EA0BDC7A528FBAF88A5003DEE761F17
-32A465D05343ECCCDBBD9E410084DE2EA145AE58482B5EDEE78A4BECCA5D50E1
-FE61847CD91FCFA32C5D83F97651FBE30DFD72BD9536641298F062669FDD8FF5
-06F837C2927B3DAAA6EC88DDF23FAC5A77A4D79E4D6501288458897E6682666F
-C94EA8ECC173CD268236D759A04337A123A5D499CE0328168B6B13E6470200D0
-725B87023AEEC48256D4ADB2BD7B6C960F2C6BDE3D2DEED6EC5C270CDB33195E
-78CD19CCE6A80C7495628B11355F2E560721C29AF77CC7CB9B2B3EE5DBDE2185
-47ABA4CB28E69F351FCADA2765CB7457DA00A683EB485EACB21A3D72CFE027E7
-3FAFDBA8B5A44F46F817690D484E5F57C00B139B5B8195701CEAAD3E0C4E225F
-369AFB09115B8CFE8B09A31AA43CDA4F6A70C188183A7695DFC0E6FE024DF9A7
-796933FC2F94A70B64576B8DFF20DB12888E0C0E6C69EC10A3787DEAC56DFD0B
-9DE60C1081EC41D49B63C8E93A29657DD944093DC8E43BA31396F7BB08D6A773
-5E6DCF48F5FFB922EF5C084592914AE4D236F9D227CFC55CA687F1FDD8BA31A6
-309110D25EB61F5882A6B3326D3FE04099B986DFD407D75B21DFCEA02551CA95
-2C8A9606039BF8C268CA3F761274457F6E08260529E8EA65B16BC30EFBB1FF0B
-181EEED4230A43529E2D95E7ED03CEE2FEE295B1616E6DA77F50EF6190702BA6
-B0DB00F3AB9ECD4561DDFC45B4FCF78F81AA3132C273F4FAB4839DDE5644DA35
-1504DABE027DE826F331F655E28D7EF3BD8848439F4A265D5F78A20B8E626DF7
-684B174333448C107EB6937F8E9730A86EBC26D86415EB8B2EAE82E384882822
-C03090F25DB59F163596547E62A25B4C5A514447522C9A2DBA21023D31EBB946
-51DD3229B562ED5604E4D85D54D17EFB6A03AB5C59AC2E1FF5FD951BA5F85419
-90550337BC83F44C4C503609AAF3EF76845C50744FD18571900164DE71BD06C4
-CA06177A36EEA8C1BCAA73D5468981227964ADA6C27B06519421D000C0E1E11E
-B210F818665010B3E8DF82277C8B1E6BA61D51A87B0B1175E75A6A88BA55CED8
-C564F583090C12A3CFE29303CABF1E88819F226D8F29DD2C2D999A35C8121ED5
-15F7AE050E5ADFEB0F8A87065A3FED16AF811F7A74B0A9AD18F2F6F5CEC824CD
-FCA9781998B67088F5D6C0203DBD9C43D886844B9C0970DA4BA88799B4ADBE5C
-2E2B7D1EFD3FFD0FD130E544083FDE0E3793A354711F1D6CEFD8ED99CD29A5E2
-32F7B1EB4ABDBD7D86FBDD8B9D22C429F1C50277E859039E8E6D6A6F3EED2CF4
-4BD04AB88B70C071175FC6400304EA0BFBD02FEDA05CBFEC31699A0A244986C4
-C688E733DACD7775386DD2CE86716AFB5EC33EF1AB10E63C85B820044A540703
-9FF2DDA0C9B0A4F90970DCDCF75A022AF83013DE7A3D9E544486225AC1601CA5
-21F356B84BD903067AF45598964A0FFB06DE209D6569D00190C0140B3F2B6D54
-C9172B77422B25001D50BDC26DB1705CC2A2C09C582E1945BF8D20208F505FDE
-DBAB67848B8F29300EACBE3F393B2648EDE71F5B3ED721F81807B7624A7D3B75
-C458A8211FC0CBB1D2125082EB9E0A37E468F2FFD1866862D3C3A2CC9D8FB07B
-0B457AE1A3CC54474A1BCC93CD21BDAC95A36239DE043A431839263509389733
-79249412851DFCFAE1B2163738CA5DC64AE5322FECD2F1FF852554292DFEF94F
-BE8ED5A3E72E7F8DBC91EB990D3C055E4C91990D389C511747D8D7F7BC33B34B
-F3EB81905DAD0E88A31C0ABB4CAE612F7911E9D338F3F5498AA389C20F30EB11
-6953F4AF288850CB7425349719DEF18A290CF40B27D625207FAD6557F80898C2
-EC247A4FBCD884C459DBA0D3A083EFF8D0A133C0597CE5B2B803933530EE1C10
-A88C85564AD8F7CF7BE09AA5406917E26937AADF884723F1BCC3D5B4171074B0
-B21AE144538B141791B901E3A12E7B4C26CE3ADC9E2A80305F6B983F8B3262B7
-23981BF5DB92443B3CC866C0D17136D3C045036F2C7F39C33536E4A09F76700A
-E1CC6880D251EA090FB88F555FCF201D4707CC95169F6AB9878A2D342DE5BB38
-82A2F02186490DC055DF783118EE78C1E02685E4F05A0616CCEC0DFAA9ED09EB
-847E2F9911D2F5276538A481A17A8E9B2A25D63242918A78F920660B2D77B7C4
-12DF7F369BC3DB114A7E9CEC7993598FD71CFB92DFFD8359E22AE1B1B124A856
-EC29D9F05A660506D49167544588FA9BD8BF8D23D9CF6559180C532680B1CAF1
-9B776E24F1F8DAC95083EEF00EBBD775619173F7CF4139C45804C23C0C736414
-303C465159DAF5CB5153D9A6638C8E31CDAD0907B6E4BB41555F8E0FB5B799CF
-BC46A80CD1D14ADCC7EF0D2E16A955CEAAAA7554C70D27328B4DDE0EB50DD8CF
-62E2A4A40740F5A13DFF032AC5FAB6EB0AC3F6AAFC32F0AC635323538E91D8C3
-FE69E72F66ACA72F289FE2A94B699958F5123BB7864AE46E1C2BDEA67946BE1B
-2A65EF0D2373B40FBD107E619AE03B2FBC3CD29FF68BD79F86CC6CEF3C354C3B
-08825FC1A96E2A993EB37F8B2DF2FBCF2CCCFB032351AEEAF24950E8F428FC67
-A6F668B6F8956411E70AA3224B7E24FC18F0E9251DC4E7FBF2FAF57125576412
-33BF3AC7B1EE19C164525EC17483F68ED41CBC6182D882799DBEBF250E9334B9
-1E201D5D08BAF01FAEA5389AB934479A29BCB99F3CF8D9FB5022454C6A9CBBF2
-05EC3BC73DB4AFC552B8148F42774AF8392C5CE42EEB1780E003F7F5D61265E5
-EB18F7B139EDA4169FD97593C10CCCADE160437ACCD537FAE3BD1C0C10A6663E
-ACA01304DB5EDBB612BF5DD24CCF6D1362278B3BFEFEA590B255D2DF95AE4193
-3F33C268C47B75B9D008B9F5E17E7D13EE72C1030A05AF676FE29368D4847055
-B8EB37074295EE705B9EE6229155E578BEB24A8E0106D20F475AC4B6CED93D40
-CFCBD74C0551A1F532F2E19923248030F3FE1A717B9A9AFD494918300A396DE4
-3A2544B6C6A8D8FF2E28B4711AB72D25791B8E8FBC57A698AF3CC9F17B18F07F
-A86CF80D0F4ECD065A579743FD7974877360CD910B1E7BD3099B4036D6FD0BC3
-A80C96598B59B8AAE0BE7578B7A68258A1F6EEDB774FBA7FCB4952F90705DD5D
-F8A0E1B6FCC7220DBEE1582A9168571A80D95C939DE1A3A404DB4328E107C672
-AE8122A745C918280472EF626D7137AC72E88A296174E5CAC33E59C955A55A2B
-49970C8D84558F3CD22F53942959A830FF71FDAB7A73E0F64210CE46818A781B
-071FF5CDBE768ECD3D6D1BD52856C236284B4C0CF40E377C694D74D165A61DB3
-192E4D4C197EBEFCBAD48CCAEB50AC8A4D52C2C1E7A4930768FE6AFE6D286F70
-BFAAC5295CA89B6329FAF994B8013868A7E9F5C6D6C71D667950996C2DED0B80
-7F0A8F1A525397D9A41AA2934D3B8C2441C010888154A14499DC6D3A0F0C247F
-37D8FB45847AA94F37C8CB299D24F608F01EFF597BC9026724E200BC00629354
-21B2736A497796630DE340AE317E2B04F20482EA0206D01F90A83B7A56E29474
-5F0196DF23D2E8219E681908BD6D2074794C620B2330FD5B0E6AFAB092FAFA45
-BB2ED8599166A24DB77ADC449699547DA0B6683BC153135FFE59D9E650E78518
-CEB174C35115A94B8689B16AEA36D25A49B694D5B72DA72568D8FB2E10878B93
-88D754D6EF8E035ABC26382C2FA13A75040A1B332C050044A81441238859D8A6
-0A33E2DB068D8F32D3047EE64E31A6E79D9BC344A8B498823519372F5D9E3310
-7809F989C979BE5ED9F8E2CA6E0FB8C68B39BF957C8E425860D6B1E75DCA7867
-E044250791F3757D649BA897246E233A8D7B686F137EEA37251001F008DE01DF
-BCD2443819603C03EA1301E4D809B32DCD2F525EBB839469D0F764FC978D82ED
-AE597DF1EB131486B00F65BCC29396FDB8F75728AB03E71911C74E5DA6DD6E59
-8C4B1F45F77854B200DFDB656898CEDE1B7DB619B9BD75B90C075FF88E1BD95B
-5314EF039611A4A793C31FF4F2FDE7FE3F9A51C6DA4080A7BC7DBB1D7723488C
-E668E78E025B4D2F82C5E663B02C5024CC35459FFCFA5C5BE9C9BAC09020C603
-AB653316994DE4EBAE83A2BD866D392B6D46D83B9E7E0DC2AB098F7C86431D31
-D07C1F41955C777C635B022CE5F2F503D0D812B3318E9A792E42CE4926661CD2
-950F1A3855D694B2B061ED5CC64E6EAEFA1081A5CC322FFAC259C01D272C8A30
-4416D3B622EAD1D1B2B6BF7EBD395AE45922CF3956D9E9BB557E2783F5C8544D
-C3509410DCD994247B50DE3626C33650F9F76334CBDDE3E90E9D9618ED5A78F3
-FF7A6D01071AB4BA91FB47BFCBB3B8E54528E6540D75BD5EB6A4E301C2B49330
-B6866A4BD4AB5CDCD23A8BC873D212C2A6592D62EB573140A6B79EF9ADE701F9
-9D2F8A7205A36AFD20572C1A5C5F55FB8FEE492D999FDE3C641BD8FE201F7975
-2D9EA9C65979BB45D2EB33F5C3A85573834C75DF4556C6254A90C7499F684D22
-7B434CFAAF6C118DAE59E0C79F327F4D8D260D9A633DA0B02079947316C84D88
-05975C05A1734C88FB0A48BB85F87560F1BB214259EE46F5F3406E418B6EE281
-0F93F058DAD0F43B7B0EE4F7C809FFC30366560E98DDC13D82DFD58C0F8BE287
-374BD8655C4691E39F4660F5273E5A545A10BC582D0592CE2DF452D9A8731351
-54B163AF681FB97288647058DF71A290D1EA6DE31E60A4CB7DB4AD2E2928D738
-3FA9E4801278B8D78664E5E3F7691783F71AB1CB2053567466D21CDADAF4F97D
-4DCCE8DC1CDE465AF48A37E21DDF443906F91731614029D6F3B8ED69A7F77800
-F3C6ECDF7BDCD03276CC54E1237F47EAC383742E5DCE2346A715A8CA9A5BC487
-0A996E7EF0F44F349B581C7E537A3968492B28CBDBEA4CAE3E6E34550AB706BC
-220354C6CC45F3EC16CC1ACDEB8FBB25873CB5DEAF3072312669518AC3BCF57C
-500269761D11BAA25B73C1B4B0F44B1F085BDBC1F849225A14C30A9FD245E72F
-DDE99E0E31B57C3C9F3170D0CD7C5FD0CEB32A379F0AA9F32CA92BAFA82273BD
-FC8FAFDC0CBA3EB8A074F78A505A52619D5546E5FFD31640D1E14810172184B2
-2D278B5BE71360A739C949C3D4C46DB023040A993519A8F24335BA854460F51E
-777771BB912A3900BBAA2258D178BB9552FE18E4AE9A453D89A4133B5EAB1061
-6182B3C80A4CA11A7B706E44DE5DEABE7D80DEDBEDDCB304C548BFCB1A0C17F8
-06899F6C5ABC9DE62210C390C33FE92665477562A97AA07D16173CFFEC45736D
-C6451F1C6B64AEC235A0139CC8A4DC96847470CDF08CE08D0A58583884C7A35D
-DBADB9DB07C17BE52B1259DF1841CAC042F9FACCD3590104B619151B34EE822F
-B4B753A6A8198B0A2D6EE580F8C4A21FDF415FEADBE7AAE5C59508523E9BAB02
-3F49DB2E19E7DCD504944FB0FE660626A1CE5554728C1ECD6B2AEA7FE6C512DB
-E056AF6C1226A25547A8CEDE7C961B158365C99E574A0D6B81B2356364A61664
-B92D006607E6167A4002BBDF9951E8251142C4DFE4924E227CDCA028F6A42C33
-4011F0CC83B59E5852CEEDC6CAF1A94ABFF15122A698E5FB6247DA6AC6A8EC32
-000557DEC06FE0135DBC6B56CDCE6EA59764AF9E7E5AB79CC1D71ABAB2BF1916
-843AE75A64C177ECF1BFD83F713CFFB6278918624FAA4BF2B5FCA38C634E550F
-FA25E51768F931AB7D2C2E3000FCBBB1B1E22E7381A53C358AB4AD42EE7BC991
-913C633CA0EF25B9230CA9681B91D22880BCF44D4FEBF6F132FE120EBF104761
-6FDAFE8F33FCD2248B12B8BE283B37089B0383745324EE468DFBB3926A30F4F7
-6AC4B9EAF19D663BF1DE3B085ED88D9CFBFB36C2C53F12BB1FC55E3234A68C3E
-D6EBA530B8D23B99D098521DD3F1005D4F5E4E333E50C5C9F607D551019B0110
-2B8A931F27824ABF72C26615FB82859E6D527694EB41A17F6B08C9BB329AB6DA
-16D9CDBB7F00A0286EE119E7AC89A959EB16D9D06D6149D0C073D771B67E7BB8
-CBC6A3FD291BB1EBDC68428214BB371996544FF8A4F38A672AF2DA2F820437B5
-AEFE65350F6327F1772C9C9632A517A0EF4CB5C7ED1159887BC65C4F1311D1F6
-156964E2AF01F91CB4DF824AB0B3409908611FDD799A12C51B705E6DAD1BA8CA
-F0066A66C20A8871EFAFB0BCA7A22DFEDD54654E0BE31767BAF9CF894B00B435
-C9FA8F63F32FC2F23C80640C0CAA01BF46FADBD147DFCB10B988ABA1F2169AE0
-65E5779FD0FABE6A8C60F166CC1C8EE6EB1532A8491FBF84A824125B436E455B
-01C64FB89ED5AA77CE3148C135D76837CA45E7EA92EC857AC3A5B723DD7DC830
-CF1458512499217162FAF4EDCA0195A42EE1721482E56028B4895ABFFECE721F
-CA5FC8BE5DB4B7C6D026BCAA58AD7B9BEC349E395E16B897AD1404C27F0FDC9B
-5F706354C2E2F135E3A20B450D6788FB9AAAFDE95813AA09AFE116EAA7B9C76C
-F3D61AEBFEADB20580E3906E72F76CAD27D854381A10F56FDFA77EA5C8B15457
-E6278FA20742413B0BC95C1AF12E948905E2D8501E81BCF4095EDF9B941E1AC5
-E2B9EF45599AD38DCBBFCAD80405659D828DAC269825271518AE3721585DB57C
-520FAC927E8440B8306FDF0D2149B2CEAA73839A16681C6DDB6E596446B01BD3
-DF66AF8D7B391472DFE40B13BCD9C03A46B65814E06C2332404C4F1CA8D0EDD7
-37ACE6CD13620B84A3A80A122620E57E9BD33FAC8F2D9569A5AD18246A720B0E
-4EAEB68D73EEE587ABDF93F8684157595D5299CDCA11A72203B664C505EC8B17
-49D76E555CE3DC2DAD377D04A854B7A6066E5824CABD48C2F5585C4187AA81C5
-BA883542E97C87339B34823A5E32C83E1344D6D59AB2C64C6AFCFEC6767946FE
-001B6501171FB0AFD07D20840447E9F692A88C8162DD8E753D1D984B1893C019
-691930563E2935E4AB3DFD1437F4A2741636B5CC2AAAC5AE74E5181D28F643F6
-9DD08F5A28921CB8384E43532B16A9AA64A4537FFD1ABAB417CCEF27F373B58B
-2D0C78D40078B03AC3DCEB3922CBA12BC4CCCB6F3972AF9C16522E6B05D68B3F
-FFCADA33B2A7CF4445D6DC0E94BB089CBEC2A1603BC6F704C9107ACF0FFE1C07
-319DB0DABB3F3317E0CA977E70FE310BBBCA339ADE39E17A0E0644A9155ACFF1
-4E1C8FB9EE6E917E0830CD37498E3DFF20604766D25925576B599ED7997F272D
-11F53CE4000FFB0E89506A2E7B3CD818309F586966AB21C6226E70297FD093A2
-0A0DE3BEA5A2841C59DD1A48555235CA8B2654413E13EFCEC9C3D1ADB555EB22
-BD634C01514D76EEC3181A14C5264F5DD143A21D3626CB611F9F90D7BC05AEEE
-9F947743CA9429F2BBF30176821365D15C419B27A085DB7CE7BDD6F28ED3BD68
-6E91938951303521F260F7C1636A39726E03C0DF3A08942DEB17280EAF7AA849
-66F95D56116501CDA299E005A7D303BA09E9033CF45C0469593C7AFA2A5C9F03
-28D64726083EBFCF05DDE3564BB12AC5C90FB0786153D10DDDBBD41269FF9537
-836DF30F71A587A3935D91E24EB56403A2A4F5C6E995A89AAB2A42EDF8586C81
-52BD65DD33C8B10AB18FA9F93895FAA1639A62D553FDE5F976CBDB5059F099E5
-91BB6C1489F9C66E2FB7ABCC579FEF05E75083FB02D8CD2E4C37D438CB64B920
-81DD594F55047309C66258BEB1108B4A52A4AC52384E2861DAFD6DC2B0A88F6F
-0DAEE75B35222DEDCE1490BC77F808D56985E390AC2EADE948B377E051B2CCB4
-2CE6D1A8B6C56DFDE8874773C8D9E8EB0BC66E3272E7970621DD41103CC78165
-CE745AE462BE3CE12765A2353D89AD2B2C74658C5BF922A3A2E4E5FA79111525
-01A082205FC54279ED5F656FD80EA1E3A988E7EC83CE2439D8E9D4EA2EC6A11F
-DA81B6B259503BB7F66C3373A40AC6474A85B71B79A66BFA105EE8B90B1C204B
-5DC2D4EB387D4A1D36AF0AB4C2B20D6B06206DE70805ABDDCD7F1A9A6C3AA5EF
-1E59AD9703BF74A032B5F458A4B19E296D4770D7315F05877D1D9346DAA742BE
-C941D937156610F1075661F679BD680000E6F210DCBC2508D4EA5484625CFE83
-774073B2BCA4BCB71E64B3755E69BC6E39BF59341D3FC71BF0A97D3F139A9765
-CEB0FA137A1AA226BF329CBF14B1C509EF36D417D4993DF331BCB79F29267291
-D9523735BCFB3837839F26108BF833B1E3E4AF576A2045289860E7ADB936DDCF
-818CB035558E4C444D06C74D5865768C9CB901EFE53A92CD2EBAEC0A8EB15EE7
-867940DE7D7B61216B67FAEE1A72C06A916F3F2F7D766FB3ED6BB50A02550B25
-9EC6E7B65CFA667A505F200DF4CF743F37B0E876A0A5A6742A0329C9D22FFD1A
-0FE985931AD6A124A25A4340D2848230E73BC52FF698B5DD9A3DCC6B530047EF
-79BBDCA20FE02236C25BAA421995E202E09C41E24EB424EA401679B15988F8BC
-E1DE0C0838B32F0AD240F9C217F7E94118917A7BFCE878C423C0537CBA1C62BB
-3D7DE687FE49193FD2E8737DC18990772E1CEAF4FC5BEC50BD603CEA326E948A
-3ECAFCCF56346F9DCDA5C70AD7F1ABF751AE962CEE507A5489D4E86B512B53B8
-40AEB1AA263944CFF84D5D80CCB63AFFEF8026FD69BE94BEF7D15E07062B9F5B
-43D7420588F26015FD5E4357473C1853C4D600579BFAC96BA963DDA2AF04FED1
-2244E91B8A097AE961F45685B9159C8A1B14D25672740B5313F18CC262992CDF
-4E50C76B74C198955DB662569CC9C18432B448CAC4F8C64A3A80E7336EB29BF0
-9BD4BDBBBF1C05868296DEE024548D3E52DBF0A00897CC9E7A0AD30AA683A898
-6DA657559DE0EDCDC82986200485435CBED48A4A5B9B4416941A737DA4A43865
-50900743A13040965178B71853D2194E73C6BFE4FECBC76030FF25448D623DC2
-802B1CDFF958690833A7AB636B30475C54F34944976233E0AC952CE4593E63A9
-A5CA3A8AC18E53B37F8E60A3B8ED4FDEE0FE5A69F280CBD531DB0A9E36A1D80B
-19AA485604F64F7A2F3D0005A55927A7C4393190A09A3F386170325D427D01B0
-BBF1D02BED32E5E929C9EA7B8273C34BC5FA1CC076A0A4D42ADE112A24EB4CF7
-39F7CDD3F0337C0A70EF6858DA5D76694B7870C2FF84BB2D4E8D4CCEFBDD8BFF
-E650DB24EDC4FF041C21769FA7C15374F938467B46E518F2206FE3C70851C667
-D4F35857B33462A603AF8AE50E78AA616D699781FDE049CFF60AB24DC796551C
-D3E4B4BB39726EC682E8FEC0030905B89F2C2853D41D5D039AC6F68AA52D4C26
-217586E7CD877C011D0A0672F392400066FAEC7CE19760EA67D657FE5336680F
-6ADCE6A294F81DF1BF69AD6E55D7CFB4262C2EEC8D1348F3F707E2CA6D041AD4
-4D1F888FF99691546C3EB5E79C3B9EB73F50895B8163F80CB8BACFFA86E01CA0
-5953CAF2C7C9EC7BBC065081128CCAD4836699D30AFF499D8E00369CD6A0C4F7
-0ECD965091FDA3C2ECA853E805C5A55E36BCFCBB5EE8949C38A2D42C685E370D
-A1A9172A76874D53AA6C52D2926F5E5797B6A73B75F0F5FBC3E8D10EA913368D
-6B6ACB2DE7F528795911678498ED557F7FB6383B657D17C85B31BC06F1C0E908
-C212B0D11EEB8C2E61A929FCDC9C5F4F9EA9A1730E9A81EE313F103CF736254B
-B67AC0595FC838689E33D2F1922416B1E24892160CA8F04B502244014EC5BE45
-1D288C43D0D00FCD418FABDC7FE016A4E3586C14D22E1BEB4691D13E58C9E66F
-435A85CAE6173F3591B0FE2E727DFC579B16B2A95933E7854EAD8F8946A6E527
-E1119B0F029A1C4209F00F09E03769F00C7F13CD11B91CB07FC41BB31E6F1E12
-7917DC9E91E790B644581AB087D78DA43A621BB0C80DA75A08E09D7A6DD98AB5
-2AE5C74394B0C42BD7E7D222D3554215C6F1C04BE694B2A841BD9F606A01ED52
-B6DD7B7283C7971ABB732BF93CD11CD2C407B7F68DAB86E7DD380F8684F3F768
-692756D6879D8867870F39BC955CE0213E400EA1F40F76E46AED18C6814854E3
-AA2700D296CCBAFA4EF58C3E1163D88198845582F52DDB0641AC31FB36A130F7
-FE16F12FCB3D09E386A5DF2073C56F01A7A89346EC1DAD1038BBE20138492861
-0091D8A9F091616CCA67051700B90746423C002FDEEC4D86CB9DE72FF87FFA15
-B6E9A9B58A7CB8D98E3DAC7A522DFB45906ED1C58392C9CB204ECC263F098864
-2AD1E02CBCC95A104FC6DB30DC6A603DFFF7694181B4E64D06BFB3E19086B55F
-C653925A2678E6957CBE6F68F1DD12AFD9795072B122D72B23F0E0916D7FD554
-6DBA60BF6FB8D1A99822099BD96957381A7001EE267E773F3D9AC79460C5C092
-3A2EC8EABEBF5492AC3BA22D0D1DD5F6725D71B5B363D13F99BD08A114950A16
-C6C9B99FE48D05065AE2111B16DEAE00B1910B7CD0FACB1DDADF1E7BC57169B4
-4215A14F63A223979B6068967C045C7443BD920E8F406BEEA35897C3C9AEC183
-4FEECA6DAA76AF17EE3FFF748A2BA63DF94BCD21DFF30218DFE6B04853CA2D6A
-CC230131DB265BE32EE6D21102935D70FD223C79F7FD0926D68BE38481639849
-82FDFBA040734A19311350D7A74A895D8D45E177BEB8FE2A22B11FF69A9A8C95
-DE72184CA297379E7621F642815ED6C54100FC1613A18FA632739A5B2AD60D8F
-7B2B756528F96C86ACE4EF1BD851F72426EFBF5B70306A4BE758A15D0E367E9C
-BA0D5A378DE7EABADA5D75D687049FD5AC0033AC1F2336E5C716BEC683EFBBE3
-36ABF0B965B2317C681F0B7F4F6D8B7093855FFFD725EF4C2312DBAC2F715CCE
-0FD786A46D06820DC3FE7EF87C59D7D84D11E877808F590C5754F94C6BF2A306
-405D3EA8A1064CEBA85FFD472B72F64AEA7B81147ABF52C05D17D13AE4D32C04
-C20170DB4125F85FCE3665ECF7458169A62DA7A928AC3E58A5E9F69D2E051086
-FB380BF8E39D48D653D75C5C83B924449ADD13CA3493A7590E27B3D98D24E320
-2F9700C26E797D1F78EA39169074E365E62B9B6D730DE95DB3007AFC44086E50
-60C18957CCAF3389A18060FADA8D5C329CDB6EA2DF5C5882840A1147115ACDE9
-4357A24F095E2EAAF0D7201555687B56AD5224859203C059C63194C092DBE505
-6B118FFCB885E58F8D40988D2E14A73AA40303D6A935A97DB6A8E7D5889EB21B
-3A01063599DA829927380AD6134EF4661418DA85AC42AF2C455ABEC0413B3D9D
-684E852E69B743B1324F7671B8D75D815C2F1C425327B4410E013BEAD314DAA5
-FE193719A5BFEF3E5FAA0C5E4CA2B1EFF6CF921B56017526CC62293036F76E51
-1A999063CB2F93517614C0937BA9708728BE1C381CA8D0768EF314427A0DB447
-BE59B9A034A8296AE3F848C75784517C47D019141FABF56F2B110C6A768BF493
-BD5C38879397A86AFA7905804E2EB3AE253038E267098F3B7674C3510985FB41
-09A5E02E5F4F7CDAF6E12CB47346647A58CB05D9AFABFD5A9A538F947E205FE3
-C6480C7A1A940C21CEF21CF1EF48F15FEA6C0734A5B8FC23CB315BE3B420E65F
-AA895CF17377F0CBC197191B3CB8336A2588E8C26BC988BC6E51C67E21B64972
-7FA5F4F1E95CB29E217A4FC4998A54B480B7861400CEF84E18095C55702C8F78
-F3B8CAE65BD5F4DE369C583EAC060E69EA40F595213F8ACFBD6B55AD0F5CBCC6
-11707FEECC47B1E28C9A8CCE499E248A2B108FB29C309558F8B12EC74AD295B5
-B5E8072C15AB09FFA698D0265B38F88D0D4724528F79A97776B8BE04C29E1D16
-703A23EF60B67A3ED14EF29179FF9F719A9F274E0F73EA8CA198F7053B6E8C5E
-A912738F68128EA32E2764DE57C99080482C11FCA714412D3B6AFAE4A2C9F044
-721C372CF6D8861182DDBD2BFF1B2FCF894F0C0799DFCDE0D8083E16A855E2FA
-D5E660989B98A7A9F3057AC99B76854DA2E75E510AB2E53C6789750149DD1438
-367D28A8FEFDE2042BFE791D28ABB435C807E7B7AAAE140EB065646207FC75D4
-559CD14A44E0DF2EBEA232A4057C72C65A595905A56F2C2C0FFE326EF9B3CA7C
-C2CC7F3A8BC588AFEA2624616ADE803C1D0067463F4DD78C97D2616E14562D70
-AD7BB516183630C1182BD2813D8E282B26B18F4C1ED4FFBC86A090A036E54877
-7DBDF63E27E7446304BDDA5D5E5C2DB68374E76D698CBD3657AE037324A75E16
-B1E656932F8C7253C8F1EDC06642D8F74612498F9ECB96A9375152046C2169DF
-9B3D0654663948351E48C0EC24E9D691748DBCF758D60EA3643623C7ECE568C5
-5168171E8D2ED9BA5049018DB73E2EA3F9E60683856D3CDC4F0C930BB1B126E8
-AC776C33525BBC280FD87904D5DFEA512A3B073CBA5AC823B3B2FF68D289C558
-58553E0EF0617B4156665007C8895492F2C19AB138EEF10A977C9A61AA554866
-32F446EF885346CA0372C001223769F7C01CB76977EE84E76C178FB444E33804
-B4E72782ADE86D811BD395A15C329E11973B021C8882969DDD5F9E4B3FAB0D2D
-60CB9370DC3000772E3263E693A4699F2EE60E4C022090F4273F6134729987CC
-ECA36D229EAD946149831037B9701B0C50FE9B4304CFB73ADF8C829D36F285F6
-FF9C056045A0369FF759FFC5994DC0B40B87E547CC46274BC40823C22D90B9E9
-D01F41FC59B7BCF259C4C2E301C5F7EC3163DB07FAAFCE8F0CC08CFA7A07107A
-483779E4DD39EA89B3B9CEA198765C6A52BD80C624C3CCEF16A6CF3E21FA1BB5
-BA78FB5AA13759CE5D822DA725A07CEE1D39E63D4D86FFB30FA1D070B27D34B2
-80B335AD7C86688BAF25B2FD2910A2EAA186C500120AC2898F66AED320EC43C2
-1C9D8BE8888AB84F09D16B61167FC6E42DBBA1D3DAB971576160E8B85FF5DAAE
-F37D9872B22CD19A436BEC7E7C27DB2D7F7BDF4266E515516C0A2F8A899BB1B2
-D7D5811CE7ABB71AE427FB019D07E0BDD635D3527D677620275525781A1A9F8D
-B339C3E4D5817FEDF135EB150144EC6FDA234066FB0082C52C1A851CAA19AE8F
-A1960216743A9EF3B6CD2CA93FAA3FFFDA3D144DE465DD11AAFECDBC9A694A76
-93EE2F2B10E37D26F2CCE520D0A358E13A541CA963B239C132D1680D147AD8F3
-0E162C56D0F4D423890E36A2FCE66C11AD14B2FD4F7B84B2197AC12B49DEE166
-6C157079FB2B538817C030506C318698C10A5C4FF2731E31ECFCE48282398A79
-0B3730964A1D7DDFD6964E62293E2E6D35E8F9C9C675D95F375F4714CDF5FD59
-5A506FF7FCB08A9F5B9F3989C847C92AC53DBEAE739E2596377DC1DA1949E7BC
-62573D838E4BE9D025946E1C7F6DF511965BE847FE138E87A646FC1E1F43E822
-EE272145B75265C69C1C9D8DE3AA9F9E3DAB873A8146D7606B2DB7AD9D815D68
-50ADFB48776F11F97631AE5C59B4AF8CDF8011CC76D8058AC70C6826AE88D109
-F50B6FBA868F63EF089F428873E6E24DF8DDC504CF34862BC1E53055B3DE8012
-9F86F50B0ACD428124A97867C3B51C83929EF73E78B78F8D09A83BBE59591A78
-3182284C7035875981A4B68097D9DAB5A1901A4E398B219089554DDEE17CCB46
-94FDF29575367973279C4676D9864B0ADFCC0B2A27405B5144865352209FE496
-020017FD425F2A84A5EA6D006A4B0D1782C7C9443BA8671CCA3B30F3E7C0CD48
-5806DB28764F94AC413A5BD9DECA1B119900A82D3009499998C925377D637052
-57687CE3EF5B5EB49D49BE3AFBD8A4531606AE86CEF07E058CFDC4FD1764C9FF
-1DEC0ADC674C30DA9C9A24A4267A7D694626E9E9C9AEAF66D0381854AA05BD14
-177AC9CF2A0C0677F0B8F496F325D78AA336B04CEF7E6ADE30569A4DA09B2847
-F754A24E3309472B0B50CB43181E56D7AF316A5E9044DA230403CA6E013C0D85
-2CE3D19C611DD70D79EEF35ACEAF797AA94A6B4C52E27E140C43BCA68723F2B6
-DEAFC3117D4652F9ECE33C4C51F564C464428ED27B302750C0309EEE5FE0483B
-182F1D43D8F7B460BAC7C0D0250042013EC0C3AEB5C4FD9F882F9A3557C15DBF
-324BDDFAB515E1B069F210F96F6648A8F96F9E61A36B2F7E2E06CF67912A1869
-FD85F47B84AD9E879BC4E3C48B39138406C6A2549AEA55F7A9D79D9638F97151
-4B0C7A41AF770C575CB1327FA3BDF66D83600F1271B04D484BC4285CBD5ADF0D
-DAB6774C8F0D60DB4C25081F2B278D2C11B21501A840E68E2DA02179FCF9E2A7
-F993DA9620880EE6960274954DAC790372C9D831C4604A07EBAB27C6EF5EE84A
-0C99613EC5021DF782CE12D96EC117B8997E1BF9E783A5737BEB7306FC4D9F08
-CB92A999C8B13CD6A2695190132BD04B94222C7B60597CBC1750F4B189B9F38D
-04AE51084F7DC95A39B008CBACA295AF18F7C1FD5174F5EC78D11E1154A900C0
-EED0392B0AB46BB3993EE89F05AF25041D71C0BB35B2FF71DE9D842B9FC98CB3
-1375B5F2853D18C64DB633675D37E0550BC73A47D8A35AAE5593FC1297B21F68
-52B6FC4BFC2A4C58A8B0DBE73587DDA9E35A1E20AEA29E3E1D46EC0B6660522F
-57236E7EDC9C1F91ED36871B6802686092E5E4F98A66379DC2ADA482DB15F522
-1272B394721A7ADC446E9A5F98D401BE1DC712F010DC17845DF75737D6C4794D
-51806744F84A4D7B30B198AE46C46D3DD71EED74A96CE8791AF292F45104A055
-B651BE40EA7FB93F54A8089FD5B624DD3B7F29663229A8ACC91BB7D07F71B017
-3530EA873B77C0298087D3AE901BD59A71EFF85A8E490FF120C6DBAED5B67F21
-B8957374F7FF0C14BE5459A40CCFA987ADDB03D8F4E507554FE3ADD1301F2DA8
-BB218724D4F966CEEC21A1E28C39F3901605BCAD62E311A4AA9C295A69D51D0A
-8801A26ADE83DBBDE01D65FE1F1C26255325238C119C6D6190B5979FD7337F12
-57E2695B74CBFC9291D7DDDFEF77879C8331BD21164D5773691931C4BC15620F
-CC55C7E3B130091D42F619069B056167074173B8C19575274CDB7D2D8C1CD4A1
-2CF2DD3D8B0072DE563541219857CD8D94068C375F33CB5B028FA233064E0DA7
-4DEFF8E9789A8EC86AB9E57B3CFCFCA9DAE4E27C3DD1EE9009215B726FAEF03F
-21CD4A7B32DC8889A8E68A0D509EA68101BD2077E3AAD72C003C66C80D566E7E
-2C1A022970C6CEE4185BF6299B9025162CFBD33E4DF7246382BA2449EA5A2A08
-DD4F10D8A8617F4033ECDD7FBF55E537B099BFDB6E6884D0835E9F58857EC91C
-432930F1307C5D7EB390D8652C4D981C496F1BC4D898BB66B9CF804F7BDC41B7
-4FEB527554D00EE0EF56862355CFE59A17596CE9FD737932496C67A339034286
-62D3FB833BFA261B632902AE3AD8D199DE5CAE4627EEED4CAF7C60FD50AE68E1
-0F85D679C10C52AB4F3B8848B5886D02EEE1ADA9E292F2E2EF40EA1DFE567733
-37FA902654A3770E2F108CCC08E32E3985AAFAB55B83D5BBCDBBE61DF5E378E8
-F64BA772901333C57B6DB0EA3418A923EA2D13ED7EC9550C71B2444EEDB0BE0F
-0CB182CA3D2EAB214840FBD18A3DE5DCA551B6D4E7BD9F8B3B2C7BF11F870B7E
-B8C594704BEC50165234B6D41161AF9B8570F4BA6EAE2C48652523E275738F8B
-89C66E1739C05471C19ED3B2D16434F22C25677356EF8D0B01A6A9F427598523
-4FEC98CB244F58953AD560113C038000F8F7650C0D56A0BB12E391762B3B4004
-E2516B29F80D719E8E85014C23E59B9CBB3A966B5E83B8B51FC02F32535D03DA
-EA4F801077C94CDD2F98D1E25547659B0F528971DCEE22A88D9A1F1E0F219771
-86E161A0608C3511EB0D969E8C956E8A55B1FB3E9278845E8BA26F6B6381CF74
-9CEF69192CB36B4502553A99D047EF5251194D7E269752CCD9778123295CCE8A
-CBC1B4DC2938D076967A07155138B3E91A4AA888A09095C3D2F442F98529EA24
-7C717439B62F7F1C5D140D9CAAA94B22A8D1355E7D3D85561D26A71C826CE30F
-D7157F63100097F04F39C6FAD40ABA2F9DA78CA6E2A7324FAFEFA1112BEA7856
-F8BC9E21D32F9EB9BB4DB631DA30EFFB05CE5BF7948980CE6E29A379E6420D9E
-B2E6A8F19EC8DE7371FFE985D0CA83E6B0C25465F11C299388865CE474EFC22C
-73ECFE21098FAB65C332BDE3CD631CB5CEF22279C8CE8AD38D97EEE9E4DCC1EB
-4E15F2B38341DE20E81E8DFD504A1CB456211F8C21E806FD62807D0A4C231FE0
-09052F95B3397FE4B1947A90C596E58E0D74441D1584C9DCD1BA47737553F54C
-A119099D8EB107A9185234A613D6B5279F9DB5C5FE4377B92DE77F8D0DA00A4A
-F438F080347C01D9C1DF7BD28FC1C30B1A9B337B0F77E968C6E9B9A7CC5049F5
-56862250770FCB1F086491ABE56ACA8EE9C14DA082C0D43230D383D41256788F
-AB2EE3CA273B90F822BA0D7F1A3B2D50C6381632FF34AFB322A6308CCC5EF3CE
-BC847CF050AFF76CA1C9B049C334AFFBFBBAD19A101FC4361E51455283CB9DDA
-2145417EADFE932B34C9800758D651CCF90BFD324D12FC8616B423B08BC449FD
-03D6469522B23A7E094AE8EDC2719034941091AF269725CA0E510806CEA18BE4
-F980B58EB05E9021B10643E7CEB0CE2A42B976324DE1CF105F1CBA07DF358D34
-B4366DA6DD135F36F32387026C45C4A94017312FDA49C4E6E0F5AF2F0A9126A8
-07602AA9C8576262931EEE464E0A2787011D33F9E7C6C9D7DC0C0C5D20B8A746
-4D139F5F2B1B6E0AE059747949EDB3FDE1FE2162086C4F01720AD408DECAA906
-7586D3E2DC51D8A63EF20E21F0A5725DC80D02453DFE9F75E6EF660D9A892F95
-411B7558D3676610042CEF99261185A8D7F69F15E2405D2E5C0E452E223D0924
-F20DB835C62466FBC0A8038F3F110036104E9DC649A5BACBD568B0B85A7B64CE
-7EEC067FCC7F7E6A51FDE5272FA30847E70D319F9D593CC2EE45C83E67FA6F5B
-C7412096BBDFE81666CA8B3EE1411DD487B4CC3C3EAD104A2C9BBDCAF9D0C847
-6D2C7DF762BC3BC874B4DD3BF2BD7D0F6227FC8AFE4D568D70BD9928051EC85D
-62D8B2FF07AD099B8F879677BFD4B90A08C585D71F2820551C2558CD14DF1555
-66416E2B9C87BB7B1A0C9D6E3D4F80C5F3F4F887B17A957025BCF65372D9D3A1
-77E2CA348A47DA5100CC3EA2EB7742654B955FB2BD3B5A6F84D2D5F5F0339D84
-D8AD3DA2A75FFB2328DDC5004778BFDB4B0C9916D306BDF393ABD5FDB45187ED
-95F01EB80FAF51B7B38FB22517655D532DF3C6A8BFFD339AB7E21C009D467AA8
-78AA46B04DCE4F5C17A5E1E1081E33CD14E2E7BDFD41DEE2CA9C042CB66C70C9
-9A07B488A14488AABEE67E51A4DF481CB30774279F049C9D56D80AA2B4EFBA6E
-94A881775CB7B1373B81A69B301711AE47ED07264BC98A84819746C192BA6F9D
-693A825F0210125BC4372391890975B78626DADE396B2470522A8AB9DC4837BF
-1467A13F281F125F0FA2E87C8A67946EBBFDB7ABDDC2F9AC10DC820DDA8208C0
-55252FE5C829AB859A983FF7545B6A6892CF73A5C9AC8D2D4B1D9D01A481FE21
-51BFDC258D0B8BF0743EE4A7DE9AF2630A9740FCC2838BC84CEE12404701C36E
-A9BFAC54A7AF6211B17F0AEFDA006CA74105BCA14A882463F233E831D8477CC5
-0E42E19D5E21A3D922F645EED56DC7BB7F371785B8565389D39EFCC4850550BE
-10CE6C78EEEBF8828F83F9E858FBF0640F27E925AE3C2539D609DDDB0964A513
-88238CD14F7B91CD651054CA37BD71F9E64DF562C5E2613CA29318D3B39035E3
-B538A5871E119CB3558E0D301B091568C807D63AAB36336AD239FF58C1131D5E
-FAA0F85AC68D33C154F97E42E73EB71437B0F2727BF9FDCAC75965C62B15564E
-9BF7154DE438CC9B04D343FBCE0FF6DDAB9E46A260C7BF76679B8483BBFA4DCF
-D652C0FC93610A6A4ADF53C3D9B7296E70CE1FA3EB6DA1B46749FDC0E2BFAC85
-F00FE4A1A164CCEBBC6CFAD03E3D2C987EC80ABA6D1DCA6B85689F4C6ECCAA29
-CA2852B2325AA1D5A895B2D8C582060673605C54ADA2F41A20B2E98CB38785A5
-3183C9562EE46D58E515DAB27B9A5A86917B05554FF899BA50E1D97EFD9E7EBA
-03C6AF103CE3570E592DEC96A8C634AD7067ED147E3399F0933F8E245B269AEB
-362DCFE8FA9B42ED031F5DE999962C9F53594A437AB2E629338F662ABDEBA947
-7AB265D05AE53AC692ACC2B30973ADC366921B48F8D53F668E08BF65A3031C10
-F4DF18B1D5536A7794576A2A836503B6F62CD601B1F7151B90E915A927287D99
-9941949683B99325AFD768D0BE6C27B14A073A4DEC837CF91D61A3392B13C2BA
-323FBE1B93090BC4603E35B5C1774BD7FC3F2B843A8F59B51B0E4DAE91C5DCD1
-8553B77BF8A5D3156C2B92F9E14B53344C72B1C9AE82F86352D70A7802B2A948
-3B7A89D4C4F402657B46C474E6AC77D75505B9EA6AFCC1359BDAF1D82BD67C43
-B61FB8430B9C0D6F8B5B7EC8FF87AB6A824FB39848140C8F35ECA135A9E25913
-1D8ECDB09AB9C418F0EDB189CF314BC15031EEAEDD76C062245700583CB82ACF
-8F5A6E8AFAFCA8AC150C0CB7A96AC61B1DE23498278F37BF6383608BFBEB4E92
-F74BFD5B630B601ACCDFB1795DF67DB3B87A79DB4BD17364EE8C6B74A04E0C4F
-B11DCDABC0169779ED890C0543452380AEFC40581A93424D9B626315CDAEA786
-39874F4A6468BACFEB626B63CDEE84F4F51E26E52D1487890601D4116FA68600
-8CA491E20ABF21D1B1A02CDB96A25ED403ABCAA32944AF30648D7C4A7A208968
-E2F6AFD610B8C8F7F3306B1BF263C2A47299F436D1C741B24DAE39174F30F88C
-7DE095E133643F0BC96D84413D373AFFC457DD7751C2B4AE16625D57D7F0385D
-0C5723E54D10C7AF66648D7DA4942CBFD4EFD530B8EAA843692ACE50B13389FB
-67924D2037EB81EA52D37976C2984BFBB05438DC8050BEE88125A7119C68118F
-39313CB6E36B04AF224354D6A3E08A2A45DC030B6DEEC6758CA726473D766D1E
-C6661DCE8FA0086D4FE42237C70771109FCB99B2C3BCEA066541D4B2A5CD1BAA
-C01A5E22A7885A2A4298EADA5D1735A00A851BC1640E62EA5C30D9B3085B7877
-3F2174394A5A8A75BEB15805CAF2CB0E6E5A7A3CF05575ACBB7A897E7E1239BC
-D4D3615DC0E77DEF51F7DD2B803AA1A321FB51E2AF854D672E1C14736869F49A
-E5ACDC57E3B3976537B8FCAE4748984E668FDC1DE630EDF826F57CBA3F2A030C
-155D3A2FAF649220AE2B1D1960B6B0483A37D24B32D263FEAB89E7D6C916BB37
-437245D788031CC042CFF7D712220112EC16A61F7ADCDDB09AA365980D0A687E
-01C6DA9D234326EE9B8755F7B8ED79E6B4E5ECA508CA102D27A3A226D02F4370
-7EE4061C0B8D75EC0D3FD681AC5FA83664B3D0CD55C3A95B5813FEAD19642EF1
-748D06ABB5AF95D258A8B433C4D8215625E8AF1F47924BB1F0530EFE633A333B
-9227C1ABAD32ADDB6910993C4A2176E1DF3D738B4E9E899DF859DF3F42EA4508
-B9A3312BEE27B4570260FC6261C8F03D72C056E7D824F143302157C869316E7A
-5B3BAA828F6C1FFF5EEFCE3A79F41F97C2EC11E6F8121282D823A3746E1D9C13
-39B02BE7059BABAE7E2274DE13F9C1158E821637CC124600B89390A15ECAB890
-AE0F2EFE53E7755FCC955879A1EB9E73E61D4572E292E72FED83B94715A3D4DD
-B682A712D578B9D2E6A34DC10506DBC9479EC3C2ED12B2C310AA9C34466D979D
-15275746E0FF396053909C6A73777380826D98B61D166E0085F2FA98A3267634
-3B806CA0A9ECDF557406239E72A470D51985D7F24A4CACFC71131694C40573DF
-70AA1BC7C29A94272FC53C0AC0BDAABCD7FE594B4BE530B432F3C089B52EA8F8
-7280F52EA3FCA6848DA826324A497C393772F156C709FA1C0976F7F8EE15EB46
-82F0C0E2BF11650E9A8D241255A5A999F1AA83270B655E354D177AAA05284912
-469113159F4E8134E48C194C158A012480869DA113
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
-%%BeginFont: CMTT9
-%!PS-AdobeFont-1.0: CMTT9 003.002
-%%Title: CMTT9
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMTT9.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMTT9 known{/CMTT9 findfont dup/UniqueID known{dup
-/UniqueID get 5000831 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMTT9 def
-/FontBBox {-6 -233 542 698 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMTT9.) readonly def
-/FullName (CMTT9) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-end readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 33 /exclam put
-dup 34 /quotedbl put
-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
-dup 43 /plus put
-dup 44 /comma put
-dup 45 /hyphen put
-dup 46 /period put
-dup 47 /slash put
-dup 48 /zero put
-dup 49 /one put
-dup 50 /two put
-dup 51 /three put
-dup 52 /four put
-dup 54 /six put
-dup 58 /colon put
-dup 59 /semicolon put
-dup 60 /less put
-dup 61 /equal put
-dup 62 /greater put
-dup 65 /A put
-dup 66 /B put
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 71 /G put
-dup 72 /H put
-dup 73 /I put
-dup 76 /L put
-dup 78 /N put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-dup 86 /V put
-dup 89 /Y put
-dup 91 /bracketleft put
-dup 92 /backslash put
-dup 93 /bracketright put
-dup 95 /underscore put
-dup 96 /quoteleft 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
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-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
-dup 122 /z put
-dup 123 /braceleft put
-dup 124 /bar put
-dup 125 /braceright put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
 readonly def
 currentdict end
 currentfile eexec
@@ -2659,6 +1790,7 @@ dup 102 /f put
 dup 103 /g put
 dup 104 /h put
 dup 105 /i put
+dup 107 /k put
 dup 108 /l put
 dup 109 /m put
 dup 110 /n put
@@ -2857,284 +1989,294 @@ F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289
 C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627
 73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B
 E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866
-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
+2F2CF263C941F6D5BC6524B34672AA2E8F514803C1E8F55F2FCAB120298DC137
+431DFDAF370FBC83A23575A6579B29525D8BF0CC2AE0812E43BD6B5BC69540B2
+5088418937AAC195F0783FFD2BB3CE3C30667D26D416BB3E656EBE8C7F03EBAA
+ADE01A21A0CCFA5AB8092737602739EBAA82AFC3506EDAFB0FB23DBF2518FE65
+7A2F3183416F0DADB058DECDC88B67FED4C606DEE67F7B20627A60CEFD6D247C
+B45103F2A1F501B0975EAFF78A14AF74706C690795ADD723B440BBBA2BEE3DF6
+F9DB670C8592B2D55B5C9AAD4C98971F0BB8BF23D5EE9C3EA8AF1E1F8B1FE6B7
+5733603870C63C668D33FD66EB454921BD87A36BF21F6EA50F645309598F9A69
+BE403C51346A68C26B7A90533A1B54CB5CA33635308BE80E66DCBF679353C8B7
+B0F1B866D0638FD94EB0AB92020966A51BFC6BFA0FB1C4AEF975E1F034C54D4F
+8186D2D6EA376758E3D9D0FBF6467E7D9A8BA2A1B404196514D687268F3EB325
+F223E60F2BB410D7D9A5882CC1ED8E73023426B6D339A174264647887E9FCCFD
+44412756145226164EA5ED5B30818F17B7D86D4D6F2D1CFF6746034995DDFA6F
+E185C74C4ACDA520446A14207A0334ACAB47E9E630B7F81D1088A502D8DEC537
+96D2902BA91E80C0BF60472411C584229B98CFEEE4747607E329C22E58701441
+186D4A5E5B31E3EC43BEF15137DEC88BD2C72D3AE066988079E9AF997FE66AC5
+DA922ECFFEC6813881363A7C98EA2FDF7DC976E8441A441C27D92EBE8FFBC28E
+2AEB583BC4301D237013846FF4F1F6B5EBF72D6C6D889ECE9F55C625EFCEA99D
+17290CE3303CC7661C822B972DC863AE61F0B3A73D656235F2B9B370B6FC1CD7
+2C51C8A34746868A81A595D785439151A528790CC6516FCF6C0F792E5CB451C3
+59AC12FF2367F9ABBCF6A0CA61CB50E0BEC451D74FD11A3EB97930B90E45D5D1
+931DB7614A8EC569F988C0F324123A4797646FD995A93CA3724E5A30192DEBD7
+A3F32D71F34DE70DF335EB29962C4E6EB065AC59E265D9198551AB627578A883
+11C644B2F7A4FE253385AE904F36CFAFCC09515E6026695656B097EF53A714CB
+6D67ACE27D86EA29528031104BC0C7C657E3A189614C4C71CDB02AF8A3D1EE4A
+8A882396A5A84E446BE3092C7C4C56A116A8C31874A63F1CCEB51CE7DB370979
+D18E1F9A8A2D809DA94F9069EFFA8CB9A58D45A6EB0E1C53443EC39A6180813F
+DED570D79EE76A45019204250B5C7034A9E35D975DA24A139F190A7293FCDF2B
+4262BF157059D1558E3AF6D710AC7121035998B6ECC0363B654422A3A68751BE
+BF6862FF1A994A9ADA163D23F4ED2D7461F910F51CFD86FD471C752B686ACCB2
+083A6501514E4A9B7CA9EBDF434B47B8D164AAFEDAAEEDF82D500D41ACF6B47F
+BDA773298C9FF511E8DE1A26E92A5607CFDD2A34CEA8551929CB4B6744882B09
+2ED6954069FB831AAA881B03476F369E00D8BC7292FADF493CAC21A878F8C167
+3BCE4BC24DC5C0A2B3213E10854F7D23BD05107C64BDB336F8878A571696FD3C
+4A2E5418D59102D6F1D66E2FCD6B157586401D80ADE2CDE0796141C569120A68
+1AE2D0E06EEA6AEBAB56604CE46A5EB52C0B0F34EE7A1BC9E60B9B12071F1CF6
+7A23886A7B1A3933176B6D2F9F96B902DC900DC051B8C02A4C37DD5C2B0D32C7
+6936BD399B33BE511D16ED77CE8A973C0D7D9946F21336167484A7C8990F5AD3
+44E00963A8DDA72A35C4B017ED37A4D874B000649AE2AE9FC4265470A7DAE304
+99DCD05DCC2AB7A35FE07C1B50895028E45EF513CD43694E683827676A561C4A
+B40F171DA97B93D735CC57FDFE23672132EFE594FC07968CFFD18056B46D37B3
+ACB4DD63AD987922E0CFAC1D88A283363E394B6F46C4E51BDEC9B55055E2918C
+389D5DFA85741E2A1AFB3007DAB4AC711B18BB12E618E62B69F53944E5161864
+7A372245024254EAF66A0D2AB94DF1C7C0DEE22C6FA445085731347E480E7D0E
+8D16B37757880E7B23A8F2D8CA3F1AA6D00D733ED5DF19B206C60B7680D2D423
+D445497B5FDDB06511533F88E686FD529A1A454AEF1844D67FCF08B4B1ED07C8
+2043A0D0A6935A232896F11AD08EAAEC6666BB828C6C2C208BE74B95F675A5FB
+DF5A5AD3C90F096CEB6BEBAA82D56DB2096F3E3C778F173B19630681CFCE560D
+C5AC8B35781D6F6DABD9ED6EF895AAEA7EC81EC327E4CB9E106EE07FFFD59019
+63B50155066DFFB53874D2A60F8F312FD68A43070954ACE11DF3D182D03D6784
+C5055498D670DBBDC35AABE825F605E82918D4992314D6D20E5FFB99A8755BBB
+120BC62D8E168A08D79AC6AEABA87FE11DE5A83BD99A077518E6162036FA6381
+251EB7D94A61735DAE349E6363A9C30F2F399097BE0F684E1989333F8C88F304
+967DAACD36E7057FCADF61429C8260868AA786F92250CBE6F3D84766FC590267
+74EBAC7A909ECC8CFF68BE8BB4F697D86AAE5286A04D7B9FEA6812E682DFF090
+D43FC28ACE03B7D62EF750B442687F7F3257AD4CB1CAD613AD3D6A27B6444199
+1BEB37DC535DF91667B47182E0053C6560195D476AA2C370DCD0804EA85C457D
+7A640C2E808B327CF62E6BAFB9A39660BE892F43F203331348361632CB0CF363
+16C587FD5F579B2A14A8E5D781DA5146B58E3DB9834EE1E0C172DDC00834C88C
+D42F73672E67FC4418526E7430BE92D57F15247446DF6482CF0DAD40485521DF
+3A4591743762B6C73051EC17164D0401D3517135E5B5E460F8614A1BD7A1C3E4
+CFCD9694FCFC3968676DEB42EB1987A489C711EA9ED493A20ACC389507F11E81
+FC931D4451EC5F897D159AE4D0E8B26AD1C64DCE2295C44AF44E57DE040D041C
+A3D3B438C3C95B9213E1795AE52E605C693581A47D376EA6A0EA50F2B7F8093C
+5950A8FF842225350BBAB27EF31AE5355D36DD07ACDC20776F4554A55558B784
+5C610C12055FAF049F8610655F5AC9A4D4E4D8D98F664325D90CB7B45C0C504A
+96B1DD5EB57BF2E2CBF59A59145BB2A6CFC10448F98A6E31EFEDA339F125EC3E
+05EE01B26AB28CD2096701F95BEEFA94D3C73598FC41A35FDEEC00A61DE9C3CD
+B734BB2F977BE1E2A47196DD069A7CFDEE30E257CFCE90E5F31E2ED1AE832060
+B5DDBDD4F326B4498296399BD9504573788CCDA457CA814C026BD201B8FCDF6D
+F938D66D68B489EF76B64BA853AC58122A0F1FFB4CBE1C6B30EEF44915B81EB4
+CF8F3B7F8EAC091A3652BD4013CF44AF62F9F5B9012487B4C549AFAF0463DA64
+5E5A2E29D7D2481179FFC83838727E0BF250178BBF8C26C5A6F5DE91CE52E36B
+3A962587570EE36995C917287DAB4F10F086117C1A4D86DC83BEE163624EA023
+62E8584A47FB88ED06371F1AA5337BDAB4BD05194CBACE39A55AB4A130057264
+4284CA5CE508835E44D15FC40B551D4CD167A6781A5F5D784DE009C1883C9AF5
+007AFA69D819716C7929FEC1A0EFB64F872F9E683A89B4A7940380333353E36E
+6B7CDD54534E034D8E2EE0134B81544892DC1C48001E5DB6CDDD7110B0AEEB90
+C91F1DF2E8C45A24685B6A46F3C61926EC51EBD4722993FC2572DB90CD753CE8
+22E3B93E8DE9FA444D0595180925EF6F4F889F31AF7EDE354AD2699543BBEE71
+797332A7A4F41382043E9FFE8B85998EA8AED71723859AF2970530DA6833159E
+031482A238371811854BA394F90DE07241C1BBEBB55DC1441ABBC8524714E401
+49AD1E865799F93F4746A420195F681ABA9C761236C689154EA42F08776787E9
+440DA8E289A5C16DD637A71203E90CCB0A25791BDA7B12F2865AE7F436976550
+094B9D6F28C648041EDC5037840AB9DC00FA8C12000E78F636CC47E9A1AE0A19
+18061B6CF101E61AF8BFE4CB86D2EA0A07F870AA46EE945F814044A7D7AEB845
+BF84AC4712B0AF124730BDA95F46CE5663891C42B8899D4FBCFC1796D37F736E
+406D0E27C3F088426FA2345EBFCB40378002D53B72CFE17AF0E3A7525BC89523
+D7106D711A6D2E18377C20FF9E6F4E23044B4CE9AF94B982D920C63D7DB86B09
+CF1AB5A77406A1E1518F40A1ACEFAC974E094B86D0D04FE5D7AD36DB6C42A9F7
+A2FA04B05DA0F2A6F5BC049C86C037C1E3095250F44D7783B11C1CC2D8D0DF15
+9E992B7C54863D709C6C8B4A9EA1E3697FB96FCC3AA52A4725BD821CF64D275F
+9513276379CDE3CC80A917B83F955CCAC6B0CFD07534AD1A977AB61578A07BB1
+A0A106DF564A182F2291CE101A62FC5E2E7D94DD1B304909320EB07B30E3133C
+3E1273EE0D1DA4F473EF9ECE97EFD485EE71F94A40C1210E8D095DA67D6C41AE
+F68D519D151BF2AE17141077EAE0F8D5BCBC8AD1A65AF2204E7A477F5E10C5D0
+4F61F777175EE300340285CBF3FC164121AA430E24AE894B593D82765C33A050
+1C445E58B85BA3627457E3A197E94DC65E4C577B1A4FEFD78E33AA2AE7168C75
+BCA3387C3CDE43475F3F0D0798A543A34F0361B87E439B11E5D32EA52BDAFCE3
+C0AC9117D06AFE15374CB757F4F771336D985CF04BE834BA2E8092CBC640FB4F
+78BAF4E81AE90661EACAE45A074F23DDFB3DB3E0D0D8F8D9EA929504193E7ABC
+E413731FB7D0AEDCA0ABD5D951F5BEB901DC7F3CCD2D0E61B1D2A07B79071AA1
+61D5728F7865F34D6F30FBD4997A59BF993C8F7F6A4F0C4A515DE06C79425945
+98D7FCF7FE365C5656DF8C5FA1610660FDD6A19CE5982478F5453F1F1E079767
+727FEC7ACDBE50AEA9D05948804BE55FE0FC7F464A0BD1F099940C99E6ADC894
+C21B5672C7E50A440B388D5E4BB4E37976C5A1CA0399802F2EA7DAF60C61A6B8
+E279F842832B285BD0532412D8A1E272C0F64B2AE5D993428E36C4BF6ED24240
+467FF48457766C2F24CCA637C622B84C8B22308D5F4DA3A1C10C905FCB01DA2F
+10D61FAA96622F03D5181850C1FD0209C6FA0951CFC38C67700F5AF1BBCAD623
+2E815110143D910C03E13643D9B287685AE13F4CAD0210896EC21F9791B3A313
+62F3A9E5E837D356E03EB26E0B58466760DA9287AFA33581927231965B76543B
+BE7CBAE37C49ADD39692EA5A53939199B9ABFFDB0373A7B4D356A759B94C9D19
+9E6DF8AFFFEE69DD41D414DCDBA3C0C1548927C516BF025056930CA1EA7F12A9
+A42ED08324A53DCB96D043D3D6C71E49C140DA3C0EEEDBA89B4D1D20D0D4385F
+17BCDE7660700CA6B95A3564A25E4274E59C72CE2CDB90B5306ADEA2768D5439
+52E1099A0957E41FAB5B65D0A70A457672BD7E3C2E00ECDA042D38D2398E3FB3
+66238157D749EFCA6BFAB70B0FFF39517049B3C508F6768F32C03DE2746D20A6
+FB7B039CD461207B1302BD71BD43F53768C564DB3F29A36447BE8F01F48AE503
+A6B9AE1AE673AE34C5A1C0E769495642C7AA2FA673FB741414E01EE2E8EBD04C
+C1E0C7A875DE5BCB43A5588C7D4C64AC4EC028685D463A02A9F0606659F71898
+69272F6DAB3FDF573BC9833D055508BA1BEDA4D18452E95F2DC0138E4B96B54D
+1892A69B2CBEFA8E3536DA3623FE9D23638CA5D656D007C43DBC3E022582D872
+FAAB422B7E834D0349ADA62E2D02467CCBFECF5B0B567D2610DBAD0E72BC4A9D
+FB6B8E8BFDC60AFEB2AAD9D2971568AC5803F5CC487AF1125B9F918FE66B21FA
+F20283F5FDA3FBD5C410283212D96BCD32FD6801B199BDDA5284ABA8424F5B71
+B4F48204FEE6E8E7BB1CB3A8901C747B6B7F169DEFF040FDCFF7BD950481EBDD
+D26576055339E8E950874E08E49F8770E80B12942ED8B7B749626550C761DF70
+10284DF51E1BD4839A3238D60A4E981B1631F32D178838DEAA63E61BE1AE94DF
+2989DB919CA4EE5E2EA5537323FBEC10E9D2E989DDAFECC37CB36B74E0393BAF
+07ED8A19140C408BFACF41C0E2EC4982D32BCFB2671D36A1AD823BEF7DA8C97C
+F553B680B797069D882AFBD0FDBB1BBC47B684B1582FE0D6C74E17ECCA4425F3
+7272D70973897879B7AD81966CD20BD13811E18F8706EA40E9DCE7D1788E0C16
+B56B72AD90F759AB9AEB4AD949E9588B452FEA29FCA2DA3C13E54EDFA9C6CE8E
+65FA26D04133A56E85DC878923734478FFD08115C7061FAA277873DAA4D5026B
+7DC761389538666C4ED3405B3FD657B7CE0534BABF6A3282B67B610C7CD46244
+AD3037AC1DEB04318861B64E681F355A123BB0ECD0AC34ABFE77C157354F7E22
+7FB4008BD6CFFC940392BC53FB751EC742A09B575FF0144AA758C29EAD8DF5FE
+C14D9F32D0E26098B2268750028A5CB8773021DE6A53A71B1432903CFFF5834A
+EA0596E85D11DB5B3581D6E990E2A97D6B5FB6DA2742230925083EA6A1151E6B
+54C3A58253C4D27E9EA834F75860714087D03F06D022C1FCEAFEE102D755AB6A
+CE0A5B64DD8499B0F8282237B52E2A8D3914EC53D471229C03ABCCF305F94BE7
+4B47DD210FEC8954C423937685B62CD589AFA801ECFACC8A47B46078D3C4CD6C
+BF8632B90A006F0936FD942F4C275F5B334241B7949924E07859DB270BAD3BFE
+C86FD3C8C157BC1802417EFA5AEC67C67729F460DCF50F40AEFF262C92DD3C46
+D12D08307B95233C096B0ABFCA115414EBE051FEBC3E9CF4A3A6F229C8422B24
+AA3E82DD2DE9E9DAD9858102A52DE68B800169831D87FABEA4351369D5CC78EC
+B6E1607416DBACAEADE82819EE220BF346409B73DAAAF345DABB73D4BA008B94
+767DF352C52B7644BBB936B905ABCCFAAA2928DE21518BD973B2CB71408FB7AD
+36620ED9D54158B5BD477DCBA04CF0B42A796F879340C4736A6C9912EAAFA9C8
+9F4B4FA517CD67FE0AD33525D6FE14374AA136D9BBF462C65599080220D01935
+DF941F1757AD4EA3F587F84276C2FBC610481A551D5625E2B3422C272C90A0FA
+229BC37D06D40A8218CBE487021C74FE8834C0896AAFA3A1095666EA299BBA9A
+DE77DF2E1CC2270169479DF9A1DAA5ADABA829261801BCFA556AE13D97D87E29
+39A35956938B17ABC005933AD3FEED156DDBE391935BA54E62B374BA08471153
+6445AF692BDA89EBE9A10609073086DC0CAF5536A273ED6084FFA474A54DBFB8
+BFC7C507A4F5807016E4429C45C2F4B70FD6C099F9844E9642AB1287E499F66E
+7DF53620EEA49B83F564BF0B46E53C633A26361D307B040D7B34A7594C12EF8D
+D76A4213F29D44AA1F7682F09A924C7722EAB9DD0B7C141BA9B017134A7A9548
+1C5F9C88427389C5FD09ABC2EB06B8A6E030140F3A02B59B6DAF7FD48653BB75
+E16CFFEB450C18029F08014BF0905E4AA76AD913F29C101735C5A5BB2A501181
+7BFEA9A8025ACD6F5EAECD826B4FA3B3A33C44D866AB06C3CF5C82C3D68259C6
+BEFDC662E24D634462654016BAFA72CB74CDA3715FC979BB24A043D6B2707F9F
+E040CE5571105F904470360EC37F73541B528EB5BB52BAB9296B5DF1418404F1
+649FBCE2505038BED3C59C2EDD762CB5FBC7FA86E07C529A0B48BF7034860C8C
+B5A144BD668E852DE553E989D7B71EF8C53F107F375AA55B61CBC9AF872F8421
+E21ACF007026DBB7F3BB1A5DA00FEDBD9661071DDAAB1D56DC3AD03A35DF9255
+EA2C492AEE4A39A3EFE798EAD76FD29DBFDB088B620BB0401C6B5667FEBBB8C6
+0E9DD8E1DCCBCF346B583A704D166B079140C4E7871449A16F65B8FC21FEC40F
+E7BF9D9D0207A2DBB387FD8BD3A7B7246FF612C721CDC52D7D41426F3FB0EDDB
+A937C38A339E3E83B2A5F300E4029F4F2845D11BEC33006716FDEFAF356CC981
+1DC615967B2F39FA17E8B632E0D738E869692658A550139B906CD8FF8DAAA906
+BBD7C48B6B9C12B40660248E3ABBE9F651D2E3E8888DC8CA0E706176EA4F63B6
+3EE4C5589C70ED426780F28A94C80EC697D1E082F46F3FF34EB670C2D3347F88
+A4D6399156D9A937B9DBBC40F6BB6B576D13E5D5462CFF7967E10A39FDF4F41E
+8845E579AC534DF0764E0F403B28CC95A8DF92DCE1E90F17582377A5E39A5212
+2A0D2FEED125C900AB4ADA0061D874ACC5AE2B275EE15233AD5D8CF63FB3F38A
+61C09E3F0AC1D5BF4DDA585FA65B115C01E1BF7EBB1018CA3387C8ACC981067B
+83B74721D032340CCCE396B12FF61FB9EB44E3DE962C14659EC2AE7E20333A84
+9C16F2F115A340C9935D42D14A2FFF11B25C46FC93A09C4470A102ABC21DEB32
+280E91A9AEF2627CDFA6B1824F75B87713883D4881D452B5B4A7D0118D4EBD2A
+616B8DFDED3047714F179E558F783FF5B190D8CD3ECABD9499BA020F0BCE19AF
+8CE61FD7B87578F1FD471D5DFD21A019B0E810BCB90D3EDE346E0AE3E50283EB
+BFF5D5B1AA8BD456AC552641D97276E1E7F335FF66372C39D2401D129C5AE204
+0851B5E2F8C322CEB29C19EF05602AD0D5FC2F8FBA0AC7E2B647C088A1F301CE
+2B9646EC5E35B496758777972480C9332F36AE3B8AB6286E1414912B7F914932
+E2B5A293BE734C3052BD7BE8C44BF59ACD5D3A550AA70DC610A7BA4C8F210E50
+C257FC5773CF186D18E63F926618763DBA7C24F99B60AFD4D1B0FA6250540FEC
+CADED9AFFEEDDCF914456559FFD61E175244606CF311AB9C1547A41B7672596F
+960C00B0ACDE1E14B0DF3619A4B49E052EEA1A6E81FC5DCC40D783155FBFCDA1
+CB2D4B5C61E421F77BF0C207B504B9F4AA495409182468598D773D2C04739C8A
+72050916EBADAA311CE4C29BB3873C27295A46D7011537576F4EE669541A1C8C
+993F8BB33B5E6F16447B76525012F15B49FAE4D3E4999797F7949304F8BD08ED
+59995346BCC901EE3FF11C8802A52F28F66F7DC908810B31EA29C26B50A519EA
+5084113D938378906DA5989C65ED2572C491C953AE9A36D60C3ACE819C870A70
+56EFF71C92E6B08D5B39BAA48C13C6F68D172BF14E9AC911150272AD517F7547
+92F51675047591D4EAE640CA3FBF009A127722F7FD083D89DE04977CA986886E
+83E7F4C2504BFE4A2F2619FAFBC7B849B30A354FC8089926B468501B8E71113F
+33CD7791E7AF6885F9F795CD3DEB888940D6CD536BC51418AB1F8EE52FD9A84C
+63DFA7DE8EEC74F136130494E6ABF7D1DC9A9E8968622804C39D7FBAE2075C35
+D78FC0E669CFC162975D4B8DFD7481F40BB44BC57B1844D0B59994DCFCAE8F7B
+31C88416EE6D3764BBF15FDF39AD40DE82A641D5C8206B403F6C5504DE224341
+E8305367901F0E34CBFCA9948C6A897ED66F3402A988B25D7D5FB949D31B7E68
+19F1D6D4622AEB139BD718E4931BC1A128EFA2477568C5D4EB01C27804CBE74E
+2B0D5362499A3B6EF7484A2FEF7479A15E712855BED59E92A62C97C580FE2C1E
+7CBD35802A3D8BB170D3C97B46CC632B8EACF44ED53E114D0730038987973776
+37773179395A784B86FE9EDDD38C1009502FB403A6DFF6CEDF5D3BD338C958CF
+4B85E3EE63D7233AA1CCEFA4E6F7D6EDA7B18D6242BFD605747BBC10EE0B38B2
+94E4694FEA3DF6B7C5E5B79F3B2D1CAC242842E6F9D33F2610CBED9015F2BD81
+EAE29A9A2904837617A13A16483AA14FBCABD16D469A20CE3D04CDA52B094DDB
+D2486B3B2496A84FDCD8E80EC0A8A5641F4B32C4BD8EBB430D2ED927BDAF8017
+34A339CD48B5EDC20CDFF536A149FF65E8E77CB3EE7946A92C53CDC4CE9EA097
+6CC28E1EE2D52C8FDDEE2F02019C522ECB6668C14ACC3E5DF4FABC300526C6DB
+0855A79FC44C7DED773D18886CAB73A2F2ACED5223D766612B5D263DD57EEB06
+865324E10AAF90B424A05EC6682FAE8917431E6597B4E1B88D5D131CAA714F2D
+16BDC6F72D50C024AC07E5D0A8DB997B437CC47E921146C2233002F7A94BFFE3
+7C912996476D41E4273D266F9BD0D6115EA15C1E1985FB17B4425B7B339EC81F
+23A3A66FBBE2DF4CA9CB21916EBA0165FDE10B4D7EA4BB8336EF343CC91D4A8F
+7636B292F29DB1B0CE86468C487307785C584BAF4446B14636AE3AD37C67D675
+B6517CBEC34A4B62B2A8B3344221180055717290A8534C72628AD81A3A9D727B
+80F52FFFCD2C719002D47499FB9BE38512B37CFE25AA80DBCC05DEDC4EC948DA
+1E88CA822FCBAF8980D4BB740373821B2E70A21582A44CD1D543B39C9DD1E037
+DF79B9C17E11972D2676BE689DBC327DE8F579047AC9B721CC1653D912D21D43
+7EB4E52DC5819BD0FD03F864E89237B0D40206F009504831F2F40FBA2C4F4A9E
+71B9953A8D6C654B4C3A92F22EB42D6D8E88A604F8DE9EE2ACE678513B8714CE
+2A1762708C9EBC9A0B22E159BCFC4F16F72FF3FB41C5724D76AC1AB39F59C1B4
+B3407C681CD1435DA5C4E44700A4B12A247959F57F09DD57D03FEC922EC47272
+10EA80225C369E48586367DA5DB93748920C564F8CF96EF79C2D327B435AB31A
+F68AAD8690864979B8224BE14FD84DB532837760AEC3179F423C23A2EBCE6362
+B21638DF9EFD7173C3D78D51EA560864E14F48A248FD5B532BD638BF719496F1
+48AE24A2ACAB2BBA942E2CD266F7FBC0568098C4EDAD62CA09434277F6F4B328
+97D974E4F40335115B70115F589FAFEB02EC71CA5B6B02B64AD906B2F0F691CF
+4E3A7D1363AC1E0EE88D2DC700CB7782119D82ADC61222046D73B2A12EF635CF
+0E24BABEDAD302D88BA598E8250861C41BCCE21E3A95B08183E56AB6C94AB422
+621DBA42ECF736B96A5EF45C34BC56427B8082FF8EA173BEBE0C348D0A2C1AE1
+4C40D031C30DAAC920937CD8679DCFF60C951E894E32CECDD8252B8259FDCEED
+3C7386CCBBFC35568F5495E4CE1182ACAD245E67B1E53EAC8589A9489428CACB
+3341F99743C4D81D9550CDCF4E2FB53B475426CC81B68F3D5BCBCF16986302B6
+DE01B3E0E6E1F9A1F605F51E29E0953AE7352964B43EDB112EC4282C8381C212
+02BE2E8EAB757198C146E5D1FF75F727D43AAF41BC6BAC8B9373AEF03996F7DE
+6C60429B61B83190298F5E4E0233B33696AC30CC7D4186EC95E5006911C93E17
+A6283A9D76DAE5F32DB37344307EEE29ECC3DCF09E26DD93034CCE4141C1346F
+B8686F25E57C67F7B9ACD41757364E8B656B0D2539C2991F2E5CD4913BAF426A
+0A8D8602AD092E48764D4337223D5AD4D5EDC4E9474EC4A79E5F8D8D55396EBC
+BA4A7317B54F9B9628C1C7A889B359CBB5691948E762FD406558E448F5080089
+8463475FCF5E50A97919AC5EB8A08815EA1FE0FC1A47C545E749DD85C735A0FC
+8FEAFFFBDD1F3BA3382010756510EF1A3D310AAA8BE9ECF9B3FA49F0D2B73502
+E8F6D60035DFD9AE3AAD5632E7D4D332B0CF27B2A5051947D62EDD2598E9BDED
+FC71D76746B11AD54204119BEECB72500F66ECB7F9EABD3DD88B27476F9FA6F4
+9B4CFED9C1A84681B03B5A3EC2D3098ED38F2EFE93D5172F21888CF7ED9999B0
+65DDB28DE5DB69BFB81881208D951700D029778111884BF70FEBF3A348B4A5DF
+D4472C7EA45F027DF31B9923BBCF68FC6D42F89E780B05B8EE384F6FC9FB5EA9
+1C0BF43600E9C51004C58E7C6AFF658270DDD9BB2A6E7BC4AA3EC6D56917B276
+E824238085DB57FF709C890DF1767127A6F38074F955F24EE9824AA56654E0B3
+AC2849D8053DEE50984750B885F376B344170CC3C56B2F146FB0C785B4F4BBB5
+0E324CF3840DB9DE988E5BC5874CE59FDBD0BA494CF9013AE9818F8348723DAF
+4A768813E9380447CEC2815A32E2044E7679E9031B489F1FB6935FD9F6B1E235
+5A44AD6D46B88C25BCE2DD1579C5CA7D702487361222DD9D8DD2B96DECC8D1F7
+2DEA85F8606394E9DB1C413B91297EEA29E46C4298FE51221976C5A5B0D9C43F
+2C08535C7F49E3225BD89D859FB7FEC4FE29FF531035D7F1BC15928AE535E414
+37EC6A3E2D862A0E819F517A0E7D419679E302D112DF5822402A2DCFABA7BF50
+71D21B15B7E12D543992D1A6C83B76FA19CD64ECAB2704A063D74D9D512B0DC7
+E6B6FBEC7859E283EA3FE396B2BC1A17E8370A65F2A8E1B5DDD96659051A65BE
+4517ACDE751CDEA75DFED139F9151DC208487575B83385B1429527703D671144
+156B906DCA4CF416CB592B3187E35DAA04F793BA32045BE0438D687C98EFD5A7
+82A5EE014ECE289BE9CEE29B4A3B7B44F0CD9C64849136705A775FF183B5B6EE
+102265FA44CC976155C3A0DBEA416ACE591D86C04D70A2E9EB20A288F93B9E40
+891B6A794C68B0AFB9D34665B51FEB52B6D049C8700E1C622DBC6A20948FB8EF
+2C6D8AA266C29802F712172055ABB9C3DBE02CA698FC66E015AAD7FF09C2674D
+AD4DE23D1CC794A8052BC235648E0E4D2D23A9A2AA5B36A116FACD1216704855
+D0B004DE763CC85245372C555D14E52CF0F84AFECA601F7071C2A72715B11C1C
+18BBBD2679DE8B3D7CC05B7391E22E64EBB20800464D2EACF37FE6ACABEB5CF0
+E0BEEABABAC9EAECED1D0015EC93EC3DA8E55FE35D393E6F98C7EE861AA29E63
+4CD536296EB8EDE8B3981A8C13CF0CF08504FDB38DC00C98D8E70072944E2099
+1A1E7FE0585DF32DD336E57A7CF20F7518A64A408955ED92828CEF3998E91F1B
+935FCAF14B2F5E6037E199EE276AECD5E419838E984F98AA715D9CC3AB7CD27D
+9875CA787F92E07649FE979F0EF9C111A28660034E5E21DB087A413F97F5F1E4
+B2CD771AD846F134BDB38DAC28DEBFE4947FEEFCEBB87CA5B82C5DEEF49B959A
+E6CBE43402847A824D64BB22CA8DFEDFB72F23C55CF7C57D157A6ABBB4211973
+54FEB121E0E0833908959E1D39C7E2A51965081158A4F88936CD27E201BA09EC
+B4002C6D246B2BDB14440465A55994330381E3E86CAEB06045B92A12482656D9
+A0287CBF975039E810C1945C5EB1CD9DC31823CA125071CE4C2B7DDC1936C33C
+C681A518244F6AAC82BCB22A1F220894EB24E8A974AFF9050EE3F4A1B320523A
+7F095B60D2256E4521CF3FC0A4D90F13A376D32216178D98ACAE185F0B0FF401
+BA10DAAA0B6F99F72DDC08D4272C70CFE48ADFD443DA7542FA0782E68D5259A3
+862139A5B4C1E878D8C9F5F200B2F422384056329D8D795163F5EAD318E7C522
+8ECF83FF72776DE6B1EE7095FB101F38E5154BFDDCBEE89CFD1F9A393BBAA13E
+20BEA2F8CF709E99D17469D2E6C34187F8403071288243605215E4177AC5AE86
+E336934B8EA1820046
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -3445,7 +2587,6 @@ dup 61 /equal put
 dup 62 /greater put
 dup 63 /question put
 dup 65 /A put
-dup 66 /B put
 dup 68 /D put
 dup 69 /E put
 dup 70 /F put
@@ -3700,366 +2841,360 @@ 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
+2D6AC3F8AD690AEC0AAC2AAF8CFDEE51FE47B56661DF84FCD8AC27A0C21706A3
+3CCB741E91304FA287688FF87FBAA44DAFABFADB8BE47AA6C623BB1E86BC855F
+B26CF97B7196EC4BFD755518688DB56F77F5EB87AC368FD46E295D7DC1B5E785
+DD301E260CF2F1E9E23072972E05FD4AED7A5AA34432BFB817DA2C19704A0206
+3077ECA9232EBF203016E7D98E3DD0C78BB0E332579EF7430063A099B9BD86E4
+3E55A8FCC6397B191360C8382BFD531BF247BD3686BF00A96B8DCF25BBB009F4
+ADD3E77BFE2AF010F83C1BE339B0FA4581782A246086668B10ABE646B09C1334
+A894212EC934EC80AFEFDFFA7C6EA84F44E072E3801864398E192532476CD8EA
+9492441B0A1FFA3606ED65A10A8E8A87200096F3A8D3218CCE883A453ADA2B58
+1BA1AA2A5E3EF41A7F224F806FA47E36796C659C9984BD45AF96FB8A5464886D
+46FD31A07B390F3CE60CCD246ED0E1CAD0521C7AD4D405A7A5606EC545AA78A6
+2FF931A5EA145350006F96E4854333B4374E602D71EEF218C15C31D866F3417D
+147D88DC59B7485C532521BA04EF26040B140D84679E38DD71576B4D367AA58D
+B4CCC2B9C8CEEFD28947BC07BB494AAF2DDB0136D77350BB00E2912F32E23D0F
+54CD1A8B717A6973F3B87A627A601BDCF84562F771D6627D9987F659E04A205C
+6EDA3339856C673F51402AB278A8099E2C38FFECEC5B7AD60F1A573995AA93B1
+F7FB6FC8CD351F101FD629969DF1D3DFC67517CD5B69EA89612A19A1288840F8
+D2AEC8131971101A4563BA13DF95EF8CFD634EFA417D985972084D45B94B8234
+2437367E0F2F5191C2C721CA9453CDE7114B8A952629FDED8C0D49B505623A8B
+EA6267A8B676C0A2722D9E1C8D4B202B949D86F3DA5861E0AE858C398D651AB3
+500ECBAD16B80FAB6565F19BC83C7CCE995A21DE4BA42D5B346B76F0A64687AD
+75931A022AAA078DC8AAB00146D59C041A70AB4978D6A4D809E94E0F849F8379
+DD126929166FCE6EDB1F47C10DE60A539D53181D88E0280B22F5CE53F7D794AF
+4D60F82F098F49FF48762BBFFB7F47C813999C3C595AFC86CD0B7BE65DAEDB32
+CB25D34DEB46C4AD0D21BFC3A9A11405B0873D4E927B81F4EB1ABD547CBDB6BC
+C28B2A1E34685BAB890DDF3423848ABD848400DDF57E5E5435E5A6F73EA79A24
+8AC886D63920703129B258BA8717973CA2FDE1E6755718E9283491C6611D4217
+131352587901769AA8A21F616EC20C1194DF5BDF59F980BAFA88316E78CFD776
+6C105A0C3CFA40AF83551D9C4F5D237A38CAAC1AFAC9CF03B0A1369DE1ABA1DA
+B1B9DDF82D9FB40BF0DBD74168E1D65B769292B48547DCCDB8023FA10A81431D
+D252B18FFDC276D5CF4618A7BACB70660CF177C6496B0B36E2E8C1494640BC00
+11A25CC5200A0C9076854B095EBE850D0AC6A736F8DE5374A7A8532AC5D3AABE
+8A1587A7BC96C843B1D57C0BA320BD7E3600CC8CCFD4AD6D3EF8D34CEBD5EB55
+B545E390482BE9AA96C298172F0879718031CBB6173885E7B425115A934B23A5
+C5C87D078B81C776A2B72E564662ED3079A19F4C2544CF1E2DBA7EF84E0EADDD
+9B98E93F5B9CC9E1F63BF5D3B4AD23DF0A82CC481E2351274426E3D0986D852E
+106CDD6D5325453720F02A01A21B3CC7EBC159A8AD8558F049061AB37344453A
+5FAE64E67DFA79E3FA729C275FD32BD38E09815B5C85D94909E448627FAA373A
+0C6C1CBB3A8C8263D1B4B3A080D05B61C2C2B9F21090B71663D48140DDE065ED
+14CF9752E806DBE5E1BD69A9DDFB250E9EA0D4849962B18360F6567BA3554817
+4F41D789FFD5700F85043461632C060C3EBDA9445C644E092BF3F012E113A766
+0ADA5F1BDBE806E51B294688FB8397847E27B311C9F0CBC64A8DD820FE887E63
+3117C3E921CAACC57F54F19ED20AD61BADC8C60DE9FEB1C1C3E39FF01BB0A1B8
+C24D14CDB1170D17B82180876C5A920DF6EBD0C31D283438E086ACC4042B1C45
+E915702288FA47C269BC22AD5DDE54AE8D599E6D77A19A362D49B5ABB051053D
+4D7CE175432DF3C803F934690D1EFCBEB637D314982C75FD2BC0EA5CC6A794F7
+FD7F7B158F81D3AC9E3A7F55F6A98FCEF757D5DF114E5C1020862DC5BD8DE854
+57BEE746C45E9108F029E68717FEE815A4385466AC97F5F8F4AA6728D76929BB
+9AD49089C18707BE23C449CA50C11AEBB8DC6F21F9497121887FC0D1F9BAD1D5
+9238A6ABB6DB63EFF800FBBE29A0DC6E1751B578B152BB3845AAC8E6022599BE
+29EF5325632340CF216BBD202B61BBBDC68F91F7E47296F3C257CDDA95955884
+398C55F58EB6C08D6431602DDA5BFEF5CD477D489D6902C2CD37D25492DC1222
+CF22ABDF01EF0EF19A49A4A403866C910B080735E2D8211894D8BE0D86D0AF52
+5F5417FE0D8028852F06C64CC98D3F01B2A54007709EE157F555528726E44781
+696DCBF37BD1E441A54F1C058579557C35AE5A2A8099615409F8B8764DCDB05E
+6A46BF57FAB00A33C014694E80D5AA8A2182E4C648AB7D4F83DC10B83BD9601E
+40AF9021381DB253C2125357F819F9D01A17AE3918E21D859103DC4D6966D167
+7E304DF9694D5107DD6F6CB4416642C4750D5BB85CCDAAB368E324A8CFB09E0A
+5877E1C1F837B105D9B61E1786D26BF02C765D3047D4A8C8A1F12CD5062BFDEF
+8516AEA8078F3B6F09A6FB9C967F832AC5D79354B720F0466A2D8620E56EFAF4
+8F959C4D8E1A2D572E3290ECF7C831C659398661F59B08EF3AA2FACAA655C70F
+91E54D53E67150245CB81A5128A30B4A061FB6575EB0214C8719E08C44EC2EFA
+B3A50CE947C18FFC3F8557910E1FA276088667A86FEEE4EFC2F181C49DEBAA69
+59B6F48917F9F433C7E3FB9ACBF58FC87732424AB7D1124A10707967F923CF8B
+5020E00E532CD077D2CE6DFB2609123D15B8B3B1D6C6E00FA58B83595E35D880
+AED20B11E908D9C61993384A222ED458875F966916B03CF8099477C312ADE6BB
+1373EEC46B823E91DABABEBEC7A2F76FEE618C5821FFB6C5585D73559D8AFBB9
+0FD916018AD8D0E6FAEB79345BD6CF14BA080B690A2EF0B3A073DA81B8CC0C5F
+3275336F56D0563F2A536268E35A849256F617645FEDA785FC96B0276E96F91B
+84793029C6B98AB7605B9AC5F63345A5E91AC07397B40EF856180B334BE47108
+88D856185D0546DBAE75253E778D803D803A7B246F9BD2B6F3A12270071544A6
+6F173B4671B4AD3E20C94688DF7F1CB6EA0EEBD1B06127A7E7DC190E958AF0BB
+DA59E0B940E3A88FEFAC83EF10B4282397791034A69E7C8DC10B9AB5E27317DD
+B5508FD10C9C02FB0A9D083BA060A6E6F33F48168939B27560F0A080FB902EB8
+11E9CD74E7E9448A7BA7484B802C88073CCC280ED4FA164132C4A7E2DF062525
+CF9D9285009EFD6FD1E30D5AF0BAE568E094D4BCA5D86CF88A2979ADEE744585
+BBC8118CFF5D83364B01620C8615C07E61197215F06D2D065938CA7EFC7D3351
+0500A71A05CF47A5D67F24AC1C7BDAA977EB2A1E5370AF0FCF7FCB16F0A7FC14
+BE31DE5BB0252BEB0EF974B1D58BAC12601424057C0CAB73A6A7883A54A72309
+DF9602ECCAFC29C319DE45A6417A8CAF46697D742F2F861122668CA96736658F
+9EED30163DCE9B424FCBAA19DDFF07C324828BF6B5AD0DD41B842F8ED254BF10
+5549BB7474D41BE0FAC170736F879B855C7D2133487F5BCA5940A45A914FD141
+5EEA94FD36161BCA86DE5944A1AF9FCC3AFAD2E52BDEDBDC1913046EEC5F1368
+97CB8C7A1F8C031A151DB23D42279970320F3F4B961D1C7803BD07514BE2C03D
+AB3791A9F82C545A5EA3F7A2568211926DFE2AA0CF0B706A5763F70D7CD1F39B
+38DC8B5AFACBDE0F55E1F21D4D312217C6D31C9A93DF60CAA58887CE62C4AB2E
+66063E2EDC7B4F5EF539C729DB9E2208EE0F5C04FAEA2C30C38FFD84F62ECA53
+4D42952BB3683DEA550954D19A94F651C6D7093F5741902DF790C95507C31948
+EC909649F6809922DEAF2B47A9A376636D62B6049493323F66C0A8CFBEB66AE6
+31C69BD8F7EE51A9C5DE688486A5DF0B2F03ABAE0357170F70ADDAA9A1EB0D67
+12A4BAD07C47A753453575451AA5666B84DCC8B427678C9B8BC130CFE9207981
+26DC39E6BC715E0B3353C34FB111AB26DD3FED9E0E00933B3E2E357D190FF99C
+56EA982EC3BB7ED0BC03F3408276535A338D72EB3019C77E70F4D2F52ECBA7DA
+00FA4A5DAD777214FB3835B5899742B81ACF0A01AD0E47A11D16AC55122546EE
+79C6E93F51101435120A6AEEF8D022997C74FF0A3DFC6E22C9C929ABC2CEAE9E
+8E43B6D0BC0EDFBEECB5831C603FFC9D0BD064AB54C9A449FA98CB1FC2238903
+2C57BACDC05791FE45F069B794AF65B52AB5F8120C4008529FD24717ED17B0FE
+D99FF7C5804D303235B6F996FC2A02DA9C392A066812653B8E541BC38F309F4D
+AB56DCA08695C11849BF155FF173A96290CEA2E74C33C3F1CC77D8D8C6729249
+2C0E9FB82477600B6569A3CFB0AC9285843BC79F226567314F2B0B9DCF049DCD
+72F37AE1337C9E822A1191B3C2DE6B96D69A2BC14660D0FFA7A4D51BDD640E90
+16CE25382C382686FCEFC1DB233A4B0906419E143A8B63975FD8E07D092A699F
+1B16C8576038090C9D5439C263A2B2042EB950DC0EF2C18439E4C0840CB7A29F
+27DBF7EA1C4EDC0EE3506FB3330E8274EE311F0A9207F13B00FECBE42F8DCC46
+63476DC28C275ADDA56A84535087F79B6E15083E8C855ED6181D266D880ED1F8
+E4F33A602EAE4432091423C3640E49DB68E1EB83AEDB7739049BAE3FC53EF314
+93A74C45C2B1ECA469B7B52F400CABFF431B220AD14E1EAE70CE0B7C9C89A236
+90A45D4B3ECAB3E7CEC2B8AB30A0D39A3E10D6A0DF6B7C3F8EF7268019FC952F
+F8D47DBCC809591AAC86D7D7B7A6DB12561FEF0531069CF4FB380530E65082DC
+F1D05A893FCCD8938E5FC23C3654B3A0A352034000310377DAAAA4A15A76BACD
+43C6BBF93E337946542B96AE3D133575C60CD13D202DA617B34C652A23D5E904
+97E300667AAB55FEC698C89647284916916F302146913DA5B003EC153C95B608
+9BB1CEF3D6141280875BF1E144A7D4D0B9C08152ADF2D5A05D101697CA36147A
+297DA42055ACA9652CC9CE0D596A42A73268F062B08E60C80DB50C81EA0180CC
+698A7CD50212524CBC3E5C7103F48D841A50B6506E25E8B34A6096D0359B0870
+B5109F7FB44876D24868B5EC0AF2F4E68FC0444A35AADFFC68183BB6E8F8C7CC
+6FD42F158AFA49EE096CC4432640F86549C565EEFA779E2218EDDB73AFE840E0
+590A8440CEBB2D7BF83256485E617685D05AE401C7105CA5D520B23265D7A109
+A638A5450C19C406AD524CBE2678EC97DC28A9C8307BB7D6F08BF7D7DF07A280
+F8DF84BFF4BEE3035B6A3133292B96918618D8FF3C54BE5215DDF8E5A9D3302F
+2154D48D33E374C0128BAC271F4B5EB30FEC59E702B6D3B078752AFDDE547CFF
+BD8BD019E775DCE680B6641EC6B6C639F9A81E7A34843CB7BCD6E26744A6F2D9
+7BFD4E207205B988E5922B12AA325317455667E5A0136DADDAC92C389D3F7066
+DE370042F545C2BD97CDC5AF80B1263B937AF92FA75109FA64EEB0E9A83918AC
+92E8AD5D75AA769DBB2453B42CD1B98F689BB56E9FCAEE456C8F0549300D22C2
+7106962EECB67FDDC78D109DA76C1980BA2B4B89F2305414A72E78CE66D3F162
+543B266587800FE3616B55B1147525E3DC456BCEC1665E01C027354E138D2880
+F0B643AFEC47FA16D6C6894D45627419E40C40F6B34E663B4A82D4672115137E
+52F31600FD88473B0F56EFB50B3402A1DB9090520DD82AB3A00D8AA481B01CBC
+337194CB49972EB557D80F3A3BE89EBCA984D0BD45972AA47BDB66816F5C9E99
+F60FBFA6C31D00B1C51A293268BE49AC80A4A28F919CB1AAB7FDC28D2A1E805C
+64775C50ABA31A86F812B2C7FBCB1FCBFAFC0F483E4F9174E60716C51CE26F73
+6A36B5566E8D616E6CA9A7BA4060D16D51F7DFFDE45ACA4990FF43CABCCE04E2
+B69C7B11F0F4C0A9A9788539BE8977D81223B98E7AB76EADF95C6E78698385C1
+8D70AF232AAC9BE222D954F5C7FD77E938ECD96572E5B8753F9A5D403008118B
+CC0171A621C9682A25713A31843D74FA7EAD73141F1E4554FFFC71A02EB86FB8
+320942E2BFDE7678AF71FFCFEEE3F9328458DEACE101341625B05196A3643051
+12037C9E88940758C8BB69C4DB90F58F798CC00F2CE50FA30F8ABF8C6A2AEE5E
+DBC15B5C998B2871A2DF437A58D4A00721B023EC53476FD538E99AFD36308EC5
+EAD6570456390AD49A6049794DA7CC4FF90D52166A6209D4110C12A9B740343C
+202E7483F24ABC0D95B1C6044DD9674CC5B6432BA242581DEAD58B7493AC11DC
+AB3015247EC7F3D5FF0D38D4B33E1FE09E5F63704084835BD6CA565E038D2CD1
+00A18BD30801E0CA98D6C2A2767FD2C74D3BB821C16B5E3EA835674AEECEDBA0
+7A34BF5DF232190502712891930C61E3AEDAC418EB9F7992E220F63855D16D06
+0A586D4DDA86EA7634E9ED540882BCBE098AD73752247FC4FC6453406CEE1E19
+0FB84831CCE16EDF748DF0D0B61AC2CC3FA8D4C8103A051B2204E8A5166B2CD9
+2650854A9BC8AF642EC945B7DEF10CC7F9BED36D19D57AE0F39E5B6D55472F4C
+89F21FCD45B6570E02B234FFB4EF4672B334732230B99E8E2A0A4267C059320C
+CEE8C67EC198DB603CD01968E83A7B0134FE4133B4014A398584AB71CCEEB998
+8B60B244A9D7FE34FE77A2143F668D600F923C6B3CBFFD6D24E6A9A5C5869A32
+B3ED6963E84366203EB82AF9D181EEB36676D4CD3A8B694F7585E283767C5F8A
+EE0142AAF74167A0CB151D06F05F78C984B1A6D88053F0FCE5EFF2213A6D3337
+1D20E7FFE0A70040C5B9260DBB781DE09D46220FFBD1372D662A9898569E109D
+07D3560BF1FBE95ED391EB7159A16C8A214380D5C265620C38B6C9F24FFF6C7F
+AF5B82AA8C84E514B86F314D3CEE3F5A357676570A085F42AD1D2F7E1E6B544A
+A96B365B5C47ACA4068F3B69ECB25B8BE74834D7E7BA09AAEAC1797D5DBBB08F
+31431F5E50273C641CDA5EC7C56246B6BF59C2E56EEA5004F7FC36FB1A93D8F6
+30566A260FE38A2EEC21BD5439E15480FFA57A17A72786E98BEEAC8FFB530D17
+568FE3EF5F1962359DC7E59DE5C721FCF7A330495AFD7F38A8CB82B55A826918
+E4AD6A84648EF1456658F5C69FC5BBBF54ED930855FAFAE82CD4DD3232496A43
+A329413120095902FAD5FBB54A5D9398FE0EAC4482E72A5655C966FD27CD7BAB
+A94DF1E54E7E0D1E9861954B617042DE4D34D2798A628D95759437A3A63D3B54
+0407330F3CC93C476941EFEF1590090B60AA39B7759E96D5784D36A93D02B9E1
+25EA97E3DAB0AE147612B1C61BFB5A28DB7DC903CD9D14545A49998F9E7FB80B
+97F2DEF6D2D9D3AC968C71C3E7CC7B776A4D0CB3D8FE9F351DE74D8E28DBA6AD
+C7B7473051D372495D51F32E4C315F7E1FEE69FEB50A2AC41B3D753E788AF83D
+BEC200E32832F9290610042A74E2ADD177DE1F553C22D836B865673FE8FF62F7
+29B760CFA8C58EBD47131AE5F7131A8551BF6BE477EFCDBAB0219F411B54320D
+EA1E74CB6598DFD42AA22C2A34690F90732FA72F3C1CB6AED96A0652BED5D42A
+790A25FE20AE2FC4E8964F0A1ADDD2E8FCF6D009CA95D41B70A3E82536DF3F3D
+8EAEE50310B1FBFEA16472790ADBD69394F6AE200154B65FA4397C88195C5B9B
+2F4C67B813D148987097F447A890A17CEA1694F0BD89B77FD4CB414A0A18083F
+FD48AE1AD4DD1E5EC5AB821061304774A1087E6767CB0738AA8C7207B5CF410E
+1075D74B27F4DB85A182B27A3DF94981BBB315277C70A22260F4A00EDCF7F3FB
+FFD5C6D3B18F29A1DAFFFCB352972C15B13E2AF9EE1C2196A14A4D6F64C76F1B
+340582F1BD063F9D63990FAF20CFA09785353D4A27B9A8725D44ABD8712BE25B
+56C88B435E53BCBA60D38823BF93368F45A4618E234F3C1BF2C1BF13FD2C82CC
+85E59E3FE4DD67CBB4AF25DB3CF82A2D47914EBA390EC87B893E3AF3DFC12DF3
+B36E8FFF3A6DDE708D799C9C9882CF5C568B77CFB92DD134D6EC86A5FD0D5B46
+C15C4A13662FAA49705CE1A0809D5C29791C13F153E622DBE47AD5EBDBA07E78
+19BBA14A8CEC6A1C16DD922476B6A7EACD5E798B3B2457FEA6779140504840DF
+57E22B3F4FF33B78C8CEC5BC11FD7905DF6A7501340CB40E49E86B8468E13857
+B8FA4345E8209B501B30829128526ADF0424D12F8FB7690832F9008472A62055
+0F467D4DFAF718FC2BDA9A39D77E2EF4550A481956E8D126593BC8A7DE888A78
+02709AD3AD0E89CF46C4699B8337E505C23382716E37F3384F768EE37CB11462
+2B492A09FEC41C8DD33728441089A0D523EB1BFB41ED365A5C7ADD082D14045E
+200606FD8B2498D9A81AC8DA319194F4F71E5E5E966DFB60F7114977D0141C4D
+90F0984C5438D6F455D94B966937EE725D480112E62D6F3AFA41186A9C9EB7D7
+2D7CD239133B2D34CFB70DA8FF64C2F84542264E8A1166A47D70774F6BDC422F
+2474C6899E1ED968A41008705393D50DFEBEB92420F9AF90EF638A96192BBF38
+81D1C5DC6E3FA5F2D9B6E871141CE429A37BD00763D1FBAFDDBB50A00AC924A2
+388EF0270B15FA03E769F1AFAF0465ECF6B5537AD75B74A435921D589DCD7310
+595F4A62DF89116AAAF591B34F09E5AC07A983338C72B432ACA1AF0794564DF0
+04D1F0D4E6D8318A07578FC5F962E648948A7272E2E14CEBCBBE138D9B4571A7
+2B38DC96C43DC31CA8D34A5F52A4E877E8792AA97C95FAD01EFC5D85FA13BDE2
+70767FDDF7D513C48C257C141501CC74314300585064F6F5F25503A89F8DB27E
+FD36F76BD2B84E24F0D0915CC297995E640FB029676E9277A497A6BEB80B74E0
+6391BF4C52707461D9EAA8D5ABAD4BA636FFE5EF82C6BC33E7C15A684FBE369B
+28EE6F4D11FBA39EF06FA10CF15E4333E3C9A1BBCA3C3712C2DB8F43B5C36854
+FDEF11F528DA8DDE4A6FEB1305D4BA73BBB629FD53A74AA41369361D518C0BC8
+13C826F2AB3E8335481338DE18EEC9B8DD7E7F01F44B329A2BC1731637A70256
+2A6CF98151E8338D7DEA6FB0EE2168EE9C7A4B07E91467377F23F1246EF71F1D
+9084E6ED573959CB55BE5D1F91FFBA4AA7E9DE42599E97690EA268D3CE467658
+ECF76521D18BFC3AFE305C7AEF0AA44E4300BFB6995EC9785540A90C9EF8AC00
+89F0D74B5FD167AAC40A5352A718733DF674FF9164A930CE03909A93B1479248
+A41DE8297192CE693F89A8BC54741B0EEA6841C16A3388D3564E10E92C1BEC86
+2B3862E97E424356689B9103528A71831018A759CCA7BFFC84B2DB942077E02D
+9BCCADC6FFA13E783B7AD4181DA76CD2C4BD870374CA65D1BEC518C2728833F3
+FF038028DD38D8811EF8EFEC4A5236D42E5B30CEC0F06F79584441C432956F3E
+5CDF15196926D06D3B4729A41CEE504F4599A193AC71194C17DBE38E6684A695
+C6EA3AEADC8ADEA55AA5E42147528E621D78ABBE5C48919BCDC02BC74AE7FF1F
+486B782A288C4F95639C05EE7A42ED92188863BD1475C7C54B8684F691AE0858
+B6B2C063C3A7D3DF6DCF007C2F3836026C31A2ABFFEFC053512F0DF165A11B8B
+EBC10B920152FE283BB8A984F2C63FD9D7596E29093570390F878368BF418B32
+649935B8E9296983A62D2F0C5D4F5F23D1F249A9F2C3FC1143468106FC6A1ED3
+7CC2AC98DD9784FBE00A972F36132FD489730913BBF1BF2B17BFE13B910112FE
+2C735843BFBFF1F9567DF38CAD16882CB769FBB505365BB9BA797CD743C34F26
+5DB16682D15DDB2C16DEC577C464520AF87FD33835579D7C067EE71529DBBBDE
+030BE21CE1E76233C038BBB9296473E5FC64E6C07F0DF7322C88E4014BC1BF29
+6A65E6D5E8EA12BCD9F53C4B3E0F8202E082E4ADC8604D59862EA62AEFE80F44
+E917E635D59A06D6F05BE53CA22058BC8BE3AE39FD965D6C622F0571BDB4E9AC
+C3987A5821D142E62ED17402E332430E92FE10B9DF8E3C0B17E78EF098BF4CC7
+88D7585BA61F5784143323AA813192C5BAB971956B5CDE027CE8BF56C8C8391C
+12719AC323DCCC8425A7A637957DCE2369B73B1089CE53430D341BA0EE8DB907
+C722B00404D43FDF76E93774896F8DA82BBA116051BC4BC2101B5655F76D76C7
+868CB3E452D1A9945CDC9A467C6A1D74966C01B8FA7C8A2E3AB73CC66910A771
+AA23E6F809CDFF8280042A97B0FBF3212CED3416A7E9E1CD33B39A491872CAB5
+1F73D7AC7A7D7ABC70DDA7C51ECBACAE9FD3A5EC9F51F68B149561C41BE5F059
+48FC70F61E1AD84CB2230FAF1E88114973F1A81732C73CD8CA14CCFEEACE7038
+14CE80A9CA48358917D78BCB14E925C2D858232163D0937190C9E138D5CBBC4E
+E6D682B3F596C6CA5E585BE658750587EF9D14116FDB48CB82182AAF32B5B0C9
+0DBF994BC19D887611EFE916FC6D162986CAE900B73C7333290DA365D8E5D7BB
+7BE61119741EBD884D1A5DF8CA8E7EB2F359DE8B3097F61BE2BA74003C1C499C
+B20A617275B4BE6D6FFE2FE00BE02FB72FCA427A366D1CB42719BA55D17DC2FB
+482223E5A69C9D3C5B6F651EB69D00F335A8882E650278A998A2392C0CC0E947
+8EF50B4C80B84047CF9A26BF669254BABC1AE1A6D09675DFA3D5BF9FCC4555CB
+32E446D28F2E5254B160B864F03B70067EB336E185F4E23E0A66DD752872BD3C
+2B1DEB68093E53E9727275091A697231E9D6807405FE5A6A13D881D13C080AED
+B600265E93F5F22DCD02DABE93FE8734C628E91B370812B88F4849CE0DDB7A1E
+0341803B29B510CF216F5DF0C4B5D74C323EBF8788FB492109F8047D224D8E22
+301933535D47D8F7100D27BAC50469D4AD7E34F77685F53ADE69E90877555B1E
+9A3F8FAD10B4215251F335FDE5A4C8F426DD86B3F91BD157AEC3B5C303B802E4
+5869FD1830217FDCF769405E36876E044084C124191EEEC6BE575B818344BADA
+9F51B0214CE7E7DF6891165B427F4DB1744030B6E15AEBE289392677A6C93994
+6F98539465E2B5C7FE0A8211C41DC19D43279E6638BEB06DC30ED8E82551635D
+F80221BBDF299E7B7D6781BF601B6877C7FDB78716BF6B0730F9498F848D3F5C
+0D24F91B767D634C67BC6D979DCD59E7393F284A1BD4E824B9C93BB659E6CB3E
+77F693BB2D1D3219502257D2628C63B79EB4BE2DBF1FB683CCEB7E639A87D599
+D6780961178D9236A086E743EF447A854FBE73C7B983C6BFF0E602AF9366AF00
+6B75763481607E1103693406381601E29CB57A7A66F300820BE79E018970C7E2
+4B7A15DCB7F1B7BF1797F239F3145A37EF67BAE0FC725E95177B0FA091DDAEA7
+AEBE6CEFCB1EC0C244EC7939D6EE1BB525C8902B0923B776350E6AAAF8B181FA
+5BB7809291C9F85FE67A32833EC6E226057D39EF8BB9C71FCF5B081AFFC496A4
+FA719E3B24E9EC9741483447AA8A823048984FFBF209E1609D0E3E2FB13A17A6
+B476E204886DDF9998A6B1BC3144EF6EB322928AB80D36269920465764A08628
+1DA8121E87DAA13CE4FBA818B88D72EEC0DCC5ABE99912905446B18C1703E3FB
+C190D814B34741D3B5A745DD8A445EA8334CC2F26CF2AFF782E924C90D91EAC3
+8EE8FD657C8EA154425FB6260F5B1EC55AC5E7A7F15C56504091C0B8C12F4AEC
+978E6D16ED42ADD83AD5BF66B2643AFB79B59B775BA8D88913CBA64D10185A7E
+A0CF32E350AE655AEA3A76462B7202886DB4F192F2C842852DEC3F3C430EB3E3
+A67983303039E332867D11BFE112CFAF3D4DA98C012DBF69FE4C25A9B8B8FD3A
+6A04F3675E73F202487188A7BAFA7F8DA9E9A2EECA64E7062FC69B95E2A715BA
+66623D40E2CF080DF61ABF9C656D1CE8C44FE31CEE80C0730113582B92D78F01
+B61BC6AB48C856592B57013C3A65CCBB9721F703F1D4560528C20EC19D721545
+BD3CF85A0617D2FAA302C9AF7010D9E16702002042EC5FCEAB97FCA98D6A9198
+8AA663C6DA902AEEF942D8FF037389CA52CDDC66C7044DD1BAAF8706FBD01E04
+2D232FE649E0D0E9F9ADFB8B49C4C0213C5AD1FCCD2F78B758B756ED2EE66D98
+7980D4548C51911E94BFC4F0A1B8C8B3BED0F88B761E745CB4426C0B588CE66B
+4349049897C6BC62F514CBB20B2B0D7F3076B64BF6C142550127374B8B00E0B8
+9DF62ABB9B1F9B6A6F77AC00D2FCF0114AC0C37EA54C1BE43257CD4C298903E5
+8DF8548E83D24843AB59B8D3C26003309DA04432BFB817DA2C197C51D9C9B340
+C74F849171CB3B868D4E0F69B1679FF5998D4A9F91BF3E07FE734C589157C10F
+A05B9902CCE7A17FD9B9FDB25804BB91AC72C746B3F93810CA001E58B07B53E2
+B5A4854624960F5874A2B3217733BAD60DC894ED947727135C6CE916369EB538
+208143B8BE5F0039F4AA35DCFB8FDEBF0D29B27044926B732649355A43CB41F5
+39C53E37B8CB3AD3C8CA248FE48E3FEA3B3A062BAE725C9A90759F26448457B9
+940F7EC7043259B64A8634520560B3F5914E6B2D81EEF2FA5130110CD4E24C2F
+909D8A71E3600C1152FBE85306E0E005D5A665B20AFA7E039C08F52DFED85926
+12E8AE9F17014CED627D19A23308F641A09C9DB5A3CB8C4EA818873D48AC4EE0
+90B0094F29AD39D719099EF49C4DAF61A3EAAB108563529A032CF9145ACD90AC
+6D79E73F6C93A9C6F86E4313732282CF1CD57B6C4A1EC0BE85B8829AE083834C
+049877A4729F0894764E07CBA8B842A83CA8D121065096B98AB299D768EA3FE0
+028089ED4EFEBD415F4F53E80B9C380FB3588176AB7A10452DAE926B00608E6E
+DB7A0EA1DFBA09EFC288E4C1E3702D304E3A49A8366367891600083C3E81CACF
+8B700CE9C04152ED9901BCC35A5F53AAFB97F375502A735EF9A390C0F2CF8946
+8291A94B863D38DEE3B61C998DC2C08DB844FC30F78916FC658A4EB91797E986
+A1D386172188D128F683CB64267A715522091438457CA9AFCFB476F46634D78D
+309AD3280848255EB1465975654ED124F86FBCA22C4CBAE006ECD27072A9E2F1
+2B03B5D312B47D17D0D9A6112BF0697BE5EB3DD040D0BC7D7CAA92F0849A0576
+4A634AF01B3816FB59EB4FD63E28086F4308CC2C2047473CE671FBF817CB6E89
+37BD749C9761921FCF96E10FDBDA6F4ECB0AFBC2B9E3FA77F3D12462EA6D2074
+8549634FCB16F304C1F204689E7C4F1AD1D8A34F20A073A2927974691DC6F248
+B5AFF93BAF96C8F24211502E861D11BC276FB30141D2358C0C3FE709837B2070
+FD7D3BD533EFA423F53E34374ED967BDAB1D9465BC53EDB8EB53764D21A49D65
+6BC45FB6F4C3E663BB93ECA9F3C66534418B4432B0349018EC8C503D7CD38384
+9683AFBC0D6E1FC4C51DF547F927404E475CAE960355B7F63B5C9617BEAABBEF
+061E35DCA59FBF1AA58803170DB43BA1D458F21C7549CF57601D451FACFC93BE
+CF72C626AC0E6EFF7C6C1265DED3ED04308CF0C139630799B7B710D39575AC97
+FF640552D4087E60F5DFED48DD998D29C6532005C8B648E51D4F85A072396E63
+A11CB388893B813213B4FBA4A500D8B8077ACF86845DCCFA3B139F8C86AFE069
+D497DB26E526424DDF6BB981E08D9CC1A5560754B95008CDCC199048EEE8E6C3
+AA3F255C4FE4C392AA947F614D422021A55C4CBF5D9399AFA2E715D31B2A9F95
+0977502A1F511219FAB7DD1D9CB67932C8D0504DB7B2864B2FC1C4CCF03C7FCE
+CD4C0985288172CF5D76EBACF180FDAD74456F832AE0A013EBFED26873DFB861
+A0F2F13D9AF8C90EA667B03956DAF47A7C1CD44DD9517238C1EC060158D55710
+77DF077BDF35E9F96D07FD114FDF30F09FA0480322336275E9B3AF676603DD10
+75D4E9AE727889BD3E313A3F86C6784469D653AFFCE950990DDD65879506E8D9
+A4BBAE3A41D6C269F3A35EFF60E4F0EEA6290C29B81F2BDBB0E33A7B094DAA0C
+EAC603058FA886F40CAEBEF24DA460D2DD891B7C12290235ABD082879EAADB6C
+58291BFF83500EDC255D3FEDDE3E7F1EA5A055EEBECC18679368B17D03053732
+710C58F086B66F254D3CF734A377BF1C8884CC483D42A49E353230DE9B496300
+E388E1C3020C8D70657897350074D51D491C23F69CA20990DB6DB24297CA072B
+1ED9AC18A9D2EBBE141937DA9148B49351B9225AA10B6A8941B5EC833FE9A457
+649EB68FC795C2929ACE8F3A566016EB4518B5BB55223C56908D00190B91C695
+FC183D9862573936A1BAEE758FC074C281C5E73045544E948250976ADCF97B0A
+34CDEB2C05E62B32618236B698CC94AC3A4A317418D71FC85EC79FB2509EB76F
+0E4A9E09EDF79ECD722B0E9033629DD7F976E768EDF05280665EF818709CD03E
+3D9E79AB45D942B9FEF5584B7BB192CF574D80B98A926B4F698A53729A2E9F48
+3192075771433B7C0242127F5359BFE356BFC6FFAE3F78B8847CCDF6FDF6441C
+49580453348C3757813E09D6447ACCA150D05B2517EEB2826767AF869E3EB7BD
+D5CD1BC4DA45209CEE3741077B867A4CC52A1BB8951BB838D25533CFCDB459D2
+80F5A7FEDE77636CB5C512B122351D66281E14E3B80BF84833670981EE2E73BB
+70F5788DC8A943B96ADDB8EB1B2114FEAD89B38A2C744A0D360F0AFD47FC5B23
+C55EE2DEECDEB212084475B5BDA5A6EBAB7EFDFB389FDCC9861FAB518DF6630A
+000522A93907CD055E275EA7284D7166FB93CAD9D90144E7C1BB169635891556
+5CD2BC172EDCAB3B4263CC42BF0F0F3DE6E35BBF0E7FC62FCA92A5E74115C74B
+9557D5319652129289AC3912140A010FF60E4F3891281267FC6D80E528A90D2B
+D843F19E40B054C6886A8801C723C436F833564C1BD4DC92AB40D6337272DF53
+3F40275C0501DEF779F89BBA03CCC31161385D86D27A2532520244087B056868
+2EBE0FA551BA338FCC1E16306C071BF1711D3C675C85E08AF64D3E1A6F633B9F
+44FBDC2E7209B2CCDFC5C7B61D13ED4186F3405999E2A840B22E21F97F410C09
+581A93B11B7C2D887EBBD65A45527D193977CA207CDFA88357F0BBE6DAC094C1
+081FC2E3C0FE8633AA852A913979718608E3AE200B999AB696CF21721E5D9BED
+C8C6C97F485556EF3B80A36F8BBF181B5D04475459C73A951D99890E6B33FE4A
+C93A20B15FF0A4F55A6C5E200BE986C823D331FAC69FA0EEA6888B325D934B6D
+6B55560E4B3D74BE72CAEE1D03A79A64973459D32AFDF167105655C6B17F0BA8
+298D4D1BC7D7918D142EFDC0657D48C426D06553C2232D9A51B635530692B973
+CB475B3DD96750CF7B0B593A50B2A3CD370C9A38C8A229C21BD86A0981E3D11D
+6E29164B01D2776DE681BD49D6EDF45C5D9D4B0D31E19383297331F146ECDC40
+DF77A89E1B3EF3A631595239A93D78F1FE0B0E04C9FE4EEE83E6AF5FA7D5CEDE
+0B9883ACD1F1CC0659770D6B31500D247D417D860927ED7416C414FB7418216D
+57E66624DB53FB344E1AC26100DACFDE01C026B84FA15B82CB77E9A0E37AF526
+A76D130C953928B764606B6C168A7BA484F904D46930A8273A61741F1C0EBB2F
+8FCBB549DE3953876E3C2FB45940F1A98E5195EEA4FAC35EA66BD06F8861FEF5
+D0DA9E93B48DE54CA18F851DB7890DBE364E1D93527E4ADC15716A976274A264
+37F008707D590E6755A56F2DD9BA242B171931AD5BB6F24648A38FF1A3ADCADF
+A156478D8C9DC9A1BFA553D707E94239252DF6E83FC3DB1D144F296FAFF4981B
+C3052DB8D75FD0F74448D936036846AAD5F34B7C385D55F39B8368F184463578
+207CCABA7556D9A43C972BAA26CAA3BF0A82E0877D4D530CB350AFF88D920160
+88D937E0040F69FAECB44060A4E7B151ACD3AD46A659B8AF23EECE07E9029D01
+F77E7BE0A2783281141A8B7A13E013AE5A6BA5D20FC6D6A49473DFBF6E51C952
+D88EBA809ABF4313CA76381CA315858BB7EC4FEEA9C2864EA769F786E15CE30B
+57E8DE5EBD70ABB189D5AB67310C9FFF2BB0D733014148A3084C2E4941AD1360
+0B5E23B6C4462BD69864844955619A25F540
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -5177,55 +4312,924 @@ AE5400775223E684BFCB
 cleartomark
 {restore}if
 %%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.0: CMR10 003.002
+%%Title: CMR10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMR10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
+/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMR10 def
+/FontBBox {-40 -250 1009 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMR10.) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+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 14 /ffi put
+dup 33 /exclam put
+dup 34 /quotedblright put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 63 /question put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 96 /quoteleft 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
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+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
+dup 122 /z put
+dup 123 /endash put
+dup 124 /emdash put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
+0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
+51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
+7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
+E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
+0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
+C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
+569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
+24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
+2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
+8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
+3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
+D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
+D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
+03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
+767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
+8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
+DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
+94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
+22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
+72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
+8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
+344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
+64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
+07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
+1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
+78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
+CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
+7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
+BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
+4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
+5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
+EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
+EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
+4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
+0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
+C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
+314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
+DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
+EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
+DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
+DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
+7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
+1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
+69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
+EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
+7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
+CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
+38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
+22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
+0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
+BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
+4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
+3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
+B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
+15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
+849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
+FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
+4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
+1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
+84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
+7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
+CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
+4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
+3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
+F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
+F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
+DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
+D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
+56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
+8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
+59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
+49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
+87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
+8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
+C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
+D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
+D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
+F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
+0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
+5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
+229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
+17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
+01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
+F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
+3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
+689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
+4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
+A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
+DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
+364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
+7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
+26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
+43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
+8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
+C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
+94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
+C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
+B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
+4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
+7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
+204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
+B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
+7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
+279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
+E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
+CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
+65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
+BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
+6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
+B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
+63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
+4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
+A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
+67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
+DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
+5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
+C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
+9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
+B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
+963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
+D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
+B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
+72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
+B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
+8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
+3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
+668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
+ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
+69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
+C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
+3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
+407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
+11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
+2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
+4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
+2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
+9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
+CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
+DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
+0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
+5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
+9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
+EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
+09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
+2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
+AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
+324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
+486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
+EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
+52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
+9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
+4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
+B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
+BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
+6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
+B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
+16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
+E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
+546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
+6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
+559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
+C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
+ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
+04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
+7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
+8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
+A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
+94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
+C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
+41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
+7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
+18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
+9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
+E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947
+5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F
+4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F
+E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF
+9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9
+89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87
+7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3
+AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3
+3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E
+61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B
+F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F
+D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6
+652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA
+07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11
+6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB
+EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2
+BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77
+2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDC250E2AC3
+9A160EC8C9654FCEB36AC2B586E978D54744FC8A0E963D8EF6E228ADD22D093B
+B889C940206F504F14DD921D909BE06EC9BACBC23EB9E9D137FBC983570FFD2E
+CC5D2EB5D2A4A8604A4AD418B800EDC6B89809E00091A2315EA8C071AB631CCD
+04C3EA77541646B7F9D70B7EA564D92A65C4DED8966517660EFB9F77E172CD8F
+1B5FA83270898C3709DE964B0C4A899418435F92C13E94F5C1C5B9D7DF3E8793
+5F9E83CE1430E3EF275C26835080FD2AC78DE88BF65298A8EB4181F215181356
+A09245577F997AB5F23F31DB7E081C7385F461B083E96E3F08890BCEFBFBB6FC
+E597C3F22E0F0F7B6A93C55879A8EA022411E0C1864E987D2F00CE0427E4E8DE
+D92F9621E3F7751A3CE5CF1EC306A78C0D1CC6781A016A285C0D195E17B59A63
+C593D2DC78B6071636FFBF968B8E7970871E4B60DF79B9BF341528C4F0C5008F
+191FABC891AD46A68212B20FCC87E25AE386DFA935CC1563EA96F1339B6CC859
+CEA88CCE5DD0993F19E3902D9683ADA47980535FB5597CF57C046C48E0D0140A
+C40AF806F16E94FA0C046C0F32AB5BE121A7157A42654E7C1FCBA31379FDA9F7
+BFA8A0D0384D3B29B9DEA1500AFBE314EF78B201E5F679AA38F12A87D1E1512F
+F71D12EF75F3DC48BD8BA01A6D091F0C5B2B961F4371E588F79C825EBC124C1C
+E334BD4714EDEBB709068CE0669738B49AF675692317C3E530C6AE57CA21B59A
+0B542AC77FF404DEEF116796DFAF46DD8C9290CDCA4A16FFE88A0D60ACD6CB47
+440014F30DA7C27C199D99A1E6D89D0A0C31CD1AD4891668DFF5FFFAE992F10E
+C7B88872E9AC808E0663929D199AB424136E03E284D8F44DF9235246B9D22C9D
+79BBFCC936171A58B943DF0EA5ADFE2818992B46DF97AE05915E078FD6AAF8B7
+1047AD85A1CB13CAF70D095264B8AF9A3FFE6A603B10EFC6A20DD56A9947DC94
+06DE0A6AC5B655C71870FA1BA99322E51D46A52D3E7AEF8189C9F1DE58AC9833
+7B325CC59375D0F61488AD740909A855DC069F260A465080F5570CE7D41CBADA
+47C1AB404D32CBE9E1B8220A27C8003ADE08A63AB714709CE4312179218E4924
+6CDEBDCAE80C39AC4063789B6A407EA9C19D12688DF86B62D63BC05E9D65ACD6
+CD5DBF04B896DA28B466D584426F531F4A3F9C4A717A0C5ED8C8CB4191E950DB
+CCD311A20B14B417714501AEB2F6F8510242AF91BEDB6D70B1A52B91FB3BBC8F
+A8F9731E745F2BA8ED8B00CFD8A93B2BB05DC2DFFB5EF265CAE08E9B046C3F0D
+9DD51BECA540149E202F9042A94113745077BCC293DDF27CEB36D7B0C78E1B9C
+0308C3A413492F0D59409D923BB699CC6F59285CBF31CF7F1B464AF4BC054880
+B279621391D022E71427F275BF550881FEFF31BA2071293421FF99BCAC2D5483
+B7E56EDB7929BFF410A35BC193DEB96C4A1894D3D262DDCE224ADC5C6E85178B
+40FE0E15AD22D7B2F6D066B0DB42E32B026967088FC62BF250842B195D82AB30
+4A5263BEC475A33ADE6EF9B4205BC44543AE6912F1B9BB3D694AF8E9CFA440C2
+E2CA5DD42B637763D9C96DA8DCE38246532ACA6AC4BD7B8F2D348A0A4BBFFCA3
+4CF17A22BF7AF3BC490D254639584011D9D515EEBB719246499AA89CCFBAF34C
+77541F2112ABE03FF03C5C8B2BB07DDA99390C222C7CBC96AAAFAB4EE6391224
+6BF97923CCA98DDAF09E5E01C94798C4AE609E954BF1E40330D66423C3CF96A8
+F6879E2135374C80689F757F71375E333A3582C2886F0615F2379DB47721F6B4
+04385DAC971DE716D5AA2CA014EAE9FD0859A89CC62667BD404A071154F7015C
+4E1C734081F61F33176F8805AEA5A95E427712789EF20881BAC36C6190971AFD
+B876670811FEB1DBC25014AA98D3D0D9A29CA7D853C8118DDE2DC2402DC99211
+438F8A380EF1BD24B442988AE5DD9FE3A87B54BB834F2AB8F69241E7A10559EE
+9E1F3DD7597A041F96313568639B2BB50A76FE62D7714AB955DA07C374F642E5
+2060C46160DE1F11ED73A837DEB4EF5FEF9BA654837203FE8BCEAC3F500A0957
+9E673A257569C4D4E6B00BF84FBE1A8C9A566A77B3693FD20159F95F66AF9559
+A80D47C776CD363E299BEEE2D5BB9B10B58B1AF2A76242D59997773834D8945E
+F42FBB1E75B90B6BDE5E4DB2E2FE96BB5B8E485E42682E9F4ECF97D61D441707
+9D2DCF09A0E67F4027A9D1072FA8934106E9D7156F7333342BC640D6094EC706
+5BED449D636E42046EEF2AE810351BF1E38581FC71D1BE17BA690B2567F52A39
+1205F2704B712B22C4AA4684CB74785537AE120F66EE7FBB73A8C475477E1E83
+8D6CE79D788B1AE7A159013A2E070123EBDA58BE4DFC8BB39C3D561E2A2917CF
+1B3F64217ED680EAF63F04F9415D7F9CB6A5D3E0BC2A6EA4165E69CD8F93727A
+4F4E9EDA653BCA0422BFECC33066DFDF3E4AFB32361ACA3A0C339E1B4B1F99EE
+EF4C3C3ED1FC3E7078F7FE282F0F6793A4C18A484F1062F780D2947F2AFF2E84
+182DCBFBE1BA25E8346045859715EA2437263F6CE83BE0B858CEE6A5CAD60BBB
+45723E3858702B52B9AC50EA918DACB15EC541ACDF19782024143AE9ADC39A0C
+AF0B2E4FCD4E97EB36923F31341B9D72B917711F55F4ABE40E6B5F732D46C76F
+02BF82C68500194FF7CDEE3CAFE3316C4643295F769C4BD964C3BD4196F7DD45
+EA2E80DA6C2B8A23DADADD50BD28E2DD1BE5852CB88CAA6FB71C40F8EECDA3BD
+CE874BAABB668133D5001FA651BE928981AD1A8D95ACDFD83095F12B3E460DF7
+2B68B2C84DB441EB1ABA2DED0E9BF8A04B1572284498AFA3F6DBD1D4DAE8D4EA
+877B0AF0944DCF4B6F6B55ED1D99ECBB2A7393DDB4634FC166A47B4D5236C543
+F066200A255781DC3E2E583A0288C1874BE8C25A7C13214A79DA8062B0274429
+57264A9AD87F246982C80FF9E34473082B8A836A0C83FBB736DA740688432090
+3EC63BE175131C8CC487F76FF44F247B7951454D01876332B4DFC27CCEE5476B
+68B432744A0C3689D1D79F2B876A30975783B96F904B92F39D2D3FAE7ACB1DFE
+A19A42AFE6A2318B0E3542440A40A69FAC261313DAF36C61FBA307C908682BF6
+658BB9FAF140EE91B182D763130FCDF172B811359D669E86C106679FADF3E2C1
+F83685B6CA73CB8E1D58323B6A733EEEBC0323A6F23BE68E5977EB3D881522F2
+0E49440AF248939790089CD9615F24D9370355054A7077585637E6D80E13574E
+B802422BDE06ABFA0D1601D78E215DEBFEA118A5CB82E68C5EA656FE97A5E1AD
+01A8CD577848C5DA4B9D780BD1B0B4362FA271BEA800890613D8247171938596
+CEBD54A77CA281A5326F2E6F6111C5CB507FF35387ED3D870BEE3C9F06E6E756
+7E84D952B39B49905AC2C1BFF606AD3C07E45A768BA1969F865C58F3455FA101
+2657884B120E69D4D515F8BED9D9FBE928CEAC720A707BA004D95434D4236957
+86A7AB03ECCC79A9D33039559291483B27C66EFF11B3540F7A0E8716584BB29C
+EA6259399E5FE1962DCEE55E4AFE699A7BE7E2C5081D6F025F66E4A236E95C01
+9ED2BC2B369D0F7DBDE3F53DEF90FC9F29DDADA413EE3589BA2C9B802F9B5F44
+E00109A44BBAB43AA4E86B63C6E1FE10E8C7049EA6ABAB908C0386FC64BD8C6B
+BD8A089A521EB06ED2F433059D5AF5B4E1E86D6F0ACC65A5AA9665651E82F38F
+10ACD33897B4612A7D0E08C92FB67193C5F16DAE8017F3F246E509422F8AA656
+ED88EAE8608354A2F6334559DE541445AC1EAB60FC9D4A66110AE5DED90584F3
+EE278836F121144C3038D3B47D9751E0E2285085544558F53464BD908A71B94B
+57A71E94C110C8D8DB565A8C6E527BF7E7030848FD2BA4E6748459CB4ED3D0BB
+3017EFB793B2A8627F7AD99A9602161C8FA3B0A8B89334D2082370A87CBBF01C
+5F420760AB1F70F2794B3C98CDB70BCD5F437BF4593B1BCCFCEDA9577FB496F3
+7E86D7D3235A4CCB9D4320925AC726AE1A27113235E24FAD6CF43365609990F0
+466CEE79F0C0EDE02D2102CB024C9DD90E9863AC9F2C8A6E1ED0C4A2193103BD
+C2426B358A2CD7ADC8C1F875D672E220883FFED285666956EC8CCD2F6D5BBDA9
+4907A3E13EC09DA98DEFA48721B1B1E140ABF1CCECC3D17D364D5CE4021B8D28
+546FAEB139027DEF6E4A11312A6357B25B6601E8F6816C413BB16D9CB7535E89
+3CDCFD4A08C51D5310A114E474CF1C48B06C87FBE85E2186D1B8081A3C9BFA67
+6CE5AB3C5ED7539F05344A2A061F5D409EC6D03E5769BC69C6BA042714A6DA0F
+890B03838426C5C69D393469CD8FC4BF4C5D7BAAACF20F905FD7BC3246189A36
+E1EEDEFD3F488362478967755E9C2476A76E8197F91F855586B9D8D8E79FC4F0
+66C4D6E151ACA5B821C74BE4A19E86229BFCB3EEF07A2F6DD59F4CB5511FBA40
+378633B1E5B6040ADCBBBD31C7722A828642A38E80A42A90A1984881D9107671
+91F2A5E50887AA1B0D3E96673A3FB85D73EA75007D7E30D21C54FC8224944F8B
+6FF866AC71499C6F5F38A54EA4269AE591E9BE9543FCD72C49BCDE00A2FDDCDF
+130133FE649CBA9A607428F71FD761EF81046CCA214F7DDCC1A0BE0EFC7B05BE
+85D1DF5606F398DDB0413766DDE50E614EEEE1EF52500129D3C6E25E09B7594D
+E5F86EBEDC9A262FBC012BE5E4044B64E8F86327FB10EE5AF01746A46971BF45
+73A7804D9FBFFC791A2B38674EB34688108D1A05C6A58117CF47CE531FB6B84D
+7419C0C6A3E29C6BFDD122FB1D4675D2510F27032BCBEC6BA2705EBB37367CDB
+40EB8C8ECF19E2B507FA4B64F1C1293578380F289D6F006E78428669BE48730C
+9DFEF090304F4EA254E12F422316BCF1D3BE6FC7DCCF5963A646A909380BC6A2
+32B67F5C312FEA9A1AC7281EFCBDB4D7ED9FACD9616DBC2B14D513BBE956F29D
+191748D03650D722C48A49F12CA6A7C5E211E526AA7071D951511CDA58BD0CD8
+A6F821F4D20C219BE6DCBEC9C04B61CD7EA0BDC7A528FBAF88A5003DEE761F17
+32A465D05343ECCCDBBD9E410084DE2EA145AE58482B5EDEE78A4BECCA5D50E1
+FE61847CD91FCFA32C5D83F97651FBE30DFD72BD9536641298F062669FDD8FF5
+06F837C2927B3DAAA6EC88DDF23FAC5A77A4D79E4D6501288458897E6682666F
+C94EA8ECC173CD268236D759A04337A123A5D499CE0328168B6B13E6470200D0
+725B87023AEEC48256D4ADB2BD7B6C960F2C6BDE3D2DEED6EC5C270CDB33195E
+78CD19CCE6A80C7495628B11355F2E560721C29AF77CC7CB9B2B3EE5DBDE2185
+47ABA4CB28E69F351FCADA2765CB7457DA00A683EB485EACB21A3D72CFE027E7
+3FAFDBA8B5A44F46F817690D484E5F57C00B139B5B8195701CEAAD3E0C4E225F
+369AFB09115B8CFE8B09A31AA43CDA4F6A70C188183A7695DFC0E6FE024DF9A7
+796933FC2F94A70B64576B8DFF20DB12888E0C0E6C69EC10A3787DEAC56DFD0B
+9DE60C1081EC41D49B63C8E93A29657DD944093DC8E43BA31396F7BB08D6A773
+5E6DCF48F5FFB922EF5C084592914AE4D236F9D227CFC55CA687F1FDD8BA31A6
+309110D25EB61F5882A6B3326D3FE04099B986DFD407D75B21DFCEA02551CA95
+2C8A9606039BF8C268CA3F761274457F6E08260529E8EA65B16BC30EFBB1FF0B
+181EEED4230A43529E2D95E7ED03CEE2FEE295B1616E6DA77F50EF6190702BA6
+B0DB00F3AB9ECD4561DDFC45B4FCF78F81AA3132C273F4FAB4839DDE5644DA35
+1504DABE027DE826F331F655E28D7EF3BD8848439F4A265D5F78A20B8E626DF7
+684B174333448C107EB6937F8E9730A86EBC26D86415EB8B2EAE82E384882822
+C03090F25DB59F163596547E62A25B4C5A514447522C9A2DBA21023D31EBB946
+51DD3229B562ED5604E4D85D54D17EFB6A03AB5C59AC2E1FF5FD951BA5F85419
+90550337BC83F44C4C503609AAF3EF76845C50744FD18571900164DE71BD06C4
+CA06177A36EEA8C1BCAA73D5468981227964ADA6C27B06519421D000C0E1E11E
+B210F818665010B3E8DF82277C8B1E6BA61D51A87B0B1175E75A6A88BA55CED8
+C564F583090C12A3CFE29303CABF1E88819F226D8F29DD2C2D999A35C8121ED5
+15F7AE050E5ADFEB0F8A87065A3FED16AF811F7A74B0A9AD18F2F6F5CEC824CD
+FCA9781998B67088F5D6C0203DBD9C43D886844B9C0970DA4BA88799B4ADBE5C
+2E2B7D1EFD3FFD0FD130E544083FDE0E3793A354711F1D6CEFD8ED99CD29A5E2
+32F7B1EB4ABDBD7D86FBDD8B9D22C429F1C50277E859039E8E6D6A6F3EED2CF4
+4BD04AB88B70C071175FC6400304EA0BFBD02FEDA05CBFEC31699A0A244986C4
+C688E733DACD7775386DD2CE86716AFB5EC33EF1AB10E63C85B820044A540703
+9FF2DDA0C9B0A4F90970DCDCF75A022AF83013DE7A3D9E544486225AC1601CA5
+21F356B84BD903067AF45598964A0FFB06DE209D6569D00190C0140B3F2B6D54
+C9172B77422B25001D50BDC26DB1705CC2A2C09C582E1945BF8D20208F505FDE
+DBAB67848B8F29300EACBE3F393B2648EDE71F5B3ED721F81807B7624A7D3B75
+C458A8211FC0CBB1D2125082EB9E0A37E468F2FFD1866862D3C3A2CC9D8FB07B
+0B457AE1A3CC54474A1BCC93CD21BDAC95A36239DE043A431839263509389733
+79249412851DFCFAE1B2163738CA5DC64AE5322FECD2F1FF852554292DFEF94F
+BE8ED5A3E72E7F8DBC91EB990D3C055E4C91990D389C511747D8D7F7BC33B34B
+F3EB81905DAD0E88A31C0ABB4CAE612F7911E9D338F3F5498AA389C20F30EB11
+6953F4AF288850CB7425349719DEF18A290CF40B27D625207FAD6557F80898C2
+EC247A4FBCD884C459DBA0D3A083EFF8D0A133C0597CE5B2B803933530EE1C10
+A88C85564AD8F7CF7BE09AA5406917E26937AADF884723F1BCC3D5B4171074B0
+B21AE144538B141791B901E3A12E7B4C26CE3ADC9E2A80305F6B983F8B3262B7
+23981BF5DB92443B3CC866C0D17136D3C045036F2C7F39C33536E4A09F76700A
+E1CC6880D251EA090FB88F555FCF201D4707CC95169F6AB9878A2D342DE5BB38
+82A2F02186490DC055DF783118EE78C1E02685E4F05A0616CCEC0DFAA9ED09EB
+847E2F9911D2F5276538A481A17A8E9B2A25D63242918A78F920660B2D77B7C4
+12DF7F369BC3DB114A7E9CEC7993598FD71CFB92DFFD8359E22AE1B1B124A856
+EC29D9F05A660506D49167544588FA9BD8BF8D23D9CF6559180C532680B1CAF1
+9B776E24F1F8DAC95083EEF00EBBD775619173F7CF4139C45804C23C0C736414
+303C465159DAF5CB5153D9A6638C8E31CDAD0907B6E4BB41555F8E0FB5B799CF
+BC46A80CD1D14ADCC7EF0D2E16A955CEAAAA7554C70D27328B4DDE0EB50DD8CF
+62E2A4A40740F5A13DFF032AC5FAB6EB0AC3F6AAFC32F0AC635323538E91D8C3
+FE69E72F66ACA72F289FE2A94B699958F5123BB7864AE46E1C2BDEA67946BE1B
+2A65EF0D2373B40FBD107E619AE03B2FBC3CD29FF68BD79F86CC6CEF3C354C3B
+08825FC1A96E2A993EB37F8B2DF2FBCF2CCCFB032351AEEAF24950E8F428FC67
+A6F668B6F8956411E70AA3224B7E24FC18F0E9251DC4E7FBF2FAF57125576412
+33BF3AC7B1EE19C164525EC17483F68ED41CBC6182D882799DBEBF250E9334B9
+1E201D5D08BAF01FAEA5389AB934479A29BCB99F3CF8D9FB5022454C6A9CBBF2
+05EC3BC73DB4AFC552B8148F42774AF8392C5CE42EEB1780E003F7F5D61265E5
+EB18F7B139EDA4169FD97593C10CCCADE160437ACCD537FAE3BD1C0C10A6663E
+ACA01304DB5EDBB612BF5DD24CCF6D1362278B3BFEFEA590B255D2DF95AE4193
+3F33C268C47B75B9D008B9F5E17E7D13EE72C1030A05AF676FE29368D4847055
+B8EB37074295EE705B9EE6229155E578BEB24A8E0106D20F475AC4B6CED93D40
+CFCBD74C0551A1F532F2E19923248030F3FE1A717B9A9AFD494918300A396DE4
+3A2544B6C6A8D8FF2E28B4711AB72D25791B8E8FBC57A698AF3CC9F17B18F07F
+A86CF80D0F4ECD065A579743FD7974877360CD910B1E7BD3099B4036D6FD0BC3
+A80C96598B59B8AAE0BE7578B7A68258A1F6EEDB774FBA7FCB4952F90705DD5D
+F8A0E1B6FCC7220DBEE1582A9168571A80D95C939DE1A3A404DB4328E107C672
+AE8122A745C918280472EF626D7137AC72E88A296174E5CAC33E59C955A55A2B
+49970C8D84558F3CD22F53942959A830FF71FDAB7A73E0F64210CE46818A781B
+071FF5CDBE768ECD3D6D1BD52856C236284B4C0CF40E377C694D74D165A61DB3
+192E4D4C197EBEFCBAD48CCAEB50AC8A4D52C2C1E7A4930768FE6AFE6D286F70
+BFAAC5295CA89B6329FAF994B8013868A7E9F5C6D6C71D667950996C2DED0B80
+7F0A8F1A525397D9A41AA2934D3B8C2441C010888154A14499DC6D3A0F0C247F
+37D8FB45847AA94F37C8CB299D24F608F01EFF597BC9026724E200BC00629354
+21B2736A497796630DE340AE317E2B04F20482EA0206D01F90A83B7A56E29474
+5F0196DF23D2E8219E681908BD6D2074794C620B2330FD5B0E6AFAB092FAFA45
+BB2ED8599166A24DB77ADC449699547DA0B6683BC153135FFE59D9E650E78518
+CEB174C35115A94B8689B16AEA36D25A49B694D5B72DA72568D8FB2E10878B93
+88D754D6EF8E035ABC26382C2FA13A75040A1B332C050044A81441238859D8A6
+0A33E2DB068D8F32D3047EE64E31A6E79D9BC344A8B498823519372F5D9E3310
+7809F989C979BE5ED9F8E2CA6E0FB8C68B39BF957C8E425860D6B1E75DCA7867
+E044250791F3757D649BA897246E233A8D7B686F137EEA37251001F008DE01DF
+BCD2443819603C03EA1301E4D809B32DCD2F525EBB839469D0F764FC978D82ED
+AE597DF1EB131486B00F65BCC29396FDB8F75728AB03E71911C74E5DA6DD6E59
+8C4B1F45F77854B200DFDB656898CEDE1B7DB619B9BD75B90C075FF88E1BD95B
+5314EF039611A4A793C31FF4F2FDE7FE3F9A51C6DA4080A7BC7DBB1D7723488C
+E668E78E025B4D2F82C5E663B02C5024CC35459FFCFA5C5BE9C9BAC09020C603
+AB653316994DE4EBAE83A2BD866D392B6D46D83B9E7E0DC2AB098F7C86431D31
+D07C1F41955C777C635B022CE5F2F503D0D812B3318E9A792E42CE4926661CD2
+950F1A3855D694B2B061ED5CC64E6EAEFA1081A5CC322FFAC259C01D272C8A30
+4416D3B622EAD1D1B2B6BF7EBD395AE45922CF3956D9E9BB557E2783F5C8544D
+C3509410DCD994247B50DE3626C33650F9F76334CBDDE3E90E9D9618ED5A78F3
+FF7A6D01071AB4BA91FB47BFCBB3B8E54528E6540D75BD5EB6A4E301C2B49330
+B6866A4BD4AB5CDCD23A8BC873D212C2A6592D62EB573140A6B79EF9ADE701F9
+9D2F8A7205A36AFD20572C1A5C5F55FB8FEE492D999FDE3C641BD8FE201F7975
+2D9EA9C65979BB45D2EB33F5C3A85573834C75DF4556C6254A90C7499F684D22
+7B434CFAAF6C118DAE59E0C79F327F4D8D260D9A633DA0B02079947316C84D88
+05975C05A1734C88FB0A48BB85F87560F1BB214259EE46F5F3406E418B6EE281
+0F93F058DAD0F43B7B0EE4F7C809FFC30366560E98DDC13D82DFD58C0F8BE287
+374BD8655C4691E39F4660F5273E5A545A10BC582D0592CE2DF452D9A8731351
+54B163AF681FB97288647058DF71A290D1EA6DE31E60A4CB7DB4AD2E2928D738
+3FA9E4801278B8D78664E5E3F7691783F71AB1CB2053567466D21CDADAF4F97D
+4DCCE8DC1CDE465AF48A37E21DDF443906F91731614029D6F3B8ED69A7F77800
+F3C6ECDF7BDCD03276CC54E1237F47EAC383742E5DCE2346A715A8CA9A5BC487
+0A996E7EF0F44F349B581C7E537A3968492B28CBDBEA4CAE3E6E34550AB706BC
+220354C6CC45F3EC16CC1ACDEB8FBB25873CB5DEAF3072312669518AC3BCF57C
+500269761D11BAA25B73C1B4B0F44B1F085BDBC1F849225A14C30A9FD245E72F
+DDE99E0E31B57C3C9F3170D0CD7C5FD0CEB32A379F0AA9F32CA92BAFA82273BD
+FC8FAFDC0CBA3EB8A074F78A505A52619D5546E5FFD31640D1E14810172184B2
+2D278B5BE71360A739C949C3D4C46DB023040A993519A8F24335BA854460F51E
+777771BB912A3900BBAA2258D178BB9552FE18E4AE9A453D89A4133B5EAB1061
+6182B3C80A4CA11A7B706E44DE5DEABE7D80DEDBEDDCB304C548BFCB1A0C17F8
+06899F6C5ABC9DE62210C390C33FE92665477562A97AA07D16173CFFEC45736D
+C6451F1C6B64AEC235A0139CC8A4DC96847470CDF08CE08D0A58583884C7A35D
+DBADB9DB07C17BE52B1259DF1841CAC042F9FACCD3590104B619151B34EE822F
+B4B753A6A8198B0A2D6EE580F8C4A21FDF415FEADBE7AAE5C59508523E9BAB02
+3F49DB2E19E7DCD504944FB0FE660626A1CE5554728C1ECD6B2AEA7FE6C512DB
+E056AF6C1226A25547A8CEDE7C961B158365C99E574A0D6B81B2356364A61664
+B92D006607E6167A4002BBDF9951E8251142C4DFE4924E227CDCA028F6A42C33
+4011F0CC83B59E5852CEEDC6CAF1A94ABFF15122A698E5FB6247DA6AC6A8EC32
+000557DEC06FE0135DBC6B56CDCE6EA59764AF9E7E5AB79CC1D71ABAB2BF1916
+843AE75A64C177ECF1BFD83F713CFFB6278918624FAA4BF2B5FCA38C634E550F
+FA25E51768F931AB7D2C2E3000FCBBB1B1E22E7381A53C358AB4AD42EE7BC991
+913C633CA0EF25B9230CA9681B91D22880BCF44D4FEBF6F132FE120EBF104761
+6FDAFE8F33FCD2248B12B8BE283B37089B0383745324EE468DFBB3926A30F4F7
+6AC4B9EAF19D663BF1DE3B085ED88D9CFBFB36C2C53F12BB1FC55E3234A68C3E
+D6EBA530B8D23B99D098521DD3F1005D4F5E4E333E50C5C9F607D551019B0110
+2B8A931F27824ABF72C26615FB82859E6D527694EB41A17F6B08C9BB329AB6DA
+16D9CDBB7F00A0286EE119E7AC89A959EB16D9D06D6149D0C073D771B67E7BB8
+CBC6A3FD291BB1EBDC68428214BB371996544FF8A4F38A672AF2DA2F820437B5
+AEFE65350F6327F1772C9C9632A517A0EF4CB5C7ED1159887BC65C4F1311D1F6
+156964E2AF01F91CB4DF824AB0B3409908611FDD799A12C51B705E6DAD1BA8CA
+F0066A66C20A8871EFAFB0BCA7A22DFEDD54654E0BE31767BAF9CF894B00B435
+C9FA8F63F32FC2F23C80640C0CAA01BF46FADBD147DFCB10B988ABA1F2169AE0
+65E5779FD0FABE6A8C60F166CC1C8EE6EB1532A8491FBF84A824125B436E455B
+01C64FB89ED5AA77CE3148C135D76837CA45E7EA92EC857AC3A5B723DD7DC830
+CF1458512499217162FAF4EDCA0195A42EE1721482E56028B4895ABFFECE721F
+CA5FC8BE5DB4B7C6D026BCAA58AD7B9BEC349E395E16B897AD1404C27F0FDC9B
+5F706354C2E2F135E3A20B450D6788FB9AAAFDE95813AA09AFE116EAA7B9C76C
+F3D61AEBFEADB20580E3906E72F76CAD27D854381A10F56FDFA77EA5C8B15457
+E6278FA20742413B0BC95C1AF12E948905E2D8501E81BCF4095EDF9B941E1AC5
+E2B9EF45599AD38DCBBFCAD80405659D828DAC269825271518AE3721585DB57C
+520FAC927E8440B8306FDF0D2149B2CEAA73839A16681C6DDB6E596446B01BD3
+DF66AF8D7B391472DFE40B13BCD9C03A46B65814E06C2332404C4F1CA8D0EDD7
+37ACE6CD13620B84A3A80A122620E57E9BD33FAC8F2D9569A5AD18246A720B0E
+4EAEB68D73EEE587ABDF93F8684157595D5299CDCA11A72203B664C505EC8B17
+49D76E555CE3DC2DAD377D04A854B7A6066E5824CABD48C2F5585C4187AA81C5
+BA883542E97C87339B34823A5E32C83E1344D6D59AB2C64C6AFCFEC6767946FE
+001B6501171FB0AFD07D20840447E9F692A88C8162DD8E753D1D984B1893C019
+691930563E2935E4AB3DFD1437F4A2741636B5CC2AAAC5AE74E5181D28F643F6
+9DD08F5A28921CB8384E43532B16A9AA64A4537FFD1ABAB417CCEF27F373B58B
+2D0C78D40078B03AC3DCEB3922CBA12BC4CCCB6F3972AF9C16522E6B05D68B3F
+FFCADA33B2A7CF4445D6DC0E94BB089CBEC2A1603BC6F704C9107ACF0FFE1C07
+319DB0DABB3F3317E0CA977E70FE310BBBCA339ADE39E17A0E0644A9155ACFF1
+4E1C8FB9EE6E917E0830CD37498E3DFF20604766D25925576B599ED7997F272D
+11F53CE4000FFB0E89506A2E7B3CD818309F586966AB21C6226E70297FD093A2
+0A0DE3BEA5A2841C59DD1A48555235CA8B2654413E13EFCEC9C3D1ADB555EB22
+BD634C01514D76EEC3181A14C5264F5DD143A21D3626CB611F9F90D7BC05AEEE
+9F947743CA9429F2BBF30176821365D15C419B27A085DB7CE7BDD6F28ED3BD68
+6E91938951303521F260F7C1636A39726E03C0DF3A08942DEB17280EAF7AA849
+66F95D56116501CDA299E005A7D303BA09E9033CF45C0469593C7AFA2A5C9F03
+28D64726083EBFCF05DDE3564BB12AC5C90FB0786153D10DDDBBD41269FF9537
+836DF30F71A587A3935D91E24EB56403A2A4F5C6E995A89AAB2A42EDF8586C81
+52BD65DD33C8B10AB18FA9F93895FAA1639A62D553FDE5F976CBDB5059F099E5
+91BB6C1489F9C66E2FB7ABCC579FEF05E75083FB02D8CD2E4C37D438CB64B920
+81DD594F55047309C66258BEB1108B4A52A4AC52384E2861DAFD6DC2B0A88F6F
+0DAEE75B35222DEDCE1490BC77F808D56985E390AC2EADE948B377E051B2CCB4
+2CE6D1A8B6C56DFDE8874773C8D9E8EB0BC66E3272E7970621DD41103CC78165
+CE745AE462BE3CE12765A2353D89AD2B2C74658C5BF922A3A2E4E5FA79111525
+01A082205FC54279ED5F656FD80EA1E3A988E7EC83CE2439D8E9D4EA2EC6A11F
+DA81B6B259503BB7F66C3373A40AC6474A85B71B79A66BFA105EE8B90B1C204B
+5DC2D4EB387D4A1D36AF0AB4C2B20D6B06206DE70805ABDDCD7F1A9A6C3AA5EF
+1E59AD9703BF74A032B5F458A4B19E296D4770D7315F05877D1D9346DAA742BE
+C941D937156610F1075661F679BD680000E6F210DCBC2508D4EA5484625CFE83
+774073B2BCA4BCB71E64B3755E69BC6E39BF59341D3FC71BF0A97D3F139A9765
+CEB0FA137A1AA226BF329CBF14B1C509EF36D417D4993DF331BCB79F29267291
+D9523735BCFB3837839F26108BF833B1E3E4AF576A2045289860E7ADB936DDCF
+818CB035558E4C444D06C74D5865768C9CB901EFE53A92CD2EBAEC0A8EB15EE7
+867940DE7D7B61216B67FAEE1A72C06A916F3F2F7D766FB3ED6BB50A02550B25
+9EC6E7B65CFA667A505F200DF4CF743F37B0E876A0A5A6742A0329C9D22FFD1A
+0FE985931AD6A124A25A4340D2848230E73BC52FF698B5DD9A3DCC6B530047EF
+79BBDCA20FE02236C25BAA421995E202E09C41E24EB424EA401679B15988F8BC
+E1DE0C0838B32F0AD240F9C217F7E94118917A7BFCE878C423C0537CBA1C62BB
+3D7DE687FE49193FD2E8737DC18990772E1CEAF4FC5BEC50BD603CEA326E948A
+3ECAFCCF56346F9DCDA5C70AD7F1ABF751AE962CEE507A5489D4E86B512B53B8
+40AEB1AA263944CFF84D5D80CCB63AFFEF8026FD69BE94BEF7D15E07062B9F5B
+43D7420588F26015FD5E4357473C1853C4D600579BFAC96BA963DDA2AF04FED1
+2244E91B8A097AE961F45685B9159C8A1B14D25672740B5313F18CC262992CDF
+4E50C76B74C198955DB662569CC9C18432B448CAC4F8C64A3A80E7336EB29BF0
+9BD4BDBBBF1C05868296DEE024548D3E52DBF0A00897CC9E7A0AD30AA683A898
+6DA657559DE0EDCDC82986200485435CBED48A4A5B9B4416941A737DA4A43865
+50900743A13040965178B71853D2194E73C6BFE4FECBC76030FF25448D623DC2
+802B1CDFF958690833A7AB636B30475C54F34944976233E0AC952CE4593E63A9
+A5CA3A8AC18E53B37F8E60A3B8ED4FDEE0FE5A69F280CBD531DB0A9E36A1D80B
+19AA485604F64F7A2F3D0005A55927A7C4393190A09A3F386170325D427D01B0
+BBF1D02BED32E5E929C9EA7B8273C34BC5FA1CC076A0A4D42ADE112A24EB4CF7
+39F7CDD3F0337C0A70EF6858DA5D76694B7870C2FF84BB2D4E8D4CCEFBDD8BFF
+E650DB24EDC4FF041C21769FA7C15374F938467B46E518F2206FE3C70851C667
+D4F35857B33462A603AF8AE50E78AA616D699781FDE049CFF60AB24DC796551C
+D3E4B4BB39726EC682E8FEC0030905B89F2C2853D41D5D039AC6F68AA52D4C26
+217586E7CD877C011D0A0672F392400066FAEC7CE19760EA67D657FE5336680F
+6ADCE6A294F81DF1BF69AD6E55D7CFB4262C2EEC8D1348F3F707E2CA6D041AD4
+4D1F888FF99691546C3EB5E79C3B9EB73F50895B8163F80CB8BACFFA86E01CA0
+5953CAF2C7C9EC7BBC065081128CCAD4836699D30AFF499D8E00369CD6A0C4F7
+0ECD965091FDA3C2ECA853E805C5A55E36BCFCBB5EE8949C38A2D42C685E370D
+A1A9172A76874D53AA6C52D2926F5E5797B6A73B75F0F5FBC3E8D10EA913368D
+6B6ACB2DE7F528795911678498ED557F7FB6383B657D17C85B31BC06F1C0E908
+C212B0D11EEB8C2E61A929FCDC9C5F4F9EA9A1730E9A81EE313F103CF736254B
+B67AC0595FC838689E33D2F1922416B1E24892160CA8F04B502244014EC5BE45
+1D288C43D0D00FCD418FABDC7FE016A4E3586C14D22E1BEB4691D13E58C9E66F
+435A85CAE6173F3591B0FE2E727DFC579B16B2A95933E7854EAD8F8946A6E527
+E1119B0F029A1C4209F00F09E03769F00C7F13CD11B91CB07FC41BB31E6F1E12
+7917DC9E91E790B644581AB087D78DA43A621BB0C80DA75A08E09D7A6DD98AB5
+2AE5C74394B0C42BD7E7D222D3554215C6F1C04BE694B2A841BD9F606A01ED52
+B6DD7B7283C7971ABB732BF93CD11CD2C407B7F68DAB86E7DD380F8684F3F768
+692756D6879D8867870F39BC955CE0213E400EA1F40F76E46AED18C6814854E3
+AA2700D296CCBAFA4EF58C3E1163D88198845582F52DDB0641AC31FB36A130F7
+FE16F12FCB3D09E386A5DF2073C56F01A7A89346EC1DAD1038BBE20138492861
+0091D8A9F091616CCA67051700B90746423C002FDEEC4D86CB9DE72FF87FFA15
+B6E9A9B58A7CB8D98E3DAC7A522DFB45906ED1C58392C9CB204ECC263F098864
+2AD1E02CBCC95A104FC6DB30DC6A603DFFF7694181B4E64D06BFB3E19086B55F
+C653925A2678E6957CBE6F68F1DD12AFD9795072B122D72B23F0E0916D7FD554
+6DBA60BF6FB8D1A99822099BD96957381A7001EE267E773F3D9AC79460C5C092
+3A2EC8EABEBF5492AC3BA22D0D1DD5F6725D71B5B363D13F99BD08A114950A16
+C6C9B99FE48D05065AE2111B16DEAE00B1910B7CD0FACB1DDADF1E7BC57169B4
+4215A14F63A223979B6068967C045C7443BD920E8F406BEEA35897C3C9AEC183
+4FEECA6DAA76AF17EE3FFF748A2BA63DF94BCD21DFF30218DFE6B04853CA2D6A
+CC230131DB265BE32EE6D21102935D70FD223C79F7FD0926D68BE38481639849
+82FDFBA040734A19311350D7A74A895D8D45E177BEB8FE2A22B11FF69A9A8C95
+DE72184CA297379E7621F642815ED6C54100FC1613A18FA632739A5B2AD60D8F
+7B2B756528F96C86ACE4EF1BD851F72426EFBF5B70306A4BE758A15D0E367E9C
+BA0D5A378DE7EABADA5D75D687049FD5AC0033AC1F2336E5C716BEC683EFBBE3
+36ABF0B965B2317C681F0B7F4F6D8B7093855FFFD725EF4C2312DBAC2F715CCE
+0FD786A46D06820DC3FE7EF87C59D7D84D11E877808F590C5754F94C6BF2A306
+405D3EA8A1064CEBA85FFD472B72F64AEA7B81147ABF52C05D17D13AE4D32C04
+C20170DB4125F85FCE3665ECF7458169A62DA7A928AC3E58A5E9F69D2E051086
+FB380BF8E39D48D653D75C5C83B924449ADD13CA3493A7590E27B3D98D24E320
+2F9700C26E797D1F78EA39169074E365E62B9B6D730DE95DB3007AFC44086E50
+60C18957CCAF3389A18060FADA8D5C329CDB6EA2DF5C5882840A1147115ACDE9
+4357A24F095E2EAAF0D7201555687B56AD5224859203C059C63194C092DBE505
+6B118FFCB885E58F8D40988D2E14A73AA40303D6A935A97DB6A8E7D5889EB21B
+3A01063599DA829927380AD6134EF4661418DA85AC42AF2C455ABEC0413B3D9D
+684E852E69B743B1324F7671B8D75D815C2F1C425327B4410E013BEAD314DAA5
+FE193719A5BFEF3E5FAA0C5E4CA2B1EFF6CF921B56017526CC62293036F76E51
+1A999063CB2F93517614C0937BA9708728BE1C381CA8D0768EF314427A0DB447
+BE59B9A034A8296AE3F848C75784517C47D019141FABF56F2B110C6A768BF493
+BD5C38879397A86AFA7905804E2EB3AE253038E267098F3B7674C3510985FB41
+09A5E02E5F4F7CDAF6E12CB47346647A58CB05D9AFABFD5A9A538F947E205FE3
+C6480C7A1A940C21CEF21CF1EF48F15FEA6C0734A5B8FC23CB315BE3B420E65F
+AA895CF17377F0CBC197191B3CB8336A2588E8C26BC988BC6E51C67E21B64972
+7FA5F4F1E95CB29E217A4FC4998A54B480B7861400CEF84E18095C55702C8F78
+F3B8CAE65BD5F4DE369C583EAC060E69EA40F595213F8ACFBD6B55AD0F5CBCC6
+11707FEECC47B1E28C9A8CCE499E248A2B108FB29C309558F8B12EC74AD295B5
+B5E8072C15AB09FFA698D0265B38F88D0D4724528F79A97776B8BE04C29E1D16
+703A23EF60B67A3ED14EF29179FF9F719A9F274E0F73EA8CA198F7053B6E8C5E
+A912738F68128EA32E2764DE57C99080482C11FCA714412D3B6AFAE4A2C9F044
+721C372CF6D8861182DDBD2BFF1B2FCF894F0C0799DFCDE0D8083E16A855E2FA
+D5E660989B98A7A9F3057AC99B76854DA2E75E510AB2E53C6789750149DD1438
+367D28A8FEFDE2042BFE791D28ABB435C807E7B7AAAE140EB065646207FC75D4
+559CD14A44E0DF2EBEA232A4057C72C65A595905A56F2C2C0FFE326EF9B3CA7C
+C2CC7F3A8BC588AFEA2624616ADE803C1D0067463F4DD78C97D2616E14562D70
+AD7BB516183630C1182BD2813D8E282B26B18F4C1ED4FFBC86A090A036E54877
+7DBDF63E27E7446304BDDA5D5E5C2DB68374E76D698CBD3657AE037324A75E16
+B1E656932F8C7253C8F1EDC06642D8F74612498F9ECB96A9375152046C2169DF
+9B3D0654663948351E48C0EC24E9D691748DBCF758D60EA3643623C7ECE568C5
+5168171E8D2ED9BA5049018DB73E2EA3F9E60683856D3CDC4F0C930BB1B126E8
+AC776C33525BBC280FD87904D5DFEA512A3B073CBA5AC823B3B2FF68D289C558
+58553E0EF0617B4156665007C8895492F2C19AB138EEF10A977C9A61AA554866
+32F446EF885346CA0372C001223769F7C01CB76977EE84E76C178FB444E33804
+B4E72782ADE86D811BD395A15C329E11973B021C8882969DDD5F9E4B3FAB0D2D
+60CB9370DC3000772E3263E693A4699F2EE60E4C022090F4273F6134729987CC
+ECA36D229EAD946149831037B9701B0C50FE9B4304CFB73ADF8C829D36F285F6
+FF9C056045A0369FF759FFC5994DC0B40B87E547CC46274BC40823C22D90B9E9
+D01F41FC59B7BCF259C4C2E301C5F7EC3163DB07FAAFCE8F0CC08CFA7A07107A
+483779E4DD39EA89B3B9CEA198765C6A52BD80C624C3CCEF16A6CF3E21FA1BB5
+BA78FB5AA13759CE5D822DA725A07CEE1D39E63D4D86FFB30FA1D070B27D34B2
+80B335AD7C86688BAF25B2FD2910A2EAA186C500120AC2898F66AED320EC43C2
+1C9D8BE8888AB84F09D16B61167FC6E42DBBA1D3DAB971576160E8B85FF5DAAE
+F37D9872B22CD19A436BEC7E7C27DB2D7F7BDF4266E515516C0A2F8A899BB1B2
+D7D5811CE7ABB71AE427FB019D07E0BDD635D3527D677620275525781A1A9F8D
+B339C3E4D5817FEDF135EB150144EC6FDA234066FB0082C52C1A851CAA19AE8F
+A1960216743A9EF3B6CD2CA93FAA3FFFDA3D144DE465DD11AAFECDBC9A694A76
+93EE2F2B10E37D26F2CCE520D0A358E13A541CA963B239C132D1680D147AD8F3
+0E162C56D0F4D423890E36A2FCE66C11AD14B2FD4F7B84B2197AC12B49DEE166
+6C157079FB2B538817C030506C318698C10A5C4FF2731E31ECFCE48282398A79
+0B3730964A1D7DDFD6964E62293E2E6D35E8F9C9C675D95F375F4714CDF5FD59
+5A506FF7FCB08A9F5B9F3989C847C92AC53DBEAE739E2596377DC1DA1949E7BC
+62573D838E4BE9D025946E1C7F6DF511965BE847FE138E87A646FC1E1F43E822
+EE272145B75265C69C1C9D8DE3AA9F9E3DAB873A8146D7606B2DB7AD9D815D68
+50ADFB48776F11F97631AE5C59B4AF8CDF8011CC76D8058AC70C6826AE88D109
+F50B6FBA868F63EF089F428873E6E24DF8DDC504CF34862BC1E53055B3DE8012
+9F86F50B0ACD428124A97867C3B51C83929EF73E78B78F8D09A83BBE59591A78
+3182284C7035875981A4B68097D9DAB5A1901A4E398B219089554DDEE17CCB46
+94FDF29575367973279C4676D9864B0ADFCC0B2A27405B5144865352209FE496
+020017FD425F2A84A5EA6D006A4B0D1782C7C9443BA8671CCA3B30F3E7C0CD48
+5806DB28764F94AC413A5BD9DECA1B119900A82D3009499998C925377D637052
+57687CE3EF5B5EB49D49BE3AFBD8A4531606AE86CEF07E058CFDC4FD1764C9FF
+1DEC0ADC674C30DA9C9A24A4267A7D694626E9E9C9AEAF66D0381854AA05BD14
+177AC9CF2A0C0677F0B8F496F325D78AA336B04CEF7E6ADE30569A4DA09B2847
+F754A24E3309472B0B50CB43181E56D7AF316A5E9044DA230403CA6E013C0D85
+2CE3D19C611DD70D79EEF35ACEAF797AA94A6B4C52E27E140C43BCA68723F2B6
+DEAFC3117D4652F9ECE33C4C51F564C464428ED27B302750C0309EEE5FE0483B
+182F1D43D8F7B460BAC7C0D0250042013EC0C3AEB5C4FD9F882F9A3557C15DBF
+324BDDFAB515E1B069F210F96F6648A8F96F9E61A36B2F7E2E06CF67912A1869
+FD85F47B84AD9E879BC4E3C48B39138406C6A2549AEA55F7A9D79D9638F97151
+4B0C7A41AF770C575CB1327FA3BDF66D83600F1271B04D484BC4285CBD5ADF0D
+DAB6774C8F0D60DB4C25081F2B278D2C11B21501A840E68E2DA02179FCF9E2A7
+F993DA9620880EE6960274954DAC790372C9D831C4604A07EBAB27C6EF5EE84A
+0C99613EC5021DF782CE12D96EC117B8997E1BF9E783A5737BEB7306FC4D9F08
+CB92A999C8B13CD6A2695190132BD04B94222C7B60597CBC1750F4B189B9F38D
+04AE51084F7DC95A39B008CBACA295AF18F7C1FD5174F5EC78D11E1154A900C0
+EED0392B0AB46BB3993EE89F05AF25041D71C0BB35B2FF71DE9D842B9FC98CB3
+1375B5F2853D18C64DB633675D37E0550BC73A47D8A35AAE5593FC1297B21F68
+52B6FC4BFC2A4C58A8B0DBE73587DDA9E35A1E20AEA29E3E1D46EC0B6660522F
+57236E7EDC9C1F91ED36871B6802686092E5E4F98A66379DC2ADA482DB15F522
+1272B394721A7ADC446E9A5F98D401BE1DC712F010DC17845DF75737D6C4794D
+51806744F84A4D7B30B198AE46C46D3DD71EED74A96CE8791AF292F45104A055
+B651BE40EA7FB93F54A8089FD5B624DD3B7F29663229A8ACC91BB7D07F71B017
+3530EA873B77C0298087D3AE901BD59A71EFF85A8E490FF120C6DBAED5B67F21
+B8957374F7FF0C14BE5459A40CCFA987ADDB03D8F4E507554FE3ADD1301F2DA8
+BB218724D4F966CEEC21A1E28C39F3901605BCAD62E311A4AA9C295A69D51D0A
+8801A26ADE83DBBDE01D65FE1F1C26255325238C119C6D6190B5979FD7337F12
+57E2695B74CBFC9291D7DDDFEF77879C8331BD21164D5773691931C4BC15620F
+CC55C7E3B130091D42F619069B056167074173B8C19575274CDB7D2D8C1CD4A1
+2CF2DD3D8B0072DE563541219857CD8D94068C375F33CB5B028FA233064E0DA7
+4DEFF8E9789A8EC86AB9E57B3CFCFCA9DAE4E27C3DD1EE9009215B726FAEF03F
+21CD4A7B32DC8889A8E68A0D509EA68101BD2077E3AAD72C003C66C80D566E7E
+2C1A022970C6CEE4185BF6299B9025162CFBD33E4DF7246382BA2449EA5A2A08
+DD4F10D8A8617F4033ECDD7FBF55E537B099BFDB6E6884D0835E9F58857EC91C
+432930F1307C5D7EB390D8652C4D981C496F1BC4D898BB66B9CF804F7BDC41B7
+4FEB527554D00EE0EF56862355CFE59A17596CE9FD737932496C67A339034286
+62D3FB833BFA261B632902AE3AD8D199DE5CAE4627EEED4CAF7C60FD50AE68E1
+0F85D679C10C52AB4F3B8848B5886D02EEE1ADA9E292F2E2EF40EA1DFE567733
+37FA902654A3770E2F108CCC08E32E3985AAFAB55B83D5BBCDBBE61DF5E378E8
+F64BA772901333C57B6DB0EA3418A923EA2D13ED7EC9550C71B2444EEDB0BE0F
+0CB182CA3D2EAB214840FBD18A3DE5DCA551B6D4E7BD9F8B3B2C7BF11F870B7E
+B8C594704BEC50165234B6D41161AF9B8570F4BA6EAE2C48652523E275738F8B
+89C66E1739C05471C19ED3B2D16434F22C25677356EF8D0B01A6A9F427598523
+4FEC98CB244F58953AD560113C038000F8F7650C0D56A0BB12E391762B3B4004
+E2516B29F80D719E8E85014C23E59B9CBB3A966B5E83B8B51FC02F32535D03DA
+EA4F801077C94CDD2F98D1E25547659B0F528971DCEE22A88D9A1F1E0F219771
+86E161A0608C3511EB0D969E8C956E8A55B1FB3E9278845E8BA26F6B6381CF74
+9CEF69192CB36B4502553A99D047EF5251194D7E269752CCD9778123295CCE8A
+CBC1B4DC2938D076967A07155138B3E91A4AA888A09095C3D2F442F98529EA24
+7C717439B62F7F1C5D140D9CAAA94B22A8D1355E7D3D85561D26A71C826CE30F
+D7157F63100097F04F39C6FAD40ABA2F9DA78CA6E2A7324FAFEFA1112BEA7856
+F8BC9E21D32F9EB9BB4DB631DA30EFFB05CE5BF7948980CE6E29A379E6420D9E
+B2E6A8F19EC8DE7371FFE985D0CA83E6B0C25465F11C299388865CE474EFC22C
+73ECFE21098FAB65C332BDE3CD631CB5CEF22279C8CE8AD38D97EEE9E4DCC1EB
+4E15F2B38341DE20E81E8DFD504A1CB456211F8C21E806FD62807D0A4C231FE0
+09052F95B3397FE4B1947A90C596E58E0D74441D1584C9DCD1BA47737553F54C
+A119099D8EB107A9185234A613D6B5279F9DB5C5FE4377B92DE77F8D0DA00A4A
+F438F080347C01D9C1DF7BD28FC1C30B1A9B337B0F77E968C6E9B9A7CC5049F5
+56862250770FCB1F086491ABE56ACA8EE9C14DA082C0D43230D383D41256788F
+AB2EE3CA273B90F822BA0D7F1A3B2D50C6381632FF34AFB322A6308CCC5EF3CE
+BC847CF050AFF76CA1C9B049C334AFFBFBBAD19A101FC4361E51455283CB9DDA
+2145417EADFE932B34C9800758D651CCF90BFD324D12FC8616B423B08BC449FD
+03D6469522B23A7E094AE8EDC2719034941091AF269725CA0E510806CEA18BE4
+F980B58EB05E9021B10643E7CEB0CE2A42B976324DE1CF105F1CBA07DF358D34
+B4366DA6DD135F36F32387026C45C4A94017312FDA49C4E6E0F5AF2F0A9126A8
+07602AA9C8576262931EEE464E0A2787011D33F9E7C6C9D7DC0C0C5D20B8A746
+4D139F5F2B1B6E0AE059747949EDB3FDE1FE2162086C4F01720AD408DECAA906
+7586D3E2DC51D8A63EF20E21F0A5725DC80D02453DFE9F75E6EF660D9A892F95
+411B7558D3676610042CEF99261185A8D7F69F15E2405D2E5C0E452E223D0924
+F20DB835C62466FBC0A8038F3F110036104E9DC649A5BACBD568B0B85A7B64CE
+7EEC067FCC7F7E6A51FDE5272FA30847E70D319F9D593CC2EE45C83E67FA6F5B
+C7412096BBDFE81666CA8B3EE1411DD487B4CC3C3EAD104A2C9BBDCAF9D0C847
+6D2C7DF762BC3BC874B4DD3BF2BD7D0F6227FC8AFE4D568D70BD9928051EC85D
+62D8B2FF07AD099B8F879677BFD4B90A08C585D71F2820551C2558CD14DF1555
+66416E2B9C87BB7B1A0C9D6E3D4F80C5F3F4F887B17A957025BCF65372D9D3A1
+77E2CA348A47DA5100CC3EA2EB7742654B955FB2BD3B5A6F84D2D5F5F0339D84
+D8AD3DA2A75FFB2328DDC5004778BFDB4B0C9916D306BDF393ABD5FDB45187ED
+95F01EB80FAF51B7B38FB22517655D532DF3C6A8BFFD339AB7E21C009D467AA8
+78AA46B04DCE4F5C17A5E1E1081E33CD14E2E7BDFD41DEE2CA9C042CB66C70C9
+9A07B488A14488AABEE67E51A4DF481CB30774279F049C9D56D80AA2B4EFBA6E
+94A881775CB7B1373B81A69B301711AE47ED07264BC98A84819746C192BA6F9D
+693A825F0210125BC4372391890975B78626DADE396B2470522A8AB9DC4837BF
+1467A13F281F125F0FA2E87C8A67946EBBFDB7ABDDC2F9AC10DC820DDA8208C0
+55252FE5C829AB859A983FF7545B6A6892CF73A5C9AC8D2D4B1D9D01A481FE21
+51BFDC258D0B8BF0743EE4A7DE9AF2630A9740FCC2838BC84CEE12404701C36E
+A9BFAC54A7AF6211B17F0AEFDA006CA74105BCA14A882463F233E831D8477CC5
+0E42E19D5E21A3D922F645EED56DC7BB7F371785B8565389D39EFCC4850550BE
+10CE6C78EEEBF8828F83F9E858FBF0640F27E925AE3C2539D609DDDB0964A513
+88238CD14F7B91CD651054CA37BD71F9E64DF562C5E2613CA29318D3B39035E3
+B538A5871E119CB3558E0D301B091568C807D63AAB36336AD239FF58C1131D5E
+FAA0F85AC68D33C154F97E42E73EB71437B0F2727BF9FDCAC75965C62B15564E
+9BF7154DE438CC9B04D343FBCE0FF6DDAB9E46A260C7BF76679B8483BBFA4DCF
+D652C0FC93610A6A4ADF53C3D9B7296E70CE1FA3EB6DA1B46749FDC0E2BFAC85
+F00FE4A1A164CCEBBC6CFAD03E3D2C987EC80ABA6D1DCA6B85689F4C6ECCAA29
+CA2852B2325AA1D5A895B2D8C582060673605C54ADA2F41A20B2E98CB38785A5
+3183C9562EE46D58E515DAB27B9A5A86917B05554FF899BA50E1D97EFD9E7EBA
+03C6AF103CE3570E592DEC96A8C634AD7067ED147E3399F0933F8E245B269AEB
+362DCFE8FA9B42ED031F5DE999962C9F53594A437AB2E629338F662ABDEBA947
+7AB265D05AE53AC692ACC2B30973ADC366921B48F8D53F668E08BF65A3031C10
+F4DF18B1D5536A7794576A2A836503B6F62CD601B1F7151B90E915A927287D99
+9941949683B99325AFD768D0BE6C27B14A073A4DEC837CF91D61A3392B13C2BA
+323FBE1B93090BC4603E35B5C1774BD7FC3F2B843A8F59B51B0E4DAE91C5DCD1
+8553B77BF8A5D3156C2B92F9E14B53344C72B1C9AE82F86352D70A7802B2A948
+3B7A89D4C4F402657B46C474E6AC77D75505B9EA6AFCC1359BDAF1D82BD67C43
+B61FB8430B9C0D6F8B5B7EC8FF87AB6A824FB39848140C8F35ECA135A9E25913
+1D8ECDB09AB9C418F0EDB189CF314BC15031EEAEDD76C062245700583CB82ACF
+8F5A6E8AFAFCA8AC150C0CB7A96AC61B1DE23498278F37BF6383608BFBEB4E92
+F74BFD5B630B601ACCDFB1795DF67DB3B87A79DB4BD17364EE8C6B74A04E0C4F
+B11DCDABC0169779ED890C0543452380AEFC40581A93424D9B626315CDAEA786
+39874F4A6468BACFEB626B63CDEE84F4F51E26E52D1487890601D4116FA68600
+8CA491E20ABF21D1B1A02CDB96A25ED403ABCAA32944AF30648D7C4A7A208968
+E2F6AFD610B8C8F7F3306B1BF263C2A47299F436D1C741B24DAE39174F30F88C
+7DE095E133643F0BC96D84413D373AFFC457DD7751C2B4AE16625D57D7F0385D
+0C5723E54D10C7AF66648D7DA4942CBFD4EFD530B8EAA843692ACE50B13389FB
+67924D2037EB81EA52D37976C2984BFBB05438DC8050BEE88125A7119C68118F
+39313CB6E36B04AF224354D6A3E08A2A45DC030B6DEEC6758CA726473D766D1E
+C6661DCE8FA0086D4FE42237C70771109FCB99B2C3BCEA066541D4B2A5CD1BAA
+C01A5E22A7885A2A4298EADA5D1735A00A851BC1640E62EA5C30D9B3085B7877
+3F2174394A5A8A75BEB15805CAF2CB0E6E5A7A3CF05575ACBB7A897E7E1239BC
+D4D3615DC0E77DEF51F7DD2B803AA1A321FB51E2AF854D672E1C14736869F49A
+E5ACDC57E3B3976537B8FCAE4748984E668FDC1DE630EDF826F57CBA3F2A030C
+155D3A2FAF649220AE2B1D1960B6B0483A37D24B32D263FEAB89E7D6C916BB37
+437245D788031CC042CFF7D712220112EC16A61F7ADCDDB09AA365980D0A687E
+01C6DA9D234326EE9B8755F7B8ED79E6B4E5ECA508CA102D27A3A226D02F4370
+7EE4061C0B8D75EC0D3FD681AC5FA83664B3D0CD55C3A95B5813FEAD19642EF1
+748D06ABB5AF95D258A8B433C4D8215625E8AF1F47924BB1F0530EFE633A333B
+9227C1ABAD32ADDB6910993C4A2176E1DF3D738B4E9E899DF859DF3F42EA4508
+B9A3312BEE27B4570260FC6261C8F03D72C056E7D824F143302157C869316E7A
+5B3BAA828F6C1FFF5EEFCE3A79F41F97C2EC11E6F8121282D823A3746E1D9C13
+39B02BE7059BABAE7E2274DE13F9C1158E821637CC124600B89390A15ECAB890
+AE0F2EFE53E7755FCC955879A1EB9E73E61D4572E292E72FED83B94715A3D4DD
+B682A712D578B9D2E6A34DC10506DBC9479EC3C2ED12B2C310AA9C34466D979D
+15275746E0FF396053909C6A73777380826D98B61D166E0085F2FA98A3267634
+3B806CA0A9ECDF557406239E72A470D51985D7F24A4CACFC71131694C40573DF
+70AA1BC7C29A94272FC53C0AC0BDAABCD7FE594B4BE530B432F3C089B52EA8F8
+7280F52EA3FCA6848DA826324A497C393772F156C709FA1C0976F7F8EE15EB46
+82F0C0E2BF11650E9A8D241255A5A999F1AA83270B655E354D177AAA05284912
+469113159F4E8134E48C194C158A012480869DA113
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont 
 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 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 48 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[{}73 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 1[43 3[25 25 45 45 45 45 45
-45 45 45 45 45 45 25 30 25 2[35 35 25 4[45 25 18[76 51
-51 53 11[{}84 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
+3[39 97[{}13 74.7198 /CMSLTT10 rf /Fd 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 /Fe
+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 /Ff
+214[35 35 40[{}2 90.9091 /CMSS10 rf /Fg 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 /Fh 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 /Fi 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
+/Fj 134[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 3[25 1[25 40[45 45 6[45
+29[51 53 11[{}31 90.9091 /CMSL10 rf /Fk 138[56 1[42 4[56
+4[27 1[58 3[54 1[56 97[{}7 90.9091 /CMCSC10 rf /Fl 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 /Fm 242[91 13[{}1 90.9091 /CMSY10 rf /Fn 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 /Fo 129[48 48 48
+48 48 48 48 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 2[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 /Fp 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 1[43 3[25 25 45 45 45 45 45 45 45 45 45 45 45
+25 30 25 2[35 35 25 4[45 25 18[76 51 51 53 11[{}84 90.9091
+/CMR10 rf /Fq 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 /Fr
+156[37 10[62 3[60 46 2[57 1[62 76 52 1[43 1[62 65 54
+1[63 60 67[{}14 83.022 /CMR10 rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
@@ -5239,755 +5243,816 @@ ifelse
  end
 %%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(8.2,)h(for)e
-Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.2.)3118
-1623 y(Septem)m(b)s(er)f(2022)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
+TeXDict begin 1 0 bop 316 83 a Fr(c)150 1112 y Fq(GNU)65
+b(History)h(Library)p 150 1212 3600 34 v 1920 1308 a
+Fp(Edition)31 b(8.3,)h(for)e Fo(History)e(Library)h Fp(V)-8
+b(ersion)31 b(8.3.)3145 1416 y(Decem)m(b)s(er)g(2024)150
+4927 y Fn(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)43 b(do)s(cumen)m(t)g(describ)
-s(es)g(the)h(GNU)g(History)h(library)e(\(v)m(ersion)h(8.2,)49
-b(19)44 b(Septem)m(b)s(er)f(2022\),)50 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{2022)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 Fp(This)30 b(do)s(cumen)m(t)g(describ)
+s(es)f(the)i(GNU)g(History)g(library)f(\(v)m(ersion)h(8.3,)h(30)f
+(Decem)m(b)s(er)h(2024\),)g(a)f(pro-)150 4523 y(gramming)23
+b(to)s(ol)g(that)g(pro)m(vides)f(a)h(consisten)m(t)h(user)d(in)m
+(terface)j(for)e(recalling)i(lines)f(of)f(previously)g(t)m(yp)s(ed)150
+4633 y(input.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577
+4767 y Fm(\015)30 b Fp(1988{2025)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
 %%Page: -1 3
-TeXDict begin -1 2 bop 3725 -116 a Fq(i)150 299 y Fm(T)-13
+TeXDict begin -1 2 bop 3725 -116 a Fp(i)150 299 y Fl(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 502 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 612 y(standp)s(oin)m(t.)76
+TeXDict begin 1 3 bop 3705 -116 a Fp(1)150 299 y Fl(1)80
+b(Using)53 b(History)g(In)l(teractiv)l(ely)150 508 y
+Fp(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)f
+Fk(gnu)h Fp(History)g(Library)e(in)m(teractiv)m(ely)-8
+b(,)50 b(from)42 b(a)h(user's)150 618 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
-721 y Fq(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g
+b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fk(gnu)150
+728 y Fp(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
-831 y(page)31 b(4.)150 1059 y Fo(1.1)68 b(History)46
-b(Expansion)150 1219 y Fq(The)f(History)h(library)e(pro)m(vides)i(a)f
+837 y(page)31 b(4.)150 1068 y Fn(1.1)68 b(History)46
+b(Expansion)150 1227 y Fp(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 1328 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 1438 y(history)30 b(information.)275
-1566 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
-1676 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
-1785 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
-(quic)m(kly)-8 b(.)275 1914 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 2023 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
-2133 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 2242 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 2352 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
-2461 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 2571 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 2681 y(whic)m(h)30 b(is)h(`)p Fp(!)p Fq(')f(b)m(y)g
-(default.)275 2809 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
+(history)150 1337 y(expansion)d(pro)m(vided)g(b)m(y)g
+Fo(csh)g Fp(\(also)h(referred)f(to)h(as)f(history)h(substitution)e
+(where)h(appropriate\).)150 1447 y(This)30 b(section)h(describ)s(es)f
+(the)g(syn)m(tax)h(used)f(to)h(manipulate)g(the)f(history)h
+(information.)275 1576 y(History)g(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 1686 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 1795 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h
+(previous)g(commands)g(quic)m(kly)-8 b(.)275 1925 y(History)33
+b(expansion)f(tak)m(es)i(place)f(in)g(t)m(w)m(o)g(parts.)47
+b(The)32 b(\014rst)g(is)h(to)g(determine)f(whic)m(h)h(en)m(try)f(from)
+150 2034 y(the)d(history)g(list)g(should)f(b)s(e)g(used)g(during)g
+(substitution.)40 b(The)28 b(second)h(is)g(to)h(select)g(p)s(ortions)e
+(of)h(that)150 2144 y(en)m(try)i(to)g(include)f(in)m(to)h(the)g(curren)
+m(t)f(one.)275 2274 y(The)k(en)m(try)h(selected)h(from)e(the)h(history)
+g(is)f(called)i(the)f Fj(ev)m(en)m(t)p Fp(,)j(and)c(the)g(p)s(ortions)h
+(of)f(that)i(en)m(try)150 2383 y(that)d(are)g(acted)g(up)s(on)e(are)i
+Fj(w)m(ords)p Fp(.)46 b(V)-8 b(arious)33 b Fj(mo)s(di\014ers)i
+Fp(are)d(a)m(v)-5 b(ailable)35 b(to)e(manipulate)g(the)f(selected)150
+2493 y(w)m(ords.)38 b(The)24 b(en)m(try)h(is)g(split)g(in)m(to)g(w)m
+(ords)f(in)h(the)g(same)g(fashion)f(that)h(Bash)g(do)s(es)f(when)g
+(reading)h(input,)150 2602 y(so)k(that)h(sev)m(eral)g(w)m(ords)f
+(surrounded)d(b)m(y)j(quotes)h(are)f(considered)g(one)g(w)m(ord.)40
+b(The)29 b Fj(ev)m(en)m(t)h(designator)150 2712 y Fp(selects)37
+b(the)f(ev)m(en)m(t,)j(the)d(optional)h Fj(w)m(ord)f(designator)43
+b Fp(selects)37 b(w)m(ords)e(from)h(the)g(ev)m(en)m(t,)j(and)c(v)-5
+b(arious)150 2822 y(optional)32 b Fj(mo)s(di\014ers)g
+Fp(are)f(a)m(v)-5 b(ailable)33 b(to)e(manipulate)g(the)f(selected)i(w)m
+(ords.)275 2951 y(History)26 b(expansions)f(are)h(in)m(tro)s(duced)f(b)
+m(y)g(the)g(app)s(earance)h(of)g(the)f(history)h(expansion)f(c)m
+(haracter,)150 3061 y(whic)m(h)31 b(is)g(`)p Fo(!)p Fp(')h(b)m(y)f
+(default.)43 b(History)32 b(expansions)f(ma)m(y)g(app)s(ear)g(an)m
+(ywhere)g(in)g(the)g(input,)g(but)g(do)g(not)150 3170
+y(nest.)275 3300 y(History)26 b(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 2919 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
+(b)s(e)g(used)f(to)150 3409 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 3028 y(of)k(c)m(haracters,)i
+(enclose)g(v)m(erbatim)g(sequences)150 3519 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 3138 y(double)h(quotes)i(ma)m(y)
+(c)m(haracters)i(enclosed)e(within)150 3629 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 3247 y(expansion)e(c)m
+(kslash)g(can)h(escap)s(e)f(the)g(history)150 3738 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 3357
-y(double)g(quotes.)150 3544 y Fj(1.1.1)63 b(Ev)m(en)m(t)39
-b(Designators)150 3691 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 3800 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 3947 y Fp(!)432 b Fq(Start)34
+(are)g(not)f(treated)i(sp)s(ecially)f(within)150 3848
+y(double)g(quotes.)275 3977 y(There)25 b(is)h(a)h(sp)s(ecial)f
+(abbreviation)h(for)f(substitution,)g(activ)m(e)j(when)c(the)h
+Fj(quic)m(k)h(substitution)e Fp(c)m(har-)150 4087 y(acter)k(\(default)f
+(`)p Fo(^)p Fp('\))h(is)f(the)g(\014rst)f(c)m(haracter)i(on)f(the)g
+(line.)40 b(It)28 b(selects)h(the)f(previous)g(history)g(list)g(en)m
+(try)-8 b(,)150 4197 y(using)34 b(an)g(ev)m(en)m(t)h(designator)g
+(equiv)-5 b(alen)m(t)36 b(to)f Fo(!!)p Fp(,)f(and)g(substitutes)g(one)g
+(string)g(for)g(another)h(in)e(that)150 4306 y(en)m(try)-8
+b(.)40 b(It)27 b(is)g(describ)s(ed)f(b)s(elo)m(w)h(\(see)g(Section)h
+(1.1.1)h([Ev)m(en)m(t)f(Designators],)h(page)f(1\).)40
+b(This)26 b(is)h(the)g(only)150 4416 y(history)j(expansion)h(that)g(do)
+s(es)f(not)g(b)s(egin)g(with)g(the)h(history)f(expansion)g(c)m
+(haracter.)150 4605 y Fi(1.1.1)63 b(Ev)m(en)m(t)39 b(Designators)150
+4752 y Fp(An)g(ev)m(en)m(t)i(designator)f(is)g(a)g(reference)f(to)i(an)
+e(en)m(try)h(in)f(the)g(history)h(list.)68 b(The)39 b(ev)m(en)m(t)i
+(designator)150 4862 y(consists)f(of)g(the)f(p)s(ortion)h(of)f(the)h(w)
+m(ord)f(b)s(eginning)g(with)g(the)h(history)f(expansion)h(c)m
+(haracter,)k(and)150 4971 y(ending)e(with)g(the)h(w)m(ord)f(designator)
+i(if)e(one)h(is)g(presen)m(t,)j(or)c(the)h(end)f(of)h(the)f(w)m(ord.)77
+b(Unless)43 b(the)150 5081 y(reference)31 b(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 5230 y Fo(!)432 b Fp(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 4057 y(the)e(line,)g(or)f(`)p
-Fp(=)p Fq('.)150 4204 y Fp(!)p Fi(n)384 b Fq(Refer)30
-b(to)i(command)e(line)g Fk(n)p Fq(.)150 4351 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 4498 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 4645 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
-4755 y(list)31 b(starting)g(with)f Fk(string)p Fq(.)150
-4902 y Fp(!?)p Fi(string)p Fp([?])630 5011 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 5121 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 5230 y(immediately)f(b)m(y)e(a)h
-(newline.)40 b(If)29 b Fk(string)38 b Fq(is)29 b(missing,)h(the)g
-(string)f(from)g(the)h(most)g(recen)m(t)630 5340 y(searc)m(h)h(is)f
-(used;)g(it)h(is)g(an)f(error)g(if)g(there)h(is)f(no)g(previous)g
-(searc)m(h)h(string.)p eop end
+e(a)h(space,)h(tab,)f(the)g(end)f(of)630 5340 y(the)e(line,)g(or)f(`)p
+Fo(=)p Fp('.)p eop end
 %%Page: 2 5
-TeXDict begin 2 4 bop 150 -116 a Fq(Chapter)30 b(1:)41
+TeXDict begin 2 4 bop 150 -116 a Fp(Chapter)30 b(1:)41
 b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(2)150
-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 673 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 867 y Fj(1.1.2)63 b(W)-10 b(ord)41
-b(Designators)150 1014 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
-1124 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 1233 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
-1343 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 1452 y(single)h(spaces.)275
-1584 y(F)-8 b(or)31 b(example,)150 1739 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
-1849 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 2003
-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
-2113 y(to)31 b Fp(!$)p Fq(.)150 2267 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 2377
-y(letters)j Fp(fi)p Fq(.)275 2531 y(Here)e(are)h(the)g(w)m(ord)f
-(designators:)150 2686 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 2840 y Fi(n)432
-b Fq(The)30 b Fk(n)p Fq(th)g(w)m(ord.)150 2995 y Fp(^)432
-b Fq(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150
-3150 y Fp($)432 b Fq(The)30 b(last)h(argumen)m(t.)150
-3304 y Fp(\045)432 b Fq(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m
-(y)f(the)g(most)g(recen)m(t)h(`)p Fp(?)p Fi(string)p
-Fp(?)p Fq(')d(searc)m(h,)44 b(if)d(the)g(searc)m(h)630
-3414 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f
-(part)h(of)f(a)h(w)m(ord.)150 3568 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 3723
-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
-3832 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 3942 y(that)j(case.)150 4097 y Fi(x)p
-Fp(*)384 b Fq(Abbreviates)31 b(`)p Fi(x)p Fp(-$)p Fq(')150
-4251 y Fi(x)p Fp(-)384 b Fq(Abbreviates)27 b(`)p Fi(x)p
-Fp(-$)p Fq(')g(lik)m(e)h(`)p Fi(x)p Fp(*)p Fq(',)g(but)e(omits)i(the)f
-(last)h(w)m(ord.)39 b(If)27 b(`)p Fp(x)p Fq(')g(is)g(missing,)g(it)h
-(defaults)630 4361 y(to)j(0.)275 4515 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 4625 y(is)d(used)g(as)h(the)f(ev)m(en)m
-(t.)150 4819 y Fj(1.1.3)63 b(Mo)s(di\014ers)150 4966
-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 5076 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p
-Fp(:)p Fq('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g
-(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 5185 y(the)d(history)f
-(ev)m(en)m(t.)150 5340 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.)p eop end
+299 y Fo(!)p Fh(n)384 b Fp(Refer)30 b(to)i(history)e(list)h(en)m(try)f
+Fj(n)p Fp(.)150 450 y Fo(!-)p Fh(n)336 b Fp(Refer)30
+b(to)i(the)e(history)g(en)m(try)h(min)m(us)f Fj(n)p Fp(.)150
+602 y Fo(!!)384 b Fp(Refer)30 b(to)i(the)e(previous)g(en)m(try)-8
+b(.)41 b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Fo(!-1)p
+Fp('.)150 753 y Fo(!)p Fh(string)144 b Fp(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 863 y(list)31 b(starting)g(with)f
+Fj(string)p Fp(.)150 1014 y Fo(!?)p Fh(string)p Fo([?])630
+1124 y Fp(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
+1233 y(list)32 b(con)m(taining)i Fj(string)p Fp(.)45
+b(The)31 b(trailing)i(`)p Fo(?)p Fp(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f
+(the)g Fj(string)39 b Fp(is)32 b(follo)m(w)m(ed)630 1343
+y(immediately)39 b(b)m(y)f(a)g(newline.)63 b(If)37 b
+Fj(string)45 b Fp(is)38 b(missing,)i(this)e(uses)f(the)h(string)f(from)
+h(the)630 1452 y(most)31 b(recen)m(t)g(searc)m(h;)g(it)g(is)g(an)f
+(error)g(if)g(there)h(is)f(no)h(previous)e(searc)m(h)i(string.)150
+1604 y Fo(^)p Fh(string1)p Fo(^)p Fh(string2)p Fo(^)630
+1713 y Fp(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32
+b(the)g(last)h(command,)f(replacing)g Fj(string1)40 b
+Fp(with)31 b Fj(string2)p Fp(.)630 1823 y(Equiv)-5 b(alen)m(t)31
+b(to)g Fo(!!:s^)p Fh(string1)p Fo(^)p Fh(string2)p Fo(^)p
+Fp(.)150 1974 y Fo(!#)384 b Fp(The)30 b(en)m(tire)h(command)f(line)h(t)
+m(yp)s(ed)f(so)h(far.)150 2166 y Fi(1.1.2)63 b(W)-10
+b(ord)41 b(Designators)150 2313 y Fp(W)-8 b(ord)28 b(designators)h(are)
+f(used)f(to)i(select)h(desired)d(w)m(ords)h(from)f(the)h(ev)m(en)m(t.)
+42 b(They)27 b(are)i(optional;)h(if)e(the)150 2422 y(w)m(ord)h
+(designator)i(isn't)e(supplied,)g(the)h(history)g(expansion)f(uses)g
+(the)h(en)m(tire)h(ev)m(en)m(t.)42 b(A)29 b(`)p Fo(:)p
+Fp(')h(separates)150 2532 y(the)f(ev)m(en)m(t)i(sp)s(eci\014cation)e
+(from)g(the)g(w)m(ord)g(designator.)41 b(It)29 b(ma)m(y)g(b)s(e)g
+(omitted)h(if)e(the)i(w)m(ord)e(designator)150 2641 y(b)s(egins)33
+b(with)h(a)h(`)p Fo(^)p Fp(',)g(`)p Fo($)p Fp(',)g(`)p
+Fo(*)p Fp(',)h(`)p Fo(-)p Fp(',)f(or)f(`)p Fo(\045)p
+Fp('.)52 b(W)-8 b(ords)35 b(are)f(n)m(um)m(b)s(ered)f(from)g(the)i(b)s
+(eginning)e(of)h(the)g(line,)150 2751 y(with)39 b(the)h(\014rst)e(w)m
+(ord)h(b)s(eing)g(denoted)g(b)m(y)h(0)f(\(zero\).)69
+b(That)40 b(\014rst)e(w)m(ord)h(is)h(usually)f(the)g(command)150
+2861 y(w)m(ord,)31 b(and)f(the)h(argumen)m(ts)g(b)s(egin)f(with)g(the)h
+(second)g(w)m(ord.)41 b(W)-8 b(ords)31 b(are)g(inserted)g(in)m(to)g
+(the)g(curren)m(t)150 2970 y(line)g(separated)g(b)m(y)f(single)h
+(spaces.)275 3101 y(F)-8 b(or)31 b(example,)150 3252
+y Fo(!!)384 b Fp(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
+3362 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 3513
+y Fo(!!:$)288 b Fp(designates)30 b(the)g(last)g(w)m(ord)f(of)g(the)h
+(preceding)f(command.)40 b(This)29 b(ma)m(y)h(b)s(e)e(shortened)h(to)
+630 3623 y Fo(!$)p Fp(.)150 3774 y Fo(!fi:2)240 b Fp(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 3884 y(letters)j Fo(fi)p Fp(.)275
+4035 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150
+4186 y Fo(0)g(\(zero\))114 b Fp(The)24 b Fo(0)p Fp(th)g(w)m(ord.)38
+b(F)-8 b(or)25 b(the)g(shell,)h(and)d(man)m(y)i(other,)h(applications,)
+h(this)d(is)h(the)f(command)630 4296 y(w)m(ord.)150 4447
+y Fh(n)432 b Fp(The)30 b Fj(n)p Fp(th)g(w)m(ord.)150
+4599 y Fo(^)432 b Fp(The)30 b(\014rst)f(argumen)m(t:)42
+b(w)m(ord)30 b(1.)150 4750 y Fo($)432 b Fp(The)36 b(last)i(w)m(ord.)59
+b(This)36 b(is)h(usually)f(the)h(last)g(argumen)m(t,)i(but)d(expands)g
+(to)h(the)g(zeroth)630 4860 y(w)m(ord)30 b(if)g(there)h(is)f(only)h
+(one)f(w)m(ord)g(in)h(the)f(line.)150 5011 y Fo(\045)432
+b Fp(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m(y)f(the)g(most)g
+(recen)m(t)h(`)p Fo(?)p Fh(string)p Fo(?)p Fp(')d(searc)m(h,)44
+b(if)d(the)g(searc)m(h)630 5121 y(string)25 b(b)s(egins)g(with)g(a)h(c)
+m(haracter)h(that)f(is)g(part)f(of)h(a)g(w)m(ord.)38
+b(By)26 b(default,)h(searc)m(hes)f(b)s(egin)630 5230
+y(at)j(the)e(end)h(of)g(eac)m(h)h(line)f(and)f(pro)s(ceed)g(to)i(the)f
+(b)s(eginning,)g(so)g(the)g(\014rst)f(w)m(ord)g(matc)m(hed)630
+5340 y(is)j(the)h(one)g(closest)h(to)f(the)f(end)g(of)g(the)h(line.)p
+eop end
 %%Page: 3 6
-TeXDict begin 3 5 bop 150 -116 a Fq(Chapter)30 b(1:)41
+TeXDict begin 3 5 bop 150 -116 a Fp(Chapter)30 b(1:)41
 b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(3)150
-299 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 458 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
-618 y Fp(e)432 b Fq(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g
-(su\016x.)150 777 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 936 y Fp(s/)p Fi(old)p
-Fp(/)p Fi(new)p Fp(/)630 1046 y Fq(Substitute)f Fk(new)39
-b Fq(for)32 b(the)g(\014rst)f(o)s(ccurrence)h(of)f Fk(old)36
-b Fq(in)31 b(the)h(ev)m(en)m(t)h(line.)46 b(An)m(y)31
-b(c)m(haracter)630 1156 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter)
-g(in)f(place)h(of)f(`)p Fp(/)p Fq('.)53 b(The)33 b(delimiter)i(ma)m(y)g
-(b)s(e)f(quoted)g(in)630 1265 y Fk(old)40 b Fq(and)c
-Fk(new)44 b Fq(with)36 b(a)h(single)g(bac)m(kslash.)60
-b(If)36 b(`)p Fp(&)p Fq(')h(app)s(ears)e(in)i Fk(new)p
-Fq(,)g(it)h(is)e(replaced)h(b)m(y)630 1375 y Fk(old)p
-Fq(.)k(A)31 b(single)g(bac)m(kslash)g(will)g(quote)g(the)g(`)p
-Fp(&)p Fq('.)41 b(If)31 b Fk(old)j Fq(is)c(n)m(ull,)h(it)g(is)g(set)g
-(to)g(the)g(last)g Fk(old)630 1484 y Fq(substituted,)j(or,)g(if)f(no)g
-(previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)e(last)h
-Fk(string)630 1594 y Fq(in)d(a)g(!?)p Fk(string)8 b Fp([?])30
-b Fq(searc)m(h.)44 b(If)31 b Fk(new)38 b Fq(is)31 b(n)m(ull,)h(eac)m(h)
-g(matc)m(hing)g Fk(old)j Fq(is)c(deleted.)44 b(The)30
-b(\014nal)630 1704 y(delimiter)h(is)g(optional)g(if)f(it)h(is)g(the)f
-(last)h(c)m(haracter)h(on)f(the)f(input)g(line.)150 1863
-y Fp(&)432 b Fq(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
-2022 y Fp(g)150 2132 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 2242 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 2401 y
-Fp(G)432 b Fq(Apply)30 b(the)g(follo)m(wing)i(`)p Fp(s)p
-Fq(')f(or)f(`)p Fp(&)p Fq(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m
+299 y Fh(x)p Fo(-)p Fh(y)336 b Fp(A)30 b(range)h(of)g(w)m(ords;)f(`)p
+Fo(-)p Fh(y)p Fp(')g(abbreviates)h(`)p Fo(0-)p Fh(y)p
+Fp('.)150 458 y Fo(*)432 b Fp(All)28 b(of)g(the)g(w)m(ords,)g(except)h
+(the)e Fo(0)p Fp(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
+Fo(1-$)p Fp('.)39 b(It)28 b(is)g(not)g(an)f(error)630
+568 y(to)k(use)f(`)p Fo(*)p Fp(')h(if)f(there)h(is)f(just)g(one)h(w)m
+(ord)f(in)g(the)h(ev)m(en)m(t;)h(it)f(expands)e(to)j(the)e(empt)m(y)h
+(string)630 677 y(in)f(that)h(case.)150 837 y Fh(x)p
+Fo(*)384 b Fp(Abbreviates)31 b(`)p Fh(x)p Fo(-$)p Fp('.)150
+996 y Fh(x)p Fo(-)384 b Fp(Abbreviates)27 b(`)p Fh(x)p
+Fo(-$)p Fp(')g(lik)m(e)h(`)p Fh(x)p Fo(*)p Fp(',)g(but)e(omits)i(the)f
+(last)h(w)m(ord.)39 b(If)27 b(`)p Fo(x)p Fp(')g(is)g(missing,)g(it)h
+(defaults)630 1106 y(to)j(0.)275 1265 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 1375 y(is)d(used)g(as)h(the)f(ev)m(en)m
+(t,)i(equiv)-5 b(alen)m(t)32 b(to)f Fo(!!)p Fp(.)150
+1574 y Fi(1.1.3)63 b(Mo)s(di\014ers)150 1721 y Fp(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
+1831 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p
+Fo(:)p Fp('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g
+(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 1940 y(the)d(history)f
+(ev)m(en)m(t.)150 2100 y Fo(h)432 b Fp(Remo)m(v)m(e)32
+b(a)f(trailing)g(\014lename)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e
+(the)h(head.)150 2259 y Fo(t)432 b Fp(Remo)m(v)m(e)32
+b(all)f(leading)h(\014lename)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)f
+(tail.)150 2418 y Fo(r)432 b Fp(Remo)m(v)m(e)32 b(a)f(trailing)g
+(su\016x)f(of)g(the)h(form)f(`)p Fo(.)p Fh(suffix)p Fp(',)f(lea)m(ving)
+j(the)f(basename.)150 2578 y Fo(e)432 b Fp(Remo)m(v)m(e)32
+b(all)f(but)f(the)h(trailing)g(su\016x.)150 2737 y Fo(p)432
+b Fp(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i
+(it.)150 2897 y Fo(s/)p Fh(old)p Fo(/)p Fh(new)p Fo(/)630
+3006 y Fp(Substitute)f Fj(new)39 b Fp(for)32 b(the)g(\014rst)f(o)s
+(ccurrence)h(of)f Fj(old)36 b Fp(in)31 b(the)h(ev)m(en)m(t)h(line.)46
+b(An)m(y)31 b(c)m(haracter)630 3116 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)
+h(delimiter)g(in)f(place)h(of)f(`)p Fo(/)p Fp('.)53 b(The)33
+b(delimiter)i(ma)m(y)g(b)s(e)f(quoted)g(in)630 3225 y
+Fj(old)i Fp(and)31 b Fj(new)39 b Fp(with)31 b(a)i(single)f(bac)m
+(kslash.)46 b(If)31 b(`)p Fo(&)p Fp(')h(app)s(ears)f(in)h
+Fj(new)p Fp(,)g(it)g(is)g(replaced)g(with)630 3335 y
+Fj(old)p Fp(.)41 b(A)30 b(single)h(bac)m(kslash)g(quotes)g(the)f(`)p
+Fo(&)p Fp(')h(in)f Fj(old)k Fp(and)29 b Fj(new)p Fp(.)41
+b(If)29 b Fj(old)34 b Fp(is)d(n)m(ull,)f(it)h(is)f(set)h(to)630
+3445 y(the)f(last)g Fj(old)j Fp(substituted,)c(or,)h(if)f(no)g
+(previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)630
+3554 y(last)e Fj(string)36 b Fp(in)28 b(a)h(!?)p Fj(string)8
+b Fo([?])28 b Fp(searc)m(h.)40 b(If)28 b Fj(new)36 b
+Fp(is)28 b(n)m(ull,)h(eac)m(h)h(matc)m(hing)f Fj(old)j
+Fp(is)d(deleted.)630 3664 y(The)h(\014nal)g(delimiter)h(is)f(optional)i
+(if)e(it)h(is)g(the)f(last)h(c)m(haracter)h(on)f(the)f(input)g(line.)
+150 3823 y Fo(&)432 b Fp(Rep)s(eat)31 b(the)f(previous)g(substitution.)
+150 3983 y Fo(g)150 4092 y(a)432 b Fp(Cause)27 b(c)m(hanges)i(to)f(b)s
+(e)f(applied)g(o)m(v)m(er)h(the)g(en)m(tire)g(ev)m(en)m(t)h(line.)40
+b(This)27 b(is)g(used)g(in)g(conjunc-)630 4202 y(tion)k(with)f(`)p
+Fo(s)p Fp(',)h(as)f(in)g Fo(gs/)p Fh(old)p Fo(/)p Fh(new)p
+Fo(/)p Fp(,)e(or)i(with)g(`)p Fo(&)p Fp('.)150 4361 y
+Fo(G)432 b Fp(Apply)30 b(the)g(follo)m(wing)i(`)p Fo(s)p
+Fp(')f(or)f(`)p Fo(&)p Fp(')h(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
+TeXDict begin 4 6 bop 3705 -116 a Fp(4)150 299 y Fl(2)80
+b(Programming)54 b(with)f(GNU)h(History)150 544 y Fp(This)41
 b(c)m(hapter)i(describ)s(es)e(ho)m(w)h(to)h(in)m(terface)g(programs)f
-(that)g(y)m(ou)h(write)f(with)f(the)i Fl(gnu)e Fq(History)150
+(that)g(y)m(ou)h(write)f(with)f(the)i Fk(gnu)e Fp(History)150
 654 y(Library)-8 b(.)48 b(It)33 b(should)e(b)s(e)i(considered)f(a)h
 (tec)m(hnical)i(guide.)48 b(F)-8 b(or)34 b(information)f(on)g(the)g(in)
-m(teractiv)m(e)i(use)150 763 y(of)c Fl(gnu)f Fq(History)-8
+m(teractiv)m(e)i(use)150 763 y(of)c Fk(gnu)f Fp(History)-8
 b(,)31 b(see)g(Chapter)f(1)h([Using)g(History)g(In)m(teractiv)m(ely],)i
-(page)e(1.)150 1010 y Fo(2.1)68 b(In)l(tro)t(duction)45
-b(to)g(History)150 1169 y Fq(Man)m(y)31 b(programs)f(read)g(input)g
+(page)e(1.)150 1010 y Fn(2.1)68 b(In)l(tro)t(duction)45
+b(to)g(History)150 1169 y Fp(Man)m(y)31 b(programs)f(read)g(input)g
 (from)f(the)i(user)f(a)g(line)h(at)g(a)g(time.)41 b(The)30
-b Fl(gnu)g Fq(History)h(library)f(is)g(able)150 1279
+b Fk(gnu)g Fp(History)h(library)f(is)g(able)150 1279
 y(to)f(k)m(eep)h(trac)m(k)g(of)f(those)g(lines,)h(asso)s(ciate)g
 (arbitrary)f(data)g(with)g(eac)m(h)h(line,)f(and)g(utilize)h
-(information)150 1388 y(from)g(previous)g(lines)g(in)g(comp)s(osing)h
-(new)f(ones.)275 1527 y(A)24 b(programmer)g(using)g(the)h(History)g
-(library)f(has)h(a)m(v)-5 b(ailable)27 b(functions)d(for)g(remem)m(b)s
-(ering)g(lines)h(on)150 1636 y(a)30 b(history)f(list,)h(asso)s(ciating)
-i(arbitrary)d(data)h(with)f(a)g(line,)i(remo)m(ving)f(lines)f(from)g
-(the)h(list,)g(searc)m(hing)150 1746 y(through)35 b(the)g(list)h(for)f
-(a)h(line)f(con)m(taining)i(an)e(arbitrary)g(text)h(string,)h(and)e
-(referencing)g(an)m(y)h(line)f(in)150 1855 y(the)c(list)g(directly)-8
-b(.)43 b(In)30 b(addition,)h(a)g(history)g Fk(expansion)g
-Fq(function)f(is)h(a)m(v)-5 b(ailable)33 b(whic)m(h)d(pro)m(vides)h
-(for)g(a)150 1965 y(consisten)m(t)h(user)d(in)m(terface)j(across)f
-(di\013eren)m(t)g(programs.)275 2103 y(The)c(user)g(using)g(programs)h
-(written)g(with)g(the)g(History)g(library)g(has)f(the)h(b)s(ene\014t)f
-(of)h(a)h(consisten)m(t)150 2213 y(user)38 b(in)m(terface)j(with)e(a)g
-(set)g(of)h(w)m(ell-kno)m(wn)f(commands)g(for)g(manipulating)g(the)g
-(text)h(of)f(previous)150 2323 y(lines)28 b(and)f(using)g(that)h(text)g
-(in)g(new)f(commands.)39 b(The)27 b(basic)h(history)g(manipulation)f
-(commands)h(are)150 2432 y(similar)j(to)g(the)f(history)h(substitution)
-f(pro)m(vided)g(b)m(y)g Fp(csh)p Fq(.)275 2570 y(The)f(programmer)h
-(can)h(also)g(use)g(the)f(Readline)h(library)-8 b(,)31
-b(whic)m(h)f(includes)g(some)h(history)f(manip-)150 2680
-y(ulation)h(b)m(y)f(default,)h(and)f(has)g(the)h(added)e(adv)-5
-b(an)m(tage)33 b(of)d(command)g(line)h(editing.)275 2818
-y(Before)39 b(declaring)f(an)m(y)h(functions)e(using)h(an)m(y)g
-(functionalit)m(y)i(the)e(History)h(library)e(pro)m(vides)h(in)150
-2928 y(other)29 b(co)s(de,)g(an)g(application)h(writer)f(should)e
-(include)i(the)g(\014le)f Fp(<readline/history.h>)23
-b Fq(in)29 b(an)m(y)g(\014le)150 3037 y(that)c(uses)e(the)h(History)h
-(library's)e(features.)39 b(It)24 b(supplies)f(extern)h(declarations)i
-(for)d(all)i(of)f(the)g(library's)150 3147 y(public)30
-b(functions)g(and)f(v)-5 b(ariables,)32 b(and)d(declares)j(all)f(of)f
-(the)h(public)f(data)h(structures.)150 3393 y Fo(2.2)68
-b(History)46 b(Storage)150 3553 y Fq(The)30 b(history)g(list)h(is)g(an)
-f(arra)m(y)h(of)f(history)h(en)m(tries.)41 b(A)31 b(history)f(en)m(try)
-h(is)f(declared)h(as)f(follo)m(ws:)390 3691 y Fp(typedef)46
-b(void)g(*histdata_t;)390 3910 y(typedef)g(struct)g(_hist_entry)f({)485
-4020 y(char)i(*line;)485 4129 y(char)g(*timestamp;)485
-4239 y(histdata_t)e(data;)390 4349 y(})i(HIST_ENTRY;)275
-4487 y Fq(The)29 b(history)i(list)g(itself)g(migh)m(t)g(therefore)g(b)s
-(e)f(declared)g(as)390 4625 y Fp(HIST_ENTRY)45 b(**the_history_list;)
-275 4763 y Fq(The)29 b(state)j(of)f(the)f(History)h(library)f(is)h
+(information)150 1388 y(from)g(previous)g(lines)g(when)g(comp)s(osing)g
+(new)g(ones.)275 1527 y(A)23 b(programmer)f(using)h(the)g(History)h
+(library)e(can)h(use)g(functions)g(to)g(sa)m(v)m(e)i(commands)e(on)g(a)
+g(history)150 1636 y(list,)37 b(asso)s(ciate)h(arbitrary)d(data)h(with)
+f(history)g(list)h(en)m(tries,)i(remo)m(v)m(e)e(en)m(tries)g(from)f
+(the)h(list,)h(searc)m(h)150 1746 y(through)g(the)h(list)g(for)f(a)h
+(line)g(con)m(taining)h(an)e(arbitrary)h(text)g(string,)i(reference)e
+(an)m(y)g(en)m(try)g(in)f(the)150 1855 y(list)e(directly)-8
+b(,)38 b(and)c(read)h(and)f(write)h(the)g(history)g(list)g(from)f(and)h
+(to)g(a)g(\014le.)54 b(In)34 b(addition,)j(a)e(history)150
+1965 y Fj(expansion)25 b Fp(function)g(is)h(a)m(v)-5
+b(ailable)28 b(whic)m(h)d(pro)m(vides)g(for)g(a)h(consisten)m(t)h(user)
+e(in)m(terface)h(across)g(di\013eren)m(t)150 2075 y(programs.)275
+2213 y(Someone)i(using)f(programs)g(written)h(with)g(the)g(History)g
+(library)f(has)h(the)g(b)s(ene\014t)f(of)g(a)i(consisten)m(t)150
+2323 y(user)38 b(in)m(terface)j(with)e(a)g(set)g(of)h(w)m(ell-kno)m(wn)
+f(commands)g(for)g(manipulating)g(the)g(text)h(of)f(previous)150
+2432 y(lines)28 b(and)f(using)g(that)h(text)g(in)g(new)f(commands.)39
+b(The)27 b(basic)h(history)g(manipulation)f(commands)h(are)150
+2542 y(similar)j(to)g(the)f(history)h(substitution)f(pro)m(vided)g(b)m
+(y)g Fo(csh)p Fp(.)275 2680 y(The)f(programmer)h(can)h(also)g(use)g
+(the)f(Readline)h(library)-8 b(,)31 b(whic)m(h)f(includes)g(some)h
+(history)f(manip-)150 2790 y(ulation)h(b)m(y)f(default,)h(and)f(has)g
+(the)h(added)e(adv)-5 b(an)m(tage)33 b(of)d(command)g(line)h(editing.)
+275 2928 y(Before)39 b(declaring)f(an)m(y)h(functions)e(using)h(an)m(y)
+g(functionalit)m(y)i(the)e(History)h(library)e(pro)m(vides)h(in)150
+3037 y(other)29 b(co)s(de,)g(an)g(application)h(writer)f(should)e
+(include)i(the)g(\014le)f Fo(<readline/history.h>)23
+b Fp(in)29 b(an)m(y)g(\014le)150 3147 y(that)c(uses)f(the)h(History)g
+(library's)f(features.)39 b(It)25 b(supplies)e(declarations)j(for)f
+(all)g(of)g(the)f(library's)h(public)150 3257 y(functions)30
+b(and)g(v)-5 b(ariables,)31 b(and)f(declares)h(all)g(of)g(the)f(public)
+g(data)h(structures.)150 3503 y Fn(2.2)68 b(History)46
+b(Storage)150 3662 y Fp(The)30 b(history)g(list)h(is)g(an)f(arra)m(y)h
+(of)f(history)h(en)m(tries.)41 b(A)31 b(history)f(en)m(try)h(is)f
+(declared)h(as)f(follo)m(ws:)390 3801 y Fo(typedef)46
+b(void)g(*histdata_t;)390 4020 y(typedef)g(struct)g(_hist_entry)f({)485
+4129 y(char)i(*line;)485 4239 y(char)g(*timestamp;)485
+4349 y(histdata_t)e(data;)390 4458 y(})i(HIST_ENTRY;)275
+4596 y Fp(The)29 b(history)i(list)g(itself)g(migh)m(t)g(therefore)g(b)s
+(e)f(declared)g(as)390 4735 y Fo(HIST_ENTRY)45 b(**the_history_list;)
+275 4873 y Fp(The)29 b(state)j(of)f(the)f(History)h(library)f(is)h
 (encapsulated)g(in)m(to)g(a)g(single)g(structure:)390
-4902 y Fp(/*)438 5011 y(*)47 b(A)h(structure)d(used)i(to)g(pass)f
+5011 y Fo(/*)438 5121 y(*)47 b(A)h(structure)d(used)i(to)g(pass)f
 (around)g(the)h(current)f(state)h(of)g(the)g(history.)438
-5121 y(*/)390 5230 y(typedef)f(struct)g(_hist_state)f({)485
-5340 y(HIST_ENTRY)g(**entries;)g(/*)j(Pointer)d(to)j(the)f(entries)e
-(themselves.)g(*/)p eop end
+5230 y(*/)390 5340 y(typedef)f(struct)g(_hist_state)f({)p
+eop end
 %%Page: 5 8
-TeXDict begin 5 7 bop 150 -116 a Fq(Chapter)30 b(2:)41
+TeXDict begin 5 7 bop 150 -116 a Fp(Chapter)30 b(2:)41
 b(Programming)30 b(with)g(GNU)h(History)1780 b(5)485
-299 y Fp(int)47 b(offset;)523 b(/*)48 b(The)f(location)e(pointer)h
-(within)g(this)h(array.)f(*/)485 408 y(int)h(length;)523
-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 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 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 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 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
-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 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 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 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 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
+299 y Fo(HIST_ENTRY)45 b(**entries;)g(/*)j(Pointer)d(to)j(the)f
+(entries)e(themselves.)g(*/)485 408 y(int)i(offset;)523
+b(/*)48 b(The)f(location)e(pointer)h(within)g(this)h(array.)f(*/)485
+518 y(int)h(length;)523 b(/*)48 b(Number)e(of)h(elements)e(within)i
+(this)f(array.)g(*/)485 628 y(int)h(size;)619 b(/*)48
+b(Number)e(of)h(slots)f(allocated)g(to)h(this)f(array.)g(*/)485
+737 y(int)h(flags;)390 847 y(})g(HISTORY_STATE;)275 978
+y Fp(If)c(the)h(\015ags)h(mem)m(b)s(er)e(includes)h Fo(HS_STIFLED)p
+Fp(,)h(the)f(history)g(has)g(b)s(een)g(sti\015ed)g(\(limited)h(to)g(a)
+150 1087 y(maxim)m(um)30 b(n)m(um)m(b)s(er)f(of)i(en)m(tries\).)150
+1320 y Fn(2.3)68 b(History)46 b(F)-11 b(unctions)150
+1480 y Fp(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
+Fk(gnu)150 1589 y Fp(History)d(library)-8 b(.)150 1781
+y Fi(2.3.1)63 b(Initializing)40 b(History)i(and)f(State)f(Managemen)m
+(t)150 1928 y Fp(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 2037 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 2210
+y([F)-8 b(unction])-3599 b Fg(void)54 b(using_history)49
+b Ff(\()p Fe(v)m(oid)p Ff(\))390 2320 y Fp(Begin)40 b(a)g(session)g
+(that)g(will)g(use)f(the)g(history)h(functions.)67 b(This)39
+b(initializes)i(the)f(in)m(teractiv)m(e)390 2430 y(v)-5
+b(ariables.)3350 2603 y([F)d(unction])-3599 b Fg(HISTORY_STATE)56
+b(*)d(history_get_history_st)q(ate)f Ff(\()p Fe(v)m(oid)p
+Ff(\))390 2712 y Fp(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
+2885 y([F)g(unction])-3599 b Fg(void)54 b(history_set_history_stat)q(e)
+e Ff(\()p Fe(HISTOR)-8 b(Y)p 2262 2885 30 5 v 44 w(ST)g(A)g(TE)32
+b(*state)p Ff(\))390 2995 y Fp(Set)f(the)f(state)i(of)e(the)h(history)f
+(list)h(according)h(to)f Fj(state)p Fp(.)150 3186 y Fi(2.3.2)63
+b(History)41 b(List)g(Managemen)m(t)150 3333 y Fp(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 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 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 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.)p eop end
+(list,)h(or)f(set)h(parameters)f(managing)150 3443 y(the)f(list)g
+(itself.)3350 3616 y([F)-8 b(unction])-3599 b Fg(void)54
+b(add_history)48 b Ff(\()p Fe(const)34 b(c)m(har)g(*string)p
+Ff(\))390 3725 y Fp(Add)i Fj(string)44 b Fp(to)38 b(the)f(end)f(of)h
+(the)g(history)f(list,)k(and)c(set)h(the)g(asso)s(ciated)h(data)g
+(\014eld)e(\(if)h(an)m(y\))390 3835 y(to)44 b Fo(NULL)p
+Fp(.)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 Fo(stifle_)390
+3944 y(history\(\))p Fp(,)26 b(and)i(the)g(new)g(n)m(um)m(b)s(er)e(of)j
+(history)f(en)m(tries)h(w)m(ould)f(exceed)h(that)f(maxim)m(um,)h(this)
+390 4054 y(remo)m(v)m(es)j(the)e(oldest)h(history)g(en)m(try)-8
+b(.)3350 4227 y([F)g(unction])-3599 b Fg(void)54 b(add_history_time)c
+Ff(\()p Fe(const)34 b(c)m(har)g(*string)p Ff(\))390 4337
+y Fp(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 Fj(string)p Fp(.)3350
+4510 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55 b(*)e(remove_history)d
+Ff(\()p Fe(in)m(t)33 b(whic)m(h)p Ff(\))390 4619 y Fp(Remo)m(v)m(e)45
+b(the)e(history)h(en)m(try)f(at)h(o\013set)g Fj(whic)m(h)f
+Fp(from)g(the)g(history)g(list.)80 b(This)43 b(returns)f(the)390
+4729 y(remo)m(v)m(ed)34 b(elemen)m(t)h(so)f(y)m(ou)f(can)h(free)f(the)h
+(line,)g(data,)h(and)e(con)m(taining)i(structure.)48
+b(Since)34 b(the)390 4838 y(data)29 b(is)f(priv)-5 b(ate)29
+b(to)g(y)m(our)f(application,)i(the)e(History)h(library)f(do)s(esn't)g
+(kno)m(w)g(ho)m(w)g(to)h(free)g(it,)g(if)390 4948 y(necessary)-8
+b(.)3350 5121 y([F)g(unction])-3599 b Fg(histdata_t)55
+b(free_history_entry)c Ff(\()p Fe(HIST)p 1992 5121 V
+44 w(ENTR)-8 b(Y)33 b(*histen)m(t)p Ff(\))390 5230 y
+Fp(F)-8 b(ree)29 b(the)f(history)g(en)m(try)g Fj(histen)m(t)j
+Fp(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 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.)p eop end
 %%Page: 6 9
-TeXDict begin 6 8 bop 150 -116 a Fq(Chapter)30 b(2:)41
+TeXDict begin 6 8 bop 150 -116 a Fp(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(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
+299 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55 b(*)e
+(replace_history_entry)f Ff(\()p Fe(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
+w(t)f(data)p Ff(\))390 518 y Fp(Mak)m(e)c(the)f(history)f(en)m(try)h
+(at)h(o\013set)f Fj(whic)m(h)g Fp(ha)m(v)m(e)g Fj(line)33
+b Fp(and)27 b Fj(data)p Fp(.)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
-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
-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 2319 y Fq(Returns)29 b(non-zero)i(if)g
+(in)m(v)-5 b(alid)390 737 y Fj(whic)m(h)p Fp(,)30 b(this)h(returns)e
+Fo(NULL)p Fp(.)3350 951 y([F)-8 b(unction])-3599 b Fg(void)54
+b(clear_history)49 b Ff(\()p Fe(v)m(oid)p Ff(\))390 1061
+y Fp(Clear)31 b(the)f(history)h(list)g(b)m(y)f(deleting)h(all)h(the)e
+(en)m(tries.)3350 1275 y([F)-8 b(unction])-3599 b Fg(void)54
+b(stifle_history)49 b Ff(\()p Fe(in)m(t)34 b(max)p Ff(\))390
+1385 y Fp(Sti\015e)j(the)f(history)h(list,)i(remem)m(b)s(ering)d(only)h
+(the)f(last)i Fj(max)43 b Fp(en)m(tries.)60 b(The)36
+b(history)g(list)i(will)390 1494 y(con)m(tain)32 b(only)e
+Fj(max)37 b Fp(en)m(tries)31 b(at)g(a)g(time.)3350 1709
+y([F)-8 b(unction])-3599 b Fg(int)53 b(unstifle_history)e
+Ff(\()p Fe(v)m(oid)p Ff(\))390 1818 y Fp(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 1928 y(en)m(tries)g(\(as)f
+(set)g(b)m(y)g Fo(stifle_history\(\))p Fp(\).)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 2037 y(negativ)m(e)33 b(if)d(it)h(w)m(asn't.)3350
+2251 y([F)-8 b(unction])-3599 b Fg(int)53 b(history_is_stifled)e
+Ff(\()p Fe(v)m(oid)p Ff(\))390 2361 y Fp(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
-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
+2575 y Fi(2.3.3)63 b(Information)42 b(Ab)s(out)f(the)g(History)g(List)
+150 2722 y Fp(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 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
-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 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 3302
-y([F)-8 b(unction])-3599 b Fh(int)53 b(where_history)d
-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 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 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
-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 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 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 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
+(tries.)3350 2936 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55
+b(**)e(history_list)c Ff(\()p Fe(v)m(oid)p Ff(\))390
+3046 y Fp(Return)30 b(a)h Fo(NULL)e Fp(terminated)i(arra)m(y)g(of)f
+Fo(HIST_ENTRY)e(*)i Fp(whic)m(h)g(is)h(the)g(curren)m(t)f(input)f
+(history)-8 b(.)390 3156 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(Return)29 b Fo(NULL)g
+Fp(if)i(there)f(is)h(no)f(history)-8 b(.)3350 3370 y([F)g(unction])
+-3599 b Fg(int)53 b(where_history)d Ff(\()p Fe(v)m(oid)p
+Ff(\))390 3479 y Fp(Return)30 b(the)g(o\013set)i(of)e(the)h(curren)m(t)
+f(history)g(en)m(try)-8 b(.)3350 3693 y([F)g(unction])-3599
+b Fg(HIST_ENTRY)55 b(*)e(current_history)d Ff(\()p Fe(v)m(oid)p
+Ff(\))390 3803 y Fp(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
+Fo(where_history\(\))p Fp(.)390 3913 y(If)30 b(there)g(is)h(no)f(en)m
+(try)h(there,)g(return)e Fo(NULL)p Fp(.)3350 4127 y([F)-8
+b(unction])-3599 b Fg(HIST_ENTRY)55 b(*)e(history_get)c
+Ff(\()p Fe(in)m(t)33 b(o\013set)p Ff(\))390 4236 y Fp(Return)e(the)g
+(history)h(en)m(try)g(at)g(p)s(osition)g Fj(o\013set)p
+Fp(.)45 b(The)31 b(range)h(of)g(v)-5 b(alid)31 b(v)-5
+b(alues)32 b(of)g Fj(o\013set)j Fp(starts)390 4346 y(at)d
+Fo(history_base)c Fp(and)i(ends)h(at)g Fj(history)p 1885
+4346 28 4 v 40 w(length)h Fp(-)f(1)h(\(see)g(Section)g(2.4)g([History)g
+(V)-8 b(ariables],)390 4456 y(page)30 b(9\).)41 b(If)28
+b(there)i(is)f(no)g(en)m(try)g(there,)h(or)f(if)g Fj(o\013set)j
+Fp(is)d(outside)g(the)h(v)-5 b(alid)29 b(range,)h(return)e
+Fo(NULL)p Fp(.)3350 4670 y([F)-8 b(unction])-3599 b Fg(time_t)54
+b(history_get_time)c Ff(\()p Fe(HIST)p 1678 4670 30 5
+v 45 w(ENTR)-8 b(Y)32 b(*en)m(try)p Ff(\))390 4779 y
+Fp(Return)g(the)i(time)g(stamp)f(asso)s(ciated)h(with)f(the)g(history)g
+(en)m(try)h Fj(en)m(try)p Fp(.)49 b(If)33 b(the)g(timestamp)h(is)390
+4889 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 Fg(int)53 b(history_total_bytes)e
+Ff(\()p Fe(v)m(oid)p Ff(\))390 5213 y Fp(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 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(.)p eop end
 %%Page: 7 10
-TeXDict begin 7 9 bop 150 -116 a Fq(Chapter)30 b(2:)41
+TeXDict begin 7 9 bop 150 -116 a Fp(Chapter)30 b(2:)41
 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
+299 y Fi(2.3.4)63 b(Mo)m(ving)41 b(Around)h(the)f(History)g(List)150
+446 y Fp(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
+3350 611 y([F)-8 b(unction])-3599 b Fg(int)53 b(history_set_pos)d
+Ff(\()p Fe(in)m(t)34 b(p)s(os)p Ff(\))390 721 y Fp(Set)j(the)g(curren)m
+(t)f(history)g(o\013set)i(to)f Fj(p)s(os)p Fp(,)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
+830 y(success,)31 b(0)g(if)f Fj(p)s(os)j Fp(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)
+(tries.)3350 996 y([F)-8 b(unction])-3599 b Fg(HIST_ENTRY)55
+b(*)e(previous_history)d Ff(\()p Fe(v)m(oid)p Ff(\))390
+1106 y Fp(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
+s(oin)m(ter)390 1215 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 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 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 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 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
-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 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 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
-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
-2927 y(en)m(tries.)i(If)30 b Fk(string)38 b Fq(is)30
+b(return)e Fo(NULL)p Fp(.)3350 1381 y([F)-8 b(unction])-3599
+b Fg(HIST_ENTRY)55 b(*)e(next_history)c Ff(\()p Fe(v)m(oid)p
+Ff(\))390 1490 y Fp(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
+1600 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 1709 y(a)i(p)s(oin)m(ter)f
+(to)h(that)g(en)m(try;)g(otherwise,)g(return)e Fo(NULL)p
+Fp(.)150 1896 y Fi(2.3.5)63 b(Searc)m(hing)40 b(the)h(History)h(List)
+150 2043 y Fp(These)23 b(functions)h(searc)m(h)g(the)g(history)g(list)g
+(for)f(en)m(tries)i(con)m(taining)g(a)f(sp)s(eci\014c)g(string.)38
+b(Searc)m(hing)24 b(ma)m(y)150 2153 y(b)s(e)37 b(p)s(erformed)f(b)s
+(oth)h(forw)m(ard)g(and)g(bac)m(kw)m(ard)h(from)f(the)h(curren)m(t)f
+(history)h(p)s(osition.)62 b(The)37 b(searc)m(h)150 2262
+y(ma)m(y)28 b(b)s(e)f Fj(anc)m(hored)p Fp(,)h(meaning)g(that)g(the)g
+(string)f(m)m(ust)h(matc)m(h)g(at)g(the)g(b)s(eginning)f(of)g(a)h
+(history)g(en)m(try)-8 b(.)3350 2428 y([F)g(unction])-3599
+b Fg(int)53 b(history_search)d Ff(\()p Fe(const)34 b(c)m(har)g
+(*string,)e(in)m(t)i(direction)p Ff(\))390 2537 y Fp(Searc)m(h)29
+b(the)g(history)g(for)g Fj(string)p Fp(,)g(starting)h(at)f(the)g
+(curren)m(t)g(history)g(o\013set.)41 b(If)28 b Fj(direction)i
+Fp(is)f(less)390 2647 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 2756 y(en)m(tries.)i(If)30 b Fj(string)38 b Fp(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 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 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
-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 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
-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 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 3873 y(Otherwise,)d(nothing)h
-(is)f(c)m(hanged,)h(and)f(a)h(-1)g(is)f(returned.)3350
-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 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
-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 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 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
-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
-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
-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
+(that)f(history)f(en)m(try)-8 b(,)390 2866 y(and)22 b
+Fo(history_search)c Fp(returns)j(the)i(o\013set)g(in)f(the)h(line)g(of)
+f(the)h(en)m(try)f(where)g Fj(string)30 b Fp(w)m(as)23
+b(found.)390 2976 y(Otherwise,)30 b(nothing)h(is)f(c)m(hanged,)h(and)f
+(this)g(returns)f(-1.)3350 3141 y([F)-8 b(unction])-3599
+b Fg(int)53 b(history_search_prefix)f Ff(\()p Fe(const)34
+b(c)m(har)g(*string,)f(in)m(t)g(direction)p Ff(\))390
+3251 y Fp(Searc)m(h)41 b(the)g(history)f(for)g Fj(string)p
+Fp(,)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 3360 y(anc)m(hored:)49
+b(matc)m(hing)36 b(history)e(en)m(tries)i(m)m(ust)e(b)s(egin)g(with)g
+Fj(string)p Fp(.)54 b(If)34 b Fj(direction)h Fp(is)f(less)h(than)390
+3470 y(0,)d(then)e(the)h(searc)m(h)h(is)f(through)f(previous)g(en)m
+(tries,)i(otherwise)g(through)e(subsequen)m(t)g(en)m(tries.)390
+3579 y(If)h Fj(string)40 b Fp(is)31 b(found,)g(then)h(the)g(curren)m(t)
+f(history)h(index)f(is)h(set)g(to)h(that)f(en)m(try)-8
+b(,)33 b(and)e(the)h(return)390 3689 y(v)-5 b(alue)31
+b(is)f(0.)41 b(Otherwise,)31 b(nothing)f(is)g(c)m(hanged,)i(and)d(this)
+i(returns)e(-1.)3350 3855 y([F)-8 b(unction])-3599 b
+Fg(int)53 b(history_search_pos)e Ff(\()p Fe(const)34
+b(c)m(har)g(*string,)f(in)m(t)g(direction,)g(in)m(t)g(p)s(os)p
+Ff(\))390 3964 y Fp(Searc)m(h)h(for)g Fj(string)42 b
+Fp(in)34 b(the)h(history)f(list,)i(starting)f(at)g Fj(p)s(os)p
+Fp(,)g(an)f(absolute)h(index)e(in)m(to)j(the)e(list.)390
+4074 y(If)i Fj(direction)g Fp(is)g(negativ)m(e,)k(the)c(searc)m(h)h
+(pro)s(ceeds)f(bac)m(kw)m(ard)g(from)g Fj(p)s(os)p Fp(,)h(otherwise)f
+(forw)m(ard.)390 4183 y(Returns)c(the)h(index)g(in)f(the)h(history)g
+(list)h(of)f(the)g(history)g(elemen)m(t)i(where)d Fj(string)41
+b Fp(w)m(as)33 b(found,)390 4293 y(or)d(-1)h(otherwise.)150
+4480 y Fi(2.3.6)63 b(Managing)41 b(the)g(History)h(File)150
+4627 y Fp(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 4736 y(the)k(functions)e(for)i
+(managing)g(a)g(history)f(\014le.)3350 4902 y([F)-8 b(unction])-3599
+b Fg(int)53 b(read_history)c Ff(\()p Fe(const)34 b(c)m(har)g
+(*\014lename)p Ff(\))390 5011 y Fp(Add)g(the)h(con)m(ten)m(ts)h(of)f
+Fj(\014lename)k Fp(to)d(the)f(history)f(list,)j(one)e(en)m(try)f(at)i
+(a)f(time.)54 b(If)34 b Fj(\014lename)40 b Fp(is)390
+5121 y Fo(NULL)p Fp(,)33 b(this)h(reads)f(from)g Fo(~/.history)p
+Fp(,)e(if)j(it)g(exists.)50 b(This)33 b(attempts)h(to)g(determine)g
+(whether)390 5230 y(the)23 b(history)h(\014le)f(includes)g(timestamp)h
+(information,)h(and)d(assigns)i(timestamps)g(to)g(the)f(history)390
+5340 y(en)m(tries)31 b(it)g(reads)f(if)h(so.)41 b(Returns)29
+b(0)i(if)f(successful,)g(or)h Fo(errno)e Fp(if)h(not.)p
 eop end
 %%Page: 8 11
-TeXDict begin 8 10 bop 150 -116 a Fq(Chapter)30 b(2:)41
+TeXDict begin 8 10 bop 150 -116 a Fp(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 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 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
-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 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 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 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
-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
-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 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 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 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 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 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 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
+299 y([F)-8 b(unction])-3599 b Fg(int)53 b(read_history_range)e
+Ff(\()p Fe(const)34 b(c)m(har)g(*\014lename,)g(in)m(t)f(from,)g(in)m(t)
+g(to)p Ff(\))390 408 y Fp(Read)28 b(a)g(range)h(of)f(lines)g(from)f
+Fj(\014lename)p Fp(,)i(adding)e(them)h(to)h(the)f(history)g(list.)40
+b(Start)28 b(reading)g(at)390 518 y(line)f Fj(from)e
+Fp(and)h(end)f(at)i Fj(to)p Fp(.)41 b(If)25 b Fj(from)h
+Fp(is)g(zero,)i(start)f(at)g(the)f(b)s(eginning.)39 b(If)26
+b Fj(to)31 b Fp(is)c(less)f(than)g Fj(from)p Fp(,)390
+628 y(this)33 b(reads)h(un)m(til)g(the)f(end)g(of)h(the)g(\014le.)50
+b(This)33 b(attempts)h(to)h(determine)e(whether)g(the)h(history)390
+737 y(\014le)d(includes)f(timestamp)h(information,)h(and)e(assigns)h
+(timestamps)g(to)g(the)g(history)g(en)m(tries)g(it)390
+847 y(reads)f(if)h(so.)41 b(If)30 b Fj(\014lename)35
+b Fp(is)c Fo(NULL)p Fp(,)e(this)i(reads)f(from)g Fo(~/.history)p
+Fp(,)e(if)i(it)h(exists.)42 b(Returns)29 b(0)i(if)390
+956 y(successful,)f(or)h Fo(errno)e Fp(if)h(not.)3350
+1156 y([F)-8 b(unction])-3599 b Fg(int)53 b(write_history)d
+Ff(\()p Fe(const)34 b(c)m(har)g(*\014lename)p Ff(\))390
+1265 y Fp(W)-8 b(rite)34 b(the)f(curren)m(t)g(history)g(to)g
+Fj(\014lename)p Fp(,)h(o)m(v)m(erwriting)g Fj(\014lename)k
+Fp(if)33 b(necessary)-8 b(.)49 b(This)32 b(writes)390
+1375 y(timestamp)37 b(information)g(if)g(the)g Fo
+(history_write_timestamps)30 b Fp(v)-5 b(ariable)38 b(is)e(set)i(to)f
+(a)g(non-)390 1484 y(zero)31 b(v)-5 b(alue.)43 b(If)30
+b Fj(\014lename)36 b Fp(is)31 b Fo(NULL)p Fp(,)e(then)i(write)g(the)g
+(history)f(list)i(to)f Fo(~/.history)p Fp(.)39 b(Returns)30
+b(0)390 1594 y(on)g(success,)h(or)f Fo(errno)f Fp(on)i(a)f(read)h(or)f
+(write)h(error.)3350 1793 y([F)-8 b(unction])-3599 b
+Fg(int)53 b(append_history)d Ff(\()p Fe(in)m(t)33 b(nelemen)m(ts,)i
+(const)f(c)m(har)f(*\014lename)p Ff(\))390 1903 y Fp(App)s(end)39
+b(the)h(last)i Fj(nelemen)m(ts)j Fp(of)c(the)f(history)h(list)g(to)g
+Fj(\014lename)p Fp(.)72 b(This)40 b(writes)g(timestamp)390
+2012 y(information)30 b(if)f(the)h Fo(history_write_timestamps)23
+b Fp(v)-5 b(ariable)30 b(is)f(set)h(to)h(a)e(non-zero)h(v)-5
+b(alue.)41 b(If)390 2122 y Fj(\014lename)d Fp(is)33 b
+Fo(NULL)p Fp(,)g(then)g(app)s(end)e(to)i Fo(~/.history)p
+Fp(.)46 b(Returns)32 b(0)h(on)g(success,)h(or)f Fo(errno)f
+Fp(on)h(a)390 2232 y(read)d(or)h(write)f(error.)3350
+2431 y([F)-8 b(unction])-3599 b Fg(int)53 b(history_truncate_file)f
+Ff(\()p Fe(const)34 b(c)m(har)g(*\014lename,)f(in)m(t)h(nlines)p
+Ff(\))390 2540 y Fp(T)-8 b(runcate)39 b(the)f(history)h(\014le)f
+Fj(\014lename)p Fp(,)j(lea)m(ving)f(only)f(the)g(last)g
+Fj(nlines)j Fp(lines.)65 b(If)38 b Fj(\014lename)44 b
+Fp(is)390 2650 y Fo(NULL)p Fp(,)29 b(this)i(truncates)f
+Fo(~/.history)p Fp(.)38 b(Returns)30 b(0)h(on)f(success,)h(or)f
+Fo(errno)f Fp(on)h(failure.)150 2857 y Fi(2.3.7)63 b(History)41
+b(Expansion)150 3004 y Fp(These)30 b(functions)g(implemen)m(t)h
+(history)f(expansion.)3350 3203 y([F)-8 b(unction])-3599
+b Fg(int)53 b(history_expand)d Ff(\()p Fe(const)34 b(c)m(har)g
+(*string,)e(c)m(har)i(**output)p Ff(\))390 3313 y Fp(Expand)f
+Fj(string)p Fp(,)j(placing)f(the)f(result)h(in)m(to)g
+Fj(output)p Fp(,)g(a)g(p)s(oin)m(ter)f(to)h(a)g(string)f(\(see)i
+(Section)f(1.1)390 3422 y([History)c(In)m(teraction],)i(page)e(1\).)41
+b(Returns:)390 3593 y Fo(0)432 b Fp(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 2949 y(remo)m(v)-5 b(al)31 b(of)g(escap)s(e)f(c)m
+(as)f(the)870 3702 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 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
+390 3869 y Fo(1)432 b Fp(if)30 b(expansions)g(did)g(tak)m(e)i(place;)
+390 4036 y Fo(-1)384 b Fp(if)30 b(there)h(w)m(as)g(an)f(error)g(in)g
+(expansion;)390 4203 y Fo(2)432 b Fp(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 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 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 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 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
-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 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
-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 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
-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
-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
+f(the)h Fo(:p)870 4313 y Fp(mo)s(di\014er)h(\(see)j(Section)f(1.1.3)h
+([Mo)s(di\014ers],)e(page)i(3\).)390 4483 y(If)f(an)g(error)g(o)s
+(ccurred)g(during)f(expansion,)i(then)f Fj(output)i Fp(con)m(tains)g(a)
+e(descriptiv)m(e)i(error)e(mes-)390 4593 y(sage.)3350
+4792 y([F)-8 b(unction])-3599 b Fg(char)54 b(*)e(get_history_event)f
+Ff(\()p Fe(const)34 b(c)m(har)g(*string,)e(in)m(t)h(*cindex,)h(in)m(t)
+565 4902 y(qc)m(har)p Ff(\))390 5011 y Fp(Returns)26
+b(the)g(text)i(of)f(the)g(history)f(ev)m(en)m(t)i(b)s(eginning)e(at)h
+Fj(string)35 b Fo(+)26 b Fj(*cindex)p Fp(.)40 b(Mo)s(di\014es)26
+b Fj(*cindex)390 5121 y Fp(to)g(p)s(oin)m(t)f(to)h(after)g(the)f(ev)m
+(en)m(t)i(sp)s(eci\014er.)39 b(A)m(t)26 b(function)f(en)m(try)-8
+b(,)27 b Fj(cindex)32 b Fp(p)s(oin)m(ts)25 b(to)h(the)f(index)g(in)m
+(to)390 5230 y Fj(string)30 b Fp(where)21 b(the)h(history)g(ev)m(en)m
+(t)h(sp)s(eci\014cation)f(b)s(egins.)38 b Fj(qc)m(har)28
+b Fp(is)22 b(a)g(c)m(haracter)i(that)e(is)g(allo)m(w)m(ed)390
+5340 y(to)31 b(end)f(the)g(ev)m(en)m(t)i(sp)s(eci\014cation)f(in)g
+(addition)f(to)h(the)g(\\normal")g(terminating)g(c)m(haracters.)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)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 1444 y(history\(\))p Fq(.)3371 1627 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(history_write_timesta)q(mps)390
-1736 y Fq(If)44 b(non-zero,)49 b(timestamps)c(are)g(written)g(to)g(the)
+TeXDict begin 9 11 bop 150 -116 a Fp(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1780 b(9)3350
+299 y([F)-8 b(unction])-3599 b Fg(char)54 b(**)e(history_tokenize)f
+Ff(\()p Fe(const)34 b(c)m(har)g(*string)p Ff(\))390 408
+y Fp(Return)c(an)h(arra)m(y)g(of)g(tok)m(ens)h(parsed)e(out)h(of)g
+Fj(string)p Fp(,)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 518 y(are)h(split)g(on)f(the)h(c)m(haracters)h
+(in)e(the)h Fj(history)p 2006 518 28 4 v 40 w(w)m(ord)p
+2241 518 V 39 w(delimiters)k Fp(v)-5 b(ariable,)32 b(and)e(shell)g
+(quoting)390 628 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 815 y([F)-8 b(unction])-3599
+b Fg(char)54 b(*)e(history_arg_extract)f Ff(\()p Fe(in)m(t)34
+b(\014rst,)f(in)m(t)g(last,)g(const)h(c)m(har)f(*string)p
+Ff(\))390 924 y Fp(Extract)41 b(a)g(string)f(segmen)m(t)i(consisting)f
+(of)f(the)h Fj(\014rst)g Fp(through)f Fj(last)j Fp(argumen)m(ts)e
+(presen)m(t)f(in)390 1034 y Fj(string)p Fp(.)h(This)29
+b(splits)i Fj(string)38 b Fp(in)m(to)31 b(argumen)m(ts)g(using)f
+Fo(history_tokenize)p Fp(.)150 1277 y Fn(2.4)68 b(History)46
+b(V)-11 b(ariables)150 1436 y Fp(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 Fk(gnu)g Fp(History)g(Library)-8 b(.)3371 1624
+y([V)g(ariable])-3598 b Fg(int)53 b(history_base)390
+1733 y Fp(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 1921 y([V)-8 b(ariable])-3598
+b Fg(int)53 b(history_length)390 2030 y Fp(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 2217 y([V)-8 b(ariable])-3598 b Fg(int)53 b(history_max_entries)
+390 2327 y Fp(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
+Fo(stifle_)390 2437 y(history\(\))p Fp(.)3371 2624 y([V)-8
+b(ariable])-3598 b Fg(int)53 b(history_write_timesta)q(mps)390
+2733 y Fp(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
+2843 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 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 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
-2491 y Fq(The)35 b(c)m(haracter)i(that)e(in)m(tro)s(duces)g(a)h
+m(ed.)390 2979 y(The)41 b(curren)m(t)g(timestamp)h(format)g(uses)f(the)
+h(v)-5 b(alue)42 b(of)f Fj(history)p 2697 2979 V 41 w(commen)m(t)p
+3098 2979 V 41 w(c)m(har)48 b Fp(to)42 b(delimit)390
+3089 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 3198 y(default\),)31 b(the)g(history)f
+(library)g(will)h(not)f(write)h(timestamps.)3371 3385
+y([V)-8 b(ariable])-3598 b Fg(char)54 b(history_expansion_char)390
+3495 y Fp(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 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
-2893 y Fq(The)40 b(c)m(haracter)i(that)g(in)m(v)m(ok)m(es)g(w)m(ord)f
+Fo(!)p Fp('.)56 b(Setting)35 b(this)h(to)g(0)390 3605
+y(inhibits)30 b(history)g(expansion.)3371 3792 y([V)-8
+b(ariable])-3598 b Fg(char)54 b(history_subst_char)390
+3901 y Fp(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 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 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 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
-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
-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
-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
-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 4500 y([V)g(ariable])
--3598 b Fh(char)54 b(*)e(history_no_expand_char)q(s)390
-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
-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
-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
+b(The)390 4011 y(default)31 b(is)f(`)p Fo(^)p Fp('.)3371
+4198 y([V)-8 b(ariable])-3598 b Fg(char)54 b(history_comment_char)390
+4308 y Fp(During)34 b(tok)m(enization,)39 b(if)c(this)g(c)m(haracter)h
+(app)s(ears)e(as)h(the)g(\014rst)f(c)m(haracter)i(of)f(a)g(w)m(ord,)h
+(then)390 4418 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
+4527 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 4714
+y([V)-8 b(ariable])-3598 b Fg(char)54 b(*)e(history_word_delimiter)q(s)
+390 4824 y Fp(The)27 b(c)m(haracters)i(that)f(separate)h(tok)m(ens)f
+(for)f Fo(history_tokenize\(\))p Fp(.)35 b(The)27 b(default)h(v)-5
+b(alue)28 b(is)f Fo(")390 4934 y(\\t\\n\(\)<>;&|")p Fp(.)3371
+5121 y([V)-8 b(ariable])-3598 b Fg(char)54 b(*)e
+(history_search_delimit)q(er_)q(cha)q(rs)390 5230 y Fp(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
+5340 y(to)31 b(space,)g(T)-8 b(AB,)32 b(`)p Fo(:)p Fp(')e(and)g(`)p
+Fo(?)p Fp(')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(.)p eop end
 %%Page: 10 13
-TeXDict begin 10 12 bop 150 -116 a Fq(Chapter)30 b(2:)41
+TeXDict begin 10 12 bop 150 -116 a Fp(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
+299 y([V)-8 b(ariable])-3598 b Fg(char)54 b(*)e(history_no_expand_char)
+q(s)390 408 y Fp(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 518 y Fj(history)p 672 518 28 4 v 40 w(expansion)p
+1104 518 V 40 w(c)m(har)p Fp(.)41 b(The)30 b(default)g(is)h(space,)g
+(tab,)g(newline,)f(carriage)i(return,)e(and)g(`)p Fo(=)p
+Fp('.)3371 696 y([V)-8 b(ariable])-3598 b Fg(int)53 b
+(history_quotes_inhibi)q(t_ex)q(pan)q(sio)q(n)390 806
+y Fp(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
+916 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
+1025 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
+1135 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.)3371
+1313 y([V)-8 b(ariable])-3598 b Fg(int)53 b(history_quoting_state)390
+1423 y Fp(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 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 1817 y(should)i(b)s(e)g(done.)45
+(eing)g(expanded)390 1532 y(is)h(sub)5 b(ject)28 b(to)i(existing)f
+(quoting.)41 b(If)28 b(set)h(to)h(`)p Fo(')p Fp(',)f(history)g
+(expansion)f(assumes)h(that)g(the)g(line)g(is)390 1642
+y(single-quoted)36 b(and)e(inhibit)g(expansion)g(un)m(til)h(it)g(reads)
+g(an)f(unquoted)g(closing)i(single)f(quote;)390 1751
+y(if)k(set)h(to)h(`)p Fo(")p Fp(',)h(history)d(expansion)g(assumes)h
+(the)f(line)h(is)f(double)h(quoted)f(un)m(til)h(it)g(reads)f(an)390
+1861 y(unquoted)d(closing)j(double)e(quote.)62 b(If)37
+b(set)h(to)g(0,)i(the)d(default,)j(history)d(expansion)g(assumes)390
+1971 y(the)29 b(line)h(is)f(not)g(quoted)h(and)e(treats)i(quote)g(c)m
+(haracters)h(within)d(the)i(line)f(as)g(describ)s(ed)f(ab)s(o)m(v)m(e.)
+390 2080 y(This)33 b(is)h(only)f(e\013ectiv)m(e)k(if)c
+Fj(history)p 1621 2080 V 40 w(quotes)p 1916 2080 V 41
+w(inhibit)p 2220 2080 V 40 w(expansion)g Fp(is)h(set.)51
+b(This)33 b(is)h(in)m(tended)f(for)390 2190 y(use)d(b)m(y)g
+(applications)i(lik)m(e)g(Bash)e(whic)m(h)g(allo)m(w)i(quoted)f
+(strings)f(to)h(span)e(m)m(ultiple)j(lines.)3371 2368
+y([V)-8 b(ariable])-3598 b Fg(rl_linebuf_func_t)57 b(*)c
+(history_inhibit_expans)q(ion)q(_fu)q(ncti)q(on)390 2478
+y Fp(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 Fo(char)29 b(*)390 2587 y Fp(\()p Fj(string)8
+b Fp(\))27 b(and)f(an)g Fo(int)g Fp(index)g(in)m(to)i(that)f(string)f
+(\()p Fj(i)5 b Fp(\).)40 b(It)27 b(should)f(return)f(a)i(non-zero)g(v)
+-5 b(alue)27 b(if)g(the)390 2697 y(history)i(expansion)g(starting)h(at)
+g Fj(string[i])j Fp(should)28 b(not)i(b)s(e)e(p)s(erformed;)h(zero)h
+(if)f(the)g(expansion)390 2806 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 1927 y(expansion)e(c)m
+(e)h(Bash)e(that)g(use)g(the)g(history)390 2916 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(.)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
+Fo(NULL)p Fp(.)150 3153 y Fn(2.5)68 b(History)46 b(Programming)g
+(Example)150 3312 y Fp(The)30 b(follo)m(wing)i(program)e(demonstrates)h
+(simple)f(use)g(of)h(the)f Fk(gnu)g Fp(History)h(Library)-8
+b(.)390 3422 y Fd(#include)41 b(<stdio.h>)390 3509 y(#include)g
+(<readline/history.h>)390 3684 y(int)390 3771 y(main)f(\(int)g(argc,)h
+(char)f(**argv\))390 3858 y({)468 3945 y(char)h(line[1024],)g(*t;)468
+4032 y(int)f(len,)g(done)h(=)e(0;)468 4207 y(line[0])i(=)f(0;)468
+4381 y(using_history)j(\(\);)468 4468 y(while)e(\(!done\))547
+4555 y({)625 4643 y(printf)g(\("history$)g("\);)625 4730
+y(fflush)g(\(stdout\);)625 4817 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h
+(\(line\))f(-)g(1,)g(stdin\);)625 4904 y(if)g(\(t)g(&&)f(*t\))704
+4991 y({)782 5078 y(len)h(=)g(strlen)g(\(t\);)782 5166
+y(if)g(\(t[len)h(-)e(1])h(==)f('\\n'\))861 5253 y(t[len)h(-)g(1])f(=)h
+('\\0';)704 5340 y(})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)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
+TeXDict begin 11 13 bop 150 -116 a Fp(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1734 b(11)625
+386 y Fd(if)40 b(\(!t\))704 473 y(strcpy)g(\(line,)h("quit"\);)625
+648 y(if)f(\(line[0]\))704 735 y({)782 822 y(char)g(*expansion;)782
+909 y(int)g(result;)782 1083 y(result)h(=)e(history_expand)k(\(line,)d
+(&expansion\);)782 1171 y(if)g(\(result\))861 1258 y(fprintf)h
+(\(stderr,)g("\045s\\n",)f(expansion\);)782 1432 y(if)g(\(result)h(<)e
+(0)h(||)f(result)i(==)f(2\))861 1519 y({)939 1606 y(free)g
+(\(expansion\);)939 1694 y(continue;)861 1781 y(})782
+1955 y(add_history)i(\(expansion\);)782 2042 y(strncpy)f(\(line,)g
+(expansion,)g(sizeof)g(\(line\))f(-)g(1\);)782 2130 y(free)g
+(\(expansion\);)704 2217 y(})625 2391 y(if)g(\(strcmp)h(\(line,)f
+("quit"\))h(==)f(0\))704 2478 y(done)g(=)f(1;)625 2565
+y(else)h(if)g(\(strcmp)h(\(line,)g("save"\))f(==)g(0\))704
+2653 y(write_history)i(\("history_file"\);)625 2740 y(else)e(if)g
+(\(strcmp)h(\(line,)g("read"\))f(==)g(0\))704 2827 y(read_history)i
+(\("history_file"\);)625 2914 y(else)e(if)g(\(strcmp)h(\(line,)g
+("list"\))f(==)g(0\))704 3001 y({)782 3088 y(register)h(HIST_ENTRY)h
+(**the_list;)782 3176 y(register)f(int)f(i;)782 3350
+y(the_list)h(=)f(history_list)i(\(\);)782 3437 y(if)e(\(the_list\))861
+3524 y(for)g(\(i)f(=)h(0;)f(the_list[i];)j(i++\))939
+3611 y(printf)f(\("\045d:)f(\045s\\n",)h(i)e(+)h(history_base,)i
+(the_list[i]->line\);)704 3699 y(})625 3786 y(else)e(if)g(\(strncmp)h
+(\(line,)g("delete",)g(6\))f(==)f(0\))704 3873 y({)782
+3960 y(int)h(which;)782 4047 y(if)g(\(\(sscanf)h(\(line)f(+)g(6,)g
+("\045d",)g(&which\)\))h(==)f(1\))861 4134 y({)939 4222
+y(HIST_ENTRY)i(*entry)e(=)g(remove_history)i(\(which\);)939
+4309 y(if)e(\(!entry\))1018 4396 y(fprintf)g(\(stderr,)i("No)d(such)i
+(entry)f(\045d\\n",)h(which\);)939 4483 y(else)1018 4570
+y({)1096 4658 y(free)f(\(entry->line\);)1096 4745 y(free)g(\(entry\);)
+1018 4832 y(})861 4919 y(})782 5006 y(else)861 5093 y({)939
+5181 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g
+(`delete'\\n"\);)861 5268 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
+TeXDict begin 12 14 bop 150 -116 a Fp(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(History)1734 b(12)704
+299 y Fd(})547 386 y(})390 473 y(})p eop end
+%%Page: 13 16
+TeXDict begin 13 15 bop 3659 -116 a Fp(13)150 299 y Fl(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 Fq(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 Fn(\015)e
-Fq(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31
+502 y Fp(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 Fm(\015)e
+Fp(2000,)j(2001,)f(2002,)g(2007,)h(2008)f(F)-8 b(ree)31
 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 745
-y Fp(http://fsf.org/)390 964 y Fq(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
+y Fo(http://fsf.org/)390 964 y Fp(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
 (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390
 1074 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f
 (is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330
 1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g
 (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
-1450 y(useful)29 b(do)s(cumen)m(t)h Fk(free)36 b Fq(in)29
+1450 y(useful)29 b(do)s(cumen)m(t)h Fj(free)36 b Fp(in)29
 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
 (the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f
 (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
@@ -6056,10 +6121,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: 13 16
-TeXDict begin 13 15 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 14 17
+TeXDict begin 14 16 bop 150 -116 a Fp(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(13)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(14)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
@@ -6097,23 +6162,23 @@ b(is)f(not)h(T)-8 b(ransparen)m(t)34 b(if)g(used)g(for)g(an)m(y)g
 (substan)m(tial)h(amoun)m(t)g(of)g(text.)53 b(A)35 b(cop)m(y)g(that)g
 (is)330 2134 y(not)c(\\T)-8 b(ransparen)m(t")31 b(is)f(called)i
 (\\Opaque".)330 2285 y(Examples)53 b(of)g(suitable)h(formats)f(for)g(T)
--8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fl(asci)r(i)g
-Fq(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j
+-8 b(ransparen)m(t)53 b(copies)h(include)f(plain)g Fk(asci)r(i)g
+Fp(without)330 2395 y(markup,)37 b(T)-8 b(exinfo)36 b(input)f(format,)j
 (LaT)1759 2414 y(E)1810 2395 y(X)e(input)f(format,)j
-Fd(SGML)f Fq(or)f Fd(XML)g Fq(using)g(a)g(publicly)330
-2504 y(a)m(v)-5 b(ailable)42 b Fd(DTD)p Fq(,)h(and)c
-(standard-conforming)g(simple)h Fd(HTML)p Fq(,)i(P)m(ostScript)e(or)f
-Fd(PDF)h Fq(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65
+Fr(SGML)f Fp(or)f Fr(XML)g Fp(using)g(a)g(publicly)330
+2504 y(a)m(v)-5 b(ailable)42 b Fr(DTD)p Fp(,)h(and)c
+(standard-conforming)g(simple)h Fr(HTML)p Fp(,)i(P)m(ostScript)e(or)f
+Fr(PDF)h Fp(designed)330 2614 y(for)e(h)m(uman)f(mo)s(di\014cation.)65
 b(Examples)38 b(of)h(transparen)m(t)f(image)h(formats)g(include)f
-Fd(PNG)p Fq(,)i Fd(X)n(CF)330 2724 y Fq(and)e Fd(JPG)p
-Fq(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that)
+Fr(PNG)p Fp(,)i Fr(X)n(CF)330 2724 y Fp(and)e Fr(JPG)p
+Fp(.)64 b(Opaque)38 b(formats)h(include)f(proprietary)h(formats)f(that)
 h(can)g(b)s(e)f(read)h(and)f(edited)330 2833 y(only)54
 b(b)m(y)f(proprietary)h(w)m(ord)f(pro)s(cessors,)59 b
-Fd(SGML)54 b Fq(or)f Fd(XML)h Fq(for)g(whic)m(h)f(the)h
-Fd(DTD)g Fq(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g
+Fr(SGML)54 b Fp(or)f Fr(XML)h Fp(for)g(whic)m(h)f(the)h
+Fr(DTD)g Fp(and/or)330 2943 y(pro)s(cessing)61 b(to)s(ols)h(are)f(not)g
 (generally)i(a)m(v)-5 b(ailable,)71 b(and)60 b(the)h(mac)m
-(hine-generated)j Fd(HTML)p Fq(,)330 3052 y(P)m(ostScript)31
-b(or)f Fd(PDF)h Fq(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s
+(hine-generated)j Fr(HTML)p Fp(,)330 3052 y(P)m(ostScript)31
+b(or)f Fr(PDF)h Fp(pro)s(duced)d(b)m(y)j(some)f(w)m(ord)g(pro)s
 (cessors)g(for)g(output)g(purp)s(oses)f(only)-8 b(.)330
 3203 y(The)34 b(\\Title)h(P)m(age")i(means,)e(for)f(a)h(prin)m(ted)f(b)
 s(o)s(ok,)h(the)f(title)i(page)f(itself,)h(plus)e(suc)m(h)f(follo)m
@@ -6150,10 +6215,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: 14 17
-TeXDict begin 14 16 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 15 18
+TeXDict begin 15 17 bop 150 -116 a Fp(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(14)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+b(15)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
@@ -6243,10 +6308,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: 15 18
-TeXDict begin 15 17 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 16 19
+TeXDict begin 16 18 bop 150 -116 a Fp(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(15)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+b(16)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
@@ -6325,10 +6390,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: 16 19
-TeXDict begin 16 18 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 17 20
+TeXDict begin 17 19 bop 150 -116 a Fp(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(16)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(17)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
@@ -6413,10 +6478,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: 17 20
-TeXDict begin 17 19 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 18 21
+TeXDict begin 18 20 bop 150 -116 a Fp(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(17)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+b(18)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
@@ -6501,10 +6566,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: 18 21
-TeXDict begin 18 20 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 19 22
+TeXDict begin 19 21 bop 150 -116 a Fp(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(18)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
+b(19)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
@@ -6512,7 +6577,7 @@ b(License)e(from)g(time)h(to)g(time.)46 b(Suc)m(h)31
 b(new)h(v)m(ersions)g(will)h(b)s(e)e(similar)h(in)g(spirit)330
 653 y(to)j(the)g(presen)m(t)f(v)m(ersion,)i(but)e(ma)m(y)h(di\013er)f
 (in)g(detail)h(to)g(address)f(new)g(problems)f(or)i(concerns.)330
-762 y(See)c Fp(http://www.gnu.org/copy)o(left)o(/)p Fq(.)330
+762 y(See)c Fo(http://www.gnu.org/copy)o(left)o(/)p Fp(.)330
 897 y(Eac)m(h)f(v)m(ersion)g(of)g(the)f(License)h(is)g(giv)m(en)g(a)g
 (distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)39 b(If)29
 b(the)g(Do)s(cumen)m(t)330 1006 y(sp)s(eci\014es)45 b(that)h(a)g
@@ -6568,17 +6633,17 @@ 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: 19 22
-TeXDict begin 19 21 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 20 23
+TeXDict begin 20 22 bop 150 -116 a Fp(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(19)150 299 y Fo(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 Fq(T)-8 b(o)35
+b(20)150 299 y Fn(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 Fp(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
 568 y(do)s(cumen)m(t)30 b(and)g(put)g(the)g(follo)m(wing)i(cop)m(yrigh)
 m(t)g(and)e(license)h(notices)g(just)f(after)h(the)g(title)h(page:)468
-680 y Fe(Copyright)42 b(\(C\))79 b Fc(year)g(your)40
-b(name)p Fe(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h
+680 y Fd(Copyright)42 b(\(C\))79 b Fc(year)g(your)40
+b(name)p Fd(.)468 767 y(Permission)i(is)e(granted)g(to)g(copy,)h
 (distribute)g(and/or)g(modify)f(this)g(document)468 854
 y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i
 (License,)f(Version)g(1.3)468 941 y(or)f(any)g(later)g(version)h
@@ -6586,15 +6651,15 @@ y(under)h(the)f(terms)g(of)g(the)g(GNU)g(Free)g(Documentation)i
 1029 y(with)g(no)e(Invariant)j(Sections,)f(no)f(Front-Cover)h(Texts,)g
 (and)f(no)f(Back-Cover)468 1116 y(Texts.)80 b(A)40 b(copy)g(of)g(the)f
 (license)i(is)f(included)h(in)f(the)g(section)g(entitled)h(``GNU)468
-1203 y(Free)g(Documentation)h(License''.)275 1337 y Fq(If)d(y)m(ou)h
+1203 y(Free)g(Documentation)h(License''.)275 1337 y Fp(If)d(y)m(ou)h
 (ha)m(v)m(e)h(In)m(v)-5 b(arian)m(t)41 b(Sections,)i(F)-8
 b(ron)m(t-Co)m(v)m(er)42 b(T)-8 b(exts)41 b(and)e(Bac)m(k-Co)m(v)m(er)k
 (T)-8 b(exts,)43 b(replace)e(the)150 1447 y(\\with)6
 b(.)22 b(.)g(.)12 b(T)-8 b(exts.")41 b(line)31 b(with)f(this:)547
-1559 y Fe(with)40 b(the)g(Invariant)h(Sections)g(being)g
-Fc(list)f(their)g(titles)p Fe(,)h(with)547 1646 y(the)f(Front-Cover)i
-(Texts)e(being)g Fc(list)p Fe(,)h(and)f(with)g(the)g(Back-Cover)h
-(Texts)547 1733 y(being)f Fc(list)p Fe(.)275 1868 y Fq(If)34
+1559 y Fd(with)40 b(the)g(Invariant)h(Sections)g(being)g
+Fc(list)f(their)g(titles)p Fd(,)h(with)547 1646 y(the)f(Front-Cover)i
+(Texts)e(being)g Fc(list)p Fd(,)h(and)f(with)g(the)g(Back-Cover)h
+(Texts)547 1733 y(being)f Fc(list)p Fd(.)275 1868 y Fp(If)34
 b(y)m(ou)i(ha)m(v)m(e)g(In)m(v)-5 b(arian)m(t)36 b(Sections)g(without)f
 (Co)m(v)m(er)h(T)-8 b(exts,)38 b(or)d(some)g(other)h(com)m(bination)g
 (of)g(the)150 1978 y(three,)31 b(merge)g(those)g(t)m(w)m(o)g
@@ -6606,16 +6671,16 @@ 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: 20 23
-TeXDict begin 20 22 bop 150 -116 a Fq(App)s(endix)29
-b(B:)i(Concept)f(Index)2391 b(20)150 100 y Fm(App)t(endix)52
-b(B)81 b(Concept)51 b(Index)146 434 y Fo(A)150 550 y
+%%Page: 21 24
+TeXDict begin 21 23 bop 150 -116 a Fp(App)s(endix)29
+b(B:)i(Concept)f(Index)2391 b(21)150 100 y Fl(App)t(endix)52
+b(B)81 b(Concept)51 b(Index)146 434 y Fn(A)150 550 y
 Fb(anc)n(hored)26 b(searc)n(h)12 b Fa(:)i(:)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(:)g(:)g(:)h(:)f(:)27 b Fb(7)146 782 y Fo(E)150
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(7)146 782 y Fn(E)150
 898 y Fb(ev)n(en)n(t)e(designators)7 b Fa(:)14 b(:)f(:)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(:)22 b Fb(1)146 1140 y Fo(H)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(1)146 1140 y Fn(H)150
 1256 y Fb(history)k(ev)n(en)n(ts)12 b Fa(:)h(:)g(:)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(:)27 b Fb(1)150
@@ -6625,39 +6690,39 @@ g(:)g(:)g(:)g(:)34 b Fb(1)150 1431 y(History)26 b(Searc)n(hing)16
 b Fa(:)d(:)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(:)31
 b Fb(7)p eop end
-%%Page: 21 24
-TeXDict begin 21 23 bop 150 -116 a Fq(App)s(endix)29
+%%Page: 22 25
+TeXDict begin 22 24 bop 150 -116 a Fp(App)s(endix)29
 b(C:)h(F)-8 b(unction)31 b(and)f(V)-8 b(ariable)32 b(Index)1832
-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(22)150 100 y Fl(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 Fd(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(9)150 487 y Fe(history_comment_char)7 b Fa(:)17
+g(:)25 b Fb(9)150 487 y Fd(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
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(9)150 574 y Fd
 (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)26
+b Fb(9)150 661 y Fd(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
+749 y Fd(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(9)150 836 y Fe(history_max_entries)9
+f(:)g(:)g(:)g(:)g(:)37 b Fb(9)150 836 y Fd(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_quoting_state)f Fa(:)13
+923 y Fd(history_no_expand_chars)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(10)150 1010 y Fd(history_quotes_inhibit_expans)q(ion)9
+b Fa(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
+b Fb(10)150 1097 y Fd(history_quoting_state)i 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
+(:)g(:)g(:)h(:)f(:)33 b Fb(10)150 1184 y Fd
 (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
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 1272 y Fd
 (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
+27 b Fb(9)150 1359 y Fd(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
+(:)f(:)g(:)g(:)g(:)31 b Fb(9)150 1446 y Fd(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
index 721118bce1e8bfb9a9bbf75da627c22fb5ef458e..e78773e2a4b2a91a857b6faab73bf50f6fb3b34c 100644 (file)
@@ -1,4 +1,4 @@
-\input texinfo    @c -*-texinfo-*-
+c\input texinfo    @c -*-texinfo-*-
 @c %**start of header (This is for running Texinfo on a region.)
 @setfilename history.info
 @settitle GNU History Library
@@ -12,7 +12,7 @@ This document describes the GNU History library
 a programming tool that provides a consistent user interface for
 recalling lines of previously typed input.
 
-Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2025 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/history_3.pdf b/doc/history_3.pdf
new file mode 100644 (file)
index 0000000..a900908
Binary files /dev/null and b/doc/history_3.pdf differ
index 4440b3f36fa9ffdb6cb0f4d8557cfe7195049701..f74c4bc3521e06484bf79bbd1d380dd7a8678092 100644 (file)
@@ -1,10 +1,11 @@
 %!PS-Adobe-3.0
-%%Creator: groff version 1.22.4
-%%CreationDate: Fri Sep 23 09:52:37 2022
-%%DocumentNeededResources: font Times-Roman
+%%Creator: groff version 1.23.0
+%%CreationDate: Wed Jun 25 16:09:16 2025
+%%DocumentNeededResources: font Times-Italic
+%%+ font Times-Roman
 %%+ font Times-Bold
-%%+ font Times-Italic
-%%DocumentSuppliedResources: procset grops 1.22 4
+%%+ font Courier
+%%DocumentSuppliedResources: procset grops 1.23 0
 %%Pages: 7
 %%PageOrder: Ascend
 %%DocumentMedia: Default 612 792 0 () ()
@@ -14,7 +15,7 @@
 %%PageMedia: Default
 %%EndDefaults
 %%BeginProlog
-%%BeginResource: procset grops 1.22 4
+%%BeginResource: procset grops 1.23 0
 %!PS-Adobe-3.0 Resource-ProcSet
 /setpacking where{
 pop
@@ -22,6 +23,7 @@ currentpacking
 true setpacking
 }if
 /grops 120 dict dup begin
+% The ASCII code of the space character.
 /SC 32 def
 /A/show load def
 /B{0 SC 3 -1 roll widthshow}bind def
@@ -43,16 +45,18 @@ true setpacking
 /R{moveto 0 SC 3 -1 roll widthshow}bind def
 /S{moveto 0 exch ashow}bind def
 /T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+% name size font SF -
 /SF{
 findfont exch
 [exch dup 0 exch 0 exch neg 0 0]makefont
 dup setfont
 [exch/setfont cvx]cvx bind def
 }bind def
+% name a c d font MF -
 /MF{
 findfont
 [5 2 roll
-0 3 1 roll
+0 3 1 roll % b
 neg 0 0]makefont
 dup setfont
 [exch/setfont cvx]cvx bind def
@@ -61,13 +65,19 @@ dup setfont
 /RES 0 def
 /PL 0 def
 /LS 0 def
+% Enable manual feed.
+% MANUAL -
 /MANUAL{
 statusdict begin/manualfeed true store end
 }bind def
+% Guess the page length.
+% This assumes that the imageable area is vertically centered on the page.
+% PLG - length
 /PLG{
 gsave newpath clippath pathbbox grestore
 exch pop add exch pop
 }bind def
+% BP -
 /BP{
 /level0 save def
 1 setlinecap
@@ -85,47 +95,61 @@ LS{
 level0 restore
 showpage
 }def
+% centerx centery radius startangle endangle DA -
 /DA{
 newpath arcn stroke
 }bind def
+% x y SN - x' y'
+% round a position to nearest (pixel + (.25,.25))
 /SN{
 transform
 .25 sub exch .25 sub exch
 round .25 add exch round .25 add exch
 itransform
 }bind def
+% endx endy startx starty DL -
+% we round the endpoints of the line, so that parallel horizontal
+% and vertical lines will appear even
 /DL{
 SN
 moveto
 SN
 lineto stroke
 }bind def
+% centerx centery radius DC -
 /DC{
 newpath 0 360 arc closepath
 }bind def
 /TM matrix def
+%  width height centerx centery DE -
 /DE{
 TM currentmatrix pop
 translate scale newpath 0 0 .5 0 360 arc closepath
 TM setmatrix
 }bind def
+% these are for splines
 /RC/rcurveto load def
 /RL/rlineto load def
 /ST/stroke load def
 /MT/moveto load def
 /CL/closepath load def
+% fill the last path
+% r g b Fr -
 /Fr{
 setrgbcolor fill
 }bind def
+% c m y k Fk -
 /setcmykcolor where{
 pop
 /Fk{
 setcmykcolor fill
 }bind def
 }if
+% g Fg -
 /Fg{
 setgray fill
 }bind def
+% fill with the "current color"
 /FL/fill load def
 /LW/setlinewidth load def
 /Cr/setrgbcolor load def
@@ -134,6 +158,7 @@ pop
 /Ck/setcmykcolor load def
 }if
 /Cg/setgray load def
+% new_font_name encoding_vector old_font_name RE -
 /RE{
 findfont
 dup maxlength 1 index/FontName known not{1 add}if dict begin
@@ -148,6 +173,7 @@ dup/FontName exch def
 currentdict end definefont pop
 }bind def
 /DEFS 0 def
+% hpos vpos EBEGIN -
 /EBEGIN{
 moveto
 DEFS begin
@@ -155,11 +181,13 @@ DEFS begin
 /EEND/end load def
 /CNT 0 def
 /level1 0 def
+% llx lly newwid wid newht ht newllx newlly PBEGIN -
 /PBEGIN{
 /level1 save def
 translate
 div 3 1 roll div exch scale
 neg exch neg exch translate
+% set the graphics state to default values
 0 setgray
 0 setlinecap
 1 setlinewidth
@@ -178,6 +206,10 @@ newpath
 /CNT countdictstack def
 userdict begin
 /showpage{}def
+%
+%  Any included setpagedevice should be ignored.
+%  See: http://www.w-beer.de/doc/ps/.
+%
 /setpagedevice{}def
 mark
 }bind def
@@ -197,9 +229,10 @@ setpacking
 %%BeginFeature: *PageSize Default
 << /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice
 %%EndFeature
+%%IncludeResource: font Times-Italic
 %%IncludeResource: font Times-Roman
 %%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
+%%IncludeResource: font Courier
 grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
 def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
 /scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
@@ -228,669 +261,738 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
 /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
 /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
 /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE
-/Times-Roman@0 ENC0/Times-Roman RE
+/Courier@0 ENC0/Courier RE/Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0
+ENC0/Times-Roman RE/Times-Italic@0 ENC0/Times-Italic RE
 %%EndSetup
 %%Page: 1 1
 %%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.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-2020 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
+/F0 10/Times-Italic@0 SF(HIST)72.58 48 Q(OR)-.18 E(Y)-.18 E/F1 10
+/Times-Roman@0 SF 125.855(\(3\) Library)1.27 F(Functions Manual)2.5 E F0
+(HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E/F2 10.95/Times-Bold@0
+SF -.219(NA)72 84 S(ME).219 E F1(history \255 GNU History Library)108 96
+Q F2(COPYRIGHT)72 112.8 Q F1(The GNU History Library is Cop)108 124.8 Q
+(yright \251 1989-2025 by the Free Softw)-.1 E(are F)-.1 E
+(oundation, Inc.)-.15 E F2(DESCRIPTION)72 141.6 Q F1(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
-(eep track of)-.1 F .024(those lines, associate arbitrary data with eac\
-h line, and utilize information from pre)108 165.6 R .024
-(vious lines in composing)-.25 F(ne)108 177.6 Q 2.5(wo)-.25 G(nes.)-2.5
-E F1(HIST)72 194.4 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81
-E F0 .823(The history library supports a history e)108 206.4 R .822
-(xpansion feature that is identical to the history e)-.15 F .822
-(xpansion in)-.15 F/F2 10/Times-Bold@0 SF(bash.)3.322 E F0
-(This section describes what syntax features are a)108 218.4 Q -.25(va)
--.2 G(ilable.).25 E 1.305(History e)108 235.2 R 1.305
+(eep track of)-.1 F .655(those lines, associate arbitrary data with eac\
+h line, and utilize information from pre)108 165.6 R .655
+(vious lines when com-)-.25 F(posing ne)108 177.6 Q 2.5(wo)-.25 G(nes.)
+-2.5 E .887(The History library pro)108 194.4 R .887
+(vides functions that allo)-.15 F 3.386(wa)-.25 G .886
+(pplications to their)-3.386 F F0(history)3.386 E F1 3.386(,t)C .886
+(he set of pre)-3.386 F(viously-typed)-.25 E .955(lines, which it k)108
+206.4 R .955(eeps in a list.)-.1 F .955
+(Applications can choose which lines to sa)5.955 F 1.255 -.15(ve i)-.2 H
+.956(nto a history list, ho).15 F 3.456(wm)-.25 G(an)-3.456 E(y)-.15 E
+.314(commands to sa)108 218.4 R -.15(ve)-.2 G 2.814(,s).15 G -2.25 -.2
+(av e)-2.814 H 2.814(ah)3.014 G .314(istory list to a \214le, read a hi\
+story list from a \214le, and display lines from the his-)-2.814 F
+(tory in v)108 230.4 Q(arious formats.)-.25 E F2(HIST)72 247.2 Q(OR)
+-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81 E F1 .822
+(The history library supports a history e)108 259.2 R .823
+(xpansion feature that is identical to the history e)-.15 F .823
+(xpansion in)-.15 F/F3 10/Times-Bold@0 SF(bash)3.323 E F1(.)A
+(This section describes what syntax features are a)108 271.2 Q -.25(va)
+-.2 G(ilable.).25 E 1.306(History e)108 288 R 1.306
 (xpansions introduce w)-.15 F 1.306(ords from the history list into the\
- input stream, making it easy to repeat)-.1 F .21
-(commands, insert the ar)108 247.2 R .21(guments to a pre)-.18 F .209
+ input stream, making it easy to repeat)-.1 F .209
+(commands, insert the ar)108 300 R .209(guments to a pre)-.18 F .21
 (vious command into the current input line, or \214x errors in pre)-.25
-F(vious)-.25 E(commands quickly)108 259.2 Q(.)-.65 E 1.296(History e)108
-276 R 1.297(xpansion is usually performed immediately after a complete \
-line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F(o)
--.1 E 2.855(parts. The)108 288 R .354(\214rst is to determine which lin\
-e from the history list to use during substitution.)2.855 F .354
-(The second is to)5.354 F .116
-(select portions of that line for inclusion into the current one.)108
-300 R .117(The line selected from the history is the)5.116 F/F3 10
-/Times-Italic@0 SF -.15(ev)2.617 G(ent).15 E F0(,)A .846
-(and the portions of that line that are acted upon are)108 312 R F3(wor)
-3.346 E(ds)-.37 E F0 5.846(.V)C(arious)-6.956 E F3(modi\214er)3.346 E(s)
--.1 E F0 .846(are a)3.346 F -.25(va)-.2 G .845(ilable to manipulate).25
-F .304(the selected w)108 324 R 2.804(ords. The)-.1 F .304(line is brok)
-2.804 F .304(en into w)-.1 F .304(ords in the same f)-.1 F .304
-(ashion as)-.1 F F2(bash)2.804 E F0 .305(does when reading input, so)
-2.804 F .539(that se)108 336 R -.15(ve)-.25 G .539(ral w).15 F .539
-(ords that w)-.1 F .539
-(ould otherwise be separated are considered one w)-.1 F .538
-(ord when surrounded by quotes)-.1 F .307(\(see the description of)108
-348 R F2(history_tok)2.807 E(enize\(\))-.1 E F0(belo)2.807 E 2.807
-(w\). History)-.25 F -.15(ex)2.807 G .307
-(pansions are introduced by the appearance of).15 F .52(the history e)
-108 360 R .52(xpansion character)-.15 F 3.02(,w)-.4 G .52(hich is)-3.02
-F F2(!)3.853 E F0 .52(by def)3.853 F 3.02(ault. Only)-.1 F .52
-(backslash \()3.02 F F2(\\).833 E F0 3.02(\)a).833 G .52
-(nd single quotes can quote the)-3.02 F(history e)108 372 Q
-(xpansion character)-.15 E(.)-.55 E F2(Ev)87 388.8 Q(ent Designators)-.1
-E F0 .204(An e)108 400.8 R -.15(ve)-.25 G .204(nt designator is a refer\
-ence to a command line entry in the history list.).15 F .205
-(Unless the reference is abso-)5.204 F(lute, e)108 412.8 Q -.15(ve)-.25
-G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot).15 G
-(he current position in the history list.)-2.5 E F2(!)108 429.6 Q F0
-(Start a history substitution, e)144 429.6 Q(xcept when follo)-.15 E
-(wed by a)-.25 E F2(blank)2.5 E F0 2.5(,n)C -.25(ew)-2.5 G
-(line, = or \(.).25 E F2(!)108 441.6 Q F3(n)A F0(Refer to command line)
-144 441.6 Q F3(n)2.86 E F0(.).24 E F2<21ad>108 453.6 Q F3(n)A F0
-(Refer to the current command minus)144 453.6 Q F3(n)2.86 E F0(.).24 E
-F2(!!)108 465.6 Q F0(Refer to the pre)144 465.6 Q(vious command.)-.25 E
-(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 477.6 Q F3(string)
-A F0 .865(Refer to the most recent command preceding the current positi\
-on in the history list starting with)144 477.6 R F3(string)144.34 489.6
-Q F0(.).22 E F2(!?)108 501.6 Q F3(string)A F2([?])A F0 1.503(Refer to t\
-he most recent command preceding the current position in the history li\
-st containing)144 513.6 R F3(string)144.34 525.6 Q F0 5.497(.T).22 G
-.497(he trailing)-5.497 F F2(?)2.997 E F0 .497(may be omitted if)2.997 F
-F3(string)3.337 E F0 .496(is follo)3.216 F .496(wed immediately by a ne)
--.25 F 2.996(wline. If)-.25 F F3(string)2.996 E F0(is)2.996 E .39(missi\
-ng, the string from the most recent search is used; it is an error if t\
-here is no pre)144 537.6 R .391(vious search)-.25 F(string.)144 549.6 Q
-/F4 12/Times-Bold@0 SF(^)108 566.6 Q F3(string1)-5 I F4(^)5 I F3
-(string2)-5 I F4(^)5 I F0 2.599(Quick substitution.)144 573.6 R 2.598
-(Repeat the last command, replacing)7.599 F F3(string1)5.438 E F0(with)
-5.098 E F3(string2)5.438 E F0 7.598(.E).02 G(qui)-7.598 E -.25(va)-.25 G
-2.598(lent to).25 F -.74(``)144 585.6 S(!!:s).74 E/F5 12/Times-Roman@0
-SF(^)5 I F3(string1)-5 I F5(^)5 I F3(string2)-5 I F5(^)5 I F0 1.48 -.74
-('' \()-5 L(see).74 E F2(Modi\214ers)2.5 E F0(belo)2.5 E(w\).)-.25 E F2
-(!#)108 597.6 Q F0(The entire command line typed so f)144 597.6 Q(ar)-.1
-E(.)-.55 E F2 -.75(Wo)87 614.4 S(rd Designators).75 E F0 -.8(Wo)108
-626.4 S 1.313(rd designators are used to select desired w).8 F 1.314
-(ords from the e)-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)3.814 E F0
-1.314(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation)
-.15 F .53(from the w)108 638.4 R .529(ord designator)-.1 F 5.529(.I)-.55
-G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
-(ord designator be)-.1 F .529(gins with a)-.15 F F2(^)3.029 E F0(,)A F2
-($)3.029 E F0(,)A F2(*)3.029 E F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r)
--3.029 E F2(%)3.029 E F0 5.529(.W)C(ords)-6.329 E .515
-(are numbered from the be)108 650.4 R .516
-(ginning of the line, with the \214rst w)-.15 F .516
-(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.516 G .516(rds are in-)
-.8 F(serted into the current line separated by single spaces.)108 662.4
-Q F2 2.5(0\()108 679.2 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 691.2
-Q 2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E
-F3(n)108.36 703.2 Q F0(The)144 703.2 Q F3(n)2.5 E F0(th w)A(ord.)-.1 E
-F2(^)108 715.2 Q F0(The \214rst ar)144 715.2 Q 2.5(gument. That)-.18 F
-(is, w)2.5 E(ord 1.)-.1 E(GNU History 8.1)72 768 Q(2020 July 17)139.005
-E(1)203.165 E 0 Cg EP
+F(vious)-.25 E(commands quickly)108 312 Q(.)-.65 E 1.297(History e)108
+328.8 R 1.297(xpansion is usually performed immediately after a complet\
+e line is read.)-.15 F 1.297(It tak)6.297 F 1.296(es place in tw)-.1 F
+(o)-.1 E 3.198(parts. The)108 340.8 R .698(\214rst is to determine whic\
+h history list entry to use during substitution.)3.198 F .699
+(The second is to select)5.699 F
+(portions of that entry to include into the current one.)108 352.8 Q
+.075(The entry selected from the history is the)108 369.6 R F0 -.15(ev)
+2.575 G(ent).15 E F1 2.575(,a)C .074
+(nd the portions of that entry that are acted upon are)-2.575 F F0(wor)
+2.574 E(ds)-.37 E F1(.)A -1.11(Va)108 381.6 S(rious)1.11 E F0
+(modi\214er)2.942 E(s)-.1 E F1 .443(are a)2.943 F -.25(va)-.2 G .443
+(ilable to manipulate the selected w).25 F 2.943(ords. The)-.1 F .443
+(entry is split into w)2.943 F .443(ords in the same)-.1 F -.1(fa)108
+393.6 S .393(shion as).1 F F3(bash)2.893 E F1 .393
+(does when reading input, so that se)2.893 F -.15(ve)-.25 G .392(ral w)
+.15 F .392(ords that w)-.1 F .392(ould otherwise be separated are con-)
+-.1 F .232(sidered one w)108 405.6 R .232
+(ord when surrounded by quotes \(see the description of)-.1 F F3
+(history_tok)2.732 E(enize\(\))-.1 E F1(belo)2.732 E 2.733(w\). The)-.25
+F F0 -.15(ev)2.733 G(ent).15 E(designator)108 417.6 Q F1 1.182
+(selects the e)3.682 F -.15(ve)-.25 G 1.182(nt, the optional).15 F F0
+(wor)3.682 E 3.682(dd)-.37 G(esignator)-3.682 E F1 1.182(selects w)3.682
+F 1.182(ords from the e)-.1 F -.15(ve)-.25 G 1.182(nt, and v).15 F 1.182
+(arious op-)-.25 F(tional)108 429.6 Q F0(modi\214er)2.5 E(s)-.1 E F1
+(are a)2.5 E -.25(va)-.2 G(ilable to manipulate the selected w).25 E
+(ords.)-.1 E .574(History e)108 446.4 R .574
+(xpansions are introduced by the appearance of the history e)-.15 F .575
+(xpansion character)-.15 F 3.075(,w)-.4 G .575(hich is)-3.075 F F3(!)
+3.908 E F1 .575(by de-)3.908 F -.1(fa)108 458.4 S 2.5(ult. History).1 F
+-.15(ex)2.5 G(pansions may appear an).15 E(ywhere in the input, b)-.15 E
+(ut do not nest.)-.2 E(Only backslash \()108 475.2 Q F3(\\).833 E F1 2.5
+(\)a).833 G(nd single quotes can quote the history e)-2.5 E
+(xpansion character)-.15 E(.)-.55 E .852(There is a special abbre)108
+492 R .851(viation for substitution, acti)-.25 F 1.151 -.15(ve w)-.25 H
+.851(hen the).15 F F0(quic)3.351 E 3.351(ks)-.2 G(ubstitution)-3.351 E
+F1 .851(character \(def)3.351 F(ault)-.1 E F3<00>3.351 E F1 3.351(\)i)C
+(s)-3.351 E .357(the \214rst character on the line.)108 504 R .358
+(It selects the pre)5.357 F .358(vious history list entry)-.25 F 2.858
+(,u)-.65 G .358(sing an e)-2.858 F -.15(ve)-.25 G .358
+(nt designator equi).15 F -.25(va)-.25 G(lent).25 E(to)108 516 Q F3(!!)
+3.285 E F1 3.285(,a)C .784
+(nd substitutes one string for another in that entry)-3.285 F 5.784(.I)
+-.65 G 3.284(ti)-5.784 G 3.284(sd)-3.284 G .784(escribed belo)-3.284 F
+3.284(wu)-.25 G(nder)-3.284 E F3(Ev)3.284 E .784(ent Designators)-.1 F
+F1(.)A(This is the only history e)108 528 Q(xpansion that does not be)
+-.15 E(gin with the history e)-.15 E(xpansion character)-.15 E(.)-.55 E
+F3(Ev)87 544.8 Q(ent Designators)-.1 E F1 .585(An e)108 556.8 R -.15(ve)
+-.25 G .586
+(nt designator is a reference to an entry in the history list.).15 F
+.586(The e)5.586 F -.15(ve)-.25 G .586
+(nt designator consists of the por).15 F(-)-.2 E 1.306(tion of the w)108
+568.8 R 1.306(ord be)-.1 F 1.306(ginning with the history e)-.15 F 1.305
+(xpansion character and ending with the w)-.15 F 1.305
+(ord designator if)-.1 F .444(present, or the end of the w)108 580.8 R
+2.944(ord. Unless)-.1 F .444(the reference is absolute, e)2.944 F -.15
+(ve)-.25 G .445(nts are relati).15 F .745 -.15(ve t)-.25 H 2.945(ot).15
+G .445(he current position)-2.945 F(in the history list.)108 592.8 Q F3
+(!)108 609.6 Q F1(Start a history substitution, e)144 609.6 Q
+(xcept when follo)-.15 E(wed by a)-.25 E F3(blank)2.5 E F1 2.5(,n)C -.25
+(ew)-2.5 G(line, carriage return, =, or \(.).25 E F3(!)108 621.6 Q F0(n)
+A F1(Refer to history list entry)144 621.6 Q F0(n)2.86 E F1(.).24 E F3
+<21ad>108 633.6 Q F0(n)A F1(Refer to the current entry minus)144 633.6 Q
+F0(n)2.86 E F1(.).24 E F3(!!)108 645.6 Q F1(Refer to the pre)144 645.6 Q
+(vious entry)-.25 E 5(.T)-.65 G(his is a synon)-5 E
+(ym for \231!\2551\232.)-.15 E F3(!)108 657.6 Q F0(string)A F1 .865(Ref\
+er to the most recent command preceding the current position in the his\
+tory list starting with)144 657.6 R F0(string)144.34 669.6 Q F1(.).22 E
+F3(!?)108 681.6 Q F0(string)A F3([?])A F1 1.503(Refer to the most recen\
+t command preceding the current position in the history list containing)
+144 693.6 R F0(string)144.34 705.6 Q F1 5.497(.T).22 G .497(he trailing)
+-5.497 F F3(?)2.997 E F1 .497(may be omitted if)2.997 F F0(string)3.337
+E F1 .496(is follo)3.216 F .496(wed immediately by a ne)-.25 F 2.996
+(wline. If)-.25 F F0(string)2.996 E F1(is)2.996 E .039(missing, this us\
+es the string from the most recent search; it is an error if there is n\
+o pre)144 717.6 R .04(vious search)-.25 F(string.)144 729.6 Q
+(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(1)190.955 E 0 Cg EP
 %%Page: 2 2
 %%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($)108 84 Q F0 .064(The last w)144 84 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 96 Q(ord in the line.)-.1 E F1(%)
-108 108 Q F0 1.419(The \214rst w)144 108 R 1.419
-(ord matched by the most recent `?)-.1 F/F2 10/Times-Italic@0 SF(string)
-A F0 1.42(?' search, if the search string be)B 1.42(gins with a)-.15 F
-(character that is part of a w)144 120 Q(ord.)-.1 E F2(x)108.77 132 Q F1
-<ad>A F2(y)A F0 2.5(Ar)144 132 S(ange of w)-2.5 E(ords; `\255)-.1 E F2
-(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)
-108 144 Q F0 .316(All of the w)144 144 R .316(ords b)-.1 F .316
-(ut the zeroth.)-.2 F .315(This is a synon)5.315 F .315(ym for `)-.15 F
-F2(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*)
-2.815 E F0 .315(if there is)2.815 F(just one w)144 156 Q(ord in the e)
--.1 E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15
-E F1(x*)108 168 Q F0(Abbre)144 168 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)
-A F1<78ad>108 180 Q F0(Abbre)144 180 Q(viates)-.25 E F2(x\255$)2.5 E F0
-(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E
-2.5(ord. If)-.1 F F1(x)2.5 E F0(is missing, it def)2.5 E(aults to 0.)-.1
-E(If a w)108 196.8 Q(ord designator is supplied without an e)-.1 E -.15
-(ve)-.25 G(nt speci\214cation, the pre).15 E
-(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
-(Modi\214ers)87 213.6 Q F0 .183(After the optional w)108 225.6 R .183
-(ord designator)-.1 F 2.683(,t)-.4 G .184
-(here may appear a sequence of one or more of the follo)-2.683 F .184
-(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 237.6 Q
+/F0 10/Times-Italic@0 SF(HIST)72.58 48 Q(OR)-.18 E(Y)-.18 E/F1 10
+/Times-Roman@0 SF 125.855(\(3\) Library)1.27 F(Functions Manual)2.5 E F0
+(HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E/F2 12/Times-Bold@0 SF
+<00>108 89 Q F0(string1)-5 I F2<00>5 I F0(string2)-5 I F2<00>5 I F1 .753
+(Quick substitution.)144 96 R .753(Repeat the pre)5.753 F .753
+(vious command, replacing)-.25 F F0(string1)3.593 E F1(with)3.253 E F0
+(string2)3.592 E F1 5.752(.E).02 G(qui)-5.752 E -.25(va)-.25 G .752
+(lent to).25 F(\231!!:s)144 108 Q/F3 12/Times-Roman@0 SF<00>5 I F0
+(string1)-5 I F3<00>5 I F0(string2)-5 I F3<00>5 I F1 2.5<9a28>-5 K(see)
+-2.5 E/F4 10/Times-Bold@0 SF(Modi\214ers)2.5 E F1(belo)2.5 E(w\).)-.25 E
+F4(!#)108 120 Q F1(The entire command line typed so f)144 120 Q(ar)-.1 E
+(.)-.55 E F4 -.75(Wo)87 136.8 S(rd Designators).75 E F1 -.8(Wo)108 148.8
+S .067(rd designators are used to select desired w).8 F .067
+(ords from the e)-.1 F -.15(ve)-.25 G 2.567(nt. The).15 F 2.567(ya)-.15
+G .067(re optional; if the w)-2.567 F .068(ord designator)-.1 F(isn')108
+160.8 Q 3.516(ts)-.18 G 1.016(upplied, the history e)-3.516 F 1.016
+(xpansion uses the entire e)-.15 F -.15(ve)-.25 G 3.516(nt. A).15 F F4
+(:)3.516 E F1 1.015(separates the e)3.515 F -.15(ve)-.25 G 1.015
+(nt speci\214cation from the).15 F -.1(wo)108 172.8 S .331
+(rd designator).1 F 5.331(.I)-.55 G 2.832(tm)-5.331 G .332
+(ay be omitted if the w)-2.832 F .332(ord designator be)-.1 F .332
+(gins with a)-.15 F F4<00>2.832 E F1(,)A F4($)2.832 E F1(,)A F4(*)2.832
+E F1(,)A F4<ad>2.832 E F1 2.832(,o)C(r)-2.832 E F4(%)2.832 E F1 5.332
+(.W)C .332(ords are num-)-6.132 F .194(bered from the be)108 184.8 R
+.194(ginning of the line, with the \214rst w)-.15 F .194
+(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.193 G .193
+(rds are inserted into).8 F
+(the current line separated by single spaces.)108 196.8 Q F4 2.5(0\()108
+213.6 S(zer)-2.5 E(o\))-.18 E F1(The zeroth w)144 225.6 Q 2.5(ord. F)-.1
+F(or the shell, and man)-.15 E 2.5(yo)-.15 G
+(ther applications, this is the command w)-2.5 E(ord.)-.1 E F0(n)108.36
+237.6 Q F1(The)144 237.6 Q F0(n)2.5 E F1(th w)A(ord.)-.1 E F4<00>108
+249.6 Q F1(The \214rst ar)144 249.6 Q(gument: w)-.18 E(ord 1.)-.1 E F4
+($)108 261.6 Q F1 .854(The last w)144 261.6 R 3.354(ord. This)-.1 F .854
+(is usually the last ar)3.354 F .854(gument, b)-.18 F .854(ut e)-.2 F
+.855(xpands to the zeroth w)-.15 F .855(ord if there is only)-.1 F
+(one w)144 273.6 Q(ord in the line.)-.1 E F4(%)108 285.6 Q F1 1.125
+(The \214rst w)144 285.6 R 1.125(ord matched by the most recent \231?)
+-.1 F F0(string)A F1 3.624(?\232 search,)B 1.124
+(if the search string be)3.624 F 1.124(gins with a)-.15 F .486
+(character that is part of a w)144 297.6 R 2.986(ord. By)-.1 F(def)2.986
+E .486(ault, searches be)-.1 F .487
+(gin at the end of each line and proceed to)-.15 F(the be)144 309.6 Q
+(ginning, so the \214rst w)-.15 E
+(ord matched is the one closest to the end of the line.)-.1 E F0(x)
+108.77 321.6 Q F4<ad>A F0(y)A F1 2.5(Ar)144 321.6 S(ange of w)-2.5 E
+(ords; \231\255)-.1 E F0(y)A F1 2.5<9a61>C(bbre)-2.5 E(viates \2310\255)
+-.25 E F0(y)A F1<9a2e>A F4(*)108 333.6 Q F1 .219(All of the w)144 333.6
+R .219(ords b)-.1 F .219(ut the zeroth.)-.2 F .219(This is a synon)5.219
+F .219(ym for \231)-.15 F F0(1\255$)A F1 2.719(\232. It)B .218
+(is not an error to use)2.719 F F4(*)2.718 E F1 .218(if there is)2.718 F
+(just one w)144 345.6 Q(ord in the e)-.1 E -.15(ve)-.25 G(nt; it e).15 E
+(xpands to the empty string in that case.)-.15 E F4(x*)108 357.6 Q F1
+(Abbre)144 357.6 Q(viates)-.25 E F0(x\255$)2.5 E F1(.)A F4<78ad>108
+369.6 Q F1(Abbre)144 369.6 Q(viates)-.25 E F0(x\255$)2.5 E F1(lik)2.5 E
+(e)-.1 E F4(x*)2.5 E F1 2.5(,b)C(ut omits the last w)-2.7 E 2.5(ord. If)
+-.1 F F4(x)2.5 E F1(is missing, it def)2.5 E(aults to 0.)-.1 E .368
+(If a w)108 386.4 R .368(ord designator is supplied without an e)-.1 F
+-.15(ve)-.25 G .368(nt speci\214cation, the pre).15 F .369
+(vious command is used as the e)-.25 F -.15(ve)-.25 G(nt,).15 E(equi)108
+398.4 Q -.25(va)-.25 G(lent to).25 E F4(!!)2.5 E F1(.)A F4(Modi\214ers)
+87 415.2 Q F1 .47(After the optional w)108 427.2 R .47(ord designator)
+-.1 F 2.97(,t)-.4 G .47(he e)-2.97 F .469
+(xpansion may include a sequence of one or more of the follo)-.15 F
+(wing)-.25 E(modi\214ers, each preceded by a \231:\232.)108 439.2 Q
 (These modify)5 E 2.5(,o)-.65 G 2.5(re)-2.5 G(dit, the w)-2.5 E
 (ord or w)-.1 E(ords selected from the history e)-.1 E -.15(ve)-.25 G
-(nt.).15 E F1(h)108 254.4 Q F0(Remo)144 254.4 Q .3 -.15(ve a t)-.15 H
-(railing \214le name component, lea).15 E(ving only the head.)-.2 E F1
-(t)108 266.4 Q F0(Remo)144 266.4 Q .3 -.15(ve a)-.15 H
-(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F1(r)
-108 278.4 Q F0(Remo)144 278.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
-(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
-(ving the basename.)-.2 E F1(e)108 290.4 Q F0(Remo)144 290.4 Q .3 -.15
-(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108
-302.4 Q F0(Print the ne)144 302.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E
-(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 314.4 Q F0
-(Quote the substituted w)144 314.4 Q
-(ords, escaping further substitutions.)-.1 E F1(x)108 326.4 Q F0 .386
-(Quote the substituted w)144 326.4 R .386(ords as with)-.1 F F1(q)2.886
-E F0 2.886(,b)C .386(ut break into w)-3.086 F .385(ords at)-.1 F F1
-(blanks)2.885 E F0 .385(and ne)2.885 F 2.885(wlines. The)-.25 F F1(q)
-2.885 E F0(and)2.885 E F1(x)2.885 E F0(modi\214ers are mutually e)144
-338.4 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G
-(he last one supplied is used.)-2.5 E F1(s/)108 350.4 Q F2(old)A F1(/)A
-F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 362.4 Q F2(ne)3.328 E(w)-.15 E
-F0 .469(for the \214rst occurrence of)3.278 F F2(old)3.199 E F0 .469
-(in the e)3.739 F -.15(ve)-.25 G .469(nt line.).15 F(An)5.469 E 2.969
-(yc)-.15 G .469(haracter may be used as the)-2.969 F .954
-(delimiter in place of /.)144 374.4 R .953
+(nt.).15 E F4(h)108 456 Q F1(Remo)144 456 Q .3 -.15(ve a t)-.15 H
+(railing \214lename component, lea).15 E(ving only the head.)-.2 E F4(t)
+108 468 Q F1(Remo)144 468 Q .3 -.15(ve a)-.15 H
+(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F4(r)
+108 480 Q F1(Remo)144 480 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
+(\214x of the form)-.25 E F0(.xxx)2.5 E F1 2.5(,l)C(ea)-2.5 E
+(ving the basename.)-.2 E F4(e)108 492 Q F1(Remo)144 492 Q .3 -.15(ve a)
+-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F4(p)108 504 Q
+F1(Print the ne)144 504 Q 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2
+E -.15(xe)-.15 G(cute it.).15 E F4(q)108 516 Q F1
+(Quote the substituted w)144 516 Q
+(ords, escaping further substitutions.)-.1 E F4(x)108 528 Q F1 .385
+(Quote the substituted w)144 528 R .385(ords as with)-.1 F F4(q)2.885 E
+F1 2.885(,b)C .386(ut break into w)-3.085 F .386(ords at)-.1 F F4
+(blanks)2.886 E F1 .386(and ne)2.886 F 2.886(wlines. The)-.25 F F4(q)
+2.886 E F1(and)2.886 E F4(x)2.886 E F1(modi\214ers are mutually e)144
+540 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;e).15 G
+(xpansion uses the last one supplied.)-2.65 E F4(s/)108 552 Q F0(old)A
+F4(/)A F0(ne)A(w)-.15 E F4(/)A F1(Substitute)144 564 Q F0(ne)3.329 E(w)
+-.15 E F1 .469(for the \214rst occurrence of)3.279 F F0(old)3.199 E F1
+.469(in the e)3.739 F -.15(ve)-.25 G .469(nt line.).15 F(An)5.469 E
+2.969(yc)-.15 G .469(haracter may be used as the)-2.969 F .294
+(delimiter in place of /.)144 576 R .295
 (The \214nal delimiter is optional if it is the last character of the e)
-5.953 F -.15(ve)-.25 G .953(nt line.).15 F .131
-(The delimiter may be quoted in)144 386.4 R F2(old)2.861 E F0(and)3.401
-E F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131
-(If & appears in)5.131 F F2(ne)2.991 E(w)-.15 E F0 2.631(,i).31 G 2.631
-(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .62(placed by)144 398.4 R F2
-(old)3.349 E F0 5.619(.A).77 G .619(single backslash will quote the &.)
--2.5 F(If)5.619 E F2(old)3.349 E F0 .619(is null, it is set to the last)
-3.889 F F2(old)3.349 E F0(substi-)3.889 E .486(tuted, or)144 410.4 R
-2.986(,i)-.4 G 2.986(fn)-2.986 G 2.986(op)-2.986 G(re)-2.986 E .486
-(vious history substitutions took place, the last)-.25 F F2(string)3.326
-E F0 .487(in a)3.206 F F1(!?)2.987 E F2(string)A F1([?])A F0 2.987
-(search. If)5.487 F F2(ne)144.36 422.4 Q(w)-.15 E F0
-(is null, each matching)2.81 E F2(old)2.73 E F0(is deleted.)3.27 E F1(&)
-108 434.4 Q F0(Repeat the pre)144 434.4 Q(vious substitution.)-.25 E F1
-(g)108 446.4 Q F0 .398(Cause changes to be applied o)144 446.4 R -.15
-(ve)-.15 G 2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398
-(nt line.).15 F .397(This is used in conjunction with `)5.398 F F1(:s)A
-F0 2.897('\()C(e.g.,)-2.897 E(`)144 458.4 Q F1(:gs/)A F2(old)A F1(/)A F2
-(ne)A(w)-.15 E F1(/)A F0 .35('\) or `)B F1(:&)A F0 2.85('. If)B .35
-(used with `)2.85 F F1(:s)A F0 .35(', an)B 2.85(yd)-.15 G .351
-(elimiter can be used in place of /, and the \214nal de-)-2.85 F
-(limiter is optional if it is the last character of the e)144 470.4 Q
--.15(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0
-(may be used as a synon)2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108
-482.4 Q F0(Apply the follo)144 482.4 Q(wing `)-.25 E F1(s)A F0 2.5('o)C
-2.5(r`)-2.5 G F1(&)-2.5 E F0 2.5('m)C(odi\214er once to each w)-2.5 E
-(ord in the e)-.1 E -.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0
-SF(PR)72 499.2 Q(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G
-(UNCTIONS)-2.738 E F0(This section describes ho)108 511.2 Q 2.5(wt)-.25
-G 2.5(ou)-2.5 G(se the History library in other programs.)-2.5 E F1
-(Intr)87 528 Q(oduction to History)-.18 E F0 2.883(Ap)108 540 S .383
+5.294 F -.15(ve)-.25 G .295(nt line.).15 F(A)5.295 E .229
+(single backslash quotes the delimiter in)144 588 R F0(old)2.959 E F1
+(and)3.498 E F0(ne)3.088 E(w)-.15 E F1 5.228(.I).31 G 2.728(f&a)-5.228 G
+.228(ppears in)-2.728 F F0(ne)3.088 E(w)-.15 E F1 2.728(,i).31 G 2.728
+(ti)-2.728 G 2.728(sr)-2.728 G .228(eplaced with)-2.728 F F0(old)2.958 E
+F1(.).77 E 2.986(As)144 600 S .486(ingle backslash quotes the &.)-2.986
+F(If)5.486 E F0(old)3.216 E F1 .486(is null, it is set to the last)3.756
+F F0(old)3.216 E F1 .487(substituted, or)3.756 F 2.987(,i)-.4 G 2.987
+(fn)-2.987 G 2.987(op)-2.987 G(re)-2.987 E(vi-)-.25 E 1.09
+(ous history substitutions took place, the last)144 612 R F0(string)3.93
+E F1 1.09(in a)3.81 F F4(!?)3.59 E F0(string)A F4([?])A F1 3.59
+(search. If)6.09 F F0(ne)3.95 E(w)-.15 E F1 1.09(is null, each)3.9 F
+(matching)144 624 Q F0(old)2.73 E F1(is deleted.)3.27 E F4(&)108 636 Q
+F1(Repeat the pre)144 636 Q(vious substitution.)-.25 E F4(g)108 648 Q F1
+.267(Cause changes to be applied o)144 648 R -.15(ve)-.15 G 2.767(rt).15
+G .267(he entire e)-2.767 F -.15(ve)-.25 G .267(nt line.).15 F .267
+(This is used in conjunction with \231)5.267 F F4(:s)A F1 2.768<9a28>C
+(e.g.,)-2.768 E<99>144 660 Q F4(:gs/)A F0(old)A F4(/)A F0(ne)A(w)-.15 E
+F4(/)A F1(\232\) or \231)A F4(:&)A F1 2.5(\232. If)B(used with \231)2.5
+E F4(:s)A F1(\232, an)A 2.5(yd)-.15 G
+(elimiter can be used in place of /, and the \214nal de-)-2.5 E
+(limiter is optional if it is the last character of the e)144 672 Q -.15
+(ve)-.25 G(nt line.).15 E(An)5 E F4(a)2.5 E F1(may be used as a synon)
+2.5 E(ym for)-.15 E F4(g)2.5 E F1(.)A F4(G)108 684 Q F1(Apply the follo)
+144 684 Q(wing \231)-.25 E F4(s)A F1 2.5<9a6f>C 2.5<7299>-2.5 G F4(&)
+-2.5 E F1 2.5<9a6d>C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E
+-.15(ve)-.25 G(nt line.).15 E/F5 10.95/Times-Bold@0 SF(PR)72 700.8 Q
+(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738
+E F1(This section describes ho)108 712.8 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G
+(se the History library in other programs.)-2.5 E(GNU History 8.3)72 768
+Q(2024 December 31)126.795 E(2)190.955 E 0 Cg EP
+%%Page: 3 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Italic@0 SF(HIST)72.58 48 Q(OR)-.18 E(Y)-.18 E/F1 10
+/Times-Roman@0 SF 125.855(\(3\) Library)1.27 F(Functions Manual)2.5 E F0
+(HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E/F2 10/Times-Bold@0 SF
+(Intr)87 84 Q(oduction to History)-.18 E F1 2.883(Ap)108 96 S .383
 (rogrammer using the History library has a)-2.883 F -.25(va)-.2 G .382
 (ilable functions for remembering lines on a history list, as-).25 F .77
-(sociating arbitrary data with a line, remo)108 552 R .771
+(sociating arbitrary data with a line, remo)108 108 R .771
 (ving lines from the list, searching through the list for a line con-)
--.15 F .303(taining an arbitrary te)108 564 R .303
+-.15 F .303(taining an arbitrary te)108 120 R .303
 (xt string, and referencing an)-.15 F 2.803(yl)-.15 G .303
 (ine in the list directly)-2.803 F 5.303(.I)-.65 G 2.803(na)-5.303 G
-.303(ddition, a history)-2.803 F F2 -.2(ex)2.802 G(pansion).2 E F0
-(function is a)108 576 Q -.25(va)-.2 G(ilable which pro).25 E
+.303(ddition, a history)-2.803 F F0 -.2(ex)2.802 G(pansion).2 E F1
+(function is a)108 132 Q -.25(va)-.2 G(ilable which pro).25 E
 (vides for a consistent user interf)-.15 E(ace across dif)-.1 E
 (ferent programs.)-.25 E .059(The user using programs written with the \
-History library has the bene\214t of a consistent user interf)108 592.8
-R .059(ace with a)-.1 F .918(set of well-kno)108 604.8 R .917
+History library has the bene\214t of a consistent user interf)108 148.8
+R .059(ace with a)-.1 F .918(set of well-kno)108 160.8 R .917
 (wn commands for manipulating the te)-.25 F .917(xt of pre)-.15 F .917
 (vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.417(wc)-.25
-G(om-)-3.417 E 4.183(mands. The)108 616.8 R 1.684(basic history manipul\
+G(om-)-3.417 E 4.183(mands. The)108 172.8 R 1.684(basic history manipul\
 ation commands are identical to the history substitution pro)4.183 F
-1.684(vided by)-.15 F F1(bash)108 628.8 Q F0(.)A 1.154
-(The programmer can also use the readline library)108 645.6 R 3.654(,w)
+1.684(vided by)-.15 F F2(bash)108 184.8 Q F1(.)A 1.154
+(The programmer can also use the readline library)108 201.6 R 3.654(,w)
 -.65 G 1.153(hich includes some history manipulation by def)-3.654 F
-(ault,)-.1 E(and has the added adv)108 657.6 Q
+(ault,)-.1 E(and has the added adv)108 213.6 Q
 (antage of command line editing.)-.25 E .39(Before declaring an)108
-674.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39
+230.4 R 2.89(yf)-.15 G .39(unctions using an)-2.89 F 2.89(yf)-.15 G .39
 (unctionality the History library pro)-2.89 F .39
 (vides in other code, an appli-)-.15 F .067
-(cation writer should include the \214le)108 686.4 R F2(<r)4.233 E
-(eadline/history)-.37 E(.h>)-.55 E F0 .067(in an)4.233 F 2.566<798c>-.15
+(cation writer should include the \214le)108 242.4 R F0(<r)4.233 E
+(eadline/history)-.37 E(.h>)-.55 E F1 .067(in an)4.233 F 2.566<798c>-.15
 G .066(le that uses the History library')-2.566 F 2.566(sf)-.55 G
-(eatures.)-2.566 E .538(It supplies e)108 698.4 R .538
+(eatures.)-2.566 E .538(It supplies e)108 254.4 R .538
 (xtern declarations for all of the library')-.15 F 3.038(sp)-.55 G .538
 (ublic functions and v)-3.038 F .539(ariables, and declares all of the)
--.25 F(public data structures.)108 710.4 Q(GNU History 8.1)72 768 Q
-(2020 July 17)139.005 E(2)203.165 E 0 Cg EP
-%%Page: 3 3
-%%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 Storage)87 84 Q F0
-(The history list is an array of history entries.)108 96 Q 2.5(Ah)5 G
-(istory entry is declared as follo)-2.5 E(ws:)-.25 E/F2 10
-/Times-Italic@0 SF(typedef void *)108 112.8 Q F1(histdata_t;)2.5 E F0
-(typedef struct _hist_entry {)108 129.6 Q(char *line;)113 141.6 Q
-(char *timestamp;)113 153.6 Q(histdata_t data;)113 165.6 Q 2.5(}H)108
-177.6 S(IST_ENTR)-2.5 E -.92(Y;)-.65 G
-(The history list itself might therefore be declared as)108 194.4 Q F2
-(HIST_ENTR)108 211.2 Q 2.5(Y*)-.18 G(*)-2.5 E F1(the_history_list;)2.5 E
-F0(The state of the History library is encapsulated into a single struc\
-ture:)108 228 Q(/*)108 244.8 Q 2.5(*As)110.5 256.8 S
-(tructure used to pass around the current state of the history)-2.5 E(.)
--.65 E(*/)110.5 268.8 Q(typedef struct _hist_state {)108 280.8 Q
-(HIST_ENTR)113 292.8 Q 2.5(Y*)-.65 G
-(*entries; /* Pointer to the entries themselv)-2.5 E(es. */)-.15 E
-(int of)113 304.8 Q 25(fset; /*)-.25 F
-(The location pointer within this array)2.5 E 2.5(.*)-.65 G(/)-2.5 E
-(int length;)113 316.8 Q(/* Number of elements within this array)27.5 E
-2.5(.*)-.65 G(/)-2.5 E(int size;)113 328.8 Q
-(/* Number of slots allocated to this array)32.5 E 2.5(.*)-.65 G(/)-2.5
-E(int \215ags;)113 340.8 Q 2.5(}H)108 352.8 S(IST)-2.5 E(OR)-.18 E(Y_ST)
--.65 E -1.11(AT)-.93 G(E;)1.11 E(If the \215ags member includes)108
-369.6 Q F1(HS_STIFLED)2.5 E F0 2.5(,t)C(he history has been sti\215ed.)
--2.5 E/F3 10.95/Times-Bold@0 SF(History Functions)72 386.4 Q F0
-(This section describes the calling sequence for the v)108 398.4 Q
+-.25 F(public data structures.)108 266.4 Q F2(History Storage)87 283.2 Q
+F1(The history list is an array of history entries.)108 295.2 Q 2.5(Ah)5
+G(istory entry is declared as follo)-2.5 E(ws:)-.25 E F0(typedef void *)
+108 312 Q F2(histdata_t;)2.5 E/F3 10/Courier@0 SF
+(typedef struct _hist_entry {)108 328.8 Q(char *line;)120 340.8 Q
+(char *timestamp;)120 352.8 Q(histdata_t data;)120 364.8 Q 6(}H)108
+376.8 S(IST_ENTRY;)-6 E F1
+(The history list itself might therefore be declared as)108 393.6 Q F0
+(HIST_ENTR)108 410.4 Q 2.5(Y*)-.18 G(*)-2.5 E F2(the_history_list;)2.5 E
+F1(The state of the History library is encapsulated into a single struc\
+ture:)108 427.2 Q F3(/*)108 444 Q 6(*As)114 456 S
+(tructure used to pass around the current state of the history.)-6 E(*/)
+114 468 Q(typedef struct _hist_state {)108 480 Q
+(HIST_ENTRY **entries; /* Pointer to entry records. */)120 492 Q
+(int offset;)120 504 Q(/* The current record. */)66 E(int length;)120
+516 Q(/* Number of records in list. */)66 E(int size;)120 528 Q
+(/* Number of records allocated. */)78 E(int flags;)120 540 Q 6(}H)108
+552 S(ISTORY_STATE;)-6 E F1(If the \215ags member includes)108 568.8 Q
+F2(HS_STIFLED)2.5 E F1 2.5(,t)C(he history has been sti\215ed.)-2.5 E/F4
+10.95/Times-Bold@0 SF(History Functions)72 585.6 Q F1
+(This section describes the calling sequence for the v)108 597.6 Q
 (arious functions e)-.25 E(xported by the GNU History library)-.15 E(.)
--.65 E F1(Initializing History and State Management)87 415.2 Q F0 1.274
+-.65 E F2(Initializing History and State Management)87 614.4 Q F1 1.274
 (This section describes functions used to initialize and manage the sta\
-te of the History library when you)108 427.2 R -.1(wa)108 439.2 S
-(nt to use the history functions in your program.).1 E F2(void)108 463.2
-Q F1(using_history)2.5 E F0(\()4.166 E F2(void)A F0(\))1.666 E(Be)108
-475.2 Q(gin a session in which the history functions might be used.)-.15
+te of the History library when you)108 626.4 R -.1(wa)108 638.4 S
+(nt to use the history functions in your program.).1 E F0(void)108 655.2
+Q F2(using_history)2.5 E F1(\()4.166 E F0(void)A F1(\))1.666 E(Be)108
+667.2 Q(gin a session in which the history functions might be used.)-.15
 E(This initializes the interacti)5 E .3 -.15(ve v)-.25 H(ariables.)-.1 E
-F2(HIST)108 499.2 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F1
-(history_get_history_state)A F0(\()4.166 E F2(void)A F0(\))1.666 E
+F0(HIST)108 684 Q(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37 G F2
+(history_get_history_state)A F1(\()4.166 E F0(void)A F1(\))1.666 E
 (Return a structure describing the current state of the input history)
-108 511.2 Q(.)-.65 E F2(void)108 535.2 Q F1(history_set_history_state)
-2.5 E F0(\()4.166 E F2(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5
-(E*).37 G(state)-2.5 E F0(\))1.666 E
-(Set the state of the history list according to)108 547.2 Q F2(state)2.5
-E F0(.)A F1(History List Management)87 576 Q F0
-(These functions manage indi)108 588 Q(vidual entries on the history li\
-st, or set parameters managing the list itself.)-.25 E F2(void)108 612 Q
-F1(add_history)2.5 E F0(\()4.166 E F2(const c)A(har *string)-.15 E F0
-(\))1.666 E(Place)108 624 Q F2(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
-F1(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 636 R F1
-(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 648 S
-(uld e).1 E(xceed that maximum, the oldest history entry is remo)-.15 E
--.15(ve)-.15 G(d.).15 E F2(void)108 672 Q F1(add_history_time)2.5 E F0
-(\()4.166 E F2(const c)A(har *string)-.15 E F0(\))1.666 E
-(Change the time stamp associated with the most recent history entry to)
-108 684 Q F2(string)2.5 E F0(.)A F2(HIST_ENTR)108 708 Q 2.5(Y*)-.18 G F1
--.18(re)C(mo).18 E -.1(ve)-.1 G(_history).1 E F0(\()4.166 E F2(int whic)
-A(h)-.15 E F0(\))1.666 E(Remo)108 720 Q .352 -.15(ve h)-.15 H .052
-(istory entry at of).15 F(fset)-.25 E F2(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(GNU History 8.1)72 768 Q(2020 July 17)139.005 E(3)203.165 E 0 Cg EP
+108 696 Q(.)-.65 E F0(void)108 712.8 Q F2(history_set_history_state)2.5
+E F1(\()4.166 E F0(HIST)A(OR)-.18 E(Y_ST)-.18 E -.37(AT)-.5 G 2.5(E*).37
+G(state)-2.5 E F1(\))1.666 E
+(Set the state of the history list according to)108 724.8 Q F0(state)2.5
+E F1(.)A(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(3)190.955 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
-(line, data, and containing structure.)108 84 Q/F1 10/Times-Italic@0 SF
-(histdata_t)108 108 Q/F2 10/Times-Bold@0 SF(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 120 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 132 Q F1
-(HIST_ENTR)108 156 Q 2.5(Y*)-.18 G F2 -.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 168 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
+/F0 10/Times-Italic@0 SF(HIST)72.58 48 Q(OR)-.18 E(Y)-.18 E/F1 10
+/Times-Roman@0 SF 125.855(\(3\) Library)1.27 F(Functions Manual)2.5 E F0
+(HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E/F2 10/Times-Bold@0 SF
+(History List Management)87 84 Q F1(These functions manage indi)108 96 Q
+(vidual entries on the history list, or set parameters managing the lis\
+t itself.)-.25 E F0(void)108 112.8 Q F2(add_history)2.5 E F1(\()4.166 E
+F0(const c)A(har *string)-.15 E F1(\))1.666 E(Place)108 124.8 Q F0
+(string)3.279 E F1 .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 F1 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 136.8 R F2
+(sti\215e_history\(\))3.286 E F1 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 148.8
+S(uld e).1 E(xceed that maximum, the oldest history entry is remo)-.15 E
+-.15(ve)-.15 G(d.).15 E F0(void)108 165.6 Q F2(add_history_time)2.5 E F1
+(\()4.166 E F0(const c)A(har *string)-.15 E F1(\))1.666 E
+(Change the time stamp associated with the most recent history entry to)
+108 177.6 Q F0(string)2.5 E F1(.)A F0(HIST_ENTR)108 194.4 Q 2.5(Y*)-.18
+G F2 -.18(re)C(mo).18 E -.1(ve)-.1 G(_history).1 E F1(\()4.166 E F0
+(int whic)A(h)-.15 E F1(\))1.666 E(Remo)108 206.4 Q .352 -.15(ve h)-.15
+H .052(istory entry at of).15 F(fset)-.25 E F0(whic)2.553 E(h)-.15 E F1
+.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 218.4 Q F0
+(histdata_t)108 235.2 Q F2(fr)2.5 E(ee_history_entry)-.18 E F1(\()4.166
+E F0(HIST_ENTR)A 2.5(Y*)-.18 G(histent)-2.5 E F1(\))1.666 E .934
+(Free the history entry)108 247.2 R F0(histent)3.433 E F1 .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 259.2 Q F0
+(HIST_ENTR)108 276 Q 2.5(Y*)-.18 G F2 -.18(re)C(place_history_entry).18
+E F1(\()4.166 E F0(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 F1(\))3.332 E
+(Mak)108 288 Q 3.062(et)-.1 G .562(he history entry at of)-3.062 F(fset)
+-.25 E F0(whic)3.062 E(h)-.15 E F1(ha)3.062 E -.15(ve)-.2 G F0(line)
+3.212 E F1(and)3.062 E F0(data)3.062 E F1 5.563(.T)C .563
 (his returns the old entry so the caller can dis-)-5.563 F(pose of an)
-108 180 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 204 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 216 Q F1(void)
-108 240 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 252
-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 264 Q F1(int)108 288 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
-300 R 5.46(.T)-.65 G .46(his returns the pre)-5.46 F .46
+108 300 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 F0(whic)2.5 E(h)-.15 E
+F1 2.5(,a)C F2(NULL)A F1(pointer is returned.)2.5 E F0(void)108 316.8 Q
+F2(clear_history)2.5 E F1(\()4.166 E F0(void)A F1(\))1.666 E
+(Clear the history list by deleting all the entries.)108 328.8 Q F0
+(void)108 345.6 Q F2(sti\215e_history)2.5 E F1(\()4.166 E F0(int max)A
+F1(\))1.666 E .38(Sti\215e the history list, remembering only the last)
+108 357.6 R F0(max)2.88 E F1 2.88(entries. The)2.88 F .38
+(history list will contain only)2.88 F F0(max)2.88 E F1(entries)2.88 E
+(at a time.)108 369.6 Q F0(int)108 386.4 Q F2(unsti\215e_history)2.5 E
+F1(\()4.166 E F0(void)A F1(\))1.666 E .46(Stop sti\215ing the history)
+108 398.4 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 312 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 336 Q F2(history_is_sti\215ed)
-2.5 E F0(\()4.166 E F1(void)A F0(\))1.666 E
+(sti-)2.96 E(\215e_history\(\))108 410.4 Q F1 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 F0(int)108 427.2 Q F2
+(history_is_sti\215ed)2.5 E F1(\()4.166 E F0(void)A F1(\))1.666 E
 (Returns non-zero if the history is sti\215ed, zero if it is not.)108
-348 Q F2(Inf)87 376.8 Q(ormation About the History List)-.25 E F0(These\
+439.2 Q F2(Inf)87 456 Q(ormation About the History List)-.25 E F1(These\
  functions return information about the entire history list or indi)108
-388.8 Q(vidual list entries.)-.25 E F1(HIST_ENTR)108 412.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
-.708(Return a)108 424.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
+468 Q(vidual list entries.)-.25 E F0(HIST_ENTR)108 484.8 Q 2.5(Y*)-.18 G
+(*)-2.5 E F2(history_list)2.5 E F1(\()4.166 E F0(void)A F1(\))1.666 E
+.708(Return a)108 496.8 R F2(NULL)3.208 E F1 .708(terminated array of)
+3.208 F F0(HIST_ENTR)3.208 E 3.208(Y*)-.18 G F1 .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 436.8 Q(ginning of time.)
+(lement 0 of this)-5.707 F(list is the be)108 508.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 460.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 472.8 Q
-(fset of the current history element.)-.25 E F1(HIST_ENTR)108 496.8 Q
-2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F0(\()4.166 E F1(void)A F0
+E F1(.)A F0(int)108 525.6 Q F2(wher)2.5 E(e_history)-.18 E F1(\()4.166 E
+F0(void)A F1(\))1.666 E(Returns the of)108 537.6 Q
+(fset of the current history element.)-.25 E F0(HIST_ENTR)108 554.4 Q
+2.5(Y*)-.18 G F2(curr)A(ent_history)-.18 E F1(\()4.166 E F0(void)A F1
 (\))1.666 E 1.373
 (Return the history entry at the current position, as determined by)108
-508.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 520.8 Q F2
-(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F1(HIST_ENTR)108 544.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 1.069(Return the history entry at position)108 556.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 568.8 R F2(history_length)2.786 E F0 2.786<ad31>2.786 G 5.286(.I)
+566.4 R F2(wher)3.873 E(e_history\(\))-.18 E F1 6.373(.I)C 3.873(ft)
+-6.373 G 1.374(here is no entry)-3.873 F(there, return a)108 578.4 Q F2
+(NULL)2.5 E F1(pointer)2.5 E(.)-.55 E F0(HIST_ENTR)108 595.2 Q 2.5(Y*)
+-.18 G F2(history_get)A F1(\()4.166 E F0(int of)A(fset)-.18 E F1(\))
+1.666 E 1.069(Return the history entry at position)108 607.2 R F0(of)
+3.569 E(fset)-.18 E F1 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 F0(of)3.569 E(fset)-.18 E F1 1.068
+(starts at)3.569 F F2(history_base)3.568 E F1(and)3.568 E .286(ends at)
+108 619.2 R F2(history_length)2.786 E F1 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 580.8 Q(.)
--.55 E F1(time_t)108 604.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 616.8 Q(gument.)-.18 E F1
-(int)108 640.8 Q F2(history_total_bytes)2.5 E F0(\()4.166 E F1(void)A F0
+F0(of)2.786 E(fset)-.18 E F1 .286(is outside the v)2.786 F .287
+(alid range, return a)-.25 F F2(NULL)2.787 E F1(pointer)108 631.2 Q(.)
+-.55 E F0(time_t)108 648 Q F2(history_get_time)2.5 E F1(\()4.166 E F0
+(HIST_ENTR)A 2.5(Y*)-.18 G F1(\))-.834 E(Return the time stamp associat\
+ed with the history entry passed as the ar)108 660 Q(gument.)-.18 E F0
+(int)108 676.8 Q F2(history_total_bytes)2.5 E F1(\()4.166 E F0(void)A F1
 (\))1.666 E .392
 (Return the number of bytes that the primary history entries are using.)
-108 652.8 R .391(This function returns the sum of the)5.392 F
-(lengths of all the lines in the history)108 664.8 Q(.)-.65 E F2(Mo)87
-693.6 Q(ving Ar)-.1 E(ound the History List)-.18 E F0
-(These functions allo)108 705.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 729.6 Q F2(history_set_pos)2.5 E F0(\()4.166 E F1(int pos)A F0(\))
-1.666 E(GNU History 8.1)72 768 Q(2020 July 17)139.005 E(4)203.165 E 0 Cg
-EP
+108 688.8 R .391(This function returns the sum of the)5.392 F
+(lengths of all the lines in the history)108 700.8 Q(.)-.65 E
+(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(4)190.955 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 .79
-(Set the current history of)108 84 R .79(fset to)-.25 F/F1 10
-/Times-Italic@0 SF(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 96 Q F1
-(HIST_ENTR)108 120 Q 2.5(Y*)-.18 G/F2 10/Times-Bold@0 SF(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 132 R .208(fset to the pre)-.25 F
+/F0 10/Times-Italic@0 SF(HIST)72.58 48 Q(OR)-.18 E(Y)-.18 E/F1 10
+/Times-Roman@0 SF 125.855(\(3\) Library)1.27 F(Functions Manual)2.5 E F0
+(HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E/F2 10/Times-Bold@0 SF
+(Mo)87 84 Q(ving Ar)-.1 E(ound the History List)-.18 E F1
+(These functions allo)108 96 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 F0(int)108
+112.8 Q F2(history_set_pos)2.5 E F1(\()4.166 E F0(int pos)A F1(\))1.666
+E .79(Set the current history of)108 124.8 R .79(fset to)-.25 F F0(pos)
+3.29 E F1 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
+F0(pos)3.29 E F1 .79(is less)3.29 F
+(than zero or greater than the number of history entries.)108 136.8 Q F0
+(HIST_ENTR)108 153.6 Q 2.5(Y*)-.18 G F2(pr)A -.15(ev)-.18 G
+(ious_history).15 E F1(\()4.166 E F0(void)A F1(\))1.666 E .208
+(Back up the current history of)108 165.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 144 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 168 Q 2.5(Y*)-.18 G F2(next_history)A F0(\()4.166 E F1
-(void)A F0(\))1.666 E .332(If the current history of)108 180 R .333
+-5.207 G .207(here is)-2.707 F(no pre)108 177.6 Q(vious entry)-.25 E 2.5
+(,r)-.65 G(eturn a)-2.5 E F2(NULL)2.5 E F1(pointer)2.5 E(.)-.55 E F0
+(HIST_ENTR)108 194.4 Q 2.5(Y*)-.18 G F2(next_history)A F1(\()4.166 E F0
+(void)A F1(\))1.666 E .332(If the current history of)108 206.4 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 192 R .202
+.333(the possi-)2.833 F .202(bly-incremented history of)108 218.4 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
-204 Q F2(NULL)2.5 E F0(pointer)2.5 E(.)-.55 E F2(Sear)87 232.8 Q
-(ching the History List)-.18 E F0 .005(These functions allo)108 244.8 R
+230.4 Q F2(NULL)2.5 E F1(pointer)2.5 E(.)-.55 E F2(Sear)87 247.2 Q
+(ching the History List)-.18 E F1 .005(These functions allo)108 259.2 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 256.8 R 1.452(ard and backw)-.1 F 1.451
+(performed both forw)108 271.2 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 F1(anc)3.951 E(hor)-.15 E(ed)-.37 E F0(,)A
-(meaning that the string must match at the be)108 268.8 Q
-(ginning of the history entry)-.15 E(.)-.65 E F1(int)108 292.8 Q F2
-(history_sear)2.5 E(ch)-.18 E F0(\()4.166 E F1(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 304.8 R F1(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 F1
-(dir)2.656 E(ection)-.37 E F0 .156(is less than 0, then the search)2.656
-F .802(is through pre)108 316.8 R .802
+6.451 F F0(anc)3.951 E(hor)-.15 E(ed)-.37 E F1(,)A
+(meaning that the string must match at the be)108 283.2 Q
+(ginning of the history entry)-.15 E(.)-.65 E F0(int)108 300 Q F2
+(history_sear)2.5 E(ch)-.18 E F1(\()4.166 E F0(const c)A(har *string)
+-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)-.37 E F1(\))1.666 E .155
+(Search the history for)108 312 R F0(string)2.655 E F1 2.656(,s)C .156
+(tarting at the current history of)-2.656 F 2.656(fset. If)-.25 F F0
+(dir)2.656 E(ection)-.37 E F1 .156(is less than 0, then the search)2.656
+F .802(is through pre)108 324 R .802
 (vious entries, otherwise through subsequent entries.)-.25 F(If)5.801 E
-F1(string)3.301 E F0 .801(is found, then the current his-)3.301 F .064
-(tory inde)108 328.8 R 2.564(xi)-.15 G 2.564(ss)-2.564 G .064
+F0(string)3.301 E F1 .801(is found, then the current his-)3.301 F .064
+(tory inde)108 336 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 F1(string)2.565 E F0 -.1(wa)
-108 340.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 F1(int)108 364.8 Q F2
-(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F0(\()4.166 E F1(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 376.8 R F1(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 388.8 R 1.063(gin with)-.15 F F1(string)3.563 E F0 6.063
-(.I)C(f)-6.063 E F1(dir)3.563 E(ection)-.37 E F0 1.064
+(fset in the line of the entry where)-.25 F F0(string)2.565 E F1 -.1(wa)
+108 348 S 2.5(sf).1 G 2.5(ound. Otherwise,)-2.5 F
+(nothing is changed, and the function returns \2551.)2.5 E F0(int)108
+364.8 Q F2(history_sear)2.5 E(ch_pr)-.18 E(e\214x)-.18 E F1(\()4.166 E
+F0(const c)A(har *string)-.15 E 1.666(,i)-.1 G(nt dir)-1.666 E(ection)
+-.37 E F1(\))1.666 E .684(Search the history for)108 376.8 R F0(string)
+3.183 E F1 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 388.8 R 1.063(gin with)-.15 F F0(string)3.563 E F1
+6.063(.I)C(f)-6.063 E F0(dir)3.563 E(ection)-.37 E F1 1.064
 (is less than 0, then the search is through pre)3.563 F 1.064
 (vious entries, otherwise)-.25 F .34(through subsequent entries.)108
-400.8 R(If)5.34 E F1(string)2.84 E F0 .34
+400.8 R(If)5.34 E F0(string)2.84 E F1 .34
 (is found, then the current history inde)2.84 F 2.84(xi)-.15 G 2.84(ss)
 -2.84 G .34(et to that entry)-2.84 F 2.84(,a)-.65 G .34(nd the re-)-2.84
 F(turn v)108 412.8 Q(alue is 0.)-.25 E
-(Otherwise, nothing is changed, and a -1 is returned.)5 E F1(int)108
-436.8 Q F2(history_sear)2.5 E(ch_pos)-.18 E F0(\()4.166 E F1(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 448.8 R F1(string)
-3.103 E F0 .603(in the history list, starting at)3.103 F F1(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 F1(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 460.8 R .608(ard from)-.1 F F1(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 472.8 Q F1(string)2.5 E F0 -.1
-(wa)2.5 G 2.5(sf).1 G(ound, or -1 otherwise.)-2.5 E F2
-(Managing the History File)87 501.6 Q F0 .035(The History library can r\
-ead the history from and write it to a \214le.)108 513.6 R .036
+(Otherwise, nothing is changed, and the function returns \2551.)5 E F0
+(int)108 429.6 Q F2(history_sear)2.5 E(ch_pos)-.18 E F1(\()4.166 E F0
+(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 F1(\))3.332 E .603(Search for)108 441.6 R
+F0(string)3.103 E F1 .603(in the history list, starting at)3.103 F F0
+(pos)3.104 E F1 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 F0(dir)3.104 E
+(ection)-.37 E F1 .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 453.6 R .608(ard from)
+-.1 F F0(pos)3.108 E F1 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 465.6 Q F0
+(string)2.5 E F1 -.1(wa)2.5 G 2.5(sf).1 G(ound, or \2551 otherwise.)-2.5
+E F2(Managing the History File)87 482.4 Q F1 .035(The History library c\
+an read the history from and write it to a \214le.)108 494.4 R .036
 (This section documents the functions for)5.035 F
-(managing a history \214le.)108 525.6 Q F1(int)108 549.6 Q F2 -.18(re)
-2.5 G(ad_history).18 E F0(\()4.166 E F1(const c)A(har *\214lename)-.15 E
-F0(\))1.666 E .151(Add the contents of)108 561.6 R F1(\214lename)2.651 E
-F0 .151(to the history list, a line at a time.)2.651 F(If)5.15 E F1
-(\214lename)2.65 E F0(is)2.65 E F2(NULL)2.65 E F0 2.65(,t)C .15
-(hen read from)-2.65 F F1(~/.his-)2.65 E(tory)108 573.6 Q F0 5(.R)C
-(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F1(int)108 597.6 Q F2 -.18(re)2.5 G(ad_history_range).18 E F0(\()4.166 E
-F1(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 609.6 R F1(\214lename)2.553 E F0 2.553(,a)C .053
+(managing a history \214le.)108 506.4 Q F0(int)108 523.2 Q F2 -.18(re)
+2.5 G(ad_history).18 E F1(\()4.166 E F0(const c)A(har *\214lename)-.15 E
+F1(\))1.666 E .052(Add the contents of)108 535.2 R F0(\214lename)2.552 E
+F1 .052(to the history list, a line at a time.)2.552 F(If)5.051 E F0
+(\214lename)2.551 E F1(is)2.551 E F2(NULL)2.551 E F1 2.551(,t)C .051
+(hen read from)-2.551 F F0(\001/.his-)2.551 E(tory)108 547.2 Q F1 5(.R)C
+(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F1(if not.)2.5 E
+F0(int)108 564 Q F2 -.18(re)2.5 G(ad_history_range).18 E F1(\()4.166 E
+F0(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 F1(\))3.332 E .052(Read a range of lines from)
+108 576 R F0(\214lename)2.553 E F1 2.553(,a)C .053
 (dding them to the history list.)-2.553 F .053(Start reading at line)
-5.053 F F1(fr)2.553 E(om)-.45 E F0 .053(and end at)2.553 F F1(to)2.553 E
-F0(.)A(If)108 621.6 Q F1(fr)2.889 E(om)-.45 E F0 .389
-(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F1(to)2.889 E
-F0 .389(is less than)2.889 F F1(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 F1
-(\214lename)2.888 E F0(is)108 633.6 Q F2(NULL)2.5 E F0 2.5(,t)C
-(hen read from)-2.5 E F1(~/.history)2.5 E F0 5(.R)C
-(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F0(if not.)2.5 E
-F1(int)108 657.6 Q F2(write_history)2.5 E F0(\()4.166 E F1(const c)A
-(har *\214lename)-.15 E F0(\))1.666 E .961(Write the current history to)
-108 669.6 R F1(\214lename)3.461 E F0 3.461(,o)C -.15(ve)-3.611 G
-(rwriting).15 E F1(\214lename)3.461 E F0 .961(if necessary)3.461 F 5.961
-(.I)-.65 G(f)-5.961 E F1(\214lename)3.462 E F0(is)3.462 E F2(NULL)3.462
-E F0 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 681.6 Q
-F1(~/.history)2.5 E F0 5(.R)C(eturns 0 on success, or)-5 E F2(err)2.5 E
-(no)-.15 E F0(on a read or write error)2.5 E(.)-.55 E F1(int)108 717.6 Q
-F2(append_history)2.5 E F0(\()4.166 E F1(int nelements,)A(const c)1.666
-E(har *\214lename)-.15 E F0(\))1.666 E .839(Append the last)108 729.6 R
-F1(nelements)3.339 E F0 .839(of the history list to)3.339 F F1
-(\214lename)3.339 E F0 5.839(.I)C(f)-5.839 E F1(\214lename)3.339 E F0
-(is)3.339 E F2(NULL)3.339 E F0 3.339(,t)C .838(hen append to)-3.339 F F1
-(~/.history)3.338 E F0(.)A(GNU History 8.1)72 768 Q(2020 July 17)139.005
-E(5)203.165 E 0 Cg EP
+5.053 F F0(fr)2.553 E(om)-.45 E F1 .053(and end at)2.553 F F0(to)2.553 E
+F1(.)A(If)108 588 Q F0(fr)2.889 E(om)-.45 E F1 .389
+(is zero, start at the be)2.889 F 2.889(ginning. If)-.15 F F0(to)2.889 E
+F1 .389(is less than)2.889 F F0(fr)2.889 E(om)-.45 E F1 2.889(,t)C .388
+(hen read until the end of the \214le.)-2.889 F(If)5.388 E F0
+(\214lename)2.888 E F1(is)108 600 Q F2(NULL)2.5 E F1 2.5(,t)C
+(hen read from)-2.5 E F0(\001/.history)2.5 E F1 5(.R)C
+(eturns 0 if successful, or)-5 E F2(err)2.5 E(no)-.15 E F1(if not.)2.5 E
+F0(int)108 616.8 Q F2(write_history)2.5 E F1(\()4.166 E F0(const c)A
+(har *\214lename)-.15 E F1(\))1.666 E .961(Write the current history to)
+108 628.8 R F0(\214lename)3.461 E F1 3.461(,o)C -.15(ve)-3.611 G
+(rwriting).15 E F0(\214lename)3.461 E F1 .961(if necessary)3.461 F 5.961
+(.I)-.65 G(f)-5.961 E F0(\214lename)3.462 E F1(is)3.462 E F2(NULL)3.462
+E F1 3.462(,t)C .962(hen write)-3.462 F(the history list to)108 640.8 Q
+F0(\001/.history)2.5 E F1 5(.R)C(eturns 0 on success, or)-5 E F2(err)2.5
+E(no)-.15 E F1(on a read or write error)2.5 E(.)-.55 E F0(int)108 657.6
+Q F2(append_history)2.5 E F1(\()4.166 E F0(int nelements,)A(const c)
+1.666 E(har *\214lename)-.15 E F1(\))1.666 E .717(Append the last)108
+669.6 R F0(nelements)3.217 E F1 .717(of the history list to)3.217 F F0
+(\214lename)3.216 E F1 5.716(.I)C(f)-5.716 E F0(\214lename)3.216 E F1
+(is)3.216 E F2(NULL)3.216 E F1 3.216(,t)C .716(hen append to)-3.216 F F0
+(\001/.history)3.216 E F1(.)A(Returns 0 on success, or)108 681.6 Q F2
+(err)2.5 E(no)-.15 E F1(on a read or write error)2.5 E(.)-.55 E F0(int)
+108 698.4 Q F2(history_truncate_\214le)2.5 E F1(\()4.166 E F0(const c)A
+(har *\214lename)-.15 E 1.666(,i)-.1 G(nt nlines)-1.666 E F1(\))1.666 E
+-.35(Tr)108 710.4 S .258(uncate the history \214le).35 F F0(\214lename)
+2.758 E F1 2.758(,l)C(ea)-2.758 E .258(ving only the last)-.2 F F0
+(nlines)2.758 E F1 2.758(lines. If)2.758 F F0(\214lename)2.758 E F1(is)
+2.758 E F2(NULL)2.759 E F1 2.759(,t)C(hen)-2.759 E F0(\001/.history)
+2.759 E F1(is)2.759 E 2.5(truncated. Returns)108 722.4 R 2.5(0o)2.5 G
+2.5(ns)-2.5 G(uccess, or)-2.5 E F2(err)2.5 E(no)-.15 E F1(on f)2.5 E
+(ailure.)-.1 E(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(5)
+190.955 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
-(Returns 0 on success, or)108 84 Q/F1 10/Times-Bold@0 SF(err)2.5 E(no)
--.15 E F0(on a read or write error)2.5 E(.)-.55 E/F2 10/Times-Italic@0
-SF(int)108 108 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 120 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 132 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 F1(History Expansion)87 160.8 Q F0
-(These functions implement history e)108 172.8 Q(xpansion.)-.15 E F2
-(int)108 196.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 208.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 220.8 Q .566(If no e)180 220.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 232.8 Q(xpansion character\);)
--.15 E(1)144 244.8 Q(if e)180 244.8 Q(xpansions did tak)-.15 E 2.5(ep)
--.1 G(lace;)-2.5 E(-1)144 256.8 Q(if there w)180 256.8 Q
-(as an error in e)-.1 E(xpansion;)-.15 E(2)144 268.8 Q
-(if the returned line should be displayed, b)180 268.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 occurred in e)108 280.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 304.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 316.8 R .262
+/F0 10/Times-Italic@0 SF(HIST)72.58 48 Q(OR)-.18 E(Y)-.18 E/F1 10
+/Times-Roman@0 SF 125.855(\(3\) Library)1.27 F(Functions Manual)2.5 E F0
+(HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E/F2 10/Times-Bold@0 SF
+(History Expansion)87 84 Q F1(These functions implement history e)108 96
+Q(xpansion.)-.15 E F0(int)108 112.8 Q F2(history_expand)2.5 E F1(\()
+4.166 E F0(const c)A(har *string)-.15 E 1.666(,c)-.1 G(har **output)
+-1.816 E F1(\))1.666 E(Expand)108 124.8 Q F0(string)2.5 E F1 2.5(,p)C
+(lacing the result into)-2.5 E F0(output)2.5 E F1 2.5(,ap)C
+(ointer to a string.)-2.5 E(Returns:)5 E(0)144 136.8 Q .566(If no e)180
+136.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 148.8 Q
+(xpansion character\);)-.15 E(1)144 160.8 Q(if e)180 160.8 Q
+(xpansions did tak)-.15 E 2.5(ep)-.1 G(lace;)-2.5 E<ad31>144 172.8 Q
+(if there w)180 172.8 Q(as an error in e)-.1 E(xpansion;)-.15 E(2)144
+184.8 Q(if the returned line should be displayed, b)180 184.8 Q
+(ut not e)-.2 E -.15(xe)-.15 G(cuted, as with the).15 E F2(:p)2.5 E F1
+(modi\214er)2.5 E(.)-.55 E(If an error occurred in e)108 196.8 Q
+(xpansion, then)-.15 E F0(output)2.5 E F1(contains a descripti)2.5 E .3
+-.15(ve e)-.25 H(rror message.).15 E F0 -.15(ch)108 213.6 S(ar *).15 E
+F2(get_history_e)2.5 E -.1(ve)-.15 G(nt).1 E F1(\()4.166 E F0(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 F1(\))3.332 E .262(Returns the te)108 225.6 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 328.8 T
+(ginning at)-.15 F F0(string)2.763 E F1(+)2.763 E F0(*cinde)2.763 E(x)
+-.2 E F1(.)A F0(*cinde)5.263 E(x)-.2 E F1 .263
+(is modi\214ed to point to after the)2.763 F -2.15 -.25(ev e)108 237.6 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 340.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 352.8 Q F2 -.15(ch)108 376.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 388.8 R .239
-(ens parsed out of)-.1 F F2(string)2.739 E F0 2.739(,m)C .238
+(unction entry)-3.21 F(,)-.65 E F0(cinde)3.21 E(x)-.2 E F1 .709
+(points to the inde)3.21 F 3.209(xi)-.15 G(nto)-3.209 E F0(string)3.209
+E F1 .709(where the history e)3.209 F -.15(ve)-.25 G .709
+(nt speci\214ca-).15 F .691(tion be)108 249.6 R(gins.)-.15 E F0(qc)5.691
+E(har)-.15 E F1 .691(is a character that is allo)3.191 F .692
+(wed to end the e)-.25 F -.15(ve)-.25 G .692
+(nt speci\214cation in addition to the \231normal\232).15 F
+(terminating characters.)108 261.6 Q F0 -.15(ch)108 278.4 S(ar **).15 E
+F2(history_tok)2.5 E(enize)-.1 E F1(\()4.166 E F0(const c)A(har *string)
+-.15 E F1(\))1.666 E .239(Return an array of tok)108 290.4 R .239
+(ens parsed out of)-.1 F F0(string)2.739 E F1 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 400.8 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 302.4 Q F2
+(history_w)2.5 E(ord_delimiters)-.1 E F1 -.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 424.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 436.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 448.8 Q F1(history_tok)
-2.5 E(enize\(\))-.1 E F0(.)A F1(History V)87 477.6 Q(ariables)-.92 E F0
-(This section describes the e)108 489.6 Q(xternally-visible v)-.15 E
-(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F2
-(int)108 513.6 Q F1(history_base)2.5 E F0(The logical of)108 525.6 Q
-(fset of the \214rst entry in the history list.)-.25 E F2(int)108 549.6
-Q F1(history_length)2.5 E F0
-(The number of entries currently stored in the history list.)108 561.6 Q
-F2(int)108 585.6 Q F1(history_max_entries)2.5 E F0
-(The maximum number of history entries.)108 597.6 Q
-(This must be changed using)5 E F1(sti\215e_history\(\))2.5 E F0(.)A F2
-(int)108 621.6 Q F1(history_write_timestamps)2.5 E F0 .484
+(yed.)-.15 E F0 -.15(ch)108 319.2 S(ar *).15 E F2(history_ar)2.5 E
+(g_extract)-.1 E F1(\()4.166 E F0(int \214r)A -.834(st, int)-.1 F -.834
+(last, const)2.5 F -.15(ch)2.5 G(ar *string).15 E F1(\))3.332 E .025
+(Extract a string se)108 331.2 R .025(gment consisting of the)-.15 F F0
+<8c72>2.526 E(st)-.1 E F1(through)2.526 E F0(last)2.526 E F1(ar)2.526 E
+.026(guments present in)-.18 F F0(string)2.526 E F1 5.026(.A)C -.18(rg)
+-5.026 G .026(uments are split).18 F(using)108 343.2 Q F2(history_tok)
+2.5 E(enize\(\))-.1 E F1(.)A F2(History V)87 360 Q(ariables)-.92 E F1
+(This section describes the e)108 372 Q(xternally-visible v)-.15 E
+(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F0
+(int)108 388.8 Q F2(history_base)2.5 E F1(The logical of)108 400.8 Q
+(fset of the \214rst entry in the history list.)-.25 E F0(int)108 417.6
+Q F2(history_length)2.5 E F1
+(The number of entries currently stored in the history list.)108 429.6 Q
+F0(int)108 446.4 Q F2(history_max_entries)2.5 E F1
+(The maximum number of history entries.)108 458.4 Q
+(This must be changed using)5 E F2(sti\215e_history\(\))2.5 E F1(.)A F0
+(int)108 475.2 Q F2(history_write_timestamps)2.5 E F1 .484
 (If non-zero, timestamps are written to the history \214le, so the)108
-633.6 R 2.983(yc)-.15 G .483(an be preserv)-2.983 F .483
-(ed between sessions.)-.15 F .483(The de-)5.483 F -.1(fa)108 645.6 S
+487.2 R 2.983(yc)-.15 G .483(an be preserv)-2.983 F .483
+(ed between sessions.)-.15 F .483(The de-)5.483 F -.1(fa)108 499.2 S
 .994(ult v).1 F .994(alue is 0, meaning that timestamps are not sa)-.25
 F -.15(ve)-.2 G 3.494(d. The).15 F .994
-(current timestamp format uses the v)3.494 F .995(alue of)-.25 F F2
-(history_comment_c)108 657.6 Q(har)-.15 E F0 .051
+(current timestamp format uses the v)3.494 F .995(alue of)-.25 F F0
+(history_comment_c)108 511.2 Q(har)-.15 E F1 .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 669.6 Q
-(ault\), timestamps will not be written.)-.1 E F2 -.15(ch)108 693.6 S
-(ar).15 E F1(history_expansion_char)2.5 E F0
-(The character that introduces a history e)108 705.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 729.6 S(ar).15 E F1(history_subst_char)2.5 E F0(GNU History 8.1)72
-768 Q(2020 July 17)139.005 E(6)203.165 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
-(The character that in)108 84 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(sw).1 G
+H(alue)-.1 E(\(the def)108 523.2 Q
+(ault\), the history library will not write timestamps.)-.1 E F0 -.15
+(ch)108 540 S(ar).15 E F2(history_expansion_char)2.5 E F1
+(The character that introduces a history e)108 552 Q -.15(ve)-.25 G 2.5
+(nt. The).15 F(def)2.5 E(ault is)-.1 E F2(!)2.5 E F1 5(.S)C
+(etting this to 0 inhibits history e)-5 E(xpansion.)-.15 E F0 -.15(ch)
+108 568.8 S(ar).15 E F2(history_subst_char)2.5 E F1
+(The character that in)108 580.8 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 10/Times-Bold@0 SF(^)2.5 E F0(.)A/F2 10/Times-Italic@0
-SF -.15(ch)108 108 S(ar).15 E F1(history_comment_char)2.5 E F0 .116
-(During tok)108 120 R .117
+(ault is)-.1 E F2<00>2.5 E F1(.)A F0 -.15(ch)108 597.6 S(ar).15 E F2
+(history_comment_char)2.5 E F1 .116(During tok)108 609.6 R .117
 (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 132 R .276
+(acters up to a ne)108 621.6 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 144 Q(ault.)-.1 E F2 -.15(ch)108 168 S(ar *).15 E F1
-(history_w)2.5 E(ord_delimiters)-.1 E F0
-(The characters that separate tok)108 180 Q(ens for)-.1 E F1
-(history_tok)2.5 E(enize\(\))-.1 E F0 5(.T)C(he def)-5 E(ault v)-.1 E
-(alue is)-.25 E F1 2.5("\\)2.5 G(t\\n\(\)<>;&|")-2.5 E F0(.)A F2 -.15
-(ch)108 204 S(ar *).15 E F1(history_no_expand_chars)2.5 E F0 2.054
-(The list of characters which inhibit history e)108 216 R 2.054
-(xpansion if found immediately follo)-.15 F(wing)-.25 E F1
-(history_expan-)4.555 E(sion_char)108 228 Q F0 5(.T)C(he def)-5 E
-(ault is space, tab, ne)-.1 E(wline,)-.25 E F1(\\r)2.5 E F0 2.5(,a)C(nd)
--2.5 E F1(=)2.5 E F0(.)A F2 -.15(ch)108 252 S(ar *).15 E F1
-(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 264 R F2(:)2.901 E F0(and)2.901 E F2(?)2.901 E F0
-(in the case of a substring search.)108 276 Q(The def)5 E(ault is empty)
--.1 E(.)-.65 E F2(int)108 300 Q F1(history_quotes_inhibit_expansion)2.5
-E F0 .86(If non-zero, double-quoted w)108 312 R .861
-(ords are not scanned for the history e)-.1 F .861
-(xpansion character or the history com-)-.15 F(ment character)108 324 Q
-5(.T)-.55 G(he def)-5 E(ault v)-.1 E(alue is 0.)-.25 E F2(rl_lineb)108
-348 Q(uf_func_t *)-.2 E F1(history_inhibit_expansion_function)2.5 E F0
-.348(This should be set to the address of a function that tak)108 360 R
-.348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .347(uments: a).18 F F1
-.347(char *)2.847 F F0(\()2.847 E F2(string)A F0 2.847(\)a)C .347(nd an)
--2.847 F F1(int)2.847 E F0(inde)2.847 E(x)-.15 E .227
-(into that string \()108 372 R F2(i)A F0 2.727(\). It)B .227
+F(abled by def)108 633.6 Q(ault.)-.1 E F0 -.15(ch)108 650.4 S(ar *).15 E
+F2(history_w)2.5 E(ord_delimiters)-.1 E F1
+(The characters that separate tok)108 662.4 Q(ens for)-.1 E F2
+(history_tok)2.5 E(enize\(\))-.1 E F1 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 F1(.)A F0 -.15
+(ch)108 679.2 S(ar *).15 E F2(history_no_expand_chars)2.5 E F1 2.054
+(The list of characters which inhibit history e)108 691.2 R 2.054
+(xpansion if found immediately follo)-.15 F(wing)-.25 E F2
+(history_expan-)4.555 E(sion_char)108 703.2 Q F1 5(.T)C(he def)-5 E
+(ault is space, tab, ne)-.1 E(wline,)-.25 E F2(\\r)2.5 E F1 2.5(,a)C(nd)
+-2.5 E F2(=)2.5 E F1(.)A F0 -.15(ch)108 720 S(ar *).15 E F2
+(history_sear)2.5 E(ch_delimiter_chars)-.18 E F1(GNU History 8.3)72 768
+Q(2024 December 31)126.795 E(6)190.955 E 0 Cg EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Italic@0 SF(HIST)72.58 48 Q(OR)-.18 E(Y)-.18 E/F1 10
+/Times-Roman@0 SF 125.855(\(3\) Library)1.27 F(Functions Manual)2.5 E F0
+(HIST)128.935 E(OR)-.18 E(Y)-.18 E F1(\(3\))1.27 E .401(The list of add\
+itional characters which can delimit a history search string, in additi\
+on to space, tab,)108 84 R F0(:)2.901 E F1(and)2.901 E F0(?)2.901 E F1
+(in the case of a substring search.)108 96 Q(The def)5 E(ault is empty)
+-.1 E(.)-.65 E F0(int)108 112.8 Q/F2 10/Times-Bold@0 SF
+(history_quotes_inhibit_expansion)2.5 E F1 .185
+(If non-zero, the history e)108 124.8 R .185
+(xpansion code implements shell-lik)-.15 F 2.685(eq)-.1 G .186
+(uoting: single-quoted w)-2.685 F .186(ords are not scanned)-.1 F .837
+(for the history e)108 136.8 R .837
+(xpansion character or the history comment character)-.15 F 3.336(,a)-.4
+G .836(nd double-quoted w)-3.336 F .836(ords may ha)-.1 F -.15(ve)-.2 G
+.244(history e)108 148.8 R .245(xpansion performed, since single quotes\
+ are not special within double quotes.)-.15 F .245(The def)5.245 F .245
+(ault v)-.1 F .245(alue is)-.25 F(0.)108 160.8 Q F0(int)108 177.6 Q F2
+(history_quoting_state)2.5 E F1 .79(An application may set this v)108
+189.6 R .79(ariable to indicate that the current line being e)-.25 F .79
+(xpanded is subject to e)-.15 F(xisting)-.15 E 3.326(quoting. If)108
+201.6 R .826(set to)3.326 F F0<08>3.326 E F1 3.326(,h)C .826(istory e)
+-3.326 F .827
+(xpansion assumes that the line is single-quoted and inhibit e)-.15 F
+.827(xpansion until it)-.15 F .088
+(reads an unquoted closing single quote; if set to)108 213.6 R F0(")
+2.588 E F1 2.588(,h)C .088(istory e)-2.588 F .087
+(xpansion assumes the line is double quoted until)-.15 F .405
+(it reads an unquoted closing double quote.)108 225.6 R .406
+(If set to zero, the def)5.405 F .406(ault, history e)-.1 F .406
+(xpansion assumes the line is)-.15 F 1.436(not quoted and treats quote \
+characters within the line as described abo)108 237.6 R -.15(ve)-.15 G
+6.436(.T).15 G 1.436(his is only ef)-6.436 F(fecti)-.25 E 1.735 -.15
+(ve i)-.25 H(f).15 E F2(his-)3.935 E(tory_quotes_inhibit_expansion)108
+249.6 Q F1(is set.)2.5 E F0(rl_lineb)108 266.4 Q(uf_func_t *)-.2 E F2
+(history_inhibit_expansion_function)2.5 E F1 .347
+(This should be set to the address of a function that tak)108 278.4 R
+.348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .348(uments: a).18 F F2
+.348(char *)2.848 F F1(\()2.848 E F0(string)A F1 2.848(\)a)C .348(nd an)
+-2.848 F F2(int)2.848 E F1(inde)2.848 E(x)-.15 E .228
+(into that string \()108 290.4 R F0(i)A F1 2.728(\). 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 F2(string[i])2.728 E F0 .228
-(should not)2.728 F .019(be performed; zero if the e)108 384 R .019
+.227(xpansion starting at)-.15 F F0(string[i])2.727 E F1 .227
+(should not)2.727 F .019(be performed; zero if the e)108 302.4 R .019
 (xpansion should be done.)-.15 F .019
-(It is intended for use by applications lik)5.019 F(e)-.1 E F1(bash)
-2.519 E F0 .018(that use)2.519 F(the history e)108 396 Q
+(It is intended for use by applications lik)5.019 F(e)-.1 E F2(bash)
+2.519 E F1 .019(that use)2.519 F(the history e)108 314.4 Q
 (xpansion character for additional purposes.)-.15 E(By def)5 E
-(ault, this v)-.1 E(ariable is set to)-.25 E F1(NULL)2.5 E F0(.)A/F3
-10.95/Times-Bold@0 SF(FILES)72 412.8 Q F2(~/.history)109.666 424.8 Q F0
-(Def)144 436.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 453.6 Q F2
-(The Gnu Readline Libr)108 465.6 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 477.6 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 489.6 Q F0(\(1\))A F2 -.37(re)108 501.6 S(adline).37 E F0
-(\(3\))A F3 -.548(AU)72 518.4 S(THORS).548 E F0(Brian F)108 530.4 Q
+(ault, this v)-.1 E(ariable is set to)-.25 E F2(NULL)2.5 E F1(.)A/F3
+10.95/Times-Bold@0 SF(FILES)72 331.2 Q F0(\001/.history)109.666 343.2 Q
+F1(Def)144 355.2 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 372 Q F0
+(The Gnu Readline Libr)108 384 Q(ary)-.15 E F1 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F0(The Gnu History Libr)108 396 Q(ary)
+-.15 E F1 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F0
+(bash)108 408 Q F1(\(1\))A F0 -.37(re)108 420 S(adline).37 E F1(\(3\))A
+F3 -.548(AU)72 436.8 S(THORS).548 E F1(Brian F)108 448.8 Q
 (ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108
-542.4 Q(g)-.18 E(Chet Rame)108 559.2 Q 1.3 -.65(y, C)-.15 H(ase W).65 E
+460.8 Q(g)-.18 E(Chet Rame)108 477.6 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 571.2 Q(y@case.edu)-.15 E F3 -.11(BU)72 588 S 2.738(GR)
-.11 G(EPOR)-2.738 E(TS)-.438 E F0 .16(If you \214nd a b)108 600 R .16
-(ug in the)-.2 F F1(history)2.66 E F0(library)2.66 E 2.66(,y)-.65 G .16
+(chet.rame)108 489.6 Q(y@case.edu)-.15 E F3 -.11(BU)72 506.4 S 2.738(GR)
+.11 G(EPOR)-2.738 E(TS)-.438 E F1 .16(If you \214nd a b)108 518.4 R .16
+(ug in the)-.2 F F2(history)2.66 E F1(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 612 S
-(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F1
-(history)2.5 E F0(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .705
-(Once you ha)108 628.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
-640.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 652.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 F1
-(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(Comments and b)108 669.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
-(GNU History 8.1)72 768 Q(2020 July 17)139.005 E(7)203.165 E 0 Cg EP
+2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 530.4 S
+(ug, and that it appears in the latest v)-2.7 E(ersion of the)-.15 E F2
+(history)2.5 E F1(library that you ha)2.5 E -.15(ve)-.2 G(.).15 E .704
+(Once you ha)108 547.2 R 1.004 -.15(ve d)-.2 H .704(etermined that a b)
+.15 F .704(ug actually e)-.2 F .704(xists, mail a b)-.15 F .705
+(ug report to)-.2 F F0 -.2(bu)3.205 G(g\255r).2 E(eadline)-.37 E F1(@)A
+F0(gnu.or)A(g)-.37 E F1 5.705(.I)C 3.205(fy)-5.705 G(ou)-3.205 E(ha)108
+559.2 Q 1.679 -.15(ve a \214)-.2 H 1.379
+(x, you are welcome to mail that as well!).15 F 1.379
+(Suggestions and \231philosophical\232 b)6.379 F 1.378
+(ug reports may be)-.2 F(mailed to)108 571.2 Q F0 -.2(bu)2.5 G(g\255r).2
+E(eadline)-.37 E F1(@)A F0(gnu.or)A(g)-.37 E F1
+(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2(gnu.bash.b)2.5 E(ug)
+-.2 E F1(.)A(Comments and b)108 588 Q
+(ug reports concerning this manual page should be directed to)-.2 E F0
+-.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F1(.).25 E
+(GNU History 8.3)72 768 Q(2024 December 31)126.795 E(7)190.955 E 0 Cg EP
 %%Trailer
 end
 %%EOF
index da6417b48fda487e24853fab3d7176912ba89e10..82ff77c7a9a076569a705c1a86fd8fecad159161 100644 (file)
@@ -1,7 +1,7 @@
 @ignore
 This file documents the user interface to the GNU History library.
 
-Copyright (C) 1988-2022 Free Software Foundation, Inc.
+Copyright (C) 1988-2025 Free Software Foundation, Inc.
 Authored by Brian Fox and Chet Ramey.
 
 Permission is granted to make and distribute verbatim copies of this manual
@@ -29,37 +29,41 @@ into another language, under the above conditions for modified versions.
 This chapter describes how to interface programs that you write
 with the @sc{gnu} History Library.
 It should be considered a technical guide.
-For information on the interactive use of @sc{gnu} History, @pxref{Using
-History Interactively}.
+For information on the interactive use of @sc{gnu} History,
+@pxref{Using History Interactively}.
 
 @menu
 * Introduction to History::    What is the GNU History library for?
 * History Storage::            How information is stored.
 * History Functions::          Functions that you can use.
-* History Variables::          Variables that control behaviour.
+* History Variables::          Variables that control behavior.
 * History Programming Example::        Example of using the GNU History Library.
 @end menu
 
 @node Introduction to History
 @section Introduction to History
 
-Many programs read input from the user a line at a time.  The @sc{gnu}
-History library is able to keep track of those lines, associate arbitrary
-data with each line, and utilize information from previous lines in
-composing new ones. 
-
-A programmer using the History library has available functions
-for remembering lines on a history list, associating arbitrary data
-with a line, removing lines from the list, searching through the list
-for a line containing an arbitrary text string, and referencing any line
-in the list directly.  In addition, a history @dfn{expansion} function
+Many programs read input from the user a line at a time.
+The @sc{gnu} History library is able to keep track of those lines,
+associate arbitrary data with each line, and utilize information from
+previous lines when composing new ones. 
+
+A programmer using the History library can use functions
+to save commands on a history list,
+associate arbitrary data with history list entries,
+remove entries from the list,
+search through the list for a line containing an arbitrary text string,
+reference any entry in the list directly,
+and read and write the history list from and to a file.
+In addition, a history @dfn{expansion} function
 is available which provides for a consistent user interface across
 different programs.
 
-The user using programs written with the History library has the
+Someone using programs written with the History library has the
 benefit of a consistent user interface with a set of well-known
 commands for manipulating the text of previous lines and using that text
-in new commands.  The basic history manipulation commands are similar to
+in new commands.
+The basic history manipulation commands are similar to
 the history substitution provided by @code{csh}.
 
 The programmer can also use the Readline library, which
@@ -69,15 +73,16 @@ advantage of command line editing.
 Before declaring any functions using any functionality the History
 library provides in other code, an application writer should include
 the file @code{<readline/history.h>} in any file that uses the
-History library's features.  It supplies extern declarations for all
-of the library's public functions and variables, and declares all of
-the public data structures.
+History library's features.
+It supplies declarations for all of the library's
+public functions and variables,
+and declares all of the public data structures.
 
 @node History Storage
 @section History Storage
 
-The history list is an array of history entries.  A history entry is
-declared as follows:
+The history list is an array of history entries.
+A history entry is declared as follows:
 
 @example
 typedef void *histdata_t;
@@ -111,7 +116,7 @@ typedef struct _hist_state @{
 @end example
 
 If the flags member includes @code{HS_STIFLED}, the history has been
-stifled.
+stifled (limited to a maximum number of entries).
 
 @node History Functions
 @section History Functions
@@ -145,8 +150,8 @@ the state of the History library when you want to use the history
 functions in your program.
 
 @deftypefun void using_history (void)
-Begin a session in which the history functions might be used.  This
-initializes the interactive variables.
+Begin a session that will use the history functions.
+This initializes the interactive variables.
 @end deftypefun
 
 @deftypefun {HISTORY_STATE *} history_get_history_state (void)
@@ -164,11 +169,11 @@ These functions manage individual entries on the history list, or set
 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}.
+Add @var{string} to the end of the history list, and
+set the associated data field (if any) 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.
+@code{stifle_history()}, and the new number of history entries
+would exceed that maximum, this removes the oldest history entry.
 @end deftypefun
 
 @deftypefun void add_history_time (const char *string)
@@ -177,22 +182,25 @@ Change the time stamp associated with the most recent history entry to
 @end deftypefun
 
 @deftypefun {HIST_ENTRY *} remove_history (int which)
-Remove history entry at offset @var{which} from the history.  The
-removed element is returned so you can free the line, data,
+Remove the history entry at offset @var{which} from the history list.
+This returns the removed element so you can free the line, data,
 and containing structure.
+Since the data is private to your application, the History library
+doesn't know how to free it, if necessary.
 @end deftypefun
 
 @deftypefun {histdata_t} free_history_entry (HIST_ENTRY *histent)
 Free the history entry @var{histent} and any history library private
-data associated with it.  Returns the application-specific data
+data associated with it.
+Returns the application-specific data
 so the caller can dispose of it.
 @end deftypefun
 
 @deftypefun {HIST_ENTRY *} replace_history_entry (int which, const char *line, histdata_t data)
 Make the history entry at offset @var{which} have @var{line} and @var{data}.
 This returns the old entry so the caller can dispose of any
-application-specific data.  In the case
-of an invalid @var{which}, a @code{NULL} pointer is returned.
+application-specific data.
+In the case of an invalid @var{which}, this returns @code{NULL}.
 @end deftypefun
 
 @deftypefun void clear_history (void)
@@ -205,10 +213,10 @@ The history list will contain only @var{max} entries at a time.
 @end deftypefun
 
 @deftypefun int unstifle_history (void)
-Stop stifling the history.  This returns the previously-set
-maximum number of history entries (as set by @code{stifle_history()}).
-The value is positive if the history was
-stifled, negative if it wasn't.
+Stop stifling the history.
+This returns the previously-set maximum number of history
+entries (as set by @code{stifle_history()}).
+The value is positive if the history was stifled, negative if it wasn't.
 @end deftypefun
 
 @deftypefun int history_is_stifled (void)
@@ -223,18 +231,19 @@ individual list entries.
 
 @deftypefun {HIST_ENTRY **} history_list (void)
 Return a @code{NULL} terminated array of @code{HIST_ENTRY *} which is the
-current input history.  Element 0 of this list is the beginning of time.
-If there is no history, return @code{NULL}.
+current input history.
+Element 0 of this list is the beginning of time.
+Return @code{NULL} if there is no history.
 @end deftypefun
 
 @deftypefun int where_history (void)
-Returns the offset of the current history element.
+Return the offset of the current history entry.
 @end deftypefun
 
 @deftypefun {HIST_ENTRY *} current_history (void)
 Return the history entry at the current position, as determined by
-@code{where_history()}.  If there is no entry there, return a @code{NULL}
-pointer.
+@code{where_history()}.
+If there is no entry there, return @code{NULL}.
 @end deftypefun
 
 @deftypefun {HIST_ENTRY *} history_get (int offset)
@@ -243,7 +252,7 @@ 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.
+range, return @code{NULL}.
 @end deftypefun
 
 @deftypefun time_t history_get_time (HIST_ENTRY *entry)
@@ -272,8 +281,8 @@ than the number of history entries.
 
 @deftypefun {HIST_ENTRY *} previous_history (void)
 Back up the current history offset to the previous history entry, and
-return a pointer to that entry.  If there is no previous entry, return
-a @code{NULL} pointer.
+return a pointer to that entry.
+If there is no previous entry, return @code{NULL}.
 @end deftypefun
 
 @deftypefun {HIST_ENTRY *} next_history (void)
@@ -281,45 +290,51 @@ If the current history offset refers to a valid history entry,
 increment the current history offset.
 If the possibly-incremented history offset refers to a valid history
 entry, return a pointer to that entry;
-otherwise, return a @code{BNULL} pointer.
+otherwise, return @code{NULL}.
 @end deftypefun
 
 @node Searching the History List
 @subsection Searching the History List
 @cindex History Searching
 
-These functions allow searching of the history list for entries containing
-a specific string.  Searching may be performed both forward and backward
-from the current history position.  The search may be @dfn{anchored},
-meaning that the string must match at the beginning of the history entry.
+These functions search the history list for entries containing
+a specific string.
+Searching may be performed both forward and backward
+from the current history position.
+The search may be @dfn{anchored},
+meaning that the string must match at the beginning of a history entry.
 @cindex anchored search
 
 @deftypefun int history_search (const char *string, int direction)
 Search the history for @var{string}, starting at the current history offset.
 If @var{direction} is less than 0, then the search is through
 previous entries, otherwise through subsequent entries.
-If @var{string} is found, then
-the current history index is set to that history entry, and the value
-returned is the offset in the line of the entry where
-@var{string} was found.  Otherwise, nothing is changed, and a -1 is
-returned.
+If @var{string} is found, then the current history index is set to
+that history entry, and @code{history_search}
+returns the offset in the line of the entry where
+@var{string} was found.
+Otherwise, nothing is changed, and this returns -1.
 @end deftypefun
 
 @deftypefun int history_search_prefix (const char *string, int direction)
 Search the history for @var{string}, starting at the current history
-offset.  The search is anchored: matching lines must begin with
-@var{string}.  If @var{direction} is less than 0, then the search is
+offset.
+The search is anchored: matching history entries must begin with @var{string}.
+If @var{direction} is less than 0, then the search is
 through previous entries, otherwise through subsequent entries.
-If @var{string} is found, then the
-current history index is set to that entry, and the return value is 0. 
-Otherwise, nothing is changed, and a -1 is returned
+If @var{string} is found, then the current history index is set to
+that entry, and the return value is 0. 
+Otherwise, nothing is changed, and this returns -1
 @end deftypefun
 
 @deftypefun int history_search_pos (const char *string, int direction, int pos)
 Search for @var{string} in the history list, starting at @var{pos}, an
-absolute index into the list.  If @var{direction} is negative, the search
-proceeds backward from @var{pos}, otherwise forward.  Returns the absolute
-index of the history element where @var{string} was found, or -1 otherwise.
+absolute index into the list.
+If @var{direction} is negative, the search
+proceeds backward from @var{pos}, otherwise forward.
+Returns the index in the history list
+of the history element where @var{string} was
+found, or -1 otherwise.
 @end deftypefun
 
 @node Managing the History File
@@ -329,23 +344,34 @@ The History library can read the history from and write it to a file.
 This section documents the functions for managing a history file.
 
 @deftypefun int read_history (const char *filename)
-Add the contents of @var{filename} to the history list, a line at a time.
-If @var{filename} is @code{NULL}, then read from @file{~/.history}.
+Add the contents of @var{filename} to the history list, one entry
+at a time.
+If @var{filename} is @code{NULL}, this reads from @file{~/.history},
+if it exists.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
 Returns 0 if successful, or @code{errno} if not.
 @end deftypefun
 
 @deftypefun int read_history_range (const char *filename, int from, int to)
 Read a range of lines from @var{filename}, adding them to the history list.
 Start reading at line @var{from} and end at @var{to}.
-If @var{from} is zero, start at the beginning.  If @var{to} is less than
-@var{from}, then read until the end of the file.  If @var{filename} is
-@code{NULL}, then read from @file{~/.history}.  Returns 0 if successful,
-or @code{errno} if not.
+If @var{from} is zero, start at the beginning.
+If @var{to} is less than @var{from}, this reads until the end of the file.
+This attempts to determine whether the history file includes timestamp
+information, and assigns timestamps to the history entries it reads
+if so.
+If @var{filename} is @code{NULL}, this reads from @file{~/.history},
+if it exists.
+Returns 0 if successful, or @code{errno} if not.
 @end deftypefun
 
 @deftypefun int write_history (const char *filename)
 Write the current history to @var{filename}, overwriting @var{filename}
 if necessary.
+This writes timestamp information if the
+@code{history_write_timestamps} variable is set to a non-zero value.
 If @var{filename} is @code{NULL}, then write the history list to
 @file{~/.history}.
 Returns 0 on success, or @code{errno} on a read or write error.
@@ -353,6 +379,8 @@ Returns 0 on success, or @code{errno} on a read or write error.
 
 @deftypefun int append_history (int nelements, const char *filename)
 Append the last @var{nelements} of the history list to @var{filename}.
+This writes timestamp information if the
+@code{history_write_timestamps} variable is set to a non-zero value.
 If @var{filename} is @code{NULL}, then append to @file{~/.history}.
 Returns 0 on success, or @code{errno} on a read or write error.
 @end deftypefun
@@ -360,7 +388,7 @@ Returns 0 on success, or @code{errno} on a read or write error.
 @deftypefun int history_truncate_file (const char *filename, int nlines)
 Truncate the history file @var{filename}, leaving only the last
 @var{nlines} lines.
-If @var{filename} is @code{NULL}, then @file{~/.history} is truncated.
+If @var{filename} is @code{NULL}, this truncates @file{~/.history}.
 Returns 0 on success, or @code{errno} on failure.
 @end deftypefun
 
@@ -369,9 +397,10 @@ Returns 0 on success, or @code{errno} on failure.
 
 These functions implement history expansion.
 
-@deftypefun int history_expand (char *string, char **output)
+@deftypefun int history_expand (const char *string, char **output)
 Expand @var{string}, placing the result into @var{output}, a pointer
-to a string (@pxref{History Interaction}).  Returns:
+to a string (@pxref{History Interaction}).
+Returns:
 @table @code
 @item 0
 If no expansions took place (or, if the only change in
@@ -386,30 +415,33 @@ if the returned line should be displayed, but not executed,
 as with the @code{:p} modifier (@pxref{Modifiers}).
 @end table
 
-If an error occurred in expansion, then @var{output} contains a descriptive
-error message.
+If an error occurred during expansion,
+then @var{output} contains a descriptive error message.
 @end deftypefun
 
 @deftypefun {char *} get_history_event (const char *string, int *cindex, int qchar)
 Returns the text of the history event beginning at @var{string} +
-@var{*cindex}.  @var{*cindex} is modified to point to after the event
-specifier.  At function entry, @var{cindex} points to the index into
-@var{string} where the history event specification begins.  @var{qchar}
+@var{*cindex}.
+Modifies @var{*cindex} to point to after the event specifier.
+At function entry, @var{cindex} points to the index into @var{string}
+where the history event specification begins.
+@var{qchar}
 is a character that is allowed to end the event specification in addition
 to the ``normal'' terminating characters.
 @end deftypefun
 
 @deftypefun {char **} history_tokenize (const char *string)
 Return an array of tokens parsed out of @var{string}, much as the
-shell might.  The tokens are split on the characters in the
+shell might.
+The tokens are split on the characters in the
 @var{history_word_delimiters} variable,
 and shell quoting conventions are obeyed as described below.
 @end deftypefun
 
 @deftypefun {char *} history_arg_extract (int first, int last, const char *string)
 Extract a string segment consisting of the @var{first} through @var{last}
-arguments present in @var{string}.  Arguments are split using
-@code{history_tokenize}.
+arguments present in @var{string}.
+This splits @var{string} into arguments using @code{history_tokenize}.
 @end deftypefun
 
 @node History Variables
@@ -427,32 +459,35 @@ The number of entries currently stored in the history list.
 @end deftypevar
 
 @deftypevar int history_max_entries
-The maximum number of history entries.  This must be changed using
-@code{stifle_history()}.
+The maximum number of history entries.
+This must be changed using @code{stifle_history()}.
 @end deftypevar
 
 @deftypevar int history_write_timestamps
 If non-zero, timestamps are written to the history file, so they can be
-preserved between sessions.  The default value is 0, meaning that
-timestamps are not saved.
+preserved between sessions.
+The default value is 0, meaning that timestamps are not saved.
 
 The current timestamp format uses the value of @var{history_comment_char}
-to delimit timestamp entries in the history file.  If that variable does
-not have a value (the default), timestamps will not be written.
+to delimit timestamp entries in the history file.
+If that variable does not have a value (the default),
+the history library will not write timestamps.
 @end deftypevar
 
 @deftypevar char history_expansion_char
-The character that introduces a history event.  The default is @samp{!}.
+The character that introduces a history event.
+The default is @samp{!}.
 Setting this to 0 inhibits history expansion.
 @end deftypevar
 
 @deftypevar char history_subst_char
 The character that invokes word substitution if found at the start of
-a line.  The default is @samp{^}.
+a line.
+The default is @samp{^}.
 @end deftypevar
 
 @deftypevar char history_comment_char
-During tokenization, if this character is seen as the first character
+During tokenization, if this character appears as the first character
 of a word, then it and all subsequent characters up to a newline are
 ignored, suppressing history expansion for the remainder of the line.
 This is disabled by default.
@@ -466,13 +501,14 @@ The default value is @code{" \t\n()<>;&|"}.
 @deftypevar {char *} history_search_delimiter_chars
 The list of additional characters which can delimit a history search
 string, in addition to space, TAB, @samp{:} and @samp{?} in the case of
-a substring search.  The default is empty.
+a substring search.
+The default is empty.
 @end deftypevar
 
 @deftypevar {char *} history_no_expand_chars
 The list of characters which inhibit history expansion if found immediately
-following @var{history_expansion_char}.  The default is space, tab, newline,
-carriage return, and @samp{=}.
+following @var{history_expansion_char}.
+The default is space, tab, newline, carriage return, and @samp{=}.
 @end deftypevar
 
 @deftypevar int history_quotes_inhibit_expansion
@@ -486,14 +522,19 @@ The default value is 0.
 
 @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.
+being expanded is subject to existing quoting.
+If set to @samp{'},
+history expansion assumes that the line is single-quoted and
+inhibit expansion until it reads an unquoted closing single quote;
+if set to @samp{"},
+history expansion assumes the line is double quoted
+until it reads an unquoted closing double quote.
+If set to 0, the default,
+history expansion assumes the line is not quoted and
+treats quote characters within the line as described above.
 This is only effective if @var{history_quotes_inhibit_expansion} is set.
+This is intended for use by applications like Bash which allow
+quoted strings to span multiple lines.
 @end deftypevar
 
 @deftypevar {rl_linebuf_func_t *} history_inhibit_expansion_function
@@ -517,9 +558,8 @@ The following program demonstrates simple use of the @sc{gnu} History Library.
 #include <stdio.h>
 #include <readline/history.h>
 
-main (argc, argv)
-     int argc;
-     char **argv;
+int
+main (int argc, char **argv)
 @{
   char line[1024], *t;
   int len, done = 0;
index 9081baf8bd205c55091c00911fb9acb234857005..5bce1c3d2e6af394a756a451f0f2b601719f448c 100644 (file)
@@ -1,7 +1,7 @@
 @ignore
 This file documents the user interface to the GNU History library.
 
-Copyright (C) 1988--2022 Free Software Foundation, Inc.
+Copyright (C) 1988--2025 Free Software Foundation, Inc.
 Authored by Brian Fox and Chet Ramey.
 
 Permission is granted to make and distribute verbatim copies of this manual
@@ -38,9 +38,10 @@ For information on using the @sc{gnu} History Library in other programs,
 see the @sc{gnu} Readline Library Manual.
 @end ifset
 @ifclear BashFeatures
-This chapter describes how to use the @sc{gnu} History Library interactively,
-from a user's standpoint.  It should be considered a user's guide.  For
-information on using the @sc{gnu} History Library in your own programs,
+This chapter describes how to use the @sc{gnu} History Library
+interactively, from a user's standpoint.
+It should be considered a user's guide.
+For information on using the @sc{gnu} History Library in your own programs,
 @pxref{Programming with GNU History}.
 @end ifclear
 
@@ -70,59 +71,74 @@ is enabled (@pxref{The Set Builtin}),
 the shell provides access to the @dfn{command history},
 the list of commands previously typed.
 The value of the @env{HISTSIZE} shell variable is used as the
-number of commands to save in a history list.
-The text of the last @env{$HISTSIZE}
-commands (default 500) is saved.
+number of commands to save in a history list:
+the shell saves the text of the last @env{$HISTSIZE}
+commands (default 500).
 The shell stores each command in the history list prior to
 parameter and variable expansion
 but after history expansion is performed, subject to the
 values of the shell variables
 @env{HISTIGNORE} and @env{HISTCONTROL}.
 
-When the shell starts up, the history is initialized from the
+When the shell starts up, Bash initializes the history list
+by reading history entries from the
 file named by the @env{HISTFILE} variable (default @file{~/.bash_history}).
-The file named by the value of @env{HISTFILE} is truncated, if
-necessary, to contain no more than the number of lines specified by
-the value of the @env{HISTFILESIZE} variable.
-When a shell with history enabled exits, the last
-@env{$HISTSIZE} lines are copied from the history list to the file
+This is referred to as the @dfn{history file}.
+The history file is truncated, if necessary,
+to contain no more than the number of history entries
+specified by the value of the @env{HISTFILESIZE} variable.
+If @env{HISTFILESIZE} is unset, or set to null, a non-numeric value,
+or a numeric value less than zero, the history file is not truncated.
+
+When the history file is read,
+lines beginning with the history comment character followed immediately
+by a digit are interpreted as timestamps for the following history entry.
+These timestamps are optionally displayed depending on the value of the
+@env{HISTTIMEFORMAT} variable (@pxref{Bash Variables}).
+When present, history timestamps delimit history entries, making
+multi-line entries possible.
+
+When a shell with history enabled exits, Bash copies the last
+@env{$HISTSIZE} entries from the history list to the file
 named by @env{$HISTFILE}.
 If the @code{histappend} shell option is set (@pxref{Bash Builtins}),
-the lines are appended to the history file,
-otherwise the history file is overwritten.
-If @env{HISTFILE}
-is unset, or if the history file is unwritable, the history is not saved.
-After saving the history, the history file is truncated
-to contain no more than @env{$HISTFILESIZE} lines.
-If @env{HISTFILESIZE} is unset, or set to null, a non-numeric value, or
-a numeric value less than zero, the history file is not truncated.
-
-If the @env{HISTTIMEFORMAT} is set, the time stamp information
-associated with each history entry is written to the history file,
-marked with the history comment character.
-When the history file is read, lines beginning with the history
-comment character followed immediately by a digit are interpreted
-as timestamps for the following history entry.
-
-The builtin command @code{fc} may be used to list or edit and re-execute
-a portion of the history list.
-The @code{history} builtin may be used to display or modify the history
-list and manipulate the history file.
+Bash appends the entries to the history file,
+otherwise it overwrites the history file.
+If @env{HISTFILE} is unset or null,
+or if the history file is unwritable, the history is not saved.
+After saving the history, Bash truncates the history file
+to contain no more than @env{$HISTFILESIZE}
+lines as described above.
+
+If the @env{HISTTIMEFORMAT}
+variable is set, the shell writes the timestamp information
+associated with each history entry to the history file,
+marked with the history comment character,
+so timestamps are preserved across shell sessions.
+When the history file is read, lines beginning with
+the history comment character followed immediately by a digit are
+interpreted as timestamps for the following history entry.
+As above, when using @env{HISTTIMEFORMAT},
+the timestamps delimit multi-line history entries.
+
+The @code{fc} builtin command will list or edit and re-execute a
+portion of the history list.
+The @code{history} builtin can display or
+modify the history list and manipulate the history file.
 When using command-line editing, search commands
 are available in each editing mode that provide access to the
-history list (@pxref{Commands For History}).
-
-The shell allows control over which commands are saved on the history
-list.  The @env{HISTCONTROL} and @env{HISTIGNORE}
-variables may be set to cause the shell to save only a subset of the
-commands entered.
-The @code{cmdhist}
-shell option, if enabled, causes the shell to attempt to save each
+history list (@pxref{Commands For History}). 
+
+The shell allows control over which commands are saved on the history list. 
+The @env{HISTCONTROL} and @env{HISTIGNORE}
+variables are used to save only a subset of the commands entered.
+If the @code{cmdhist} shell option is
+enabled, the shell attempts to save each
 line of a multi-line command in the same history entry, adding
 semicolons where necessary to preserve syntactic correctness.
 The @code{lithist}
-shell option causes the shell to save the command with embedded newlines
-instead of semicolons.
+shell option modifies @code{cmdhist} by saving
+the command with embedded newlines instead of semicolons.
 The @code{shopt} builtin is used to set these options.
 @xref{The Shopt Builtin}, for a description of @code{shopt}.
 
@@ -142,9 +158,9 @@ history list and history file.
 @code{fc -s [@var{pat}=@var{rep}] [@var{command}]}
 @end example
 
-The first form selects a range of commands from @var{first} to
-@var{last} from the history list and displays or edits and re-executes
-them.
+The first form selects a range of commands from
+@var{first} to @var{last}
+from the history list and displays or edits and re-executes them.
 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
@@ -157,26 +173,44 @@ command);
 otherwise 0 is equivalent to -1 and -0 is invalid.
 
 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
-reverses the order of the listing.  Otherwise, the editor given by
-@var{ename} is invoked on a file containing those commands.  If
-@var{ename} is not given, the value of the following variable expansion
-is used: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}.  This says to use the
+the current command for listing and to @var{first} otherwise.
+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 supplied,
+the commands are listed on standard output.
+The @option{-n} flag suppresses the command numbers when listing.
+The @option{-r} flag reverses the order of the listing.
+
+Otherwise, @code{fc} invokes the editor named by
+@var{ename} on a file containing those commands.
+If @var{ename} is not supplied, @code{fc} uses the value of the following
+variable expansion: @code{$@{FCEDIT:-$@{EDITOR:-vi@}@}}.
+This says to use the
 value of the @env{FCEDIT} variable if set, or the value of the
 @env{EDITOR} variable if that is set, or @code{vi} if neither is set.
-When editing is complete, the edited commands are echoed and executed.
+When editing is complete, @code{fc} reads the file of edited commands
+and echoes and executes them.
 
-In the second form, @var{command} is re-executed after each instance
-of @var{pat} in the selected command is replaced by @var{rep}.
+In the second form, @code{fc} re-executes @var{command} after
+replacing each instance of @var{pat} in the selected command with @var{rep}.
 @var{command} is interpreted the same as @var{first} above.
 
 A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
 that typing @samp{r cc} runs the last command beginning with @code{cc}
 and typing @samp{r} re-executes the last command (@pxref{Aliases}).
 
+If the first form is used, the return value is zero unless an invalid
+option is encountered or @var{first} or @var{last}
+specify history lines out of range.
+When editing and re-executing a file of commands,
+the return value is the value of the last command executed
+or failure if an error occurs with the temporary file.
+If the second form is used, the return status
+is that of the re-executed command, unless
+@var{command} does not specify a valid history entry, in which case
+@code{fc} returns a non-zero status.
+
 @item history
 @btindex history
 @example
@@ -188,21 +222,21 @@ history [-anrw] [@var{filename}]
 history -ps @var{arg}
 @end example
 
-With no options, display the history list with line numbers.
-Lines prefixed with a @samp{*} have been modified.
-An argument of @var{n} lists only the last @var{n} lines.
+With no options, display the history list with numbers.
+Entries prefixed with a @samp{*} have been modified.
+An argument of @var{n} lists only the last @var{n} entries.
 If the shell variable @env{HISTTIMEFORMAT} is set and not null,
-it is used as a format string for @var{strftime} to display
+it is used as a format string for @code{strftime}(3) to display
 the time stamp associated with each displayed history entry.
-No intervening blank is printed between the formatted time stamp
-and the history line.
+If @code{history} uses @env{HISTTIMEFORMAT}, it does not print an
+intervening space between the formatted time stamp and the history entry.
 
 Options, if supplied, have the following meanings:
 
 @table @code
 @item -c
-Clear the history list.  This may be combined
-with the other options to replace the history list completely.
+Clear the history list.
+This may be combined with the other options to replace the history list.
 
 @item -d @var{offset}
 Delete the history entry at position @var{offset}.
@@ -220,36 +254,46 @@ 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.
+Append the "new" history lines to the history file.
 These are history lines entered since the beginning of the current
 Bash session, but not already appended to the history file.
 
 @item -n
-Append the history lines not already read from the history file
-to the current history list.  These are lines appended to the history
+Read the history lines not already read from the history file
+and add them to the current history list.
+These are lines appended to the history
 file since the beginning of the current Bash session.
 
 @item -r
-Read the history file and append its contents to
-the history list.
+Read the history file and append its contents to the history list.
 
 @item -w
-Write out the current history list to the history file.
+Write the current history list to the history file, overwriting
+the history file.
 
 @item -p
 Perform history substitution on the @var{arg}s and display the result
 on the standard output, without storing the results in the history list.
 
 @item -s
-The @var{arg}s are added to the end of
-the history list as a single entry.
+Add the @var{arg}s to the end of the history list as a single entry.
+The last command in the history list is removed before adding the @var{arg}s.
 
 @end table
 
 If a @var{filename} argument is supplied
-when any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options
-is used, Bash uses @var{filename} as the history file.
-If not, then the value of the @env{HISTFILE} variable is used.
+with any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n}
+options, Bash uses @var{filename} as the history file.
+If not, it uses the value of the @env{HISTFILE} variable.
+If @env{HISTFILE} is unset or null, these options have no effect.
+
+If the @env{HISTTIMEFORMAT}
+variable is set, @code{history} writes the time stamp information
+associated with each history entry to the history file,  
+marked with the history comment character as described above.
+When the history file is read, lines beginning with the history
+comment character followed immediately by a digit are interpreted
+as timestamps for the following history entry.
 
 The return value is 0 unless an invalid option is encountered, an
 error occurs while reading or writing the history file, an invalid
@@ -263,9 +307,25 @@ history expansion supplied as an argument to @option{-p} fails.
 @section History Expansion
 @cindex history expansion
 
-The History library provides a history expansion feature that is similar
-to the history expansion provided by @code{csh}.  This section
-describes the syntax used to manipulate the history information.
+@ifset BashFeatures
+The shell
+@end ifset
+@ifclear BashFeatures
+The History library
+@end ifclear
+provides a history expansion feature that is similar
+to the history expansion provided by @code{csh}
+(also referred to as history substitution where appropriate).
+This section describes the syntax used to manipulate the
+history information.
+
+@ifset BashFeatures
+History expansion is enabled by default for interactive shells,
+and can be disabled using the @option{+H} option to the @code{set}
+builtin command (@pxref{The Set Builtin}).
+Non-interactive shells do not perform history expansion by default,
+but it can be enabled with @code{set -H}.
+@end ifset
 
 History expansions introduce words from the history list into
 the input stream, making it easy to repeat commands, insert the
@@ -275,21 +335,31 @@ 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, and is performed
-on each line individually.  Bash attempts to inform the history
+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
-which line from the history list should be used during substitution.
-The second is to select portions of that line for inclusion into the
-current one.  The line selected from the history is called the
-@dfn{event}, and the portions of that line that are acted upon are
-called @dfn{words}.  Various @dfn{modifiers} are available to manipulate
-the selected words.  The line is broken into words in the same fashion
-that Bash does, so that several words
-surrounded by quotes are considered one word.
+History expansion takes place in two parts.
+The first is to determine
+which entry from the history list should be used during substitution.
+The second is to select portions of that entry to include into the
+current one.
+
+The entry selected from the history is called the @dfn{event},
+and the portions of that entry that are acted upon are @dfn{words}.
+Various @dfn{modifiers} are available to manipulate the selected words.
+The entry is split into words in the same fashion that Bash
+does when reading input,
+so that several words surrounded by quotes are considered one word.
+The @dfn{event designator} selects the event, the optional
+@dfn{word designator} selects words from the event, and
+various optional @dfn{modifiers} are available to manipulate the
+selected words.
+
 History expansions are introduced by the appearance of the
 history expansion character, which is @samp{!} by default.
+History expansions may appear anywhere in the input, but do not nest.
 
 History expansion implements shell-like quoting conventions:
 a backslash can be used to remove the special handling for the next character;
@@ -305,22 +375,44 @@ 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. 
+
+Several characters inhibit history expansion if found immediately
+following the history expansion character, even if it is unquoted:
+space, tab, newline, carriage return, @samp{=},
+and the other shell metacharacters.
 @end ifset
 
+There is a special abbreviation for substitution, active when the
+@var{quick substitution} character
+@ifset BashFeatures
+(described above under @code{histchars})
+@end ifset
+@ifclear BashFeatures
+(default @samp{^})
+@end ifclear
+is the first character on the line.
+It selects the previous history list entry, using an event designator
+equivalent to @code{!!},
+and substitutes one string for another in that entry.
+It is described below (@pxref{Event Designators}).
+This is the only history expansion that does not begin with the history
+expansion character.
+
 @ifset BashFeatures
 Several shell options settable with the @code{shopt}
-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
+builtin (@pxref{The Shopt Builtin})
+modify history expansion behavior
+If the @code{histverify} shell option is enabled, and Readline
 is being used, history substitutions are not immediately passed to
 the shell parser.
 Instead, the expanded line is reloaded into the Readline
 editing buffer for further modification.
 If Readline is being used, and the @code{histreedit}
-shell option is enabled, a failed history expansion will be
+shell option is enabled, a failed history expansion is
 reloaded into the Readline editing buffer for correction.
+
 The @option{-p} option to the @code{history} builtin command
-may be used to see what a history expansion will do before using it.
+shows what a history expansion will do before using it.
 The @option{-s} option to the @code{history} builtin may be used to
 add commands to the end of the history list without actually executing
 them, so that they are available for subsequent recall.
@@ -328,9 +420,9 @@ This is most useful in conjunction with Readline.
 
 The shell allows control of the various characters used by the
 history expansion mechanism with the @code{histchars} variable,
-as explained above (@pxref{Bash Variables}).  The shell uses
-the history comment character to mark history timestamps when
-writing the history file.
+as explained above (@pxref{Bash Variables}).
+The shell uses the history comment character to mark history
+timestamps when writing the history file.
 @end ifset
 
 @menu
@@ -343,8 +435,10 @@ writing the history file.
 @subsection Event Designators
 @cindex event designators
 
-An event designator is a reference to a command line entry in the
-history list.
+An event designator is a reference to an entry in the history list.
+The event designator consists of the portion of the word beginning
+with the history expansion character, and ending with the word designator
+if one is present, or the end of the word.
 Unless the reference is absolute, events are relative to the current
 position in the history list.
 @cindex history events
@@ -354,8 +448,9 @@ position in the history list.
 @item @code{!}
 @ifset BashFeatures
 Start a history substitution, except when followed by a space, tab,
-the end of the line, @samp{=} or @samp{(} (when the
-@code{extglob} shell option is enabled using the @code{shopt} builtin).
+the end of the line, @samp{=},
+or the rest of the shell metacharacters defined above
+(@pxref{Definitions}).
 @end ifset
 @ifclear BashFeatures
 Start a history substitution, except when followed by a space, tab,
@@ -363,13 +458,14 @@ the end of the line, or @samp{=}.
 @end ifclear
 
 @item @code{!@var{n}}
-Refer to command line @var{n}.
+Refer to history list entry @var{n}.
 
 @item @code{!-@var{n}}
-Refer to the command @var{n} lines back.
+Refer to the history entry minus @var{n}.
 
 @item @code{!!}
-Refer to the previous command.  This is a synonym for @samp{!-1}.
+Refer to the previous entry.
+This is a synonym for @samp{!-1}.
 
 @item @code{!@var{string}}
 Refer to the most recent command
@@ -383,13 +479,14 @@ containing @var{string}.
 The trailing
 @samp{?} may be omitted if the @var{string} is followed immediately by
 a newline.
-If @var{string} is missing, the string from the most recent search is used;
+If @var{string} is missing, this uses
+the string from the most recent search;
 it is an error if there is no previous search string.
 
 @item @code{^@var{string1}^@var{string2}^}
-Quick Substitution.  Repeat the last command, replacing @var{string1}
-with @var{string2}.  Equivalent to
-@code{!!:s^@var{string1}^@var{string2}^}.
+Quick Substitution.
+Repeat the last command, replacing @var{string1} with @var{string2}.
+Equivalent to @code{!!:s^@var{string1}^@var{string2}^}.
 
 @item @code{!#}
 The entire command line typed so far.
@@ -400,23 +497,28 @@ The entire command line typed so far.
 @subsection Word Designators
 
 Word designators are used to select desired words from the event.
-A @samp{:} separates the event specification from the word designator.  It
-may be omitted if the word designator begins with a @samp{^}, @samp{$},
-@samp{*}, @samp{-}, or @samp{%}.  Words are numbered from the beginning
-of the line, with the first word being denoted by 0 (zero).  Words are
-inserted into the current line separated by single spaces.
+They are optional; if the word designator isn't supplied, the history
+expansion uses the entire event.
+A @samp{:} separates the event specification from the word designator.
+It may be omitted if the word designator begins with a @samp{^}, @samp{$},
+@samp{*}, @samp{-}, or @samp{%}.
+Words are numbered from the beginning of the line,
+with the first word being denoted by 0 (zero).
+That first word is usually the command word, and the arguments begin
+with the second word.
+Words are inserted into the current line separated by single spaces.
 
 @need 0.75
 For example,
 
 @table @code
 @item !!
-designates the preceding command.  When you type this, the preceding
-command is repeated in toto.
+designates the preceding command.
+When you type this, the preceding command is repeated in toto.
 
 @item !!:$
-designates the last argument of the preceding command.  This may be
-shortened to @code{!$}.
+designates the last word of the preceding command.
+This may be shortened to @code{!$}.
 
 @item !fi:2
 designates the second argument of the most recent command starting with
@@ -425,35 +527,42 @@ the letters @code{fi}.
 
 @need 0.75
 Here are the word designators:
+
 @table @code
 
 @item 0 (zero)
-The @code{0}th word.  For many applications, this is the command word.
+The @code{0}th word.
+For the shell, and many other, applications, this is the command word.
 
 @item @var{n}
 The @var{n}th word.
 
 @item ^
-The first argument; that is, word 1.
+The first argument: word 1.
 
 @item $
-The last argument.
+The last word.
+This is usually the last argument, but expands to the
+zeroth word if there is only one word in the line.
 
 @item %
 The first word matched by the most recent @samp{?@var{string}?} search,
 if the search string begins with a character that is part of a word.
+By default, searches begin at the end of each line and proceed to the
+beginning, so the first word matched is the one closest to the end of
+the line.
 
 @item @var{x}-@var{y}
 A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
 
 @item *
-All of the words, except the @code{0}th.  This is a synonym for @samp{1-$}.
+All of the words, except the @code{0}th.
+This is a synonym for @samp{1-$}.
 It is not an error to use @samp{*} if there is just one word in the event;
-the empty string is returned in that case.
+it expands to the empty string in that case.
 
 @item @var{x}*
-Abbreviates @samp{@var{x}-$}
+Abbreviates @samp{@var{x}-$}.
 
 @item @var{x}-
 Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
@@ -462,7 +571,7 @@ If @samp{x} is missing, it defaults to 0.
 @end table
 
 If a word designator is supplied without an event specification, the
-previous command is used as the event.
+previous command is used as the event, equivalent to @code{!!}. 
 
 @node Modifiers
 @subsection Modifiers
@@ -474,10 +583,10 @@ These modify, or edit, the word or words selected from the history event.
 @table @code
 
 @item h
-Remove a trailing pathname component, leaving only the head.
+Remove a trailing filename component, leaving only the head.
 
 @item t
-Remove all leading pathname components, leaving the tail.
+Remove all leading filename components, leaving the tail.
 
 @item r
 Remove a trailing suffix of the form @samp{.@var{suffix}}, leaving
@@ -496,8 +605,8 @@ Quote the substituted words, escaping further substitutions.
 @item x
 Quote the substituted words as with @samp{q},
 but break into words at spaces, tabs, and newlines.
-The @samp{q} and @samp{x} modifiers are mutually exclusive; the last one
-supplied is used.
+The @samp{q} and @samp{x} modifiers are mutually exclusive;
+expansion uses the last one supplied.
 @end ifset
 
 @item s/@var{old}/@var{new}/
@@ -505,9 +614,9 @@ Substitute @var{new} for the first occurrence of @var{old} in the
 event line.
 Any character may be used as the delimiter in place of @samp{/}.
 The delimiter may be quoted in @var{old} and @var{new}
-with a single backslash.  If @samp{&} appears in @var{new},
-it is replaced by @var{old}.  A single backslash will quote
-the @samp{&}.
+with a single backslash.
+If @samp{&} appears in @var{new}, it is replaced with @var{old}.
+A single backslash quotes the @samp{&} in @var{old} and @var{new}.
 If @var{old} is null, it is set to the last @var{old}
 substituted, or, if no previous history substitutions took place,
 the last @var{string}
@@ -522,8 +631,9 @@ Repeat the previous substitution.
 
 @item g
 @itemx a
-Cause changes to be applied over the entire event line.  Used in
-conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
+Cause changes to be applied over the entire event line.
+This is used in conjunction with
+@samp{s}, as in @code{gs/@var{old}/@var{new}/},
 or with @samp{&}.
 
 @item G
index b7c45a78d8cc4127b69518cd376a503cb2a6b353..703480ed172f938f522a4792304a2f71dfc32579 100644 (file)
-READLINE(3)                Library Functions Manual                READLINE(3)
+_\bR_\bE_\bA_\bD_\bL_\bI_\bN_\bE(3)                Library Functions Manual                _\bR_\bE_\bA_\bD_\bL_\bI_\bN_\bE(3)
 
-
-
-\e[1mNAME\e[0m
+N\bNA\bAM\bME\bE
        readline - get a line from a user with editing
 
-\e[1mSYNOPSIS\e[0m
-       \e[1m#include <stdio.h>\e[0m
-       \e[1m#include <readline/readline.h>\e[0m
-       \e[1m#include <readline/history.h>\e[0m
-
-       \e[4mchar\e[24m \e[4m*\e[0m
-       \e[1mreadline \e[22m(\e[4mconst\e[24m \e[4mchar\e[24m \e[4m*prompt\e[24m);
-
-\e[1mCOPYRIGHT\e[0m
-       Readline is Copyright (C) 1989-2020 Free Software Foundation,  Inc.
-
-\e[1mDESCRIPTION\e[0m
-       \e[1mreadline \e[22mwill read a line from the terminal and return it, using \e[1mprompt\e[0m
-       as a prompt.  If \e[1mprompt \e[22mis \e[1mNULL \e[22mor the empty string, no prompt  is  is-
-       sued.   The  line returned is allocated with \e[4mmalloc\e[24m(3); the caller must
-       free it when finished.  The line returned has  the  final  newline  re-
-       moved, so only the text of the line remains.
-
-       \e[1mreadline  \e[22moffers  editing  capabilities  while the user is entering the
-       line.  By default, the line editing commands are similar  to  those  of
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<s\bst\btd\bdi\bio\bo.\b.h\bh>\b>
+       #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<r\bre\bea\bad\bdl\bli\bin\bne\be/\b/r\bre\bea\bad\bdl\bli\bin\bne\be.\b.h\bh>\b>
+       #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<r\bre\bea\bad\bdl\bli\bin\bne\be/\b/h\bhi\bis\bst\bto\bor\bry\by.\b.h\bh>\b>
+
+       _\bc_\bh_\ba_\br _\b*
+       r\bre\bea\bad\bdl\bli\bin\bne\be (_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bp_\br_\bo_\bm_\bp_\bt);
+
+C\bCO\bOP\bPY\bYR\bRI\bIG\bGH\bHT\bT
+       Readline is Copyright (C) 1989-2025 Free Software Foundation,  Inc.
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       r\bre\bea\bad\bdl\bli\bin\bne\be  reads a line from the terminal and return it, using p\bpr\bro\bom\bmp\bpt\bt as
+       a prompt.  If p\bpr\bro\bom\bmp\bpt\bt is N\bNU\bUL\bLL\bL or the empty string, r\bre\bea\bad\bdl\bli\bin\bne\be does not is-
+       sue a prompt.  The line  returned  is  allocated  with  _\bm_\ba_\bl_\bl_\bo_\bc(3);  the
+       caller  must  free  it  when finished.  The line returned has the final
+       newline removed, so only the text of the line remains.  Since it's pos-
+       sible to enter characters into the line while quoting them  to  disable
+       any  r\bre\bea\bad\bdl\bli\bin\bne\be  editing function they might normally have, this line may
+       include embedded newlines and other special characters.
+
+       r\bre\bea\bad\bdl\bli\bin\bne\be offers editing capabilities while the  user  is  entering  the
+       line.   By  default,  the line editing commands are similar to those of
        emacs.  A vi-style line editing interface is also available.
 
-       This  manual  page describes only the most basic use of \e[1mreadline\e[22m.  Much
-       more functionality is available; see \e[4mThe\e[24m \e[4mGNU\e[24m \e[4mReadline\e[24m \e[4mLibrary\e[24m  and  \e[4mThe\e[0m
-       \e[4mGNU\e[24m \e[4mHistory\e[24m \e[4mLibrary\e[24m for additional information.
-
-\e[1mRETURN VALUE\e[0m
-       \e[1mreadline  \e[22mreturns  the text of the line read.  A blank line returns the
-       empty string.  If \e[1mEOF \e[22mis encountered while reading a line, and the line
-       is  empty,  \e[1mNULL \e[22mis returned.  If an \e[1mEOF \e[22mis read with a non-empty line,
-       it is treated as a newline.
-
-\e[1mNOTATION\e[0m
-       An Emacs-style notation is used to denote keystrokes.  Control keys are
-       denoted  by C-\e[4mkey\e[24m, e.g., C-n means Control-N.  Similarly, \e[4mmeta\e[24m keys are
-       denoted by M-\e[4mkey\e[24m, so M-x means Meta-X.  (On keyboards  without  a  \e[4mmeta\e[0m
-       key,  M-\e[4mx\e[24m means ESC \e[4mx\e[24m, i.e., press the Escape key then the \e[4mx\e[24m key.  This
-       makes ESC the \e[4mmeta\e[24m \e[4mprefix\e[24m.  The combination M-C-\e[4mx\e[24m means  ESC-Control-\e[4mx\e[24m,
-       or  press the Escape key then hold the Control key while pressing the \e[4mx\e[0m
-       key.)
-
-       Readline commands may be given numeric \e[4marguments\e[24m, which normally act as
-       a  repeat  count.   Sometimes,  however, it is the sign of the argument
-       that is significant.  Passing a negative argument  to  a  command  that
-       acts  in the forward direction (e.g., \e[1mkill-line\e[22m) causes that command to
-       act in a backward direction.  Commands whose  behavior  with  arguments
-       deviates from this are noted below.
-
-       When  a command is described as \e[4mkilling\e[24m text, the text deleted is saved
-       for possible future retrieval (\e[4myanking\e[24m).  The killed text is saved in a
-       \e[4mkill\e[24m \e[4mring\e[24m.  Consecutive kills cause the text to be accumulated into one
+       This manual page describes only the most basic use of  r\bre\bea\bad\bdl\bli\bin\bne\be.   Much
+       more  functionality  is available; see _\bT_\bh_\be _\bG_\bN_\bU _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by and _\bT_\bh_\be
+       _\bG_\bN_\bU _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by for additional information.
+
+R\bRE\bET\bTU\bUR\bRN\bN V\bVA\bAL\bLU\bUE\bE
+       r\bre\bea\bad\bdl\bli\bin\bne\be returns the text of the line read.  A blank line  returns  the
+       empty string.  If E\bEO\bOF\bF is encountered while reading a line, and the line
+       is  empty,  r\bre\bea\bad\bdl\bli\bin\bne\be  returns N\bNU\bUL\bLL\bL.  If an E\bEO\bOF\bF is read with a non-empty
+       line, it is treated as a newline.
+
+N\bNO\bOT\bTA\bAT\bTI\bIO\bON\bN
+       This section uses Emacs-style editing concepts and  uses  its  notation
+       for  keystrokes.   Control  keys  are denoted by C-_\bk_\be_\by, e.g., C-n means
+       Control-N.  Similarly, _\bm_\be_\bt_\ba keys are denoted by  M-_\bk_\be_\by,  so  M-x  means
+       Meta-X.  The Meta key is often labeled "Alt" or "Option".
+
+       On  keyboards  without a _\bM_\be_\bt_\ba key, M-_\bx means ESC _\bx, i.e., press and re-
+       lease the Escape key, then press and release the _\bx  key,  in  sequence.
+       This  makes  ESC the _\bm_\be_\bt_\ba _\bp_\br_\be_\bf_\bi_\bx.  The combination M-C-_\bx means ESC Con-
+       trol-_\bx: press and release the Escape key, then press and hold the  Con-
+       trol key while pressing the _\bx key, then release both.
+
+       On  some  keyboards, the Meta key modifier produces characters with the
+       eighth bit (0200) set.  You can use  the  e\ben\bna\bab\bbl\ble\be-\b-m\bme\bet\bta\ba-\b-k\bke\bey\by  variable  to
+       control  whether  or  not  it does this, if the keyboard allows it.  On
+       many others, the terminal or terminal emulator  converts  the  metafied
+       key  to a key sequence beginning with ESC as described in the preceding
+       paragraph.
+
+       If your _\bM_\be_\bt_\ba key produces a key sequence with the ESC meta prefix,  you
+       can  make M-_\bk_\be_\by key bindings you specify (see R\bRe\bea\bad\bdl\bli\bin\bne\be K\bKe\bey\by B\bBi\bin\bnd\bdi\bin\bng\bgs\bs be-
+       low) do the same thing by setting the f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx variable.
+
+       R\bRe\bea\bad\bdl\bli\bin\bne\be commands may be given numeric _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs, which normally act as
+       a repeat count.  Sometimes, however, it is the  sign  of  the  argument
+       that  is  significant.   Passing  a negative argument to a command that
+       acts in the forward direction (e.g., k\bki\bil\bll\bl-\b-l\bli\bin\bne\be) makes that command  act
+       in  a backward direction.  Commands whose behavior with arguments devi-
+       ates from this are noted below.
+
+       The _\bp_\bo_\bi_\bn_\bt is the current cursor position, and _\bm_\ba_\br_\bk refers  to  a  saved
+       cursor position.  The text between the point and mark is referred to as
+       the _\br_\be_\bg_\bi_\bo_\bn.
+
+       When  a command is described as _\bk_\bi_\bl_\bl_\bi_\bn_\bg text, the text deleted is saved
+       for possible future retrieval (_\by_\ba_\bn_\bk_\bi_\bn_\bg).  The killed text is saved in a
+       _\bk_\bi_\bl_\bl _\br_\bi_\bn_\bg.  Consecutive kills accumulate  the  deleted  text  into  one
        unit, which can be yanked all at once.  Commands which do not kill text
        separate the chunks of text on the kill ring.
 
-\e[1mINITIALIZATION FILE\e[0m
-       Readline  is  customized  by putting commands in an initialization file
-       (the \e[4minputrc\e[24m file).  The name of this file is taken from the  value  of
-       the  \e[1mINPUTRC  \e[22menvironment variable.  If that variable is unset, the de-
-       fault is \e[4m~/.inputrc\e[24m.  If that file  does not exist or cannot  be  read,
-       the  ultimate  default  is \e[4m/etc/inputrc\e[24m.  When a program which uses the
-       readline library starts up, the init file is read, and the key bindings
-       and  variables  are set.  There are only a few basic constructs allowed
-       in the readline init file.  Blank lines are ignored.   Lines  beginning
-       with  a  \e[1m# \e[22mare comments.  Lines beginning with a \e[1m$ \e[22mindicate conditional
-       constructs.  Other lines denote key  bindings  and  variable  settings.
-       Each program using this library may add its own commands and bindings.
+I\bIN\bNI\bIT\bTI\bIA\bAL\bLI\bIZ\bZA\bAT\bTI\bIO\bON\bN F\bFI\bIL\bLE\bE
+       R\bRe\bea\bad\bdl\bli\bin\bne\be  is  customized  by putting commands in an initialization file
+       (the _\bi_\bn_\bp_\bu_\bt_\br_\bc file).  The name of this file is taken from the  value  of
+       the  I\bIN\bNP\bPU\bUT\bTR\bRC\bC  environment variable.  If that variable is unset, the de-
+       fault is _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc.  If that file  does not exist or cannot  be  read,
+       r\bre\bea\bad\bdl\bli\bin\bne\be looks for _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc.  When a program that uses the r\bre\bea\bad\bdl\bli\bin\bne\be
+       library  starts up, r\bre\bea\bad\bdl\bli\bin\bne\be reads the initialization file and sets the
+       key bindings and variables found there, before reading any user input.
+
+       There are only a few basic constructs  allowed  in  the  inputrc  file.
+       Blank lines are ignored.  Lines beginning with a #\b# are comments.  Lines
+       beginning with a $\b$ indicate conditional constructs.  Other lines denote
+       key bindings and variable settings.
+
+       The  default  key-bindings  in  this  document may be changed using key
+       binding commands in the _\bi_\bn_\bp_\bu_\bt_\br_\bc file.  Programs that use  this  library
+       may add their own commands and bindings.
 
        For example, placing
 
@@ -78,105 +102,112 @@ READLINE(3)                Library Functions Manual                READLINE(3)
        or
               C-Meta-u: universal-argument
 
-       into  the \e[4minputrc\e[24m would make M-C-u execute the readline command \e[4muniver-\e[0m
-       \e[4msal-argument\e[24m.
-
-       The following symbolic character names are recognized while  processing
-       key  bindings:  \e[4mDEL\e[24m,  \e[4mESC\e[24m,  \e[4mESCAPE\e[24m,  \e[4mLFD\e[24m, \e[4mNEWLINE\e[24m, \e[4mRET\e[24m, \e[4mRETURN\e[24m, \e[4mRUBOUT\e[24m,
-       \e[4mSPACE\e[24m, \e[4mSPC\e[24m, and \e[4mTAB\e[24m.
-
-       In addition to command names, readline allows keys to  be  bound  to  a
-       string that is inserted when the key is pressed (a \e[4mmacro\e[24m).
-
-   \e[1mKey Bindings\e[0m
-       The  syntax for controlling key bindings in the \e[4minputrc\e[24m file is simple.
-       All that is required is the name of the command or the text of a  macro
-       and a key sequence to which it should be bound.  The name may be speci-
-       fied in one of two ways: as a symbolic key name, possibly with \e[4mMeta-\e[24m or
-       \e[4mControl-\e[24m prefixes, or as a key sequence.  The name and key sequence are
-       separated by a colon.  There can be no whitespace between the name  and
-       the colon.
-
-       When using the form \e[1mkeyname\e[22m:\e[4mfunction-name\e[24m or \e[4mmacro\e[24m, \e[4mkeyname\e[24m is the name
+       into  the _\bi_\bn_\bp_\bu_\bt_\br_\bc would make M-C-u execute the r\bre\bea\bad\bdl\bli\bin\bne\be command _\bu_\bn_\bi_\bv_\be_\br_\b-
+       _\bs_\ba_\bl_\b-_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt.
+
+       Key bindings may contain the following symbolic character  names:  _\bD_\bE_\bL,
+       _\bE_\bS_\bC,  _\bE_\bS_\bC_\bA_\bP_\bE,  _\bL_\bF_\bD,  _\bN_\bE_\bW_\bL_\bI_\bN_\bE,  _\bR_\bE_\bT, _\bR_\bE_\bT_\bU_\bR_\bN, _\bR_\bU_\bB_\bO_\bU_\bT (a destructive back-
+       space), _\bS_\bP_\bA_\bC_\bE, _\bS_\bP_\bC, and _\bT_\bA_\bB.
+
+       In addition to command names, r\bre\bea\bad\bdl\bli\bin\bne\be allows keys to  be  bound  to  a
+       string that is inserted when the key is pressed (a _\bm_\ba_\bc_\br_\bo).  The differ-
+       ence  between a macro and a command is that a macro is enclosed in sin-
+       gle or double quotes.
+
+   K\bKe\bey\by B\bBi\bin\bnd\bdi\bin\bng\bgs\bs
+       The syntax for controlling key bindings in the _\bi_\bn_\bp_\bu_\bt_\br_\bc file is  simple.
+       All  that is required is the name of the command or the text of a macro
+       and a key sequence to which it should be bound.  The key  sequence  may
+       be  specified in one of two ways: as a symbolic key name, possibly with
+       _\bM_\be_\bt_\ba_\b- or _\bC_\bo_\bn_\bt_\br_\bo_\bl_\b- prefixes, or as a key sequence  composed  of  one  or
+       more  characters  enclosed in double quotes.  The key sequence and name
+       are separated by a colon.  There can be no whitespace between the  name
+       and the colon.
+
+       When using the form k\bke\bey\byn\bna\bam\bme\be:_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be or _\bm_\ba_\bc_\br_\bo, _\bk_\be_\by_\bn_\ba_\bm_\be is the name
        of a key spelled out in English.  For example:
 
               Control-u: universal-argument
               Meta-Rubout: backward-kill-word
               Control-o: "> output"
 
-       In the above example, \e[4mC-u\e[24m is bound to the function  \e[1muniversal-argument\e[22m,
-       \e[4mM-DEL\e[24m  is bound to the function \e[1mbackward-kill-word\e[22m, and \e[4mC-o\e[24m is bound to
-       run the macro expressed on the right hand side (that is, to insert  the
-       text ``> output'' into the line).
+       In  the above example, _\bC_\b-_\bu is bound to the function u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt,
+       _\bM_\b-_\bD_\bE_\bL is bound to the function b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd, and _\bC_\b-_\bo is bound  to
+       run  the macro expressed on the right hand side (that is, to insert the
+       text "> output" into the line).
 
-       In  the  second  form,  \e[1m"keyseq"\e[22m:\e[4mfunction-name\e[24m or \e[4mmacro\e[24m, \e[1mkeyseq \e[22mdiffers
-       from \e[1mkeyname \e[22mabove in that strings denoting an entire key sequence  may
-       be  specified  by  placing the sequence within double quotes.  Some GNU
-       Emacs style key escapes can be used, as in the following  example,  but
-       the symbolic character names are not recognized.
+       In the second form, "\b"k\bke\bey\bys\bse\beq\bq"\b":_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be  or  _\bm_\ba_\bc_\br_\bo,  k\bke\bey\bys\bse\beq\bq  differs
+       from  k\bke\bey\byn\bna\bam\bme\be above in that strings denoting an entire key sequence may
+       be specified by placing the sequence within double  quotes.   Some  GNU
+       Emacs  style  key escapes can be used, as in the following example, but
+       none of the symbolic character names are recognized.
 
               "\C-u": universal-argument
               "\C-x\C-r": re-read-init-file
               "\e[11~": "Function Key 1"
 
-       In this example, \e[4mC-u\e[24m is again bound to the function \e[1muniversal-argument\e[22m.
-       \e[4mC-x\e[24m \e[4mC-r\e[24m is bound to the function \e[1mre-read-init-file\e[22m, and \e[4mESC\e[24m \e[4m[\e[24m \e[4m1\e[24m \e[4m1\e[24m \e[4m~\e[24m  is
-       bound to insert the text ``Function Key 1''.
+       In this example, _\bC_\b-_\bu is again bound to the function u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt.
+       _\bC_\b-_\bx _\bC_\b-_\br is bound to the function r\bre\be-\b-r\bre\bea\bad\bd-\b-i\bin\bni\bit\bt-\b-f\bfi\bil\ble\be, and _\bE_\bS_\bC _\b[ _\b1 _\b1 _\b~  is
+       bound to insert the text "Function Key 1".
 
        The  full set of GNU Emacs style escape sequences available when speci-
        fying key sequences is
-              \e[1m\C-    \e[22mcontrol prefix
-              \e[1m\M-    \e[22mmeta prefix
-              \e[1m\e     \e[22man escape character
-              \e[1m\\     \e[22mbackslash
-              \e[1m\"     \e[22mliteral ", a double quote
-              \e[1m\'     \e[22mliteral ', a single quote
+              \\b\C\bC-\b-    A control prefix.
+              \\b\M\bM-\b-    Adding the meta prefix or converting the following  char-
+                     acter  to  a  meta  character,  as  described below under
+                     f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx.
+              \\b\e\be     An escape character.
+              \\b\\\b\     Backslash.
+              \\b\"\b"     Literal ", a double quote.
+              \\b\'\b'     Literal ', a single quote.
 
        In addition to the GNU Emacs style escape sequences, a  second  set  of
        backslash escapes is available:
-              \e[1m\a     \e[22malert (bell)
-              \e[1m\b     \e[22mbackspace
-              \e[1m\d     \e[22mdelete
-              \e[1m\f     \e[22mform feed
-              \e[1m\n     \e[22mnewline
-              \e[1m\r     \e[22mcarriage return
-              \e[1m\t     \e[22mhorizontal tab
-              \e[1m\v     \e[22mvertical tab
-              \e[1m\\e[4m\e[22mnnn\e[24m   the  eight-bit  character  whose value is the octal value
-                     \e[4mnnn\e[24m (one to three digits)
-              \e[1m\x\e[4m\e[22mHH\e[24m   the eight-bit character whose value  is  the  hexadecimal
-                     value \e[4mHH\e[24m (one or two hex digits)
-
-       When  entering  the  text of a macro, single or double quotes should be
-       used to indicate a macro definition.  Unquoted text is assumed to be  a
-       function  name.   In  the  macro  body, the backslash escapes described
-       above are expanded.  Backslash will quote any other  character  in  the
-       macro text, including " and '.
-
-       \e[1mBash  \e[22mallows the current readline key bindings to be displayed or modi-
-       fied with the \e[1mbind \e[22mbuiltin command.  The editing mode may  be  switched
-       during  interactive  use by using the \e[1m-o \e[22moption to the \e[1mset \e[22mbuiltin com-
-       mand.  Other programs using this library  provide  similar  mechanisms.
-       The  \e[4minputrc\e[24m  file may be edited and re-read if a program does not pro-
-       vide any other means to incorporate new bindings.
-
-   \e[1mVariables\e[0m
-       Readline has variables that can be used to further customize its behav-
-       ior.  A variable may be set in the \e[4minputrc\e[24m file with a statement of the
+              \\b\a\ba     alert (bell)
+              \\b\b\bb     backspace
+              \\b\d\bd     delete
+              \\b\f\bf     form feed
+              \\b\n\bn     newline
+              \\b\r\br     carriage return
+              \\b\t\bt     horizontal tab
+              \\b\v\bv     vertical tab
+              \\b\_\bn_\bn_\bn   The  eight-bit  character  whose value is the octal value
+                     _\bn_\bn_\bn (one to three digits).
+              \\b\x\bx_\bH_\bH   The eight-bit character whose value  is  the  hexadecimal
+                     value _\bH_\bH (one or two hex digits).
+
+       When entering the text of a macro, single or double quotes must be used
+       to indicate a macro definition.  Unquoted text is assumed to be a func-
+       tion  name.   The backslash escapes described above are expanded in the
+       macro body.  Backslash quotes any other character in  the  macro  text,
+       including " and '.
+
+       B\bBa\bas\bsh\bh  will display or modify the current r\bre\bea\bad\bdl\bli\bin\bne\be key bindings with the
+       b\bbi\bin\bnd\bd builtin command.  The -\b-o\bo e\bem\bma\bac\bcs\bs or -\b-o\bo v\bvi\bi options to the s\bse\bet\bt builtin
+       change the editing mode during interactive use.  Other  programs  using
+       this  library  provide  similar mechanisms.  A user may always edit the
+       _\bi_\bn_\bp_\bu_\bt_\br_\bc file and have r\bre\bea\bad\bdl\bli\bin\bne\be re-read it if a program does not provide
+       any other means to incorporate new bindings.
+
+   V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs
+       R\bRe\bea\bad\bdl\bli\bin\bne\be has variables that can be used to further customize its behav-
+       ior.  A variable may be set in the _\bi_\bn_\bp_\bu_\bt_\br_\bc file with a statement of the
        form
 
-              \e[1mset \e[4m\e[22mvariable-name\e[24m \e[4mvalue\e[0m
+              s\bse\bet\bt _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\b-_\bn_\ba_\bm_\be _\bv_\ba_\bl_\bu_\be
 
-       Except where noted, readline variables can take the values  \e[1mOn  \e[22mor  \e[1mOff\e[0m
+       Except where noted, r\bre\bea\bad\bdl\bli\bin\bne\be variables can take the values  O\bOn\bn  or  O\bOf\bff\bf
        (without  regard  to  case).   Unrecognized variable names are ignored.
-       When a variable value is read, empty or null values, "on"  (case-insen-
-       sitive), and "1" are equivalent to \e[1mOn\e[22m.  All other values are equivalent
-       to \e[1mOff\e[22m.  The variables and their default values are:
-
-       \e[1mactive-region-start-color\e[0m
-              A string variable that controls the text  color  and  background
-              when  displaying the text in the active region (see the descrip-
-              tion of \e[1menable-active-region \e[22mbelow).  This string must not  take
+       When r\bre\bea\bad\bdl\bli\bin\bne\be reads a variable value, empty or null values, "on" (case-
+       insensitive), and "1" are equivalent  to  O\bOn\bn.   All  other  values  are
+       equivalent to O\bOf\bff\bf.
+
+       The variables and their default values are:
+
+       a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\br
+              A  string  variable  that controls the text color and background
+              when displaying the text in the active region (see the  descrip-
+              tion  of e\ben\bna\bab\bbl\ble\be-\b-a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn below).  This string must not take
               up any physical character positions on the display, so it should
               consist only of terminal escape sequences.  It is output to  the
               terminal  before displaying the text in the active region.  This
@@ -184,9 +215,9 @@ READLINE(3)                Library Functions Manual                READLINE(3)
               type  changes.   The  default  value is the string that puts the
               terminal in standout mode, as obtained from the terminal's  ter-
               minfo description.  A sample value might be "\e[01;33m".
-       \e[1mactive-region-end-color\e[0m
-              A  string  variable  that  "undoes"  the  effects  of \e[1mactive-re-\e[0m
-              \e[1mgion-start-color \e[22mand restores "normal" terminal display  appear-
+       a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn-\b-e\ben\bnd\bd-\b-c\bco\bol\blo\bor\br
+              A  string  variable  that  "undoes"  the  effects  of a\bac\bct\bti\biv\bve\be-\b-r\bre\be-\b-
+              g\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\band restores "normal" terminal display  appear-
               ance  after  displaying  text in the active region.  This string
               must not take up any physical character positions  on  the  dis-
               play,  so  it  should consist only of terminal escape sequences.
@@ -196,753 +227,844 @@ READLINE(3)                Library Functions Manual                READLINE(3)
               string  that  restores  the  terminal from standout mode, as ob-
               tained from the terminal's terminfo description.  A sample value
               might be "\e[0m".
-       \e[1mbell-style (audible)\e[0m
-              Controls  what  happens when readline wants to ring the terminal
-              bell.  If set to \e[1mnone\e[22m, readline never rings the bell.  If set to
-              \e[1mvisible\e[22m,  readline  uses a visible bell if one is available.  If
-              set to \e[1maudible\e[22m, readline attempts to ring the terminal's bell.
-       \e[1mbind-tty-special-chars (On)\e[0m
-              If set to \e[1mOn \e[22m(the default), readline attempts to bind  the  con-
-              trol  characters    treated  specially  by the kernel's terminal
-              driver to their readline equivalents.
-       \e[1mblink-matching-paren (Off)\e[0m
-              If set to \e[1mOn\e[22m, readline attempts to briefly move the cursor to an
+       b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be (\b(a\bau\bud\bdi\bib\bbl\ble\be)\b)
+              Controls what happens when r\bre\bea\bad\bdl\bli\bin\bne\be wants to ring  the  terminal
+              bell.  If set to n\bno\bon\bne\be, r\bre\bea\bad\bdl\bli\bin\bne\be never rings the bell.  If set to
+              v\bvi\bis\bsi\bib\bbl\ble\be,  r\bre\bea\bad\bdl\bli\bin\bne\be  uses a visible bell if one is available.  If
+              set to a\bau\bud\bdi\bib\bbl\ble\be, r\bre\bea\bad\bdl\bli\bin\bne\be attempts to ring the terminal's bell.
+       b\bbi\bin\bnd\bd-\b-t\btt\bty\by-\b-s\bsp\bpe\bec\bci\bia\bal\bl-\b-c\bch\bha\bar\brs\bs (\b(O\bOn\bn)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be attempts to bind the  control  characters
+              that  are  treated  specially by the kernel's terminal driver to
+              their r\bre\bea\bad\bdl\bli\bin\bne\be equivalents.  These override the default r\bre\bea\bad\bdl\bli\bin\bne\be
+              bindings described here.  Type "stty -a" at a b\bba\bas\bsh\bh prompt to see
+              your current terminal settings, including  the  special  control
+              characters (usually c\bcc\bch\bha\bar\brs\bs).
+       b\bbl\bli\bin\bnk\bk-\b-m\bma\bat\btc\bch\bhi\bin\bng\bg-\b-p\bpa\bar\bre\ben\bn (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be attempts to briefly move the cursor to an
               opening parenthesis when a closing parenthesis is inserted.
-       \e[1mcolored-completion-prefix (Off)\e[0m
-              If  set  to  \e[1mOn\e[22m, when listing completions, readline displays the
+       c\bco\bol\blo\bor\bre\bed\bd-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-p\bpr\bre\bef\bfi\bix\bx (\b(O\bOf\bff\bf)\b)
+              If  set  to  O\bOn\bn, when listing completions, r\bre\bea\bad\bdl\bli\bin\bne\be displays the
               common prefix of the set of possible completions using a differ-
-              ent  color.   The  color definitions are taken from the value of
-              the \e[1mLS_COLORS \e[22menvironment variable.  If there is a color defini-
-              tion  in \e[1m$LS_COLORS \e[22mfor the custom suffix "readline-colored-com-
-              pletion-prefix", readline uses this color for the common  prefix
+              ent color.  The color definitions are taken from  the  value  of
+              the L\bLS\bS_\b_C\bCO\bOL\bLO\bOR\bRS\benvironment variable.  If there is a color defini-
+              tion  in $\b$L\bLS\bS_\b_C\bCO\bOL\bLO\bOR\bRS\bfor the custom suffix "readline-colored-com-
+              pletion-prefix", r\bre\bea\bad\bdl\bli\bin\bne\be uses this color for the common  prefix
               instead of its default.
-       \e[1mcolored-stats (Off)\e[0m
-              If  set to \e[1mOn\e[22m, readline displays possible completions using dif-
+       c\bco\bol\blo\bor\bre\bed\bd-\b-s\bst\bta\bat\bts\bs (\b(O\bOf\bff\bf)\b)
+              If  set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be displays possible completions using dif-
               ferent colors to indicate their file type.   The  color  defini-
-              tions  are  taken  from  the  value of the \e[1mLS_COLORS \e[22menvironment
+              tions  are  taken  from  the  value of the L\bLS\bS_\b_C\bCO\bOL\bLO\bOR\bRS\benvironment
               variable.
-       \e[1mcomment-begin (``#'')\e[0m
-              The string that is inserted in \e[1mvi \e[22mmode when  the  \e[1minsert-comment\e[0m
-              command is executed.  This command is bound to \e[1mM-# \e[22min emacs mode
-              and to \e[1m# \e[22min vi command mode.
-       \e[1mcompletion-display-width (-1)\e[0m
+       c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn (\b("#\b#")\b)
+              The string that the  r\bre\bea\bad\bdl\bli\bin\bne\be  i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\bt  command  inserts.
+              This  command  is bound to M\bM-\b-#\b# in emacs mode and to #\b# in vi com-
+              mand mode.
+       c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-w\bwi\bid\bdt\bth\bh (\b(-\b-1\b1)\b)
               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.
-       \e[1mcompletion-ignore-case (Off)\e[0m
-              If set to \e[1mOn\e[22m, readline performs filename matching and completion
+              causes  matches to be displayed one per line.  The default value
+              is -1.
+       c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-i\big\bgn\bno\bor\bre\be-\b-c\bca\bas\bse\be (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be performs filename matching and completion
               in a case-insensitive fashion.
-       \e[1mcompletion-map-case (Off)\e[0m
-              If  set  to  \e[1mOn\e[22m, and \e[1mcompletion-ignore-case \e[22mis enabled, readline
-              treats hyphens (\e[4m-\e[24m) and underscores (\e[4m_\e[24m) as equivalent  when  per-
+       c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-m\bma\bap\bp-\b-c\bca\bas\bse\be (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, and c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-i\big\bgn\bno\bor\bre\be-\b-c\bca\bas\bse\be  is  enabled,  r\bre\bea\bad\bdl\bli\bin\bne\be
+              treats  hyphens  (_\b-) and underscores (_\b_) as equivalent when per-
               forming case-insensitive filename matching and completion.
-       \e[1mcompletion-prefix-display-length (0)\e[0m
-              The  length in characters of the common prefix of a list of pos-
-              sible completions that is displayed without modification.   When
-              set  to  a  value greater than zero, common prefixes longer than
-              this value are replaced with an ellipsis when displaying  possi-
-              ble completions.
-       \e[1mcompletion-query-items (100)\e[0m
-              This  determines when the user is queried about viewing the num-
-              ber of possible completions generated  by  the  \e[1mpossible-comple-\e[0m
-              \e[1mtions  \e[22mcommand.  It may be set to any integer value greater than
-              or equal to zero.  If the  number  of  possible  completions  is
-              greater  than  or  equal to the value of this variable, readline
-              will ask whether or not the user wishes to view them;  otherwise
-              they are simply listed on the terminal.  A negative value causes
-              readline to never ask.
-       \e[1mconvert-meta (On)\e[0m
-              If set to \e[1mOn\e[22m, readline will convert characters with  the  eighth
-              bit set to an ASCII key sequence by stripping the eighth bit and
-              prefixing it with an escape character (in effect,  using  escape
-              as  the  \e[4mmeta\e[24m \e[4mprefix\e[24m).  The default is \e[4mOn\e[24m, but readline will set
-              it to \e[4mOff\e[24m if the locale  contains  eight-bit  characters.   This
-              variable  is  dependent on the \e[1mLC_CTYPE \e[22mlocale category, and may
-              change if the locale is changed.
-       \e[1mdisable-completion (Off)\e[0m
-              If set to \e[1mOn\e[22m, readline will inhibit word completion.  Completion
-              characters  will  be  inserted into the line as if they had been
-              mapped to \e[1mself-insert\e[22m.
-       \e[1mecho-control-characters (On)\e[0m
-              When set to \e[1mOn\e[22m, on operating systems that indicate they  support
-              it, readline echoes a character corresponding to a signal gener-
+       c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-p\bpr\bre\bef\bfi\bix\bx-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-l\ble\ben\bng\bgt\bth\bh (\b(0\b0)\b)
+              The maximum length in characters of the common prefix of a  list
+              of  possible completions that is displayed without modification.
+              When set to a value greater than zero, r\bre\bea\bad\bdl\bli\bin\bne\be replaces  common
+              prefixes longer than this value with an ellipsis when displaying
+              possible completions.  If a completion begins with a period, and
+              e\bea\bad\bdl\bli\bin\bne\be  is  completing filenames, it uses three underscores in-
+              stead of an ellipsis.
+       c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-q\bqu\bue\ber\bry\by-\b-i\bit\bte\bem\bms\bs (\b(1\b10\b00\b0)\b)
+              This determines when the user is queried about viewing the  num-
+              ber  of  possible  completions generated by the p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\be-\b-
+              t\bti\bio\bon\bns\bs command.  It may be set to any integer value greater  than
+              or  equal  to  zero.   If  the number of possible completions is
+              greater than or equal to the value of  this  variable,  r\bre\bea\bad\bdl\bli\bin\bne\be
+              asks  whether  or  not  the  user wishes to view them; otherwise
+              r\bre\bea\bad\bdl\bli\bin\bne\be simply lists them on the terminal.  A zero value  means
+              r\bre\bea\bad\bdl\bli\bin\bne\be should never ask; negative values are treated as zero.
+       c\bco\bon\bnv\bve\ber\brt\bt-\b-m\bme\bet\bta\ba (\b(O\bOn\bn)\b)
+              If  set  to  O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be converts characters it reads that have
+              the eighth bit set to an ASCII  key  sequence  by  clearing  the
+              eighth bit and prefixing it with an escape character (converting
+              the  character to have the meta prefix).  The default is _\bO_\bn, but
+              r\bre\bea\bad\bdl\bli\bin\bne\be sets it to _\bO_\bf_\bf if the locale contains characters  whose
+              encodings may include bytes with the eighth bit set.  This vari-
+              able  is  dependent  on  the  L\bLC\bC_\b_C\bCT\bTY\bYP\bPE\bE  locale category, and may
+              change if the locale changes.  This variable  also  affects  key
+              bindings; see the description of f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx below.
+       d\bdi\bis\bsa\bab\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn (\b(O\bOf\bff\bf)\b)
+              If  set  to  O\bOn\bn,  r\bre\bea\bad\bdl\bli\bin\bne\be inhibits word completion.  Completion
+              characters are inserted into the line as if they had been mapped
+              to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt.
+       e\bec\bch\bho\bo-\b-c\bco\bon\bnt\btr\bro\bol\bl-\b-c\bch\bha\bar\bra\bac\bct\bte\ber\brs\bs (\b(O\bOn\bn)\b)
+              When set to O\bOn\bn, on operating systems that indicate they  support
+              it, r\bre\bea\bad\bdl\bli\bin\bne\be echoes a character corresponding to a signal gener-
               ated from the keyboard.
-       \e[1mediting-mode (emacs)\e[0m
-              Controls whether readline begins with a set of key bindings sim-
-              ilar to \e[4mEmacs\e[24m or \e[4mvi\e[24m.  \e[1mediting-mode \e[22mcan be set to either \e[1memacs \e[22mor
-              \e[1mvi\e[22m.
-       \e[1memacs-mode-string (@)\e[0m
-              If the \e[4mshow-mode-in-prompt\e[24m variable is enabled, this  string  is
+       e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(e\bem\bma\bac\bcs\bs)\b)
+              Controls  whether r\bre\bea\bad\bdl\bli\bin\bne\be uses a set of key bindings similar to
+              _\bE_\bm_\ba_\bc_\bs or _\bv_\bi.  e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be can be set to either e\bem\bma\bac\bcs\bs or v\bvi\bi.
+       e\bem\bma\bac\bcs\bs-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b(@\b@)\b)
+              If the _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt 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.
-       \e[1menable-active-region (On)\e[0m
-              The  \e[4mpoint\e[24m  is the current cursor position, and \e[4mmark\e[24m refers to a
-              saved cursor position.  The text between the point and  mark  is
-              referred  to  as  the  \e[4mregion\e[24m.  When this variable is set to \e[4mOn\e[24m,
-              readline allows certain commands to designate the region as  \e[4mac-\e[0m
-              \e[4mtive\e[24m.   When  the region is active, readline highlights the text
-              in the region using the value of the  \e[1mactive-region-start-color\e[22m,
-              which  defaults to the string that enables the terminal's stand-
-              out mode.  The active region shows the text inserted  by  brack-
-              eted-paste  and  any matching text found by incremental and non-
-              incremental history searches.
-       \e[1menable-bracketed-paste (On)\e[0m
-              When set to \e[1mOn\e[22m, readline configures the terminal to insert  each
+              key  binding, so the standard set of meta- and control- prefixes
+              and backslash escape sequences is available.  The \1 and \2  es-
+              capes  begin and end sequences of non-printing characters, which
+              can be used to embed a terminal control sequence into  the  mode
+              string.
+       e\ben\bna\bab\bbl\ble\be-\b-a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn (\b(O\bOn\bn)\b)
+              When  this  variable  is set to _\bO_\bn, r\bre\bea\bad\bdl\bli\bin\bne\be allows certain com-
+              mands to designate the region as _\ba_\bc_\bt_\bi_\bv_\be.  When the region is ac-
+              tive, r\bre\bea\bad\bdl\bli\bin\bne\be highlights the text in the region using the value
+              of the a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\br variable, which defaults to the
+              string that enables the terminal's standout  mode.   The  active
+              region shows the text inserted by bracketed-paste and any match-
+              ing  text  found  by  incremental  and  non-incremental  history
+              searches.
+       e\ben\bna\bab\bbl\ble\be-\b-b\bbr\bra\bac\bck\bke\bet\bte\bed\bd-\b-p\bpa\bas\bst\bte\be (\b(O\bOn\bn)\b)
+              When set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be configures the terminal to insert  each
               paste  into the editing buffer as a single string of characters,
               instead of treating each character as if it had been  read  from
-              the keyboard.  This prevents readline from executing any editing
-              commands bound to key sequences appearing in the pasted text.
-       \e[1menable-keypad (Off)\e[0m
-              When set to \e[1mOn\e[22m, readline will try to enable the application key-
-              pad when it is called.  Some systems need this to enable the ar-
-              row keys.
-       \e[1menable-meta-key (On)\e[0m
-              When set to \e[1mOn\e[22m, 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.
-       \e[1mexpand-tilde (Off)\e[0m
-              If set to \e[1mOn\e[22m, tilde expansion is  performed  when  readline  at-
-              tempts word completion.
-       \e[1mhistory-preserve-point (Off)\e[0m
-              If  set  to  \e[1mOn\e[22m, the history code attempts to place point at the
-              same location on each history line retrieved with  \e[1mprevious-his-\e[0m
-              \e[1mtory \e[22mor \e[1mnext-history\e[22m.
-       \e[1mhistory-size (unset)\e[0m
-              Set  the  maximum number of history entries saved in the history
-              list.  If set to zero, any existing history entries are  deleted
+              the  keyboard.  This is called _\bb_\br_\ba_\bc_\bk_\be_\bt_\be_\bd_\b-_\bp_\ba_\bs_\bt_\be _\bm_\bo_\bd_\be; it prevents
+              r\bre\bea\bad\bdl\bli\bin\bne\be from executing any editing commands bound  to  key  se-
+              quences appearing in the pasted text.
+       e\ben\bna\bab\bbl\ble\be-\b-k\bke\bey\byp\bpa\bad\bd (\b(O\bOf\bff\bf)\b)
+              When  set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be tries to enable the application keypad
+              when it is called.  Some systems need this to enable  the  arrow
+              keys.
+       e\ben\bna\bab\bbl\ble\be-\b-m\bme\bet\bta\ba-\b-k\bke\bey\by (\b(O\bOn\bn)\b)
+              When  set  to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be tries to enable any meta modifier key
+              the terminal claims to support.  On many terminals, the Meta key
+              is used to send eight-bit characters; this variable  checks  for
+              the  terminal  capability that indicates the terminal can enable
+              and disable a mode that sets  the  eighth  bit  of  a  character
+              (0200)  if the Meta key is held down when the character is typed
+              (a meta character).
+       e\bex\bxp\bpa\ban\bnd\bd-\b-t\bti\bil\bld\bde\be (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be performs tilde expansion when it attempts
+              word completion.
+       f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be modifies its behavior  when  binding  key
+              sequences  containing  \M-  or Meta- (see K\bKe\bey\by B\bBi\bin\bnd\bdi\bin\bng\bgs\bs above) by
+              converting a key sequence of the form \M-_\bC or Meta-_\bC to the two-
+              character  sequence  E\bES\bSC\bC  _\bC  (adding  the  meta   prefix).    If
+              f\bfo\bor\brc\bce\be-\b-m\bme\bet\bta\ba-\b-p\bpr\bre\bef\bfi\bix\bx is set to O\bOf\bff\bf (the default), r\bre\bea\bad\bdl\bli\bin\bne\be uses the
+              value  of the c\bco\bon\bnv\bve\ber\brt\bt-\b-m\bme\bet\bta\ba variable to determine whether to per-
+              form this conversion: if c\bco\bon\bnv\bve\ber\brt\bt-\b-m\bme\bet\bta\ba is O\bOn\bn,  r\bre\bea\bad\bdl\bli\bin\bne\be  performs
+              the  conversion described above; if it is O\bOf\bff\bf, r\bre\bea\bad\bdl\bli\bin\bne\be converts
+              _\bC to a meta character by setting the eighth bit (0200).
+       h\bhi\bis\bst\bto\bor\bry\by-\b-p\bpr\bre\bes\bse\ber\brv\bve\be-\b-p\bpo\boi\bin\bnt\bt (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, the history code attempts to place  point  at  the
+              same  location on each history line retrieved with p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bs-\b-
+              t\bto\bor\bry\by or n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsi\biz\bze\be (\b(u\bun\bns\bse\bet\bt)\b)
+              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
-              number of history entries is not limited.  If an attempt is made
-              to set \e[4mhistory-size\e[24m to a non-numeric value, the  maximum  number
-              of history entries will be set to 500.
-       \e[1mhorizontal-scroll-mode (Off)\e[0m
-              When  set  to  \e[1mOn\e[22m, makes readline use a single line for display,
-              scrolling the input horizontally on a single screen line when it
-              becomes  longer  than the screen width rather than wrapping to a
-              new line.  This setting is automatically enabled  for  terminals
-              of height 1.
-       \e[1minput-meta (Off)\e[0m
-              If  set to \e[1mOn\e[22m, readline will enable eight-bit input (that is, it
-              will not clear the eighth bit in the characters it  reads),  re-
-              gardless  of  what the terminal claims it can support.  The name
-              \e[1mmeta-flag \e[22mis a synonym for this variable.  The default  is  \e[4mOff\e[24m,
-              but  readline will set it to \e[4mOn\e[24m if the locale contains eight-bit
-              characters.  This variable is dependent on the  \e[1mLC_CTYPE  \e[22mlocale
-              category, and may change if the locale is changed.
-       \e[1misearch-terminators (``C-[ C-J'')\e[0m
-              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 \e[4mESC\e[24m and \e[4mC-J\e[24m will terminate an incremental search.
-       \e[1mkeymap (emacs)\e[0m
-              Set the current readline keymap.  The set of legal keymap  names
-              is  \e[4memacs,\e[24m  \e[4memacs-standard,\e[24m \e[4memacs-meta,\e[24m \e[4memacs-ctlx,\e[24m \e[4mvi,\e[24m \e[4mvi-move,\e[0m
-              \e[4mvi-command\e[24m, and \e[4mvi-insert\e[24m.   \e[4mvi\e[24m  is  equivalent  to  \e[4mvi-command\e[24m;
-              \e[4memacs\e[24m  is  equivalent  to  \e[4memacs-standard\e[24m.  The default value is
-              \e[4memacs\e[24m.  The value  of  \e[1mediting-mode  \e[22malso  affects  the  default
-              keymap.
-       \e[1mkeyseq-timeout (500)\e[0m
-              Specifies  the  duration \e[4mreadline\e[24m will wait for a character when
+              number  of history entries is not limited.  Setting _\bh_\bi_\bs_\bt_\bo_\br_\by_\b-_\bs_\bi_\bz_\be
+              to a non-numeric value will set the maximum  number  of  history
+              entries to 500.
+       h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bl-\b-s\bsc\bcr\bro\bol\bll\bl-\b-m\bmo\bod\bde\be (\b(O\bOf\bff\bf)\b)
+              Setting this variable to O\bOn\bn makes r\bre\bea\bad\bdl\bli\bin\bne\be use a single line for
+              display,  scrolling  the  input  horizontally on a single screen
+              line when it becomes longer than the screen  width  rather  than
+              wrapping  to  a new line.  This setting is automatically enabled
+              for terminals of height 1.
+       i\bin\bnp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be enables eight-bit input (that is, it does
+              not clear the eighth bit in the characters it reads), regardless
+              of what the terminal claims it can support.  The default is _\bO_\bf_\bf,
+              but r\bre\bea\bad\bdl\bli\bin\bne\be sets it to _\bO_\bn if  the  locale  contains  characters
+              whose encodings may include bytes with the eighth bit set.  This
+              variable  is  dependent on the L\bLC\bC_\b_C\bCT\bTY\bYP\bPE\bE locale category, and its
+              value may change if the locale changes.  The name m\bme\bet\bta\ba-\b-f\bfl\bla\bag\bg is a
+              synonym for i\bin\bnp\bpu\but\bt-\b-m\bme\bet\bta\ba.
+       i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs (\b("C\bC-\b-[\b[C\bC-\b-j\bj")\b)
+              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 _\bE_\bS_\bC and C\bC-\b-j\bj terminate an incremental search.
+       k\bke\bey\bym\bma\bap\bp (\b(e\bem\bma\bac\bcs\bs)\b)
+              Set  the current r\bre\bea\bad\bdl\bli\bin\bne\be keymap.  The set of valid keymap names
+              is _\be_\bm_\ba_\bc_\bs_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd_\b, _\be_\bm_\ba_\bc_\bs_\b-_\bm_\be_\bt_\ba_\b,  _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx_\b,  _\bv_\bi_\b,  _\bv_\bi_\b-_\bc_\bo_\bm_\b-
+              _\bm_\ba_\bn_\bd,  and  _\bv_\bi_\b-_\bi_\bn_\bs_\be_\br_\bt.  _\bv_\bi is equivalent to _\bv_\bi_\b-_\bc_\bo_\bm_\bm_\ba_\bn_\bd; _\be_\bm_\ba_\bc_\bs is
+              equivalent to _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd.  The default value is  _\be_\bm_\ba_\bc_\bs;  the
+              value of e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be also affects the default keymap.
+       k\bke\bey\bys\bse\beq\bq-\b-t\bti\bim\bme\beo\bou\but\bt (\b(5\b50\b00\b0)\b)
+              Specifies  the  duration r\bre\bea\bad\bdl\bli\bin\bne\be 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  re-
-              ceived  within  the  timeout,  \e[4mreadline\e[24m will use the shorter but
-              complete key sequence.  The value is specified in  milliseconds,
-              so  a value of 1000 means that \e[4mreadline\e[24m 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, \e[4mreadline\e[24m will wait
-              until another key is pressed to decide  which  key  sequence  to
-              complete.
-       \e[1mmark-directories (On)\e[0m
-              If set to \e[1mOn\e[22m, completed directory names have a slash appended.
-       \e[1mmark-modified-lines (Off)\e[0m
-              If  set  to  \e[1mOn\e[22m,  history lines that have been modified are dis-
-              played with a preceding asterisk (\e[1m*\e[22m).
-       \e[1mmark-symlinked-directories (Off)\e[0m
-              If set to \e[1mOn\e[22m, completed names which are symbolic links to direc-
-              tories  have  a slash appended (subject to the value of \e[1mmark-di-\e[0m
-              \e[1mrectories\e[22m).
-       \e[1mmatch-hidden-files (On)\e[0m
-              This variable, when set to \e[1mOn\e[22m, causes readline  to  match  files
-              whose  names  begin  with  a  `.' (hidden files) when performing
-              filename completion.  If set to \e[1mOff\e[22m, the  leading  `.'  must  be
-              supplied by the user in the filename to be completed.
-       \e[1mmenu-complete-display-prefix (Off)\e[0m
-              If  set to \e[1mOn\e[22m, menu completion displays the common prefix of the
+              input  to complete a longer key sequence).  If r\bre\bea\bad\bdl\bli\bin\bne\be does not
+              receive any input within the timeout, it uses  the  shorter  but
+              complete  key sequence.  The value is specified in milliseconds,
+              so a value of 1000 means that r\bre\bea\bad\bdl\bli\bin\bne\be 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, r\bre\bea\bad\bdl\bli\bin\bne\be waits  un-
+              til  another key is pressed to decide which key sequence to com-
+              plete.
+       m\bma\bar\brk\bk-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs (\b(O\bOn\bn)\b)
+              If set to O\bOn\bn, completed directory names have a slash appended.
+       m\bma\bar\brk\bk-\b-m\bmo\bod\bdi\bif\bfi\bie\bed\bd-\b-l\bli\bin\bne\bes\bs (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be displays history  lines  that  have  been
+              modified with a preceding asterisk (*\b*).
+       m\bma\bar\brk\bk-\b-s\bsy\bym\bml\bli\bin\bnk\bke\bed\bd-\b-d\bdi\bir\bre\bec\bct\bto\bor\bri\bie\bes\bs (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, completed names which are symbolic links to direc-
+              tories  have  a slash appended, subject to the value of m\bma\bar\brk\bk-\b-d\bdi\bi-\b-
+              r\bre\bec\bct\bto\bor\bri\bie\bes\bs.
+       m\bma\bat\btc\bch\bh-\b-h\bhi\bid\bdd\bde\ben\bn-\b-f\bfi\bil\ble\bes\bs (\b(O\bOn\bn)\b)
+              This variable, when set to O\bOn\bn, forces r\bre\bea\bad\bdl\bli\bin\bne\be  to  match  files
+              whose  names  begin  with  a "."  (hidden files) when performing
+              filename completion.  If set to O\bOf\bff\bf, the user must  include  the
+              leading "."  in the filename to be completed.
+       m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-p\bpr\bre\bef\bfi\bix\bx (\b(O\bOf\bff\bf)\b)
+              If  set to O\bOn\bn, menu completion displays the common prefix of the
               list of possible completions (which may be empty) before cycling
               through the list.
-       \e[1moutput-meta (Off)\e[0m
-              If  set  to \e[1mOn\e[22m, readline will display characters with the eighth
-              bit set directly rather than as a meta-prefixed escape sequence.
-              The default is \e[4mOff\e[24m, but readline will set it to \e[4mOn\e[24m if the locale
-              contains eight-bit characters.  This variable  is  dependent  on
-              the  \e[1mLC_CTYPE  \e[22mlocale  category, and may change if the locale is
-              changed.
-       \e[1mpage-completions (On)\e[0m
-              If set to \e[1mOn\e[22m, readline uses an internal \e[4mmore\e[24m-like pager to  dis-
-              play a screenful of possible completions at a time.
-       \e[1mprint-completions-horizontally (Off)\e[0m
-              If  set  to  \e[1mOn\e[22m,  readline will display completions with matches
-              sorted horizontally in alphabetical order, rather than down  the
-              screen.
-       \e[1mrevert-all-at-newline (Off)\e[0m
-              If  set  to  \e[1mOn\e[22m, readline will undo all changes to history lines
-              before returning when \e[1maccept-line \e[22mis executed.  By default, his-
-              tory  lines  may  be  modified  and retain individual undo lists
-              across calls to \e[1mreadline\e[22m.
-       \e[1mshow-all-if-ambiguous (Off)\e[0m
+       o\bou\but\btp\bpu\but\bt-\b-m\bme\bet\bta\ba (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be displays characters with the  eighth  bit
+              set  directly  rather  than  as a meta-prefixed escape sequence.
+              The default is _\bO_\bf_\bf, but r\bre\bea\bad\bdl\bli\bin\bne\be sets it to  _\bO_\bn  if  the  locale
+              contains  characters  whose encodings may include bytes with the
+              eighth bit set.  This variable is dependent on the L\bLC\bC_\b_C\bCT\bTY\bYP\bPE\bE  lo-
+              cale category, and its value may change if the locale changes.
+       p\bpa\bag\bge\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(O\bOn\bn)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be uses an internal pager resembling _\bm_\bo_\br_\be(1)
+              to display a screenful of possible completions at a time.
+       p\bpr\bre\bef\bfe\ber\br-\b-v\bvi\bis\bsi\bib\bbl\ble\be-\b-b\bbe\bel\bll\bl
+              See b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be.
+       p\bpr\bri\bin\bnt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bll\bly\by (\b(O\bOf\bff\bf)\b)
+              If  set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be displays completions with matches sorted
+              horizontally in alphabetical order, rather than down the screen.
+       r\bre\bev\bve\ber\brt\bt-\b-a\bal\bll\bl-\b-a\bat\bt-\b-n\bne\bew\bwl\bli\bin\bne\be (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be will undo all changes  to  history  lines
+              before  returning  when executing a\bac\bcc\bce\bep\bpt\bt-\b-l\bli\bin\bne\be.  By default, his-
+              tory lines may be modified  and  retain  individual  undo  lists
+              across calls to r\bre\bea\bad\bdl\bli\bin\bne\be(\b()\b).
+       s\bse\bea\bar\brc\bch\bh-\b-i\big\bgn\bno\bor\bre\be-\b-c\bca\bas\bse\be (\b(O\bOf\bff\bf)\b)
+              If  set to O\bOn\bn, r\bre\bea\bad\bdl\bli\bin\bne\be performs incremental and non-incremental
+              history list searches in a case-insensitive fashion.
+       s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-a\bam\bmb\bbi\big\bgu\buo\bou\bus\bs (\b(O\bOf\bff\bf)\b)
               This alters the default behavior of  the  completion  functions.
-              If set to \e[1mOn\e[22m, words which have more than one possible completion
-              cause the matches to be listed immediately  instead  of  ringing
+              If set to O\bOn\bn, words which have more than one possible completion
+              cause  the  matches  to be listed immediately instead of ringing
               the bell.
-       \e[1mshow-all-if-unmodified (Off)\e[0m
-              This  alters the default behavior of the completion functions in
-              a fashion similar to \e[1mshow-all-if-ambiguous\e[22m.  If set to \e[1mOn\e[22m, words
+       s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-u\bun\bnm\bmo\bod\bdi\bif\bfi\bie\bed\bd (\b(O\bOf\bff\bf)\b)
+              This alters the default behavior of the completion functions  in
+              a fashion similar to s\bsh\bho\bow\bw-\b-a\bal\bll\bl-\b-i\bif\bf-\b-a\bam\bmb\bbi\big\bgu\buo\bou\bus\bs.  If set to O\bOn\bn, 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 in-
               stead of ringing the bell.
-       \e[1mshow-mode-in-prompt (Off)\e[0m
-              If set to \e[1mOn\e[22m, add a string to the beginning of the prompt  indi-
+       s\bsh\bho\bow\bw-\b-m\bmo\bod\bde\be-\b-i\bin\bn-\b-p\bpr\bro\bom\bmp\bpt\bt (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, 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., \e[4memacs-mode-string\e[24m).
-       \e[1mskip-completed-text (Off)\e[0m
-              If set to \e[1mOn\e[22m, this alters the default completion  behavior  when
+              The mode strings are user-settable (e.g., _\be_\bm_\ba_\bc_\bs_\b-_\bm_\bo_\bd_\be_\b-_\bs_\bt_\br_\bi_\bn_\bg).
+       s\bsk\bki\bip\bp-\b-c\bco\bom\bmp\bpl\ble\bet\bte\bed\bd-\b-t\bte\bex\bxt\bt (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, 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
+              r\bre\bea\bad\bdl\bli\bin\bne\be  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.
-       \e[1mvi-cmd-mode-string ((cmd))\e[0m
-              If  the  \e[4mshow-mode-in-prompt\e[24m variable is enabled, this string is
+       v\bvi\bi-\b-c\bcm\bmd\bd-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b((\b(c\bcm\bmd\bd)\b))\b)
+              If  the  _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt 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
+              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.
-       \e[1mvi-ins-mode-string ((ins))\e[0m
-              If the \e[4mshow-mode-in-prompt\e[24m variable is enabled, this  string  is
+              control-  prefixes  and backslash escape sequences is available.
+              The \1 and \2 escapes begin and end  sequences  of  non-printing
+              characters,  which  can  be used to embed a terminal control se-
+              quence into the mode string.
+       v\bvi\bi-\b-i\bin\bns\bs-\b-m\bmo\bod\bde\be-\b-s\bst\btr\bri\bin\bng\bg (\b((\b(i\bin\bns\bs)\b))\b)
+              If the _\bs_\bh_\bo_\bw_\b-_\bm_\bo_\bd_\be_\b-_\bi_\bn_\b-_\bp_\br_\bo_\bm_\bp_\bt 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.
-       \e[1mvisible-stats (Off)\e[0m
-              If  set to \e[1mOn\e[22m, a character denoting a file's type as reported by
-              \e[4mstat\e[24m(2) is appended to the filename when listing  possible  com-
+              control-  prefixes  and backslash escape sequences is available.
+              The \1 and \2 escapes begin and end  sequences  of  non-printing
+              characters,  which  can  be used to embed a terminal control se-
+              quence into the mode string.
+       v\bvi\bis\bsi\bib\bbl\ble\be-\b-s\bst\bta\bat\bts\bs (\b(O\bOf\bff\bf)\b)
+              If set to O\bOn\bn, a character denoting a file's type as reported  by
+              _\bs_\bt_\ba_\bt(2)  is  appended to the filename when listing possible com-
               pletions.
 
-   \e[1mConditional Constructs\e[0m
-       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.
+   C\bCo\bon\bnd\bdi\bit\bti\bio\bon\bna\bal\bl C\bCo\bon\bns\bst\btr\bru\buc\bct\bts\bs
+       R\bRe\bea\bad\bdl\bli\bin\bne\be 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 available.
 
-       \e[1m$if    \e[22mThe \e[1m$if \e[22mconstruct 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,
+       $\b$i\bif\bf    The  $\b$i\bif\bf construct allows bindings to be made based on the edit-
+              ing mode, the terminal being  used,  or  the  application  using
+              r\bre\bea\bad\bdl\bli\bin\bne\be.   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.
 
-              \e[1mmode   \e[22mThe \e[1mmode= \e[22mform of the  \e[1m$if  \e[22mdirective  is  used  to  test
-                     whether  readline  is  in  emacs or vi mode.  This may be
-                     used in conjunction with the \e[1mset keymap \e[22mcommand, for  in-
-                     stance,  to set bindings in the \e[4memacs-standard\e[24m and \e[4memacs-\e[0m
-                     \e[4mctlx\e[24m keymaps only if readline is starting  out  in  emacs
-                     mode.
+              m\bmo\bod\bde\be   The m\bmo\bod\bde\be=\b= form of the  $\b$i\bif\bf  directive  is  used  to  test
+                     whether  r\bre\bea\bad\bdl\bli\bin\bne\be  is  in  emacs or vi mode.  This may be
+                     used in conjunction with the s\bse\bet\bt k\bke\bey\bym\bma\bap\bcommand, for  in-
+                     stance,   to  set  bindings  in  the  _\be_\bm_\ba_\bc_\bs_\b-_\bs_\bt_\ba_\bn_\bd_\ba_\br_\bd  and
+                     _\be_\bm_\ba_\bc_\bs_\b-_\bc_\bt_\bl_\bx keymaps only if r\bre\bea\bad\bdl\bli\bin\bne\be is  starting  out  in
+                     emacs mode.
 
-              \e[1mterm   \e[22mThe  \e[1mterm=  \e[22mform may be used to include terminal-specific
+              t\bte\ber\brm\bm   The  t\bte\ber\brm\bm=\b=  form may be used to include terminal-specific
                      key bindings, perhaps to bind the key sequences output by
                      the terminal's function keys.  The word on the right side
-                     of the \e[1m= \e[22mis tested against the full name of the  terminal
-                     and  the portion of the terminal name before the first \e[1m-\e[22m.
-                     This allows \e[4msun\e[24m to match both \e[4msun\e[24m and  \e[4msun-cmd\e[24m,  for  in-
-                     stance.
-
-              \e[1mversion\e[0m
-                     The  \e[1mversion  \e[22mtest  may  be  used  to perform comparisons
-                     against specific readline versions.  The \e[1mversion  \e[22mexpands
-                     to  the  current readline version.  The set of comparison
-                     operators includes \e[1m=\e[22m, (and \e[1m==\e[22m), \e[1m!=\e[22m, \e[1m<=\e[22m,  \e[1m>=\e[22m,  \e[1m<\e[22m,  and  \e[1m>\e[22m.
-                     The  version number supplied on the right side of the op-
-                     erator consists of a major version  number,  an  optional
-                     decimal point, and an optional minor version (e.g., \e[1m7.1\e[22m).
-                     If the minor version is omitted, it is assumed to  be  \e[1m0\e[22m.
-                     The operator may be separated from the string \e[1mversion \e[22mand
+                     of the =\b= is tested against both the full name of the ter-
+                     minal and the portion of the  terminal  name  before  the
+                     first  -\b-.   This  allows  _\bx_\bt_\be_\br_\bm  to  match both _\bx_\bt_\be_\br_\bm and
+                     _\bx_\bt_\be_\br_\bm_\b-_\b2_\b5_\b6_\bc_\bo_\bl_\bo_\br, for instance.
+
+              v\bve\ber\brs\bsi\bio\bon\bn
+                     The v\bve\ber\brs\bsi\bio\bon\bn test  may  be  used  to  perform  comparisons
+                     against  specific r\bre\bea\bad\bdl\bli\bin\bne\be versions.  The v\bve\ber\brs\bsi\bio\bon\bexpands
+                     to the current r\bre\bea\bad\bdl\bli\bin\bne\be version.  The set  of  comparison
+                     operators  includes  =\b=,  (and  =\b==\b=), !\b!=\b=, <\b<=\b=, >\b>=\b=, <\b<, and >\b>.
+                     The version number supplied on the right side of the  op-
+                     erator  consists  of  a major version number, an optional
+                     decimal point, and an optional minor version (e.g., 7\b7.\b.1\b1).
+                     If the minor version is omitted, it defaults to  0\b0.   The
+                     operator  may  be  separated  from the string v\bve\ber\brs\bsi\bio\bon\band
                      from the version number argument by whitespace.
 
-              \e[1mapplication\e[0m
-                     The \e[1mapplication \e[22mconstruct is used to include application-
-                     specific  settings.   Each program using the readline li-
-                     brary sets the \e[4mapplication\e[24m \e[4mname\e[24m,  and  an  initialization
+              _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn
+                     The _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bconstruct is used to include application-
+                     specific settings.  Each program using the  r\bre\bea\bad\bdl\bli\bin\bne\b li-
+                     brary  sets  the  _\ba_\bp_\bp_\bl_\bi_\bc_\ba_\bt_\bi_\bo_\bn _\bn_\ba_\bm_\be, 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
-                     \e[1mbash\e[22m:
+                     b\bba\bas\bsh\bh:
 
-                     \e[1m$if \e[22mBash
+                     $\b$i\bif\bBash
                      # Quote the current or previous word
                      "\C-xq": "\eb\"\ef\""
-                     \e[1m$endif\e[0m
+                     $\b$e\ben\bnd\bdi\bif\bf
 
-              \e[4mvariable\e[0m
-                     The \e[4mvariable\e[24m construct provides simple equality tests for
-                     readline variables and values.  The permitted  comparison
-                     operators  are  \e[4m=\e[24m, \e[4m==\e[24m, and \e[4m!=\e[24m.  The variable name must be
+              _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be
+                     The _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be construct provides simple equality tests for
+                     r\bre\bea\bad\bdl\bli\bin\bne\be  variables and values.  The permitted comparison
+                     operators are _\b=, _\b=_\b=, and _\b!_\b=.  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 \e[4mon\e[24m and \e[4moff\e[24m.
-
-       \e[1m$endif \e[22mThis command, as seen in the previous example, terminates an \e[1m$if\e[0m
-              command.
+                     hand side by whitespace.  String  and  boolean  variables
+                     may  be tested.  Boolean variables must be tested against
+                     the values _\bo_\bn and _\bo_\bf_\bf.
 
-       \e[1m$else  \e[22mCommands in this branch of the \e[1m$if \e[22mdirective are executed if the
+       $\b$e\bel\bls\bse\be  Commands in this branch of the $\b$i\bif\bdirective are executed if the
               test fails.
 
-       \e[1m$include\e[0m
+       $\b$e\ben\bnd\bdi\bif\bf This command, as seen in the previous example, terminates an $\b$i\bif\bf
+              command.
+
+       $\b$i\bin\bnc\bcl\blu\bud\bde\be
               This directive takes a single filename as an argument and  reads
-              commands  and bindings from that file.  For example, the follow-
-              ing directive would read \e[4m/etc/inputrc\e[24m:
+              commands and key bindings from that file.  For example, the fol-
+              lowing directive would read _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc:
 
-              \e[1m$include  \e[4m\e[22m/etc/inputrc\e[0m
+              $\b$i\bin\bnc\bcl\blu\bud\bde\be  _\b/_\be_\bt_\bc_\b/_\bi_\bn_\bp_\bu_\bt_\br_\bc
 
-\e[1mSEARCHING\e[0m
-       Readline provides commands for searching through  the  command  history
-       for  lines  containing a specified string.  There are two search modes:
-       \e[4mincremental\e[24m and \e[4mnon-incremental\e[24m.
+S\bSE\bEA\bAR\bRC\bCH\bHI\bIN\bNG\bG
+       R\bRe\bea\bad\bdl\bli\bin\bne\be  provides  commands  for searching through the command history
+       for lines containing a specified string.  There are two  search  modes:
+       _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl and _\bn_\bo_\bn_\b-_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\ba_\bl.
 
-       Incremental searches begin before the  user  has  finished  typing  the
-       search  string.  As each character of the search string is typed, read-
-       line displays the next entry from the history matching the string typed
+       Incremental  searches  begin  before  the  user has finished typing the
+       search string.  As each character of the search string is typed,  r\bre\bea\bad\bd-\b-
+       l\bli\bin\bne\be displays the next entry from the history matching the string typed
        so  far.   An  incremental  search  requires only as many characters as
-       needed to find the desired history entry.  To search  backward  in  the
-       history for a particular string, type \e[1mC-r\e[22m.  Typing \e[1mC-s \e[22msearches forward
-       through the history.  The  characters  present  in  the  value  of  the
-       \e[1misearch-terminators  \e[22mvariable  are  used  to  terminate  an incremental
-       search.  If that variable has not been assigned a value the \e[4mEscape\e[24m  and
-       \e[1mC-J \e[22mcharacters will terminate an incremental search.  \e[1mC-G \e[22mwill abort an
-       incremental search and restore the original line.  When the  search  is
-       terminated,  the history entry containing the search string becomes the
-       current line.
-
-       To find other matching entries in the history list, type \e[1mC-s \e[22mor \e[1mC-r  \e[22mas
-       appropriate.   This  will search backward or forward in the history for
-       the next line matching the search string typed so far.  Any  other  key
-       sequence bound to a readline command will terminate the search and exe-
-       cute that command.  For instance, a newline will terminate  the  search
-       and  accept  the  line,  thereby executing the command from the history
-       list.  A movement command will terminate the search, make the last line
-       found the current line, and begin editing.
+       needed to find the desired history entry.   When  using  emacs  editing
+       mode,  type  C\bC-\b-r\br  to  search  backward  in the history for a particular
+       string.  Typing C\bC-\b-s\bs searches forward through the history.  The  charac-
+       ters  present in the value of the i\bis\bse\bea\bar\brc\bch\bh-\b-t\bte\ber\brm\bmi\bin\bna\bat\bto\bor\brs\bs variable are used
+       to terminate an incremental search.  If that variable has not been  as-
+       signed  a  value,  _\bE_\bS_\bC  and  C\bC-\b-j\bj  terminate an incremental search.  C\bC-\b-g\bg
+       aborts an incremental search and restores the original line.  When  the
+       search  is  terminated,  the history entry containing the search string
+       becomes the current line.
+
+       To find other matching entries in the history list, type C\bC-\b-r\br or C\bC-\b-s\bs  as
+       appropriate.   This searches backward or forward in the history for the
+       next entry matching the search string typed so far.  Any other key  se-
+       quence  bound  to a r\bre\bea\bad\bdl\bli\bin\bne\be command terminates the search and executes
+       that command.  For instance, a newline terminates the  search  and  ac-
+       cepts the line, thereby executing the command from the history list.  A
+       movement  command  will  terminate the search, make the last line found
+       the current line, and begin editing.
+
+       R\bRe\bea\bad\bdl\bli\bin\bne\be remembers the last incremental search string.  If two C\bC-\b-r\brs are
+       typed without any intervening characters defining a new search  string,
+       r\bre\bea\bad\bdl\bli\bin\bne\be uses any remembered search string.
 
        Non-incremental  searches read the entire search string before starting
-       to search for matching history lines.  The search string may  be  typed
+       to search for matching history entries.  The search string may be typed
        by the user or be part of the contents of the current line.
 
-\e[1mEDITING COMMANDS\e[0m
-       The  following  is  a list of the names of the commands and the default
+E\bED\bDI\bIT\bTI\bIN\bNG\bG C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
+       The following is a list of the names of the commands  and  the  default
        key sequences to which they are bound.  Command names without an accom-
        panying key sequence are unbound by default.
 
-       In the following descriptions, \e[4mpoint\e[24m refers to the current cursor posi-
-       tion, and \e[4mmark\e[24m refers to a cursor position saved by the  \e[1mset-mark  \e[22mcom-
-       mand.   The  text  between the point and mark is referred to as the \e[4mre-\e[0m
-       \e[4mgion\e[24m.
-
-   \e[1mCommands for Moving\e[0m
-       \e[1mbeginning-of-line (C-a)\e[0m
-              Move to the start of the current line.
-       \e[1mend-of-line (C-e)\e[0m
-              Move to the end of the line.
-       \e[1mforward-char (C-f)\e[0m
-              Move forward a character.
-       \e[1mbackward-char (C-b)\e[0m
+       In the following descriptions, _\bp_\bo_\bi_\bn_\bt refers to the current cursor posi-
+       tion,  and  _\bm_\ba_\br_\bk refers to a cursor position saved by the s\bse\bet\bt-\b-m\bma\bar\brk\bk com-
+       mand.  The text between the point and mark is referred to  as  the  _\br_\be_\b-
+       _\bg_\bi_\bo_\bn.  R\bRe\bea\bad\bdl\bli\bin\bne\be has the concept of an _\ba_\bc_\bt_\bi_\bv_\be _\br_\be_\bg_\bi_\bo_\bn: when the region is
+       active, r\bre\bea\bad\bdl\bli\bin\bne\be redisplay highlights the region using the value of the
+       a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn-\b-s\bst\bta\bar\brt\bt-\b-c\bco\bol\blo\bor\br  variable.  The e\ben\bna\bab\bbl\ble\be-\b-a\bac\bct\bti\biv\bve\be-\b-r\bre\beg\bgi\bio\bon\bn variable
+       turns this on and off.  Several commands  set  the  region  to  active;
+       those are noted below.
+
+   C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br M\bMo\bov\bvi\bin\bng\bg
+       b\bbe\beg\bgi\bin\bnn\bni\bin\bng\bg-\b-o\bof\bf-\b-l\bli\bin\bne\be (\b(C\bC-\b-a\ba)\b)
+              Move  to  the start of the current line.  This may also be bound
+              to the Home key on some keyboards.
+       e\ben\bnd\bd-\b-o\bof\bf-\b-l\bli\bin\bne\be (\b(C\bC-\b-e\be)\b)
+              Move to the end of the line.  This may also be bound to the  End
+              key on some keyboards.
+       f\bfo\bor\brw\bwa\bar\brd\bd-\b-c\bch\bha\bar\br (\b(C\bC-\b-f\bf)\b)
+              Move  forward  a character.  This may also be bound to the right
+              arrow key on some keyboards.
+       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-c\bch\bha\bar\br (\b(C\bC-\b-b\bb)\b)
               Move back a character.
-       \e[1mforward-word (M-f)\e[0m
+       f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-f\bf)\b)
               Move forward to the end of the next word.  Words are composed of
               alphanumeric characters (letters and digits).
-       \e[1mbackward-word (M-b)\e[0m
-              Move  back  to the start of the current or previous word.  Words
+       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-b\bb)\b)
+              Move back to the start of the current or previous  word.   Words
               are composed of alphanumeric characters (letters and digits).
-       \e[1mprevious-screen-line\e[0m
-              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
+       p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-s\bsc\bcr\bre\bee\ben\bn-\b-l\bli\bin\bne\be
+              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 r\bre\bea\bad\bdl\bli\bin\bne\be 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.
-       \e[1mnext-screen-line\e[0m
-              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
+       n\bne\bex\bxt\bt-\b-s\bsc\bcr\bre\bee\ben\bn-\b-l\bli\bin\bne\be
+              Attempt  to move point to the same physical screen column on the
+              next physical screen line.  This will not have the  desired  ef-
+              fect if the current r\bre\bea\bad\bdl\bli\bin\bne\be line does not take up more than one
+              physical  line  or if the length of the current r\bre\bea\bad\bdl\bli\bin\bne\be line is
               not greater than the length of the prompt plus the screen width.
-       \e[1mclear-display (M-C-l)\e[0m
+       c\bcl\ble\bea\bar\br-\b-d\bdi\bis\bsp\bpl\bla\bay\by (\b(M\bM-\b-C\bC-\b-l\bl)\b)
               Clear the screen and, if  possible,  the  terminal's  scrollback
               buffer,  then  redraw the current line, leaving the current line
               at the top of the screen.
-       \e[1mclear-screen (C-l)\e[0m
+       c\bcl\ble\bea\bar\br-\b-s\bsc\bcr\bre\bee\ben\bn (\b(C\bC-\b-l\bl)\b)
               Clear the screen, then redraw the current line, leaving the cur-
-              rent  line  at the top of the screen.  With an argument, refresh
-              the current line without clearing the screen.
-       \e[1mredraw-current-line\e[0m
+              rent line at the top of the screen.  With  a  numeric  argument,
+              refresh the current line without clearing the screen.
+       r\bre\bed\bdr\bra\baw\bw-\b-c\bcu\bur\brr\bre\ben\bnt\bt-\b-l\bli\bin\bne\be
               Refresh the current line.
 
-   \e[1mCommands for Manipulating the History\e[0m
-       \e[1maccept-line (Newline, Return)\e[0m
+   C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br M\bMa\ban\bni\bip\bpu\bul\bla\bat\bti\bin\bng\bg t\bth\bhe\be H\bHi\bis\bst\bto\bor\bry\by
+       a\bac\bcc\bce\bep\bpt\bt-\b-l\bli\bin\bne\be (\b(N\bNe\bew\bwl\bli\bin\bne\be,\b, R\bRe\bet\btu\bur\brn\bn)\b)
               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 re-
-              call with \e[1madd_history()\e[22m.  If the  line  is  a  modified  history
-              line, the history line is restored to its original state.
-       \e[1mprevious-history (C-p)\e[0m
+              call  with  a\bad\bdd\bd_\b_h\bhi\bis\bst\bto\bor\bry\by(\b()\b).   If  the  line is a modified history
+              line, restore the history line to its original state.
+       p\bpr\bre\bev\bvi\bio\bou\bus\bs-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-p\bp)\b)
               Fetch the previous command from the history list, moving back in
-              the list.
-       \e[1mnext-history (C-n)\e[0m
-              Fetch the next command from the history list, moving forward  in
-              the list.
-       \e[1mbeginning-of-history (M-<)\e[0m
+              the list.  This may also be bound to the up arrow  key  on  some
+              keyboards.
+       n\bne\bex\bxt\bt-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-n\bn)\b)
+              Fetch  the next command from the history list, moving forward in
+              the list.  This may also be bound to the down arrow key on  some
+              keyboards.
+       b\bbe\beg\bgi\bin\bnn\bni\bin\bng\bg-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-<\b<)\b)
               Move to the first line in the history.
-       \e[1mend-of-history (M->)\e[0m
+       e\ben\bnd\bd-\b-o\bof\bf-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b->\b>)\b)
               Move  to  the end of the input history, i.e., the line currently
               being entered.
-       \e[1moperate-and-get-next (C-o)\e[0m
+       o\bop\bpe\ber\bra\bat\bte\be-\b-a\ban\bnd\bd-\b-g\bge\bet\bt-\b-n\bne\bex\bxt\bt (\b(C\bC-\b-o\bo)\b)
               Accept the current line for return to the calling application as
-              if  a newline had been entered, and fetch the next line relative
+              if a newline had been entered, and fetch the next line  relative
               to the current line from the history for editing.  A numeric ar-
               gument,  if supplied, specifies the history entry to use instead
               of the current line.
-       \e[1mfetch-history\e[0m
+       f\bfe\bet\btc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by
               With a numeric argument, fetch that entry from the history  list
               and make it the current line.  Without an argument, move back to
               the first entry in the history list.
-       \e[1mreverse-search-history (C-r)\e[0m
-              Search backward starting at the current  line  and  moving  `up'
-              through  the  history  as  necessary.   This  is  an incremental
-              search.
-       \e[1mforward-search-history (C-s)\e[0m
-              Search forward starting at the current line  and  moving  `down'
+       r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-r\br)\b)
+              Search  backward  starting  at  the current line and moving "up"
+              through the  history  as  necessary.   This  is  an  incremental
+              search.   This  command  sets the region to the matched text and
+              activates the region.
+       f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(C\bC-\b-s\bs)\b)
+              Search forward starting at the current line  and  moving  "down"
               through  the  history  as  necessary.   This  is  an incremental
-              search.
-       \e[1mnon-incremental-reverse-search-history (M-p)\e[0m
+              search.  This command sets the region to the  matched  text  and
+              activates the region.
+       n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-r\bre\bev\bve\ber\brs\bse\be-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-p\bp)\b)
               Search backward through the history starting at the current line
               using  a  non-incremental  search  for  a string supplied by the
-              user.
-       \e[1mnon-incremental-forward-search-history (M-n)\e[0m
+              user.  The search string may match anywhere in a history line.
+       n\bno\bon\bn-\b-i\bin\bnc\bcr\bre\bem\bme\ben\bnt\bta\bal\bl-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-s\bse\bea\bar\brc\bch\bh-\b-h\bhi\bis\bst\bto\bor\bry\by (\b(M\bM-\b-n\bn)\b)
               Search forward  through  the  history  using  a  non-incremental
-              search for a string supplied by the user.
-       \e[1mhistory-search-backward\e[0m
+              search for a string supplied by the user.  The search string may
+              match anywhere in a history line.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
               Search backward through the history for the string of characters
-              between the start of the current line and the current cursor po-
-              sition  (the \e[4mpoint\e[24m).  The search string must match at the begin-
-              ning of a history line.  This is a non-incremental search.
-       \e[1mhistory-search-forward\e[0m
-              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.  This is a
-              non-incremental search.
-       \e[1mhistory-substring-search-backward\e[0m
+              non-incremental search.  This may be bound to the Page Up key on
+              some keyboards.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-s\bse\bea\bar\brc\bch\bh-\b-f\bfo\bor\brw\bwa\bar\brd\bd
+              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.  This is a
+              non-incremental search.  This may be bound to the Page Down  key
+              on some keyboards.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsu\bub\bbs\bst\btr\bri\bin\bng\bg-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
               Search backward through the history for the string of characters
-              between the start of the current line and the current cursor po-
-              sition  (the  \e[4mpoint\e[24m).  The search string may match anywhere in a
-              history line.  This is a non-incremental search.
-       \e[1mhistory-substring-search-forward\e[0m
+              between the start of the current line and the point.  The search
+              string  may match anywhere in a history line.  This is a non-in-
+              cremental search.
+       h\bhi\bis\bst\bto\bor\bry\by-\b-s\bsu\bub\bbs\bst\btr\bri\bin\bng\bg-\b-s\bse\bea\bar\brc\bch\bh-\b-f\bfo\bor\brw\bwa\bar\brd\bd
               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-in-
+              string  may match anywhere in a history line.  This is a non-in-
               cremental search.
-       \e[1myank-nth-arg (M-C-y)\e[0m
-              Insert  the  first argument to the previous command (usually the
-              second word on the previous line) at point.  With an argument \e[4mn\e[24m,
-              insert  the \e[4mn\e[24mth word from the previous command (the words in the
+       y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg (\b(M\bM-\b-C\bC-\b-y\by)\b)
+              Insert the first argument to the previous command  (usually  the
+              second word on the previous line) at point.  With an argument _\bn,
+              insert  the _\bnth word from the previous command (the words in the
               previous command begin with word 0).  A  negative  argument  in-
-              serts  the  \e[4mn\e[24mth word from the end of the previous command.  Once
-              the argument \e[4mn\e[24m is computed, the argument is extracted as if  the
-              "!\e[4mn\e[24m" history expansion had been specified.
-       \e[1myank-last-arg (M-., M-_)\e[0m
-              Insert  the last argument to the previous command (the last word
+              serts  the  _\bnth word from the end of the previous command.  Once
+              the argument _\bn is computed, this uses the history expansion  fa-
+              cilities  to extract the _\bnth word, as if the "!_\bn" history expan-
+              sion had been specified.
+       y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg (\b(M\bM-\b-.\b.,\b, M\bM-\b-_\b_)\b)
+              Insert the last argument to the previous command (the last  word
               of the previous history entry).  With a numeric argument, behave
-              exactly  like  \e[1myank-nth-arg\e[22m.   Successive calls to \e[1myank-last-arg\e[0m
+              exactly  like  y\bya\ban\bnk\bk-\b-n\bnt\bth\bh-\b-a\bar\brg\bg.   Successive calls to y\bya\ban\bnk\bk-\b-l\bla\bas\bst\bt-\b-a\bar\brg\bg
               move back through the history list, inserting the last word  (or
               the  word  specified  by the argument to the first call) of each
               line in turn.  Any numeric argument supplied to these successive
-              calls  determines  the direction to move through the history.  A
-              negative argument switches the  direction  through  the  history
-              (back or forward).  The history expansion facilities are used to
-              extract the last argument, as if the "!$" history expansion  had
+              calls determines the direction to move through the  history.   A
+              negative  argument  switches  the  direction through the history
+              (back or forward).  This uses the history  expansion  facilities
+              to  extract  the last word, as if the "!$" history expansion had
               been specified.
 
-   \e[1mCommands for Changing Text\e[0m
-       \e[4mend-of-file\e[24m \e[1m(usually C-d)\e[0m
-              The  character  indicating  end-of-file  as set, for example, by
-              ``stty''.  If this character is read when there are  no  charac-
-              ters  on  the  line,  and point is at the beginning of the line,
-              readline interprets it as the end of input and returns \e[1mEOF\e[22m.
-       \e[1mdelete-char (C-d)\e[0m
+   C\bCo\bom\bmm\bma\ban\bnd\bds\bs f\bfo\bor\br C\bCh\bha\ban\bng\bgi\bin\bng\bg T\bTe\bex\bxt\bt
+       _\be_\bn_\bd_\b-_\bo_\bf_\b-_\bf_\bi_\bl_\be (\b(u\bus\bsu\bua\bal\bll\bly\by C\bC-\b-d\bd)\b)
+              The character indicating end-of-file as  set,  for  example,  by
+              _\bs_\bt_\bt_\by(1).  If this character is read when there are no characters
+              on the line, and point is at the beginning of the line, r\bre\bea\bad\bdl\bli\bin\bne\be
+              interprets it as the end of input and returns E\bEO\bOF\bF.
+       d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(C\bC-\b-d\bd)\b)
               Delete the character at point.  If this function is bound to the
-              same character as the tty \e[1mEOF \e[22mcharacter, as \e[1mC-d \e[22mcommonly is, see
-              above for the effects.
-       \e[1mbackward-delete-char (Rubout)\e[0m
-              Delete the character behind the cursor.  When  given  a  numeric
+              same character as the tty E\bEO\bOF\bF character, as C\bC-\b-d\bd commonly is, see
+              above for the effects.  This may also be bound to the Delete key
+              on some keyboards.
+       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br (\b(R\bRu\bub\bbo\bou\but\bt)\b)
+              Delete  the  character  behind the cursor.  When given a numeric
               argument, save the deleted text on the kill ring.
-       \e[1mforward-backward-delete-char\e[0m
-              Delete  the  character under the cursor, unless the cursor is at
+       f\bfo\bor\brw\bwa\bar\brd\bd-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br
+              Delete the character under the cursor, unless the cursor  is  at
               the end of the line, in which case the character behind the cur-
               sor is deleted.
-       \e[1mquoted-insert (C-q, C-v)\e[0m
-              Add the next character that you type to the line verbatim.  This
-              is how to insert characters like \e[1mC-q\e[22m, for example.
-       \e[1mtab-insert (M-TAB)\e[0m
+       q\bqu\buo\bot\bte\bed\bd-\b-i\bin\bns\bse\ber\brt\bt (\b(C\bC-\b-q\bq,\b, C\bC-\b-v\bv)\b)
+              Add  the next character typed to the line verbatim.  This is how
+              to insert characters like C\bC-\b-q\bq, for example.
+       t\bta\bab\bb-\b-i\bin\bns\bse\ber\brt\bt (\b(M\bM-\b-T\bTA\bAB\bB)\b)
               Insert a tab character.
-       \e[1mself-insert (a, b, A, 1, !, ...)\e[0m
+       s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt (\b(a\ba,\b, b\bb,\b, A\bA,\b, 1\b1,\b, !\b!,\b, ...)\b)
               Insert the character typed.
-       \e[1mtranspose-chars (C-t)\e[0m
-              Drag the character before point forward over  the  character  at
-              point,  moving point forward as well.  If point is at the end of
-              the line, then this transposes the two characters before  point.
+       b\bbr\bra\bac\bck\bke\bet\bte\bed\bd-\b-p\bpa\bas\bst\bte\be-\b-b\bbe\beg\bgi\bin\bn
+              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 r\bre\bea\bad\bdl\bli\bin\bne\be to  insert  the  pasted
+              text  as  a single unit without treating each character as if it
+              had been read from the keyboard.  The pasted characters are  in-
+              serted  as  if each one was bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt instead of exe-
+              cuting any editing commands.
+              Bracketed paste sets the region to the inserted text  and  acti-
+              vates the region.
+       t\btr\bra\ban\bns\bsp\bpo\bos\bse\be-\b-c\bch\bha\bar\brs\bs (\b(C\bC-\b-t\bt)\b)
+              Drag  the  character  before point forward over the character at
+              point, moving point forward as well.  If point is at the end  of
+              the  line, then this transposes the two characters before point.
               Negative arguments have no effect.
-       \e[1mtranspose-words (M-t)\e[0m
-              Drag  the  word  before  point past the word after point, moving
-              point over that word as well.  If point is at  the  end  of  the
+       t\btr\bra\ban\bns\bsp\bpo\bos\bse\be-\b-w\bwo\bor\brd\bds\bs (\b(M\bM-\b-t\bt)\b)
+              Drag the word before point past the  word  after  point,  moving
+              point  past  that  word  as well.  If point is at the end of the
               line, this transposes the last two words on the line.
-       \e[1mupcase-word (M-u)\e[0m
-              Uppercase  the current (or following) word.  With a negative ar-
+       u\bup\bpc\bca\bas\bse\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-u\bu)\b)
+              Uppercase the current (or following) word.  With a negative  ar-
               gument, uppercase the previous word, but do not move point.
-       \e[1mdowncase-word (M-l)\e[0m
-              Lowercase the current (or following) word.  With a negative  ar-
+       d\bdo\bow\bwn\bnc\bca\bas\bse\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-l\bl)\b)
+              Lowercase  the current (or following) word.  With a negative ar-
               gument, lowercase the previous word, but do not move point.
-       \e[1mcapitalize-word (M-c)\e[0m
+       c\bca\bap\bpi\bit\bta\bal\bli\biz\bze\be-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-c\bc)\b)
               Capitalize the current (or following) word.  With a negative ar-
               gument, capitalize the previous word, but do not move point.
-       \e[1moverwrite-mode\e[0m
+       o\bov\bve\ber\brw\bwr\bri\bit\bte\be-\b-m\bmo\bod\bde\be
               Toggle overwrite mode.  With an explicit positive numeric  argu-
               ment, switches to overwrite mode.  With an explicit non-positive
               numeric argument, switches to insert mode.  This command affects
-              only  \e[1memacs \e[22mmode; \e[1mvi \e[22mmode does overwrite differently.  Each call
-              to \e[4mreadline()\e[24m starts in insert mode.  In overwrite mode, charac-
-              ters  bound to \e[1mself-insert \e[22mreplace the text at point rather than
-              pushing the text  to  the  right.   Characters  bound  to  \e[1mback-\e[0m
-              \e[1mward-delete-char  \e[22mreplace  the  character  before  point  with a
-              space.  By default, this command is unbound.
-
-   \e[1mKilling and Yanking\e[0m
-       \e[1mkill-line (C-k)\e[0m
-              Kill the text from point to the end of the line.
-       \e[1mbackward-kill-line (C-x Rubout)\e[0m
-              Kill backward to the beginning of the line.
-       \e[1munix-line-discard (C-u)\e[0m
-              Kill backward from point to the  beginning  of  the  line.   The
-              killed text is saved on the kill-ring.
-       \e[1mkill-whole-line\e[0m
+              only  e\bem\bma\bac\bcs\bs mode; v\bvi\bi mode does overwrite differently.  Each call
+              to _\br_\be_\ba_\bd_\bl_\bi_\bn_\be_\b(_\b) starts in insert mode.
+              In overwrite mode, characters bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt  replace  the
+              text  at point rather than pushing the text to the right.  Char-
+              acters bound to b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br replace the  character  be-
+              fore  point  with a space.  By default, this command is unbound,
+              but may be bound to the Insert key on some keyboards.
+
+   K\bKi\bil\bll\bli\bin\bng\bg a\ban\bnd\bd Y\bYa\ban\bnk\bki\bin\bng\bg
+       k\bki\bil\bll\bl-\b-l\bli\bin\bne\be (\b(C\bC-\b-k\bk)\b)
+              Kill the text from point to the end of the current line.  With a
+              negative numeric argument, kill backward from the cursor to  the
+              beginning of the line.
+       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-l\bli\bin\bne\be (\b(C\bC-\b-x\bx R\bRu\bub\bbo\bou\but\bt)\b)
+              Kill backward to the beginning of the current line.  With a neg-
+              ative  numeric argument, kill forward from the cursor to the end
+              of the line.
+       u\bun\bni\bix\bx-\b-l\bli\bin\bne\be-\b-d\bdi\bis\bsc\bca\bar\brd\bd (\b(C\bC-\b-u\bu)\b)
+              Kill backward from point to the beginning of  the  line,  saving
+              the killed text on the kill-ring.
+       k\bki\bil\bll\bl-\b-w\bwh\bho\bol\ble\be-\b-l\bli\bin\bne\be
               Kill  all  characters on the current line, no matter where point
               is.
-       \e[1mkill-word (M-d)\e[0m
-              Kill from point the end of  the  current  word,  or  if  between
+       k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-d\bd)\b)
+              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 those used by \e[1mforward-word\e[22m.
-       \e[1mbackward-kill-word (M-Rubout)\e[0m
+              same as those used by f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+       b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-k\bki\bil\bll\bl-\b-w\bwo\bor\brd\bd (\b(M\bM-\b-R\bRu\bub\bbo\bou\but\bt)\b)
               Kill the word behind point.  Word boundaries  are  the  same  as
-              those used by \e[1mbackward-word\e[22m.
-       \e[1munix-word-rubout (C-w)\e[0m
+              those used by b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+       u\bun\bni\bix\bx-\b-w\bwo\bor\brd\bd-\b-r\bru\bub\bbo\bou\but\bt (\b(C\bC-\b-w\bw)\b)
               Kill  the  word behind point, using white space as a word bound-
-              ary.  The killed text is saved on the kill-ring.
-       \e[1munix-filename-rubout\e[0m
+              ary, saving the killed text on the kill-ring.
+       u\bun\bni\bix\bx-\b-f\bfi\bil\ble\ben\bna\bam\bme\be-\b-r\bru\bub\bbo\bou\but\bt
               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.
-       \e[1mdelete-horizontal-space (M-\)\e[0m
+              character  as the word boundaries, saving the killed text on the
+              kill-ring.
+       d\bde\bel\ble\bet\bte\be-\b-h\bho\bor\bri\biz\bzo\bon\bnt\bta\bal\bl-\b-s\bsp\bpa\bac\bce\be (\b(M\bM-\b-\\b\)\b)
               Delete all spaces and tabs around point.
-       \e[1mkill-region\e[0m
-              Kill the text between the point and  \e[4mmark\e[24m  (saved  cursor  posi-
-              tion).  This text is referred to as the \e[4mregion\e[24m.
-       \e[1mcopy-region-as-kill\e[0m
-              Copy the text in the region to the kill buffer.
-       \e[1mcopy-backward-word\e[0m
+       k\bki\bil\bll\bl-\b-r\bre\beg\bgi\bio\bon\bn
+              Kill the text in the current region.
+       c\bco\bop\bpy\by-\b-r\bre\beg\bgi\bio\bon\bn-\b-a\bas\bs-\b-k\bki\bil\bll\bl
+              Copy the text in the region to the kill buffer,  so  it  can  be
+              yanked immediately.
+       c\bco\bop\bpy\by-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd
               Copy  the word before point to the kill buffer.  The word bound-
-              aries are the same as \e[1mbackward-word\e[22m.
-       \e[1mcopy-forward-word\e[0m
+              aries are the same as b\bba\bac\bck\bkw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+       c\bco\bop\bpy\by-\b-f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd
               Copy the word following point to  the  kill  buffer.   The  word
-              boundaries are the same as \e[1mforward-word\e[22m.
-       \e[1myank (C-y)\e[0m
+              boundaries are the same as f\bfo\bor\brw\bwa\bar\brd\bd-\b-w\bwo\bor\brd\bd.
+       y\bya\ban\bnk\bk (\b(C\bC-\b-y\by)\b)
               Yank the top of the kill ring into the buffer at point.
-       \e[1myank-pop (M-y)\e[0m
+       y\bya\ban\bnk\bk-\b-p\bpo\bop\bp (\b(M\bM-\b-y\by)\b)
               Rotate  the kill ring, and yank the new top.  Only works follow-
-              ing \e[1myank \e[22mor \e[1myank-pop\e[22m.
+              ing y\bya\ban\bnk\bk or y\bya\ban\bnk\bk-\b-p\bpo\bop\bp.
 
-   \e[1mNumeric Arguments\e[0m
-       \e[1mdigit-argument (M-0, M-1, ..., M--)\e[0m
+   N\bNu\bum\bme\ber\bri\bic\bc A\bAr\brg\bgu\bum\bme\ben\bnt\bts\bs
+       d\bdi\big\bgi\bit\bt-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt (\b(M\bM-\b-0\b0,\b, M\bM-\b-1\b1,\b, ...,\b, M\bM-\b--\b-)\b)
               Add this digit to the argument already accumulating, or start  a
               new argument.  M-- starts a negative argument.
-       \e[1muniversal-argument\e[0m
+       u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bt
               This  is another way to specify an argument.  If this command is
               followed by one or more digits, optionally with a leading  minus
               sign,  those digits define the argument.  If the command is fol-
-              lowed by digits, executing \e[1muniversal-argument \e[22magain ends the nu-
+              lowed by digits, executing u\bun\bni\biv\bve\ber\brs\bsa\bal\bl-\b-a\bar\brg\bgu\bum\bme\ben\bnt\bagain ends the nu-
               meric argument, but is otherwise ignored.  As a special case, if
               this command is immediately followed by a character that is nei-
-              ther a digit or minus sign, the argument count for the next com-
-              mand is multiplied by four.  The  argument  count  is  initially
-              one,  so  executing this function the first time makes the argu-
+              ther a digit nor minus sign, the argument  count  for  the  next
+              command  is multiplied by four.  The argument count is initially
+              one, so executing this function the first time makes  the  argu-
               ment count four, a second time makes the argument count sixteen,
               and so on.
 
-   \e[1mCompleting\e[0m
-       \e[1mcomplete (TAB)\e[0m
+   C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg
+       c\bco\bom\bmp\bpl\ble\bet\bte\be (\b(T\bTA\bAB\bB)\b)
               Attempt to perform completion on the text before point.  The ac-
-              tual completion performed is  application-specific.   \e[1mBash\e[22m,  for
-              instance,  attempts  completion  treating the text as a variable
-              (if the text begins with \e[1m$\e[22m), username (if the text  begins  with
-              \e[1m~\e[22m),  hostname (if the text begins with \e[1m@\e[22m), or command (including
-              aliases and functions) in turn.  If none  of  these  produces  a
-              match,  filename  completion  is  attempted.   \e[1mGdb\e[22m, on the other
-              hand, allows completion of program functions and variables,  and
-              only attempts filename completion under certain circumstances.
-       \e[1mpossible-completions (M-?)\e[0m
+              tual  completion  performed  is application-specific.  B\bBa\bas\bsh\bh, for
+              instance,  attempts  programmable  completion  first,  otherwise
+              treating  the  text  as  a variable (if the text begins with $\b$),
+              username (if the text begins with ~\b~), hostname (if the text  be-
+              gins  with  @\b@),  or  command  (including aliases, functions, and
+              builtins) in turn.  If none of these produces a match, it  falls
+              back  to  filename  completion.   G\bGd\bdb\bb, on the other hand, allows
+              completion of program functions and variables, and only attempts
+              filename completion under certain  circumstances.   The  default
+              r\bre\bea\bad\bdl\bli\bin\bne\be completion is filename completion.
+       p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(M\bM-\b-?\b?)\b)
               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 \e[1mcompletion-display-width\e[22m, the value
-              of the environment variable \e[1mCOLUMNS\e[22m, or  the  screen  width,  in
+              displaying completions, r\bre\bea\bad\bdl\bli\bin\bne\be sets the number of columns used
+              for display to the value of c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn-\b-d\bdi\bis\bsp\bpl\bla\bay\by-\b-w\bwi\bid\bdt\bth\bh, the  value
+              of  the  environment  variable  C\bCO\bOL\bLU\bUM\bMN\bNS\bS, or the screen width, in
               that order.
-       \e[1minsert-completions (M-*)\e[0m
-              Insert  all completions of the text before point that would have
-              been generated by \e[1mpossible-completions\e[22m.
-       \e[1mmenu-complete\e[0m
-              Similar to \e[1mcomplete\e[22m, but replaces the word to be completed  with
-              a  single match from the list of possible completions.  Repeated
-              execution of \e[1mmenu-complete \e[22msteps through the  list  of  possible
-              completions,  inserting  each  match in turn.  At the end of the
-              list of completions, the bell is rung (subject to the setting of
-              \e[1mbell-style\e[22m) and the original text is restored.  An argument of \e[4mn\e[0m
-              moves \e[4mn\e[24m positions forward in the list of matches; a negative ar-
-              gument may be used to move backward through the list.  This com-
-              mand is intended to be bound to \e[1mTAB\e[22m, but is unbound by default.
-       \e[1mmenu-complete-backward\e[0m
-              Identical to \e[1mmenu-complete\e[22m, but moves backward through the  list
-              of  possible  completions,  as if \e[1mmenu-complete \e[22mhad been given a
+       i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs (\b(M\bM-\b-*\b*)\b)
+              Insert all completions of the text before point that would  have
+              been generated by p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs, separated by a space.
+       m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be
+              Similar  to c\bco\bom\bmp\bpl\ble\bet\bte\be, but replaces the word to be completed with
+              a single match from the list of possible  completions.   Repeat-
+              edly  executing m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be steps through the list of possible
+              completions, inserting each match in turn.  At the  end  of  the
+              list  of  completions,  m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be rings the bell (subject to
+              the setting of b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be) and restores the original  text.   An
+              argument  of _\bn moves _\bn positions forward in the list of matches;
+              a negative argument moves backward through the list.  This  com-
+              mand is intended to be bound to T\bTA\bAB\bB, but is unbound by default.
+       m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd
+              Identical  to m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be, but moves backward through the list
+              of possible completions, as if m\bme\ben\bnu\bu-\b-c\bco\bom\bmp\bpl\ble\bet\bte\be had  been  given  a
               negative argument.  This command is unbound by default.
-       \e[1mdelete-char-or-list\e[0m
-              Deletes the character under the cursor if not at  the  beginning
-              or  end  of  the  line (like \e[1mdelete-char\e[22m).  If at the end of the
-              line, behaves identically to \e[1mpossible-completions\e[22m.
-
-   \e[1mKeyboard Macros\e[0m
-       \e[1mstart-kbd-macro (C-x ()\e[0m
-              Begin saving the characters  typed  into  the  current  keyboard
+       e\bex\bxp\bpo\bor\brt\bt-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs
+              Perform  completion  on the word before point as described above
+              and write the list of possible completions to r\bre\bea\bad\bdl\bli\bin\bne\be's  output
+              stream  using the following format, writing information on sepa-
+              rate lines:
+
+              +\bo      the number of matches _\bN;
+              +\bo      the word being completed;
+              +\bo      _\bS:_\bE, where _\bS and _\bE are the start and end offsets  of  the
+                     word in the r\bre\bea\bad\bdl\bli\bin\bne\be line buffer; then
+              +\bo      each match, one per line
+
+              If  there  are  no matches, the first line will be "0", and this
+              command does not print any output after the _\bS:_\bE.   If  there  is
+              only  a  single  match, this prints a single line containing it.
+              If there is more than one match, this prints the  common  prefix
+              of  the matches, which may be empty, on the first line after the
+              _\bS:_\bE, then the matches on subsequent lines.  In this case, _\bN will
+              include the first line with the common prefix.
+
+              The user or application should be able to accommodate the possi-
+              bility of a blank line.  The intent is that the user or applica-
+              tion reads _\bN lines after the line containing _\bS:_\bE to  obtain  the
+              match list.  This command is unbound by default.
+
+       d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br-\b-o\bor\br-\b-l\bli\bis\bst\bt
+              Deletes  the  character under the cursor if not at the beginning
+              or end of the line (like d\bde\bel\ble\bet\bte\be-\b-c\bch\bha\bar\br).  At the end of the  line,
+              it behaves identically to p\bpo\bos\bss\bsi\bib\bbl\ble\be-\b-c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bns\bs.  This command is
+              unbound by default.
+
+   K\bKe\bey\byb\bbo\boa\bar\brd\bd M\bMa\bac\bcr\bro\bos\bs
+       s\bst\bta\bar\brt\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx (\b()\b)
+              Begin  saving  the  characters  typed  into the current keyboard
               macro.
-       \e[1mend-kbd-macro (C-x ))\e[0m
+       e\ben\bnd\bd-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx )\b))\b)
               Stop saving the characters typed into the current keyboard macro
               and store the definition.
-       \e[1mcall-last-kbd-macro (C-x e)\e[0m
+       c\bca\bal\bll\bl-\b-l\bla\bas\bst\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b(C\bC-\b-x\bx e\be)\b)
               Re-execute the last keyboard macro defined, by making the  char-
               acters in the macro appear as if typed at the keyboard.
-       \e[1mprint-last-kbd-macro ()\e[0m
+       p\bpr\bri\bin\bnt\bt-\b-l\bla\bas\bst\bt-\b-k\bkb\bbd\bd-\b-m\bma\bac\bcr\bro\bo (\b()\b)
               Print  the  last keyboard macro defined in a format suitable for
-              the \e[4minputrc\e[24m file.
+              the _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
 
-   \e[1mMiscellaneous\e[0m
-       \e[1mre-read-init-file (C-x C-r)\e[0m
-              Read in the contents of the \e[4minputrc\e[24m file,  and  incorporate  any
+   M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs
+       r\bre\be-\b-r\bre\bea\bad\bd-\b-i\bin\bni\bit\bt-\b-f\bfi\bil\ble\be (\b(C\bC-\b-x\bx C\bC-\b-r\br)\b)
+              Read in the contents of the _\bi_\bn_\bp_\bu_\bt_\br_\bc file,  and  incorporate  any
               bindings or variable assignments found there.
-       \e[1mabort (C-g)\e[0m
+       a\bab\bbo\bor\brt\bt (\b(C\bC-\b-g\bg)\b)
               Abort  the  current editing command and ring the terminal's bell
-              (subject to the setting of \e[1mbell-style\e[22m).
-       \e[1mdo-lowercase-version (M-A, M-B, M-\e[4m\e[22mx\e[24m\e[1m, ...)\e[0m
-              If the metafied character \e[4mx\e[24m is uppercase, run the  command  that
+              (subject to the setting of b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\be).
+       d\bdo\bo-\b-l\blo\bow\bwe\ber\brc\bca\bas\bse\be-\b-v\bve\ber\brs\bsi\bio\bon\bn (\b(M\bM-\b-A\bA,\b, M\bM-\b-B\bB,\b, M\bM-\b-_\bx,\b, ...)\b)
+              If the metafied character _\bx is uppercase, run the  command  that
               is bound to the corresponding metafied lowercase character.  The
-              behavior is undefined if \e[4mx\e[24m is already lowercase.
-       \e[1mprefix-meta (ESC)\e[0m
-              Metafy the next character typed.  \e[1mESC f \e[22mis equivalent to \e[1mMeta-f\e[22m.
-       \e[1mundo (C-_, C-x C-u)\e[0m
+              behavior is undefined if _\bx is already lowercase.
+       p\bpr\bre\bef\bfi\bix\bx-\b-m\bme\bet\bta\ba (\b(E\bES\bSC\bC)\b)
+              Metafy the next character typed.  E\bES\bSC\bC f\bf is equivalent to M\bMe\bet\bta\ba-\b-f\bf.
+       u\bun\bnd\bdo\bo (\b(C\bC-\b-_\b_,\b, C\bC-\b-x\bx C\bC-\b-u\bu)\b)
               Incremental undo, separately remembered for each line.
-       \e[1mrevert-line (M-r)\e[0m
-              Undo all changes made to this line.  This is like executing  the
-              \e[1mundo  \e[22mcommand  enough  times  to  return the line to its initial
+       r\bre\bev\bve\ber\brt\bt-\b-l\bli\bin\bne\be (\b(M\bM-\b-r\br)\b)
+              Undo  all changes made to this line.  This is like executing the
+              u\bun\bnd\bdo\bo command enough times to return  the  line  to  its  initial
               state.
-       \e[1mtilde-expand (M-&)\e[0m
+       t\bti\bil\bld\bde\be-\b-e\bex\bxp\bpa\ban\bnd\bd (\b(M\bM-\b-~\b~)\b)
               Perform tilde expansion on the current word.
-       \e[1mset-mark (C-@, M-<space>)\e[0m
-              Set the mark to the point.  If a numeric argument  is  supplied,
-              the mark is set to that position.
-       \e[1mexchange-point-and-mark (C-x C-x)\e[0m
-              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.
-       \e[1mcharacter-search (C-])\e[0m
-              A character is read and point is moved to the next occurrence of
-              that character.  A negative argument searches for  previous  oc-
+       s\bse\bet\bt-\b-m\bma\bar\brk\bk (\b(C\bC-\b-@\b@,\b, M\bM-\b-<\b<s\bsp\bpa\bac\bce\be>\b>)\b)
+              Set  the  mark to the point.  If a numeric argument is supplied,
+              set the mark to that position.
+       e\bex\bxc\bch\bha\ban\bng\bge\be-\b-p\bpo\boi\bin\bnt\bt-\b-a\ban\bnd\bd-\b-m\bma\bar\brk\bk (\b(C\bC-\b-x\bx C\bC-\b-x\bx)\b)
+              Swap the point with the mark.  Set the current  cursor  position
+              to the saved position, then set the mark to the old cursor posi-
+              tion.
+       c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh (\b(C\bC-\b-]\b])\b)
+              Read  a  character and move point to the next occurrence of that
+              character.  A negative argument  searches  for  previous  occur-
+              rences.
+       c\bch\bha\bar\bra\bac\bct\bte\ber\br-\b-s\bse\bea\bar\brc\bch\bh-\b-b\bba\bac\bck\bkw\bwa\bar\brd\bd (\b(M\bM-\b-C\bC-\b-]\b])\b)
+              Read  a  character  and move point to the previous occurrence of
+              that character.  A negative argument searches for subsequent oc-
               currences.
-       \e[1mcharacter-search-backward (M-C-])\e[0m
-              A  character  is  read and point is moved to the previous occur-
-              rence of that character.  A negative argument searches for  sub-
-              sequent occurrences.
-       \e[1mskip-csi-sequence\e[0m
-              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 bound to "\[", keys producing  such  sequences  will
-              have  no  effect  unless explicitly bound to a readline command,
-              instead of inserting stray characters into the  editing  buffer.
-              This is unbound by default, but usually bound to ESC-[.
-       \e[1minsert-comment (M-#)\e[0m
-              Without  a  numeric  argument,  the  value  of the readline \e[1mcom-\e[0m
-              \e[1mment-begin \e[22mvariable is inserted at the beginning of the  current
-              line.  If a numeric argument is supplied, this command acts as a
-              toggle: if the characters at the beginning of the  line  do  not
-              match  the value of \e[1mcomment-begin\e[22m, the value is inserted, other-
-              wise the characters in \e[1mcomment-begin \e[22mare deleted from the begin-
-              ning  of the line.  In either case, the line is accepted as if a
-              newline had been typed.   The  default  value  of  \e[1mcomment-begin\e[0m
-              makes  the  current line a shell comment.  If a numeric argument
+       s\bsk\bki\bip\bp-\b-c\bcs\bsi\bi-\b-s\bse\beq\bqu\bue\ben\bnc\bce\be
+              Read enough characters to consume a multi-key sequence  such  as
+              those  defined  for keys like Home and End.  CSI sequences begin
+              with a Control Sequence Indicator (CSI), usually _\bE_\bS_\bC _\b[.  If this
+              sequence is bound to "\e[", keys producing CSI sequences have no
+              effect unless explicitly bound to a r\bre\bea\bad\bdl\bli\bin\bne\be command, instead of
+              inserting stray characters into the editing buffer.  This is un-
+              bound by default, but usually bound to _\bE_\bS_\bC _\b[.
+       i\bin\bns\bse\ber\brt\bt-\b-c\bco\bom\bmm\bme\ben\bnt\bt (\b(M\bM-\b-#\b#)\b)
+              Without a numeric argument, insert the  value  of  the  r\bre\bea\bad\bdl\bli\bin\bne\be
+              c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn variable at the beginning of the current line.  If
+              a  numeric  argument is supplied, this command acts as a toggle:
+              if the characters at the beginning of the line do not match  the
+              value  of  c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn, insert the value; otherwise delete the
+              characters in c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn from the beginning of the line.   In
+              either  case,  the  line  is  accepted  as if a newline had been
+              typed.  The default value of c\bco\bom\bmm\bme\ben\bnt\bt-\b-b\bbe\beg\bgi\bin\bn causes  this  command
+              to make the current line a shell comment.  If a numeric argument
               causes the comment character to be removed, the line will be ex-
               ecuted by the shell.
-       \e[1mdump-functions\e[0m
-              Print  all  of the functions and their key bindings to the read-
-              line output stream.  If a numeric argument is supplied, the out-
-              put  is  formatted  in such a way that it can be made part of an
-              \e[4minputrc\e[24m file.
-       \e[1mdump-variables\e[0m
-              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
-              \e[4minputrc\e[24m file.
-       \e[1mdump-macros\e[0m
-              Print  all of the readline key sequences bound to macros and the
-              strings they output.  If a numeric  argument  is  supplied,  the
+       d\bdu\bum\bmp\bp-\b-f\bfu\bun\bnc\bct\bti\bio\bon\bns\bs
+              Print  all  of the functions and their key bindings to the r\bre\bea\bad\bd-\b-
+              l\bli\bin\bne\be output stream.  If a numeric argument is supplied, the out-
+              put is formatted in such a way that it can be made  part  of  an
+              _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
+       d\bdu\bum\bmp\bp-\b-v\bva\bar\bri\bia\bab\bbl\ble\bes\bs
+              Print  all  of  the  settable  variables and their values to the
+              r\bre\bea\bad\bdl\bli\bin\bne\be output stream.  If a numeric argument is supplied,  the
               output is formatted in such a way that it can be made part of an
-              \e[4minputrc\e[24m file.
-       \e[1memacs-editing-mode (C-e)\e[0m
-              When in \e[1mvi \e[22mcommand mode, this causes a switch to  \e[1memacs  \e[22mediting
-              mode.
-       \e[1mvi-editing-mode (M-C-j)\e[0m
-              When  in  \e[1memacs \e[22mediting mode, this causes a switch to \e[1mvi \e[22mediting
+              _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
+       d\bdu\bum\bmp\bp-\b-m\bma\bac\bcr\bro\bos\bs
+              Print  all of the r\bre\bea\bad\bdl\bli\bin\bne\be key sequences bound to macros and the
+              strings they output to the r\bre\bea\bad\bdl\bli\bin\bne\be output stream.  If a numeric
+              argument is supplied, the output is formatted in such a way that
+              it can be made part of an _\bi_\bn_\bp_\bu_\bt_\br_\bc file.
+       e\bex\bxe\bec\bcu\but\bte\be-\b-n\bna\bam\bme\bed\bd-\b-c\bco\bom\bmm\bma\ban\bnd\bd (\b(M\bM-\b-x\bx)\b)
+              Read a bindable r\bre\bea\bad\bdl\bli\bin\bne\be command name from the input and execute
+              the function to which it's bound, as  if  the  key  sequence  to
+              which  it  was bound appeared in the input.  If this function is
+              supplied with a numeric argument, it passes that argument to the
+              function it executes.
+       e\bem\bma\bac\bcs\bs-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(C\bC-\b-e\be)\b)
+              When in v\bvi\bi command mode, this switches r\bre\bea\bad\bdl\bli\bin\bne\be to e\bem\bma\bac\bcs\bs editing
               mode.
+       v\bvi\bi-\b-e\bed\bdi\bit\bti\bin\bng\bg-\b-m\bmo\bod\bde\be (\b(M\bM-\b-C\bC-\b-j\bj)\b)
+              When in e\bem\bma\bac\bcs\bs editing mode, this switches to v\bvi\bi editing mode.
 
-\e[1mDEFAULT KEY BINDINGS\e[0m
+D\bDE\bEF\bFA\bAU\bUL\bLT\bT K\bKE\bEY\bY B\bBI\bIN\bND\bDI\bIN\bNG\bGS\bS
        The following is a list of the default emacs and vi bindings.   Charac-
        ters  with the eighth bit set are written as M-<character>, and are re-
-       ferred to as \e[4mmetafied\e[24m characters.  The printable ASCII  characters  not
+       ferred to as _\bm_\be_\bt_\ba_\bf_\bi_\be_\bd characters.  The printable ASCII  characters  not
        mentioned  in  the  list  of  emacs  standard bindings are bound to the
-       \e[1mself-insert \e[22mfunction, which just inserts the given character  into  the
+       s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bfunction, which just inserts the given character  into  the
        input line.  In vi insertion mode, all characters not specifically men-
-       tioned are bound to \e[1mself-insert\e[22m.  Characters assigned to signal genera-
-       tion by \e[4mstty\e[24m(1) or the terminal driver, such as C-Z or C-C, retain that
-       function.  Upper and lower case metafied characters are  bound  to  the
-       same  function in the emacs mode meta keymap.  The remaining characters
-       are unbound, which causes readline to ring the  bell  (subject  to  the
-       setting of the \e[1mbell-style \e[22mvariable).
-
-   \e[1mEmacs Mode\e[0m
+       tioned are bound to s\bse\bel\blf\bf-\b-i\bin\bns\bse\ber\brt\bt.  Characters assigned to signal genera-
+       tion by _\bs_\bt_\bt_\by(1) or the terminal driver, such as C-Z or C-C, retain that
+       function.   Upper  and  lower case metafied characters are bound to the
+       same function in the emacs mode meta keymap.  The remaining  characters
+       are  unbound,  which  causes  r\bre\bea\bad\bdl\bli\bin\bne\be to ring the bell (subject to the
+       setting of the b\bbe\bel\bll\bl-\b-s\bst\bty\byl\ble\bvariable).
+
+   E\bEm\bma\bac\bcs\bs M\bMo\bod\bde\be
              Emacs Standard bindings
 
              "C-@"  set-mark
@@ -1017,6 +1139,7 @@ READLINE(3)                Library Functions Manual                READLINE(3)
              "M-R"  revert-line
              "M-T"  transpose-words
              "M-U"  upcase-word
+             "M-X"  execute-named-command
              "M-Y"  yank-pop
              "M-\"  delete-horizontal-space
              "M-~"  tilde-expand
@@ -1034,8 +1157,7 @@ READLINE(3)                Library Functions Manual                READLINE(3)
              "C-XE"  call-last-kbd-macro
              "C-XC-?"  backward-kill-line
 
-
-   \e[1mVI Mode bindings\e[0m
+   V\bVI\bI M\bMo\bod\bde\be b\bbi\bin\bnd\bdi\bin\bng\bgs\bs
              VI Insert Mode functions
 
              "C-D"  vi-eof-maybe
@@ -1043,15 +1165,17 @@ READLINE(3)                Library Functions Manual                READLINE(3)
              "C-I"  complete
              "C-J"  accept-line
              "C-M"  accept-line
+             "C-N"  menu-complete
+             "C-P"  menu-complete-backward
              "C-R"  reverse-search-history
              "C-S"  forward-search-history
              "C-T"  transpose-chars
              "C-U"  unix-line-discard
              "C-V"  quoted-insert
-             "C-W"  unix-word-rubout
+             "C-W"  vi-unix-word-rubout
              "C-Y"  yank
              "C-["  vi-movement-mode
-             "C-_"  undo
+             "C-_"  vi-undo
              " " to "~"  self-insert
              "C-?"  backward-delete-char
 
@@ -1073,7 +1197,7 @@ READLINE(3)                Library Functions Manual                READLINE(3)
              "C-T"  transpose-chars
              "C-U"  unix-line-discard
              "C-V"  quoted-insert
-             "C-W"  unix-word-rubout
+             "C-W"  vi-unix-word-rubout
              "C-Y"  yank
              "C-_"  vi-undo
              " "  forward-char
@@ -1107,7 +1231,7 @@ READLINE(3)                Library Functions Manual                READLINE(3)
              "T"  vi-char-search
              "U"  revert-line
              "W"  vi-next-word
-             "X"  backward-delete-char
+             "X"  vi-rubout
              "Y"  vi-yank-to
              "\"  vi-complete
              "^"  vi-first-print
@@ -1122,7 +1246,7 @@ READLINE(3)                Library Functions Manual                READLINE(3)
              "h"  backward-char
              "i"  vi-insertion-mode
              "j"  next-history
-             "k"  prev-history
+             "k"  previous-history
              "l"  forward-char
              "m"  vi-set-mark
              "n"  vi-search-again
@@ -1137,39 +1261,37 @@ READLINE(3)                Library Functions Manual                READLINE(3)
              "|"  vi-column
              "~"  vi-change-case
 
-\e[1mSEE ALSO\e[0m
-       \e[4mThe\e[24m \e[4mGnu\e[24m \e[4mReadline\e[24m \e[4mLibrary\e[24m, Brian Fox and Chet Ramey
-       \e[4mThe\e[24m \e[4mGnu\e[24m \e[4mHistory\e[24m \e[4mLibrary\e[24m, Brian Fox and Chet Ramey
-       \e[4mbash\e[24m(1)
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       _\bT_\bh_\be _\bG_\bn_\bu _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+       _\bT_\bh_\be _\bG_\bn_\bu _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
+       _\bb_\ba_\bs_\bh(1)
 
-\e[1mFILES\e[0m
-       \e[4m~/.inputrc\e[0m
-              Individual \e[1mreadline \e[22minitialization file
+F\bFI\bIL\bLE\bES\bS
+       _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc
+              Individual r\bre\bea\bad\bdl\bli\bin\bne\binitialization file
 
-\e[1mAUTHORS\e[0m
+A\bAU\bUT\bTH\bHO\bOR\bRS\bS
        Brian Fox, Free Software Foundation
        bfox@gnu.org
 
        Chet Ramey, Case Western Reserve University
        chet.ramey@case.edu
 
-\e[1mBUG REPORTS\e[0m
-       If  you  find  a bug in \e[1mreadline, \e[22myou should report it.  But first, you
-       should make sure that it really is a bug, and that it  appears  in  the
-       latest version of the \e[1mreadline \e[22mlibrary that you have.
+B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
+       If you find a bug in r\bre\bea\bad\bdl\bli\bin\bne\be, you should report it.   But  first,  you
+       should  make  sure  that it really is a bug, and that it appears in the
+       latest version of the r\bre\bea\bad\bdl\bli\bin\bne\blibrary that you have.
 
-       Once  you have determined that a bug actually exists, mail a bug report
-       to \e[4mbug-readline\e[24m@\e[4mgnu.org\e[24m.  If you have a fix, you are  welcome  to  mail
-       that  as  well!   Suggestions  and  `philosophical'  bug reports may be
-       mailed to  \e[4mbug-readline\e[24m@\e[4mgnu.org\e[24m  or  posted  to  the  Usenet  newsgroup
-       \e[1mgnu.bash.bug\e[22m.
+       Once you have determined that a bug actually exists, mail a bug  report
+       to  _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg.   If  you have a fix, you are welcome to mail
+       that as well!  Suggestions  and  "philosophical"  bug  reports  may  be
+       mailed  to  _\bb_\bu_\bg_\b-_\br_\be_\ba_\bd_\bl_\bi_\bn_\be@_\bg_\bn_\bu_\b._\bo_\br_\bg  or  posted  to  the  Usenet newsgroup
+       g\bgn\bnu\bu.\b.b\bba\bas\bsh\bh.\b.b\bbu\bug\bg.
 
        Comments and bug reports concerning this manual page should be directed
-       to \e[4mchet.ramey@case.edu\e[24m.
+       to _\bc_\bh_\be_\bt_\b._\br_\ba_\bm_\be_\by_\b@_\bc_\ba_\bs_\be_\b._\be_\bd_\bu.
 
-\e[1mBUGS\e[0m
+B\bBU\bUG\bGS\bS
        It's too big and too slow.
 
-
-
-GNU Readline 8.2               2022 September 19                   READLINE(3)
+GNU Readline 8.3               2024 December 30                    _\bR_\bE_\bA_\bD_\bL_\bI_\bN_\bE(3)
index 77ef02a6a9f8b70f829543cd9b97a421a07c90ab..f66e21a318daf1008d99026534e2d4c76af357c6 100644 (file)
@@ -6,15 +6,41 @@
 .\"    Case Western Reserve University
 .\"    chet.ramey@case.edu
 .\"
-.\"    Last Change: Mon Sep 19 11:11:22 EDT 2022
+.\"    Last Change: Mon Dec 30 11:27:47 EST 2024
 .\"
-.TH READLINE 3 "2022 September 19" "GNU Readline 8.2"
+.TH READLINE 3 "2024 December 30" "GNU Readline 8.3"
 .\"
+.ie \n(.g \{\
+.ds ' \(aq
+.ds " \(dq
+.ds ^ \(ha
+.ds ~ \(ti
+.\}
+.el \{\
+.ds ' '
+.\" \*" is not usable in macro arguments on AT&T troff (DWB, Solaris 10)
+.ds " ""\" two adjacent quotes and no space before this comment
+.ds ^ ^
+.ds ~ ~
+.\}
+.
 .\" File Name macro.  This used to be `.PN', for Path Name,
 .\" but Sun doesn't seem to like that very much.
+.\" \% at the beginning of the string protects the filename from hyphenation.
 .\"
 .de FN
-\fI\|\\$1\|\fP
+\%\fI\|\\$1\|\fP
+..
+.\"
+.\" Quotation macro: generate consistent quoted strings that don't rely
+.\" on the presence of the `CW' constant-width font.
+.\"
+.de Q
+.ie \n(.g \(lq\\$1\(rq\\$2
+.el \{\
+.  if t ``\\$1''\\$2
+.  if n "\\$1"\\$2
+.\}
 ..
 .SH NAME
 readline \- get a line from a user with editing
@@ -34,22 +60,27 @@ readline \- get a line from a user with editing
 \fBreadline\fP (\fIconst char *prompt\fP);
 .fi
 .SH COPYRIGHT
-.if n Readline is Copyright (C) 1989\-2020 Free Software Foundation,  Inc.
-.if t Readline is Copyright \(co 1989\-2020 Free Software Foundation, Inc.
+.if n Readline is Copyright (C) 1989\-2025 Free Software Foundation,  Inc.
+.if t Readline is Copyright \(co 1989\-2025 Free Software Foundation, Inc.
 .SH DESCRIPTION
 .LP
 .B readline
-will read a line from the terminal
+reads a line from the terminal
 and return it, using
 .B prompt
-as a prompt.  If 
+as a prompt.
+If
 .B prompt
-is \fBNULL\fP or the empty string, no prompt is issued.
+is \fBNULL\fP or the empty string, \fBreadline\fP does not issue a prompt.
 The line returned is allocated with
 .IR malloc (3);
-the caller must free it when finished.  The line returned
+the caller must free it when finished.
+The line returned
 has the final newline removed, so only the text of the line
 remains.
+Since it's possible to enter characters into the line while quoting
+them to disable any \fBreadline\fP editing function they might normally have,
+this line may include embedded newlines and other special characters.
 .LP
 .B readline
 offers editing capabilities while the user is entering the
@@ -65,69 +96,108 @@ for additional information.
 .SH RETURN VALUE
 .LP
 .B readline
-returns the text of the line read.  A blank line
-returns the empty string.  If
+returns the text of the line read.
+A blank line returns the empty string.
+If
 .B EOF
 is encountered while reading a line, and the line is empty,
-.B NULL
-is returned.  If an
+.B readline
+returns
+.BR NULL .
+If an
 .B EOF
-is read with a non\-empty line, it is
-treated as a newline.
+is read with a non\-empty line, it is treated as a newline.
 .SH NOTATION
 .LP
-An Emacs-style notation is used to denote
-keystrokes.  Control keys are denoted by C\-\fIkey\fR, e.g., C\-n
-means Control\-N.  Similarly,
+This section uses Emacs-style editing concepts and uses its
+notation for keystrokes.
+Control keys are denoted by C\-\fIkey\fP, e.g., C\-n means Control\-N.
+Similarly,
 .I meta
-keys are denoted by M\-\fIkey\fR, so M\-x means Meta\-X.  (On keyboards
-without a
-.I meta
-key, M\-\fIx\fP means ESC \fIx\fP, i.e., press the Escape key
-then the
+keys are denoted by M\-\fIkey\fP, so M\-x means Meta\-X.
+The Meta key is often labeled
+.Q Alt
+or
+.Q Option .
+.PP
+On keyboards without a
+.I Meta
+key, M\-\fIx\fP means ESC \fIx\fP, i.e., press and release
+the Escape key, then press and release the
 .I x
-key.  This makes ESC the \fImeta prefix\fP.
-The combination M\-C\-\fIx\fP means ESC\-Control\-\fIx\fP,
-or press the Escape key
-then hold the Control key while pressing the
+key, in sequence.
+This makes ESC the \fImeta prefix\fP.
+The combination M\-C\-\fIx\fP means ESC Control\-\fIx\fP:
+press and release the Escape key,
+then press and hold the Control key while pressing the
 .I x
-key.)
+key, then release both.
 .PP
-Readline commands may be given numeric
+On some keyboards, the Meta key modifier produces characters with
+the eighth bit (0200) set.
+You can use the \fBenable\-meta\-key\fP variable
+to control whether or not it does this, if the keyboard allows it.
+On many others, the terminal or terminal emulator converts the metafied
+key to a key sequence beginning with ESC as described in the
+preceding paragraph.
+.PP
+If your \fIMeta\fP key produces a key sequence with the ESC meta prefix,
+you can make M-\fIkey\fP key bindings you specify (see
+.B "Readline Key Bindings"
+below) do the same thing by setting the \fBforce\-meta\-prefix\fP variable.
+.PP
+.B Readline
+commands may be given numeric
 .IR arguments ,
-which normally act as a repeat count.  Sometimes, however, it is the
-sign of the argument that is significant.  Passing a negative argument
+which normally act as a repeat count.
+Sometimes, however, it is the sign of the argument that is significant.
+Passing a negative argument
 to a command that acts in the forward direction (e.g., \fBkill\-line\fP)
-causes that command to act in a backward direction.
+makes that command act in a backward direction.
 Commands whose behavior with arguments deviates from this are noted
 below.
 .PP
+The \fIpoint\fP is the current cursor position, and \fImark\fP refers
+to a saved cursor position.
+The text between the point and mark is referred to as the \fIregion\fP.
+.PP
 When a command is described as \fIkilling\fP text, the text
 deleted is saved for possible future retrieval
-(\fIyanking\fP).  The killed text is saved in a
-\fIkill ring\fP.  Consecutive kills cause the text to be
-accumulated into one unit, which can be yanked all at once.
+(\fIyanking\fP).
+The killed text is saved in a \fIkill ring\fP.
+Consecutive kills accumulate the deleted text 
+into one unit, which can be yanked all at once.
 Commands which do not kill text separate the chunks of text
 on the kill ring.
 .SH INITIALIZATION FILE
 .LP
-Readline is customized by putting commands in an initialization
+.B Readline
+is customized by putting commands in an initialization
 file (the \fIinputrc\fP file).
 The name of this file is taken from the value of the
 .B INPUTRC
-environment variable.  If that variable is unset, the default is
-.IR ~/.inputrc .
-If that file  does not exist or cannot be read, the ultimate default is
+environment variable.
+If that variable is unset, the default is
+.IR \*~/.inputrc .
+If that file  does not exist or cannot be read, \fBreadline\fP looks for
 .IR /etc/inputrc .
-When a program which uses the readline library starts up, the
-init file is read, and the key bindings and variables are set.
-There are only a few basic constructs allowed in the
-readline init file.  Blank lines are ignored.
+When a program that uses the \fBreadline\fP library starts up,
+\fBreadline\fP reads the initialization file
+and sets the key bindings and variables found there,
+before reading any user input.
+.PP
+There are only a few basic constructs allowed in the inputrc file.
+Blank lines are ignored.
 Lines beginning with a \fB#\fP are comments.
 Lines beginning with a \fB$\fP indicate conditional constructs.
 Other lines denote key bindings and variable settings.
-Each program using this library may add its own commands
-and bindings.
+.PP
+The default key-bindings in this document
+may be changed using key binding commands in the
+.I inputrc
+file.
+Programs that use this library
+may add their own commands and bindings.
 .PP
 For example, placing
 .RS
@@ -138,14 +208,13 @@ or
 .RS
 C\-Meta\-u: universal\-argument
 .RE
-.sp
+.LP
 into the
 .I inputrc
-would make M\-C\-u execute the readline command
+would make M\-C\-u execute the \fBreadline\fP command
 .IR universal\-argument .
 .PP
-The following symbolic character names are recognized while
-processing key bindings:
+Key bindings may contain the following symbolic character names:
 .IR DEL ,
 .IR ESC ,
 .IR ESCAPE ,
@@ -153,83 +222,92 @@ processing key bindings:
 .IR NEWLINE ,
 .IR RET ,
 .IR RETURN ,
-.IR RUBOUT ,
+.I RUBOUT
+(a destructive backspace),
 .IR SPACE ,
 .IR SPC ,
 and
 .IR TAB .
 .PP
-In addition to command names, readline allows keys to be bound
+In addition to command names, \fBreadline\fP allows keys to be bound
 to a string that is inserted when the key is pressed (a \fImacro\fP).
-.PP
+The difference between a macro and a command is that a macro is
+enclosed in single or double quotes.
 .SS Key Bindings
 The syntax for controlling key bindings in the
 .I inputrc
-file is simple.  All that is required is the name of the
-command or the text of a macro and a key sequence to which
-it should be bound.  The name may be specified in one of two ways:
-as a symbolic key name, possibly with \fIMeta\-\fP or \fIControl\-\fP
-prefixes, or as a key sequence.
-The name and key sequence are separated by a colon.  There can be no
-whitespace between the name and the colon.
+file is simple.
+All that is required is the name of the command or the text of a macro
+and a key sequence to which it should be bound.
+The key sequence may be specified in one of two ways:
+as a symbolic key name,
+possibly with \fIMeta\-\fP or \fIControl\-\fP prefixes,
+or as a key sequence composed of one or more characters
+enclosed in double quotes.
+The key sequence and name are separated by a colon.
+There can be no whitespace between the name and the colon.
 .PP
-When using the form \fBkeyname\fP:\^\fIfunction-name\fP or \fImacro\fP,
+When using the form \fBkeyname\fP:\^\fIfunction\-name\fP or \fImacro\fP,
 .I keyname
 is the name of a key spelled out in English.  For example:
-.sp
+.PP
 .RS
-Control\-u: universal\-argument
-.br
-Meta\-Rubout: backward\-kill\-word
-.br
-Control\-o: "> output"
+.EX
+.nf
+Control-u: universal\-argument
+Meta-Rubout: backward\-kill\-word
+Control-o: \*"> output\*"
+.fi
+.EE
 .RE
 .LP
 In the above example,
 .I C\-u
 is bound to the function
 .BR universal\-argument ,
-.I M-DEL
+.I M\-DEL
 is bound to the function
 .BR backward\-kill\-word ,
 and
 .I C\-o
 is bound to run the macro
 expressed on the right hand side (that is, to insert the text
-.if t \f(CW> output\fP
-.if n ``> output''
+.Q "> output"
 into the line).
 .PP
-In the second form, \fB"keyseq"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
+In the second form,
+\fB\*"keyseq\*"\fP:\^\fIfunction\-name\fP or \fImacro\fP,
 .B keyseq
 differs from
 .B keyname
 above in that strings denoting
 an entire key sequence may be specified by placing the sequence
-within double quotes.  Some GNU Emacs style key escapes can be
-used, as in the following example, but the symbolic character names
-are not recognized.
-.sp
+within double quotes.
+Some GNU Emacs style key escapes can be
+used, as in the following example, but none of
+the symbolic character names are recognized.
+.PP
 .RS
-"\eC\-u": universal\-argument
-.br
-"\eC\-x\eC\-r": re\-read\-init\-file
-.br
-"\ee[11~": "Function Key 1"
+.EX
+.nf
+\*"\eC\-u\*": universal\-argument
+\*"\eC\-x\eC\-r\*": re\-read\-init\-file
+\*"\ee[11\*~\*": \*"Function Key 1\*"
+.fi
+.EE
 .RE
 .PP
 In this example,
-.I C-u
+.I C\-u
 is again bound to the function
 .BR universal\-argument .
-.I "C-x C-r"
+.I "C\-x C\-r"
 is bound to the function
 .BR re\-read\-init\-file ,
 and
-.I "ESC [ 1 1 ~"
+.I "ESC [ 1 1 \*~"
 is bound to insert the text
-.if t \f(CWFunction Key 1\fP.
-.if n ``Function Key 1''.
+.Q "Function Key 1" .
 .PP
 The full set of GNU Emacs style escape sequences available when specifying
 key sequences is
@@ -237,22 +315,23 @@ key sequences is
 .PD 0
 .TP
 .B \eC\-
-control prefix
+A control prefix.
 .TP
 .B \eM\-
-meta prefix
+Adding the meta prefix or converting the following character to a meta
+character, as described below under \fBforce-meta-prefix\fP.
 .TP
 .B \ee
-an escape character
+An escape character.
 .TP
 .B \e\e
-backslash
+Backslash.
 .TP
-.B \e"
-literal ", a double quote
+.B \e\*"
+Literal \*", a double quote.
 .TP
-.B \e'
-literal ', a single quote
+.B \e\*'
+Literal \*', a single quote.
 .RE
 .PD
 .PP
@@ -286,39 +365,45 @@ horizontal tab
 vertical tab
 .TP
 .B \e\fInnn\fP
-the eight-bit character whose value is the octal value \fInnn\fP
-(one to three digits)
+The eight-bit character whose value is the octal value \fInnn\fP
+(one to three digits).
 .TP
 .B \ex\fIHH\fP
-the eight-bit character whose value is the hexadecimal value \fIHH\fP
-(one or two hex digits)
+The eight-bit character whose value is the hexadecimal value \fIHH\fP
+(one or two hex digits).
 .RE
 .PD
 .PP
-When entering the text of a macro, single or double quotes should
-be used to indicate a macro definition.  Unquoted text
-is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
-Backslash will quote any other character in the macro text,
-including " and '.
+When entering the text of a macro, single or double quotes must
+be used to indicate a macro definition.
+Unquoted text is assumed to be a function name.
+The backslash escapes described above are expanded
+in the macro body.
+Backslash quotes any other character in the macro text,
+including \*" and \*'.
 .PP
 .B Bash
-allows the current readline key bindings to be displayed or modified
-with the
+will display or modify the current \fBreadline\fP key bindings with the
 .B bind
-builtin command.  The editing mode may be switched during interactive
-use by using the
-.B \-o
-option to the
+builtin command.
+The
+.B \-o emacs
+or
+.B \-o vi
+options to the
 .B set
-builtin command.  Other programs using this library provide
-similar mechanisms.  The
+builtin
+change the editing mode during interactive use.
+Other programs using this library provide similar mechanisms.
+A user may always edit the
 .I inputrc
-file may be edited and re-read if a program does not provide
+file and have \fBreadline\fP re-read it if a program does not provide
 any other means to incorporate new bindings.
 .SS Variables
-Readline has variables that can be used to further customize its
-behavior.  A variable may be set in the
+.B Readline
+has variables that can be used to further customize its
+behavior.
+A variable may be set in the
 .I inputrc
 file with a statement of the form
 .RS
@@ -326,15 +411,20 @@ file with a statement of the form
 \fBset\fP \fIvariable\-name\fP \fIvalue\fP
 .RE
 .PP
-Except where noted, readline variables can take the values
+Except where noted, \fBreadline\fP variables can take the values
 .B On
 or
 .B Off
 (without regard to case).
 Unrecognized variable names are ignored.
-When a variable value is read, empty or null values, "on" (case-insensitive),
-and "1" are equivalent to \fBOn\fP.  All other values are equivalent to
+When \fBreadline\fP reads a variable value, empty or null values,
+.Q "on"
+(case-insensitive), and
+.Q 1
+are equivalent to \fBOn\fP.
+All other values are equivalent to
 \fBOff\fP.
+.PP
 The variables and their default values are:
 .PP
 .PD 0
@@ -349,54 +439,69 @@ It is output to the terminal before displaying the text in the active region.
 This variable is reset to the default value whenever the terminal type changes.
 The default value is the string that puts the terminal in standout mode,
 as obtained from the terminal's terminfo description.
-A sample value might be \f(CW"\ee[01;33m"\fP.
+A sample value might be
+.Q \ee[01;33m .
 .TP
 .B active\-region\-end\-color
-A string variable that "undoes" the effects of \fBactive\-region\-start\-color\fP
-and restores "normal" terminal display appearance after displaying text
-in the active region.
+A string variable that
+.Q undoes
+the effects of \fBactive\-region\-start\-color\fP
+and restores
+.Q normal
+terminal display appearance after displaying text in the active region.
 This string must not take up any physical character positions on the display,
 so it should consist only of terminal escape sequences.
 It is output to the terminal after displaying the text in the active region.
 This variable is reset to the default value whenever the terminal type changes.
 The default value is the string that restores the terminal from standout mode,
 as obtained from the terminal's terminfo description.
-A sample value might be \f(CW"\ee[0m\fP".
+A sample value might be
+.Q \ee[0m .
 .TP
 .B bell\-style (audible)
-Controls what happens when readline wants to ring the terminal bell.
-If set to \fBnone\fP, readline never rings the bell.  If set to
-\fBvisible\fP, readline uses a visible bell if one is available.
-If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
+Controls what happens when \fBreadline\fP wants to ring the terminal bell.
+If set to \fBnone\fP, \fBreadline\fP never rings the bell.
+If set to \fBvisible\fP, \fBreadline\fP uses a visible bell if one is available.
+If set to \fBaudible\fP, \fBreadline\fP attempts to ring the terminal's bell.
 .TP
 .B bind\-tty\-special\-chars (On)
-If set to \fBOn\fP (the default), readline attempts to bind the control
-characters   treated specially by the kernel's terminal driver to their
-readline equivalents.
+If set to \fBOn\fP, \fBreadline\fP attempts to bind
+the control characters that are treated specially by the kernel's
+terminal driver to their \fBreadline\fP equivalents.
+These override the default \fBreadline\fP bindings described here.
+Type
+.Q "stty \-a"
+at a \fBbash\fP prompt to see your current terminal settings,
+including the special control characters (usually \fBcchars\fP).
 .TP
 .B blink\-matching\-paren (Off)
-If set to \fBOn\fP, readline attempts to briefly move the cursor to an
+If set to \fBOn\fP, \fBreadline\fP attempts to briefly move the cursor to an
 opening parenthesis when a closing parenthesis is inserted.
 .TP
 .B colored\-completion\-prefix (Off)
-If set to \fBOn\fP, when listing completions, readline displays the
+If set to \fBOn\fP, when listing completions, \fBreadline\fP displays the
 common prefix of the set of possible completions using a different color.
 The color definitions are taken from the value of the \fBLS_COLORS\fP
 environment variable.
 If there is a color definition in \fB$LS_COLORS\fP for the custom suffix
-"readline-colored-completion-prefix", readline uses this color for
+.Q readline-colored-completion-prefix ,
+\fBreadline\fP uses this color for
 the common prefix instead of its default.
 .TP
 .B colored\-stats (Off)
-If set to \fBOn\fP, readline displays possible completions using different
+If set to \fBOn\fP, \fBreadline\fP displays possible completions using different
 colors to indicate their file type.
 The color definitions are taken from the value of the \fBLS_COLORS\fP
 environment variable.
+.\" Tucking multiple macro calls into a paragraph tag requires some
+.\" finesse.  We require `\c`, and while the single-font macros don't
+.\" honor input trap continuation, the font alternation macros do.
 .TP
-.B comment\-begin (``#'')
-The string that is inserted in \fBvi\fP mode when the
+.BR comment\-begin\ ( \c
+.Q \fB#\fP \fB)\fP
+The string that the \fBreadline\fP
 .B insert\-comment
-command is executed.
+command inserts.
 This command is bound to
 .B M\-#
 in emacs mode and to
@@ -408,23 +513,29 @@ 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.
+A value of 0 causes matches to be displayed one per line.
 The default value is \-1.
-.TP 
+.TP
 .B completion\-ignore\-case (Off)
-If set to \fBOn\fP, readline performs filename matching and completion
+If set to \fBOn\fP, \fBreadline\fP performs filename matching and completion
 in a case\-insensitive fashion.
 .TP
 .B completion\-map\-case (Off)
-If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled, readline
+If set to \fBOn\fP, and \fBcompletion\-ignore\-case\fP is enabled,
+\fBreadline\fP
 treats hyphens (\fI\-\fP) and underscores (\fI_\fP) as equivalent when
 performing case\-insensitive filename matching and completion.
 .TP
 .B completion\-prefix\-display\-length (0)
-The length in characters of the common prefix of a list of possible
-completions that is displayed without modification.  When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
+The maximum
+length in characters of the common prefix of a list of possible
+completions that is displayed without modification.
+When set to a value greater than zero, \fBreadline\fP
+replaces common prefixes longer than this value
+with an ellipsis when displaying possible completions.
+If a completion begins with a period,
+and \fBeadline\fP is completing filenames,
+it uses three underscores instead of an ellipsis.
 .TP
 .B completion\-query\-items (100)
 This determines when the user is queried about viewing
@@ -433,33 +544,36 @@ generated by the \fBpossible\-completions\fP command.
 It may be set to any integer value greater than or equal to zero.
 If the number of possible completions is greater than
 or equal to the value of this variable,
-readline will ask whether or not the user wishes to view them;
-otherwise they are simply listed
-on the terminal.
-A negative value causes readline to never ask.
+\fBreadline\fP asks whether or not the user wishes to view them;
+otherwise \fBreadline\fP simply lists them on the terminal.
+A zero value means \fBreadline\fP should never ask; negative values are
+treated as zero.
 .TP
 .B convert\-meta (On)
-If set to \fBOn\fP, readline will convert characters with the
-eighth bit set to an ASCII key sequence
-by stripping the eighth bit and prefixing it with an
-escape character (in effect, using escape as the \fImeta prefix\fP).
-The default is \fIOn\fP, but readline will set it to \fIOff\fP if the
-locale contains eight-bit characters.
-This variable is dependent on the \fBLC_CTYPE\fP locale category, and 
-may change if the locale is changed.
+If set to \fBOn\fP, \fBreadline\fP converts characters it reads
+that have the eighth bit set to an ASCII key sequence by
+clearing the eighth bit and prefixing it with an escape character
+(converting the character to have the meta prefix).
+The default is \fIOn\fP, but \fBreadline\fP sets it to \fIOff\fP
+if the locale contains
+characters whose encodings may include bytes with the eighth bit set.
+This variable is dependent on the \fBLC_CTYPE\fP locale category, and
+may change if the locale changes.
+This variable also affects key bindings; see the description of
+\fBforce\-meta\-prefix\fP below.
 .TP
 .B disable\-completion (Off)
-If set to \fBOn\fP, readline will inhibit word completion.  Completion 
-characters will be inserted into the line as if they had been
-mapped to \fBself-insert\fP.
+If set to \fBOn\fP, \fBreadline\fP inhibits word completion.
+Completion characters are inserted into the line as if they
+had been mapped to \fBself-insert\fP.
 .TP
 .B echo\-control\-characters (On)
 When set to \fBOn\fP, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
+\fBreadline\fP echoes a character corresponding to a signal generated from the
 keyboard.
 .TP
 .B editing\-mode (emacs)
-Controls whether readline begins with a set of key bindings similar
+Controls whether \fBreadline\fP uses a set of key bindings similar
 to \fIEmacs\fP or \fIvi\fP.
 .B editing\-mode
 can be set to either
@@ -468,52 +582,73 @@ 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
+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 
+The \e1 and \e2 escapes 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\-active\-region (On)
-The \fIpoint\fP is the current cursor position, and \fImark\fP refers
-to a saved cursor position.
-The text between the point and mark is referred to as the \fIregion\fP.
-When this variable is set to \fIOn\fP, readline allows certain commands
+When this variable is set to \fIOn\fP, \fBreadline\fP allows certain commands
 to designate the region as \fIactive\fP.
-When the region is active, readline highlights the text in the region using
-the value of the \fBactive\-region\-start\-color\fP, which defaults to the
-string that enables
+When the region is active, \fBreadline\fP
+highlights the text in the region using the value of the
+.B active\-region\-start\-color
+variable, which defaults to the string that enables
 the terminal's standout mode.
 The active region shows the text inserted by bracketed-paste and any
 matching text found by incremental and non-incremental history searches.
 .TP
 .B enable\-bracketed\-paste (On)
-When set to \fBOn\fP, readline configures the terminal to insert each
+When set to \fBOn\fP, \fBreadline\fP configures the terminal to insert each
 paste into the editing buffer as a single string of characters, instead
 of treating each character as if it had been read from the keyboard.
-This prevents readline from executing any editing commands bound to key
+This is called \fIbracketed\-paste mode\fP;
+it prevents \fBreadline\fP from executing any editing commands bound to key
 sequences appearing in the pasted text.
 .TP
 .B enable\-keypad (Off)
-When set to \fBOn\fP, readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.
+When set to \fBOn\fP, \fBreadline\fP tries to enable the application
+keypad when it is called.
+Some systems need this to enable the arrow keys.
 .TP
 .B enable\-meta\-key (On)
-When set to \fBOn\fP, 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.
+When set to \fBOn\fP, \fBreadline\fP tries to enable any meta modifier
+key the terminal claims to support.
+On many terminals, the Meta key is used to send eight-bit characters;
+this variable checks for the terminal capability that indicates the
+terminal can enable and disable a mode that sets the eighth bit of a
+character (0200) if the Meta key is held down when the character is
+typed (a meta character).
 .TP
 .B expand\-tilde (Off)
-If set to \fBOn\fP, tilde expansion is performed when readline
+If set to \fBOn\fP, \fBreadline\fP performs tilde expansion when it
 attempts word completion.
 .TP
+.B force\-meta\-prefix (Off)
+If set to \fBOn\fP, \fBreadline\fP modifies its behavior when binding key
+sequences containing \eM- or Meta-
+(see \fBKey Bindings\fP above) by converting a key sequence of the form
+\eM\-\fIC\fP or Meta\-\fIC\fP to the two-character sequence
+\fBESC\fP \fIC\fP (adding the meta prefix).
+If
+.B force\-meta\-prefix
+is set to \fBOff\fP (the default),
+\fBreadline\fP uses the value of the
+.B convert\-meta
+variable to determine whether to perform this conversion:
+if \fBconvert\-meta\fP is \fBOn\fP,
+\fBreadline\fP performs the conversion described above;
+if it is \fBOff\fP, \fBreadline\fP converts \fIC\fP to a meta character by
+setting the eighth bit (0200).
+.TP
 .B history\-preserve\-point (Off)
-If set to \fBOn\fP, the history code attempts to place point at the 
-same location on each history line retrieved with \fBprevious-history\fP 
+If set to \fBOn\fP, the history code attempts to place point at the
+same location on each history line retrieved with \fBprevious-history\fP
 or \fBnext-history\fP.
 .TP
 .B history\-size (unset)
@@ -523,76 +658,80 @@ are saved.
 If set to a value less than zero, 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 \fIhistory\-size\fP to a non-numeric value,
-the maximum number of history entries will be set to 500.
+Setting \fIhistory\-size\fP to a non-numeric value will set
+the maximum number of history entries to 500.
 .TP
 .B horizontal\-scroll\-mode (Off)
-When set to \fBOn\fP, makes readline use a single line for display,
-scrolling the input horizontally on a single screen line when it
-becomes longer than the screen width rather than wrapping to a new line.
+Setting this variable to \fBOn\fP makes \fBreadline\fP use a single line
+for display, scrolling the input horizontally on a single screen line
+when it becomes longer than the screen width rather than wrapping to
+a new line.
 This setting is automatically enabled for terminals of height 1.
 .TP
 .B input\-meta (Off)
-If set to \fBOn\fP, readline will enable eight-bit input (that is,
-it will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The name
-.B meta\-flag
-is a synonym for this variable.
-The default is \fIOff\fP, but readline will set it to \fIOn\fP if the 
-locale contains eight-bit characters.
-This variable is dependent on the \fBLC_CTYPE\fP locale category, and 
-may change if the locale is changed.
-.TP
-.B isearch\-terminators (``C\-[ C\-J'')
+If set to \fBOn\fP, \fBreadline\fP enables eight-bit input (that is, it
+does not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support.
+The default is \fIOff\fP, but \fBreadline\fP sets it to \fIOn\fP
+if the locale contains characters whose encodings may include bytes
+with the eighth bit set.
+This variable is dependent on the \fBLC_CTYPE\fP locale category, and
+its value may change if the locale changes.
+The name \fBmeta\-flag\fP is a synonym for \fBinput\-meta\fP.
+.TP
+.BR isearch\-terminators\ ( \c
+.Q \fBC\-[C\-j\fP \fB)\fP
 The string of characters that should terminate an incremental
 search without subsequently executing the character as a command.
 If this variable has not been given a value, the characters
-\fIESC\fP and \fIC\-J\fP will terminate an incremental search.
+\fIESC\fP and \fBC\-j\fP terminate an incremental search.
 .TP
 .B keymap (emacs)
-Set the current readline keymap.  The set of legal keymap names is
-\fIemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
-vi-command\fP, and
-.IR vi-insert .
-\fIvi\fP is equivalent to \fIvi-command\fP; \fIemacs\fP is
-equivalent to \fIemacs-standard\fP.  The default value is
-.IR emacs .
-The value of
+Set the current \fBreadline\fP keymap.
+The set of valid keymap names is
+\fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi,
+vi\-command\fP, and
+.IR vi\-insert .
+\fIvi\fP is equivalent to \fIvi\-command\fP;
+\fIemacs\fP is equivalent to \fIemacs\-standard\fP.
+The default value is \fIemacs\fP;
+the value of
 .B editing\-mode
 also affects the default keymap.
 .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
-the input read so far, or can take additional input to complete a longer 
-key sequence).
-If no input is received within the timeout, \fIreadline\fP will use the shorter
-but complete key sequence.
+Specifies the duration \fBreadline\fP 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 \fBreadline\fP does not receive any input within the timeout,
+it uses the shorter but complete key sequence.
 The value is specified in milliseconds, so a value of 1000 means that
-\fIreadline\fP will wait one second for additional input.
+\fBreadline\fP 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, \fIreadline\fP will wait until another key is pressed to
+non-numeric value, \fBreadline\fP waits until another key is pressed to
 decide which key sequence to complete.
 .TP
 .B mark\-directories (On)
-If set to \fBOn\fP, completed directory names have a slash
-appended.
+If set to \fBOn\fP, completed directory names have a slash appended.
 .TP
 .B mark\-modified\-lines (Off)
-If set to \fBOn\fP, history lines that have been modified are displayed
+If set to \fBOn\fP, \fBreadline\fP displays history lines
+that have been modified
 with a preceding asterisk (\fB*\fP).
 .TP
 .B mark\-symlinked\-directories (Off)
 If set to \fBOn\fP, completed names which are symbolic links to directories
-have a slash appended (subject to the value of
-\fBmark\-directories\fP).
+have a slash appended, subject to the value of \fBmark\-directories\fP.
 .TP
 .B match\-hidden\-files (On)
-This variable, when set to \fBOn\fP, causes readline to match files whose 
-names begin with a `.' (hidden files) when performing filename
-completion.
-If set to \fBOff\fP, the leading `.' must be
-supplied by the user in the filename to be completed.
+This variable, when set to \fBOn\fP, forces \fBreadline\fP to match files whose
+names begin with a
+.Q .
+(hidden files) when performing filename completion.
+If set to \fBOff\fP, the user must include the leading
+.Q . 
+in the filename to be completed.
 .TP
 .B menu\-complete\-display\-prefix (Off)
 If set to \fBOn\fP, menu completion displays the common prefix of the
@@ -600,31 +739,41 @@ list of possible completions (which may be empty) before cycling through
 the list.
 .TP
 .B output\-meta (Off)
-If set to \fBOn\fP, readline will display characters with the
+If set to \fBOn\fP, \fBreadline\fP displays characters with the
 eighth bit set directly rather than as a meta-prefixed escape
 sequence.
-The default is \fIOff\fP, but readline will set it to \fIOn\fP if the
-locale contains eight-bit characters.
+The default is \fIOff\fP, but \fBreadline\fP sets it to \fIOn\fP
+if the locale contains characters whose encodings may include
+bytes with the eighth bit set.
 This variable is dependent on the \fBLC_CTYPE\fP locale category, and
-may change if the locale is changed.
+its value may change if the locale changes.
 .TP
 .B page\-completions (On)
-If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
+If set to \fBOn\fP, \fBreadline\fP uses an internal pager resembling
+.IR more (1)
 to display a screenful of possible completions at a time.
 .TP
+.B prefer\-visible\-bell
+See \fBbell\-style\fP.
+.TP
 .B print\-completions\-horizontally (Off)
-If set to \fBOn\fP, readline will display completions with matches
+If set to \fBOn\fP, \fBreadline\fP displays completions with matches
 sorted horizontally in alphabetical order, rather than down the screen.
 .TP
 .B revert\-all\-at\-newline (Off)
-If set to \fBOn\fP, readline will undo all changes to history lines
-before returning when \fBaccept\-line\fP is executed.  By default,
+If set to \fBOn\fP, \fBreadline\fP will undo all changes to history lines
+before returning when executing \fBaccept\-line\fP.
+By default,
 history lines may be modified and retain individual undo lists across
-calls to \fBreadline\fP.
+calls to \fBreadline()\fP.
+.TP
+.B search\-ignore\-case (Off)
+If set to \fBOn\fP, \fBreadline\fP performs incremental and non-incremental
+history list searches in a case\-insensitive fashion.
 .TP
 .B show\-all\-if\-ambiguous (Off)
-This alters the default behavior of the completion functions.  If
-set to
+This alters the default behavior of the completion functions.
+If set to
 .BR On ,
 words which have more than one possible completion cause the
 matches to be listed immediately instead of ringing the bell.
@@ -633,9 +782,9 @@ matches to be listed immediately instead of ringing the bell.
 This alters the default behavior of the completion functions in
 a fashion similar to \fBshow\-all\-if\-ambiguous\fP.
 If set to
-.BR On , 
+.BR On ,
 words which have more than one possible completion without any
-possible partial completion (the possible completions don't share 
+possible partial completion (the possible completions don't share
 a common prefix) cause the matches to be listed immediately instead
 of ringing the bell.
 .TP
@@ -646,77 +795,84 @@ 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
-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.
+inserting a single match into the line.
+It's only active when performing completion in the middle of a word.
+If enabled, \fBreadline\fP 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.
 .TP
 .B vi\-cmd\-mode\-string ((cmd))
-If the \fIshow\-mode\-in\-prompt\fP variable is enabled, 
+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
-backslash escape sequences is available.
-Use the \e1 and \e2 escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The \e1 and \e2 escapes begin and end sequences of
 non-printing characters, which can be used to embed a terminal control
 sequence into the mode string.
 .TP
 .B vi\-ins\-mode\-string ((ins))
-If the \fIshow\-mode\-in\-prompt\fP variable is enabled, 
+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  
-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 
+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.
+The \e1 and \e2 escapes begin and end sequences of
+non-printing characters, which can be used to embed a terminal control
 sequence into the mode string.
 .TP
 .B visible\-stats (Off)
-If set to \fBOn\fP, a character denoting a file's type as reported  
+If set to \fBOn\fP, a character denoting a file's type as reported
 by \fIstat\fP(2) is appended to the filename when listing possible
 completions.
 .PD
 .SS Conditional Constructs
-Readline implements a facility similar in spirit to the conditional
+.B Readline
+implements a facility similar in spirit to the conditional
 compilation features of the C preprocessor which allows key
 bindings and variable settings to be performed as the result
-of tests.  There are four parser directives used.
-.IP \fB$if\fP
+of tests.
+There are four parser directives available.
+.TP
+.B $if
 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, after any comparison operator,
+\fBreadline\fP.
+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
+.TP
+.B mode
 The \fBmode=\fP form of the \fB$if\fP directive is used to test
-whether readline is in emacs or vi mode.
+whether \fBreadline\fP is in emacs or vi mode.
 This may be used in conjunction
 with the \fBset keymap\fP command, for instance, to set bindings in
-the \fIemacs-standard\fP and \fIemacs-ctlx\fP keymaps only if
-readline is starting out in emacs mode.
-.IP \fBterm\fP
+the \fIemacs\-standard\fP and \fIemacs\-ctlx\fP keymaps only if
+\fBreadline\fP is starting out in emacs mode.
+.TP
+.B term
 The \fBterm=\fP form may be used to include terminal-specific
 key bindings, perhaps to bind the key sequences output by the
-terminal's function keys.  The word on the right side of the
+terminal's function keys.
+The word on the right side of the
 .B =
-is tested against the full name of the terminal and the portion
-of the terminal name before the first \fB\-\fP.  This allows
-.I sun
+is tested against both the full name of the terminal and the portion
+of the terminal name before the first \fB\-\fP.
+This allows
+.I xterm
 to match both
-.I sun
+.I xterm
 and
-.IR sun\-cmd ,
+.IR xterm\-256color ,
 for instance.
-.IP \fBversion\fP
+.TP
+.B version
 The \fBversion\fP test may be used to perform comparisons against
-specific readline versions.
-The \fBversion\fP expands to the current readline version.
+specific \fBreadline\fP versions.
+The \fBversion\fP expands to the current \fBreadline\fP version.
 The set of comparison operators includes
 .BR = ,
 (and
@@ -729,55 +885,67 @@ 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.
+minor version (e.g., \fB7.1\fP).
+If the minor version is omitted, it
+defaults to \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
+.TP
+.I application
+The \fIapplication\fP construct is used to include
+application-specific settings.
+Each program using the \fBreadline\fP
 library sets the \fIapplication name\fP, and an initialization
 file can test for a particular value.
 This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
+a specific program.
+For instance, the following command adds a
 key sequence that quotes the current or previous word in \fBbash\fP:
-.sp 1
+.PP
 .RS
+.EX
 .nf
 \fB$if\fP Bash
 # Quote the current or previous word
-"\eC-xq": "\eeb\e"\eef\e""
+\*"\eC-xq\*": \*"\eeb\e\*"\eef\e\*"\*"
 \fB$endif\fP
 .fi
+.EE
 .RE
-.IP \fIvariable\fP
-The \fIvariable\fP construct provides simple equality tests for readline
+.TP
+.I variable
+The \fIvariable\fP construct provides simple equality tests for \fBreadline\fP
 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
+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
-\fB$if\fP command.
-.IP \fB$else\fP
+.TP
+.B $else
 Commands in this branch of the \fB$if\fP directive are executed if
 the test fails.
-.IP \fB$include\fP
+.TP
+.B $endif
+This command, as seen in the previous example, terminates an
+\fB$if\fP command.
+.TP
+.B $include
 This directive takes a single filename as an argument and reads commands
-and bindings from that file.  For example, the following directive
-would read \fI/etc/inputrc\fP:
-.sp 1
+and key bindings from that file.
+For example, the following directive would read \fI/etc/inputrc\fP:
+.PP
 .RS
 .nf
 \fB$include\fP \^ \fI/etc/inputrc\fP
-.fi 
+.fi
 .RE
 .SH SEARCHING
-Readline provides commands for searching through the command history
+.B Readline
+provides commands for searching through the command history
 for lines containing a specified string.
 There are two search modes:
 .I incremental
@@ -786,34 +954,40 @@ and
 .PP
 Incremental searches begin before the user has finished typing the
 search string.
-As each character of the search string is typed, readline displays
+As each character of the search string is typed, \fBreadline\fP displays
 the next entry from the history matching the string typed so far.
 An incremental search requires only as many characters as needed to
 find the desired history entry.
-To search backward in the history for a particular string, type
-\fBC\-r\fP.  Typing \fBC\-s\fP searches forward through the history.
+When using emacs editing mode, type \fBC\-r\fP to
+search backward in the history for a particular string.
+Typing \fBC\-s\fP searches forward through the history.
 The characters present in the value of the \fBisearch-terminators\fP
 variable are used to terminate an incremental search.
-If that variable has not been assigned a value the \fIEscape\fP and
-\fBC\-J\fP characters will terminate an incremental search.
-\fBC\-G\fP will abort an incremental search and restore the original
-line.
+If that variable has not been assigned a value,
+\fIESC\fP and \fBC\-j\fP terminate an incremental search.
+\fBC\-g\fP aborts an incremental search and restores the original line.
 When the search is terminated, the history entry containing the
 search string becomes the current line.
 .PP
-To find other matching entries in the history list, type \fBC\-s\fP or
-\fBC\-r\fP as appropriate.
-This will search backward or forward in the history for the next
-line matching the search string typed so far.
-Any other key sequence bound to a readline command will terminate
-the search and execute that command.
-For instance, a newline will terminate the search and accept
+To find other matching entries in the history list, type \fBC\-r\fP or
+\fBC\-s\fP as appropriate.
+This searches backward or forward in the history for the next
+entry matching the search string typed so far.
+Any other key sequence bound to a \fBreadline\fP command terminates
+the search and executes that command.
+For instance, a newline terminates the search and accepts
 the line, thereby executing the command from the history list.
 A movement command will terminate the search, make the last line found
 the current line, and begin editing.
 .PP
+.B Readline
+remembers the last incremental search string.
+If two \fBC\-r\fPs are typed without any intervening characters defining
+a new search string, \fBreadline\fP uses any remembered search string.
+.PP
 Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
+to search for matching history entries.
+The search string may be
 typed by the user or be part of the contents of the current line.
 .SH EDITING COMMANDS
 The following is a list of the names of the commands and the default
@@ -824,40 +998,54 @@ In the following descriptions, \fIpoint\fP refers to the current cursor
 position, and \fImark\fP refers to a cursor position saved by the
 \fBset\-mark\fP command.
 The text between the point and mark is referred to as the \fIregion\fP.
+.B Readline
+has the concept of an \fIactive region\fP:
+when the region is active, \fBreadline\fP redisplay
+highlights the region using the value of the
+.B active\-region\-start\-color
+variable.
+The \fBenable\-active\-region\fP variable turns this on and off.
+Several commands set the region to active; those are noted below.
 .SS Commands for Moving
 .PD 0
 .TP
 .B beginning\-of\-line (C\-a)
 Move to the start of the current line.
+This may also be bound to the Home key on some keyboards.
 .TP
 .B end\-of\-line (C\-e)
 Move to the end of the line.
+This may also be bound to the End key on some keyboards.
 .TP
 .B forward\-char (C\-f)
 Move forward a character.
+This may also be bound to the right arrow key on some keyboards.
 .TP
 .B backward\-char (C\-b)
 Move back a character.
 .TP
 .B forward\-word (M\-f)
-Move forward to the end of the next word.  Words are composed of
-alphanumeric characters (letters and digits).
+Move forward to the end of the next word.
+Words are composed of alphanumeric characters (letters and digits).
 .TP
 .B backward\-word (M\-b)
-Move back to the start of the current or previous word.  Words are
-composed of alphanumeric characters (letters and digits).
+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.
+physical screen line.
+This will not have the desired effect if the current
+\fBreadline\fP 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
+physical screen line.
+This will not have the desired effect if the current
+\fBreadline\fP line does not take up more than one physical line or if
+the length of the current \fBreadline\fP line is
+not greater than the length of the prompt
 plus the screen width.
 .TP
 .B clear\-display (M\-C\-l)
@@ -869,7 +1057,7 @@ leaving the current line at the top of the screen.
 Clear the screen,
 then redraw the current line,
 leaving the current line at the top of the screen.
-With an argument, refresh the current line without clearing the
+With a numeric argument, refresh the current line without clearing the
 screen.
 .TP
 .B redraw\-current\-line
@@ -880,18 +1068,21 @@ Refresh the current line.
 .TP
 .B accept\-line (Newline, Return)
 Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
+If this line is non-empty,
+it may be added to the history list for future recall with
 \fBadd_history()\fP.
-If the line is a modified history line, the history line is restored to its original state.
+If the line is a modified history line,
+restore the history line to its original state.
 .TP
 .B previous\-history (C\-p)
 Fetch the previous command from the history list, moving back in
 the list.
+This may also be bound to the up arrow key on some keyboards.
 .TP
 .B next\-history (C\-n)
 Fetch the next command from the history list, moving forward in the
 list.
+This may also be bound to the down arrow key on some keyboards.
 .TP
 .B beginning\-of\-history (M\-<)
 Move to the first line in the history.
@@ -900,8 +1091,7 @@ Move to the first line in the history.
 Move to the end of the input history, i.e., the line currently being
 entered.
 .TP
-.B
-operate\-and\-get\-next (C\-o)
+.B operate\-and\-get\-next (C\-o)
 Accept the current line for return to the calling application as if a
 newline had been entered,
 and fetch the next line relative to the current line from the history
@@ -916,38 +1106,46 @@ and make it the current line.
 Without an argument, move back to the first entry in the history list.
 .TP
 .B reverse\-search\-history (C\-r)
-Search backward starting at the current line and moving `up' through
-the history as necessary.  This is an incremental search.
+Search backward starting at the current line and moving
+.Q up
+through the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 .TP
 .B forward\-search\-history (C\-s)
-Search forward starting at the current line and moving `down' through
-the history as necessary.  This is an incremental search.
+Search forward starting at the current line and moving
+.Q down
+through the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 .TP
 .B non\-incremental\-reverse\-search\-history (M\-p)
 Search backward through the history starting at the current line
 using a non-incremental search for a string supplied by the user.
+The search string may match anywhere in a history line.
 .TP
 .B non\-incremental\-forward\-search\-history (M\-n)
 Search forward through the history using a non-incremental search
 for a string supplied by the user.
+The search string may match anywhere in a history line.
 .TP
 .B history\-search\-backward
 Search backward through the history for the string of characters
-between the start of the current line and the current cursor
-position (the \fIpoint\fP).
+between the start of the current line and the point.
 The search string must match at the beginning of a history line.
 This is a non-incremental search.
+This may be bound to the Page Up key on some keyboards.
 .TP
 .B history\-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 must match at the beginning of a history line.
 This is a non-incremental search.
+This may be bound to the Page Down key on some keyboards.
 .TP
 .B history\-substring\-search\-backward
 Search backward through the history for the string of characters
-between the start of the current line and the current cursor
-position (the \fIpoint\fP).
+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.
 .TP
@@ -963,10 +1161,14 @@ the second word on the previous line) at point.
 With an argument
 .IR n ,
 insert the \fIn\fPth word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the \fIn\fPth word from the end of the previous command.
-Once the argument \fIn\fP is computed, the argument is extracted
-as if the "!\fIn\fP" history expansion had been specified.
+in the previous command begin with word 0).
+A negative argument inserts the \fIn\fPth word from the end of
+the previous command.
+Once the argument \fIn\fP is computed,
+this uses the history expansion facilities to extract the
+\fIn\fPth word, as if the
+.Q !\fIn\fP
+history expansion had been specified.
 .TP
 .B
 yank\-last\-arg (M\-.\^, M\-_\^)
@@ -977,20 +1179,22 @@ Successive calls to \fByank\-last\-arg\fP move back through the history
 list, inserting the last word (or the word specified by the argument to
 the first call) of each line in turn.
 Any numeric argument supplied to these successive calls determines
-the direction to move through the history.  A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the "!$" history expansion had been specified.
+the direction to move through the history.
+A negative argument switches the direction through the history
+(back or forward).
+This uses the history expansion facilities to extract the
+last word, as if the
+.Q !$
+history expansion had been specified.
 .PD
 .SS Commands for Changing Text
 .PD 0
 .TP
 .B \fIend\-of\-file\fP (usually C\-d)
 The character indicating end-of-file as set, for example, by
-.if t \f(CWstty\fP.
-.if n ``stty''.
+.IR stty (1).
 If this character is read when there are no characters
-on the line, and point is at the beginning of the line, readline
+on the line, and point is at the beginning of the line, \fBreadline\fP
 interprets it as the end of input and returns
 .SM
 .BR EOF .
@@ -1000,26 +1204,41 @@ Delete the character at point.
 If this function is bound to the
 same character as the tty \fBEOF\fP character, as \fBC\-d\fP
 commonly is, see above for the effects.
+This may also be bound to the Delete key on some keyboards.
 .TP
 .B backward\-delete\-char (Rubout)
-Delete the character behind the cursor.  When given a numeric argument,
+Delete the character behind the cursor.
+When given a numeric argument,
 save the deleted text on the kill ring.
 .TP
-.B forward\-backward\-delete\-char   
+.B forward\-backward\-delete\-char
 Delete the character under the cursor, unless the cursor is at the
 end of the line, in which case the character behind the cursor is
 deleted.
 .TP
 .B quoted\-insert (C\-q, C\-v)
-Add the next character that you type to the line verbatim.  This is
-how to insert characters like \fBC\-q\fP, for example.
+Add the next character typed to the line verbatim.
+This is how to insert characters like \fBC\-q\fP, for example.
 .TP
 .B tab\-insert (M-TAB)
 Insert a tab character.
 .TP
-.B self\-insert (a,\ b,\ A,\ 1,\ !,\ ...)
+.B "self\-insert (a, b, A, 1, !, \fR.\|.\|.\fP)"
 Insert the character typed.
 .TP
+.B bracketed\-paste\-begin
+This function is intended to be bound to the
+.Q "bracketed paste"
+escape
+sequence sent by some terminals, and such a binding is assigned by default.
+It allows \fBreadline\fP to insert the pasted text as a single unit
+without treating each character as if it had been read from the keyboard.
+The pasted characters
+are inserted as if each one was bound to \fBself\-insert\fP instead of
+executing any editing commands.
+.IP
+Bracketed paste sets the region to the inserted text and activates the region.
+.TP
 .B transpose\-chars (C\-t)
 Drag the character before point forward over the character at point,
 moving point forward as well.
@@ -1029,77 +1248,88 @@ Negative arguments have no effect.
 .TP
 .B transpose\-words (M\-t)
 Drag the word before point past the word after point,
-moving point over that word as well.
+moving point past that word as well.
 If point is at the end of the line, this transposes
 the last two words on the line.
 .TP
 .B upcase\-word (M\-u)
-Uppercase the current (or following) word.  With a negative argument,
+Uppercase the current (or following) word.
+With a negative argument,
 uppercase the previous word, but do not move point.
 .TP
 .B downcase\-word (M\-l)
-Lowercase the current (or following) word.  With a negative argument,
+Lowercase the current (or following) word.
+With a negative argument,
 lowercase the previous word, but do not move point.
 .TP
 .B capitalize\-word (M\-c)
-Capitalize the current (or following) word.  With a negative argument,
+Capitalize the current (or following) word.
+With a negative argument,
 capitalize the previous word, but do not move point.
 .TP
 .B overwrite\-mode
-Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-\fBemacs\fP mode; \fBvi\fP mode does overwrite differently.
+Toggle overwrite mode.
+With an explicit positive numeric argument, switches to overwrite mode.
+With an explicit non-positive numeric argument, switches to insert mode.
+This command affects only \fBemacs\fP mode;
+\fBvi\fP mode does overwrite differently.
 Each call to \fIreadline()\fP starts in insert mode.
+.IP
 In overwrite mode, characters bound to \fBself\-insert\fP replace
 the text at point rather than pushing the text to the right.
 Characters bound to \fBbackward\-delete\-char\fP replace the character
-before point with a space.  By default, this command is unbound.
+before point with a space.
+By default, this command is unbound,
+but may be bound to the Insert key on some keyboards.
 .PD
 .SS Killing and Yanking
 .PD 0
 .TP
 .B kill\-line (C\-k)
-Kill the text from point to the end of the line.
+Kill the text from point to the end of the current line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the line.
 .TP
 .B backward\-kill\-line (C\-x Rubout)
-Kill backward to the beginning of the line.
+Kill backward to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the line.
 .TP
 .B unix\-line\-discard (C\-u)
-Kill backward from point to the beginning of the line.
-The killed text is saved on the kill-ring.
+Kill backward from point to the beginning of the line,
+saving the killed text on the kill-ring.
 .\" There is no real difference between this and backward-kill-line
 .TP
 .B kill\-whole\-line
 Kill all characters on the current line, no matter where point is.
 .TP
 .B kill\-word (M\-d)
-Kill from point the end of the current word, or if between
-words, to the end of the next word.  Word boundaries are the same as
-those used by \fBforward\-word\fP.
+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 those used by \fBforward\-word\fP.
 .TP
 .B backward\-kill\-word (M\-Rubout)
 Kill the word behind point.
 Word boundaries are the same as those used by \fBbackward\-word\fP.
 .TP
 .B unix\-word\-rubout (C\-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
+Kill the word behind point, using white space as a word boundary,
+saving the killed text on the kill-ring.
 .TP
 .B unix\-filename\-rubout
 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.
+as the word boundaries,
+saving the killed text on the kill-ring.
 .TP
 .B delete\-horizontal\-space (M\-\e)
 Delete all spaces and tabs around point.
 .TP
 .B kill\-region
-Kill the text between the point and \fImark\fP (saved cursor position).
-This text is referred to as the \fIregion\fP.
+Kill the text in the current region.
 .TP
 .B copy\-region\-as\-kill
-Copy the text in the region to the kill buffer.
+Copy the text in the region to the kill buffer,
+so it can be yanked immediately.
 .TP
 .B copy\-backward\-word
 Copy the word before point to the kill buffer.
@@ -1113,7 +1343,8 @@ The word boundaries are the same as \fBforward\-word\fP.
 Yank the top of the kill ring into the buffer at point.
 .TP
 .B yank\-pop (M\-y)
-Rotate the kill ring, and yank the new top.  Only works following
+Rotate the kill ring, and yank the new top.
+Only works following
 .B yank
 or
 .BR yank\-pop .
@@ -1121,9 +1352,10 @@ or
 .SS Numeric Arguments
 .PD 0
 .TP
-.B digit\-argument (M\-0, M\-1, ..., M\-\-)
+.B digit\-argument (M\-0, M\-1, \fR.\|.\|.\fP, M\-\-)
 Add this digit to the argument already accumulating, or start a new
-argument.  M\-\- starts a negative argument.
+argument.
+M\-\- starts a negative argument.
 .TP
 .B universal\-argument
 This is another way to specify an argument.
@@ -1133,8 +1365,8 @@ If the command is followed by digits, executing
 .B universal\-argument
 again ends the numeric argument, but is otherwise ignored.
 As a special case, if this command is immediately followed by a
-character that is neither a digit or minus sign, the argument count
-for the next command is multiplied by four.
+character that is neither a digit nor minus sign,
+the argument count for the next command is multiplied by four.
 The argument count is initially one, so executing this function the
 first time makes the argument count four, a second time makes the
 argument count sixteen, and so on.
@@ -1146,56 +1378,95 @@ argument count sixteen, and so on.
 Attempt to perform completion on the text before point.
 The actual completion performed is application-specific.
 .BR Bash ,
-for instance, attempts completion treating the text as a variable
-(if the text begins with \fB$\fP), username (if the text begins with
-\fB~\fP), hostname (if the text begins with \fB@\fP), or
-command (including aliases and functions) in turn.  If none
-of these produces a match, filename completion is attempted.
+for instance, attempts programmable completion first,
+otherwise treating the text as a
+variable (if the text begins with \fB$\fP),
+username (if the text begins with \fB\*~\fP),
+hostname (if the text begins with \fB@\fP), or
+command (including aliases, functions, and builtins) in turn.
+If none of these produces a match, it falls back to filename completion.
 .BR Gdb ,
 on the other hand,
 allows completion of program functions and variables, and
 only attempts filename completion under certain circumstances.
+The default \fBreadline\fP completion is filename completion.
 .TP
 .B possible\-completions (M\-?)
 List the possible completions of the text before point.
-When displaying completions, readline sets the number of columns used
+When displaying completions, \fBreadline\fP sets the number of columns used
 for display to the value of \fBcompletion-display-width\fP, the value of
 the environment variable
-.SM
 .BR COLUMNS ,
 or the screen width, in that order.
 .TP
 .B insert\-completions (M\-*)
 Insert all completions of the text before point
 that would have been generated by
-\fBpossible\-completions\fP.
+\fBpossible\-completions\fP,
+separated by a space.
 .TP
 .B menu\-complete
 Similar to \fBcomplete\fP, but replaces the word to be completed
 with a single match from the list of possible completions.
-Repeated execution of \fBmenu\-complete\fP steps through the list
+Repeatedly executing \fBmenu\-complete\fP steps through the list
 of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
+At the end of the list of completions,
+\fBmenu\-complete\fP rings the bell
 (subject to the setting of \fBbell\-style\fP)
-and the original text is restored.
+and restores the original text.
 An argument of \fIn\fP moves \fIn\fP positions forward in the list
-of matches; a negative argument may be used to move backward 
-through the list.
+of matches; a negative argument moves backward through the list.
 This command is intended to be bound to \fBTAB\fP, but is unbound
 by default.
 .TP
 .B menu\-complete\-backward
 Identical to \fBmenu\-complete\fP, but moves backward through the list
 of possible completions, as if \fBmenu\-complete\fP had been given a
-negative argument.  This command is unbound by default.
+negative argument.
+This command is unbound by default.
+.TP
+.B export\-completions
+Perform completion on the word before point as described above
+and write the list of possible completions to \fBreadline\fP's output
+stream using the following format, writing information on separate lines:
+.RS
+.PD
+.IP \(bu
+.PD 0
+the number of matches \fIN\fP;
+.IP \(bu
+the word being completed;
+.IP \(bu
+\fIS\fP:\fIE\fP,
+where \fIS\fP and \fIE\fP are the start and end offsets of the word
+in the \fBreadline\fP line buffer; then
+.IP \(bu
+each match, one per line
+.RE
+.PD
+.IP
+If there are no matches, the first line will be
+.Q 0 ,
+and this command does not print any output after the \fIS\fP:\fIE\fP.
+If there is only a single match, this prints a single line containing it.
+If there is more than one match, this prints the common prefix of the
+matches, which may be empty, on the first line after the \fIS\fP:\fIE\fP,
+then the matches on subsequent lines.
+In this case, \fIN\fP will include the first line with the common prefix.
+.IP
+The user or application
+should be able to accommodate the possibility of a blank line.
+The intent is that the user or application reads \fIN\fP lines after
+the line containing \fIS\fP:\fIE\fP to obtain the match list.
+This command is unbound by default.
 .TP
 .B delete\-char\-or\-list
 Deletes the character under the cursor if not at the beginning or
-end of the line (like \fBdelete-char\fP).
-If at the end of the line, behaves identically to
-\fBpossible-completions\fP.
+end of the line (like \fBdelete\-char\fP).
+At the end of the line, it behaves identically to \fBpossible\-completions\fP.
+This command is unbound by default.
 .PD
-.SS Keyboard Macros
+.SS "Keyboard Macros"
 .PD 0
 .TP
 .B start\-kbd\-macro (C\-x (\^)
@@ -1225,7 +1496,7 @@ Abort the current editing command and
 ring the terminal's bell (subject to the setting of
 .BR bell\-style ).
 .TP
-.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...)
+.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, \fR.\|.\|.\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.
@@ -1242,83 +1513,99 @@ is equivalent to
 Incremental undo, separately remembered for each line.
 .TP
 .B revert\-line (M\-r)
-Undo all changes made to this line.  This is like executing the
+Undo all changes made to this line.
+This is like executing the
 .B undo
 command enough times to return the line to its initial state.
 .TP
-.B tilde\-expand (M\-&)
+.B tilde\-expand (M\-~)
 Perform tilde expansion on the current word.
 .TP
 .B set\-mark (C\-@, M\-<space>)
-Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
+Set the mark to the point.
+If a numeric argument is supplied, set the mark to that position.
 .TP
 .B exchange\-point\-and\-mark (C\-x C\-x)
-Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
+Swap the point with the mark.
+Set the current cursor position to the saved position,
+then set the mark to the old cursor position.
 .TP
 .B character\-search (C\-])
-A character is read and point is moved to the next occurrence of that
-character.  A negative argument searches for previous occurrences.
+Read a character and move point to the next occurrence of that character.
+A negative argument searches for previous occurrences.
 .TP
 .B character\-search\-backward (M\-C\-])
-A character is read and point is moved to the previous occurrence of that
-character.  A negative argument searches for subsequent occurrences.
+Read a character and move point to the previous occurrence of that character.
+A negative argument searches for subsequent occurrences.
 .TP
 .B skip\-csi\-sequence
 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
-bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
-stray characters into the editing buffer.  This is unbound by default,
-but usually bound to ESC\-[.
+defined for keys like Home and End.
+CSI sequences begin with a Control Sequence Indicator (CSI), usually
+.IR "ESC [" .
+If this sequence is bound to
+.Q \ee[ ,
+keys producing CSI sequences have no effect
+unless explicitly bound to a \fBreadline\fP command,
+instead of inserting stray characters into the editing buffer.
+This is unbound by default, but usually bound to
+.IR "ESC [" .
 .TP
 .B insert\-comment (M\-#)
-Without a numeric argument, the value of the readline
+Without a numeric argument, insert the value of the \fBreadline\fP
 .B comment\-begin
-variable is inserted at the beginning of the current line.
+variable at the beginning of the current line.
 If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value   
-of \fBcomment\-begin\fP, the value is inserted, otherwise             
-the characters in \fBcomment-begin\fP are deleted from the beginning of
-the line.
+the characters at the beginning of the line do not match the value
+of \fBcomment\-begin\fP, insert the value; otherwise delete
+the characters in \fBcomment-begin\fP from the beginning of the line.
 In either case, the line is accepted as if a newline had been typed.
 The default value of
-.B comment\-begin
-makes the current line a shell comment.
+\fBcomment\-begin\fP causes this command to make the current line
+a shell comment.
 If a numeric argument causes the comment character to be removed, the line
 will be executed by the shell.
 .TP
 .B dump\-functions
-Print all of the functions and their key bindings to the
-readline output stream.  If a numeric argument is supplied,
+Print all of the functions and their key bindings
+to the \fBreadline\fP output stream.
+If a numeric argument is supplied,
 the output is formatted in such a way that it can be made part
 of an \fIinputrc\fP file.
 .TP
 .B dump\-variables
-Print all of the settable variables and their values to the
-readline output stream.  If a numeric argument is supplied,
+Print all of the settable variables and their values
+to the \fBreadline\fP output stream.
+If a numeric argument is supplied,
 the output is formatted in such a way that it can be made part
 of an \fIinputrc\fP file.
 .TP
 .B dump\-macros
-Print all of the readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
+Print all of the \fBreadline\fP key sequences bound to macros and the
+strings they output
+to the \fBreadline\fP output stream.
+If a numeric argument is supplied,
 the output is formatted in such a way that it can be made part
 of an \fIinputrc\fP file.
 .TP
+.B execute\-named\-command (M-x)
+Read a bindable \fBreadline\fP command name from the input and execute the
+function to which it's bound, as if the key sequence to which it was
+bound appeared in the input.
+If this function is supplied with a numeric argument, it passes that
+argument to the function it executes.
+.TP
 .B emacs\-editing\-mode (C\-e)
 When in
 .B vi
-command mode, this causes a switch to
+command mode, this switches \fBreadline\fP to
 .B emacs
 editing mode.
 .TP
 .B vi\-editing\-mode (M\-C\-j)
 When in
 .B emacs
-editing mode, this causes a switch to
+editing mode, this switches to
 .B vi
 editing mode.
 .PD
@@ -1342,7 +1629,7 @@ or the terminal driver, such as C-Z or C-C,
 retain that function.
 Upper and lower case metafied characters are bound to the same function in
 the emacs mode meta keymap.
-The remaining characters are unbound, which causes readline
+The remaining characters are unbound, which causes \fBreadline\fP
 to ring the bell (subject to the setting of the
 .B bell\-style
 variable).
@@ -1352,7 +1639,7 @@ variable).
 .ta 2.5i
 .sp
 Emacs Standard bindings
-.sp
+.PP
 "C-@"  set-mark
 "C-A"  beginning-of-line
 "C-B"  backward-char
@@ -1380,11 +1667,11 @@ Emacs Standard bindings
 "C-_"  undo
 "\^ " to "/"  self-insert
 "0"  to "9"  self-insert
-":"  to "~"  self-insert
+":"  to "\*~"  self-insert
 "C-?"  backward-delete-char
 .PP
 Emacs Meta bindings
-.sp
+.PP
 "M-C-G"  abort
 "M-C-H"  backward-kill-word
 "M-C-I"  tab-insert
@@ -1425,14 +1712,15 @@ Emacs Meta bindings
 "M-R"  revert-line
 "M-T"  transpose-words
 "M-U"  upcase-word
+"M-X"  execute-named-command
 "M-Y"  yank-pop
 "M-\e"  delete-horizontal-space
-"M-~"  tilde-expand
+"M-\*~"  tilde-expand
 "M-C-?"  backward-kill-word
 "M-_"  yank-last-arg
 .PP
 Emacs Control-X bindings
-.sp
+.PP
 "C-XC-G"  abort
 "C-XC-R"  re-read-init-file
 "C-XC-U"  undo
@@ -1441,35 +1729,35 @@ Emacs Control-X bindings
 "C-X)"  end-kbd-macro
 "C-XE"  call-last-kbd-macro
 "C-XC-?"  backward-kill-line
-.sp
 .RE
 .SS VI Mode bindings
 .RS +.6i
 .nf
 .ta 2.5i
-.sp
 .PP
 VI Insert Mode functions
-.sp
+.PP
 "C-D"  vi-eof-maybe
 "C-H"  backward-delete-char
 "C-I"  complete
 "C-J"  accept-line
 "C-M"  accept-line
+"C-N"  menu-complete
+"C-P"  menu-complete-backward
 "C-R"  reverse-search-history
 "C-S"  forward-search-history
 "C-T"  transpose-chars
 "C-U"  unix-line-discard
 "C-V"  quoted-insert
-"C-W"  unix-word-rubout
+"C-W"  vi-unix-word-rubout
 "C-Y"  yank
 "C-["  vi-movement-mode
-"C-_"  undo
-"\^ " to "~"  self-insert
+"C-_"  vi-undo
+"\^ " to "\*~"  self-insert
 "C-?"  backward-delete-char
 .PP
 VI Command Mode functions
-.sp
+.PP
 "C-D"  vi-eof-maybe
 "C-E"  emacs-editing-mode
 "C-G"  abort
@@ -1486,7 +1774,7 @@ VI Command Mode functions
 "C-T"  transpose-chars
 "C-U"  unix-line-discard
 "C-V"  quoted-insert
-"C-W"  unix-word-rubout
+"C-W"  vi-unix-word-rubout
 "C-Y"  yank
 "C-_"  vi-undo
 "\^ "  forward-char
@@ -1520,10 +1808,10 @@ VI Command Mode functions
 "T"  vi-char-search
 "U"  revert-line
 "W"  vi-next-word
-"X"  backward-delete-char
+"X"  vi-rubout
 "Y"  vi-yank-to
 "\e"  vi-complete
-"^"  vi-first-print
+"\*^"  vi-first-print
 "_"  vi-yank-arg
 "`"  vi-goto-mark
 "a"  vi-append-mode
@@ -1535,7 +1823,7 @@ VI Command Mode functions
 "h"  backward-char
 "i"  vi-insertion-mode
 "j"  next-history
-"k"  prev-history
+"k"  previous-history
 "l"  forward-char
 "m"  vi-set-mark
 "n"  vi-search-again
@@ -1548,7 +1836,7 @@ VI Command Mode functions
 "x"  vi-delete
 "y"  vi-yank-to
 "|"  vi-column
-"~"  vi-change-case
+"\*~"  vi-change-case
 .RE
 .SH "SEE ALSO"
 .PD 0
@@ -1562,7 +1850,7 @@ VI Command Mode functions
 .SH FILES
 .PD 0
 .TP
-.FN ~/.inputrc
+.FN \*~/.inputrc
 Individual \fBreadline\fP initialization file
 .PD
 .SH AUTHORS
@@ -1575,7 +1863,7 @@ Chet Ramey, Case Western Reserve University
 chet.ramey@case.edu
 .SH BUG REPORTS
 If you find a bug in
-.B readline,
+.BR readline ,
 you should report it.  But first, you should
 make sure that it really is a bug, and that it appears in the latest
 version of the
@@ -1585,7 +1873,9 @@ library that you have.
 Once you have determined that a bug actually exists, mail a
 bug report to \fIbug\-readline\fP@\fIgnu.org\fP.
 If you have a fix, you are welcome to mail that
-as well!  Suggestions and `philosophical' bug reports may be mailed
+as well!  Suggestions and
+.Q philosophical
+bug reports may be mailed
 to \fPbug-readline\fP@\fIgnu.org\fP or posted to the Usenet
 newsgroup
 .BR gnu.bash.bug .
index 7296d40e4fc3f7c061564dd2a28dcf07a331f095..27f73a441ebd1e5314a027ef934c6526503e1c49 100644 (file)
Binary files a/doc/readline.dvi and b/doc/readline.dvi differ
index 1002f4ff97ba1dd4eca8669a15c1d59a154f5fec..897bc7c22091a3d3a2e80ffabf3f1341c67c9fa4 100644 (file)
@@ -1,14 +1,14 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <!-- This manual describes the GNU Readline Library
-(version 8.2, 19 September 2022), a library which aids in the
+(version 8.3, 30 December 2024), a library which aids in the
 consistency of user interface across discrete programs which provide
 a command line interface.
 
-Copyright (C) 1988-2022 Free Software Foundation, Inc.
+Copyright © 1988-2025 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -32,21 +32,22 @@ A copy of the license is included in the section entitled
 <link href="#Command-Line-Editing" rel="next" title="Command Line Editing">
 <style type="text/css">
 <!--
-a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
-a.summary-letter {text-decoration: none}
-blockquote.indentedblock {margin-right: 0em}
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+a.summary-letter-printindex {text-decoration: none}
+div.center {text-align:center}
 div.display {margin-left: 3.2em}
 div.example {margin-left: 3.2em}
-kbd {font-style: oblique}
-pre.display {font-family: inherit}
-pre.format {font-family: inherit}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-span.nolinebreak {white-space: nowrap}
-span.roman {font-family: initial; font-weight: normal}
-span.sansserif {font-family: sans-serif; font-weight: normal}
-span:hover a.copiable-anchor {visibility: visible}
-ul.no-bullet {list-style: none}
+kbd.kbd {font-style: oblique}
+kbd.key {font-style: normal}
+pre.display-preformatted {font-family: inherit}
+span:hover a.copiable-link {visibility: visible}
+strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
+td.printindex-index-entry {vertical-align: top}
+td.printindex-index-section {vertical-align: top; padding-left: 1em}
+th.entries-header-printindex {text-align:left}
+th.sections-header-printindex {text-align:left; padding-left: 1em}
+ul.mark-bullet {list-style-type: disc}
+ul.toc-numbered-mark {list-style: none}
 -->
 </style>
 
@@ -54,7 +55,6 @@ ul.no-bullet {list-style: none}
 </head>
 
 <body lang="en">
-<h1 class="settitle" align="center">GNU Readline Library</h1>
 
 
 
@@ -64,34 +64,34 @@ ul.no-bullet {list-style: none}
 
 
 
-<div class="top" id="Top">
-<div class="header">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
 <p>
 Next: <a href="#Command-Line-Editing" accesskey="n" rel="next">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="GNU-Readline-Library"></span><h1 class="top">GNU Readline Library</h1>
+<h1 class="top" id="GNU-Readline-Library"><span>GNU Readline Library<a class="copiable-link" href="#GNU-Readline-Library"> &para;</a></span></h1>
 
 <p>This document describes the GNU Readline Library, a utility which aids
 in the consistency of user interface across discrete programs which
 provide a command line interface.
-The Readline home page is <a href="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</a>.
+The Readline home page is <a class="url" href="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</a>.
 </p>
 
 
 
 
 
-<div class="Contents_element" id="SEC_Contents">
+<div class="element-contents" id="SEC_Contents">
 <h2 class="contents-heading">Table of Contents</h2>
 
 <div class="contents">
 
-<ul class="no-bullet">
+<ul class="toc-numbered-mark">
   <li><a id="toc-Command-Line-Editing-1" href="#Command-Line-Editing">1 Command Line Editing</a>
-  <ul class="no-bullet">
+  <ul class="toc-numbered-mark">
     <li><a id="toc-Introduction-to-Line-Editing" href="#Introduction-and-Notation">1.1 Introduction to Line Editing</a></li>
     <li><a id="toc-Readline-Interaction-1" href="#Readline-Interaction">1.2 Readline Interaction</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Readline-Bare-Essentials-1" href="#Readline-Bare-Essentials">1.2.1 Readline Bare Essentials</a></li>
       <li><a id="toc-Readline-Movement-Commands-1" href="#Readline-Movement-Commands">1.2.2 Readline Movement Commands</a></li>
       <li><a id="toc-Readline-Killing-Commands-1" href="#Readline-Killing-Commands">1.2.3 Readline Killing Commands</a></li>
@@ -99,13 +99,13 @@ The Readline home page is <a href="http://www.gnu.org/software/readline/">http:/
       <li><a id="toc-Searching-for-Commands-in-the-History" href="#Searching">1.2.5 Searching for Commands in the History</a></li>
     </ul></li>
     <li><a id="toc-Readline-Init-File-1" href="#Readline-Init-File">1.3 Readline Init File</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Readline-Init-File-Syntax-1" href="#Readline-Init-File-Syntax">1.3.1 Readline Init File Syntax</a></li>
       <li><a id="toc-Conditional-Init-Constructs-1" href="#Conditional-Init-Constructs">1.3.2 Conditional Init Constructs</a></li>
       <li><a id="toc-Sample-Init-File-1" href="#Sample-Init-File">1.3.3 Sample Init File</a></li>
     </ul></li>
     <li><a id="toc-Bindable-Readline-Commands-1" href="#Bindable-Readline-Commands">1.4 Bindable Readline Commands</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Commands-For-Moving-1" href="#Commands-For-Moving">1.4.1 Commands For Moving</a></li>
       <li><a id="toc-Commands-For-Manipulating-The-History" href="#Commands-For-History">1.4.2 Commands For Manipulating The History</a></li>
       <li><a id="toc-Commands-For-Changing-Text" href="#Commands-For-Text">1.4.3 Commands For Changing Text</a></li>
@@ -118,16 +118,16 @@ The Readline home page is <a href="http://www.gnu.org/software/readline/">http:/
     <li><a id="toc-Readline-vi-Mode-1" href="#Readline-vi-Mode">1.5 Readline vi Mode</a></li>
   </ul></li>
   <li><a id="toc-Programming-with-GNU-Readline-1" href="#Programming-with-GNU-Readline">2 Programming with GNU Readline</a>
-  <ul class="no-bullet">
+  <ul class="toc-numbered-mark">
     <li><a id="toc-Basic-Behavior-1" href="#Basic-Behavior">2.1 Basic Behavior</a></li>
     <li><a id="toc-Custom-Functions-1" href="#Custom-Functions">2.2 Custom Functions</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Readline-Typedefs-1" href="#Readline-Typedefs">2.2.1 Readline Typedefs</a></li>
       <li><a id="toc-Writing-a-New-Function" href="#Function-Writing">2.2.2 Writing a New Function</a></li>
     </ul></li>
     <li><a id="toc-Readline-Variables-1" href="#Readline-Variables">2.3 Readline Variables</a></li>
     <li><a id="toc-Readline-Convenience-Functions-1" href="#Readline-Convenience-Functions">2.4 Readline Convenience Functions</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Naming-a-Function" href="#Function-Naming">2.4.1 Naming a Function</a></li>
       <li><a id="toc-Selecting-a-Keymap" href="#Keymaps">2.4.2 Selecting a Keymap</a></li>
       <li><a id="toc-Binding-Keys-1" href="#Binding-Keys">2.4.3 Binding Keys</a></li>
@@ -145,7 +145,7 @@ The Readline home page is <a href="http://www.gnu.org/software/readline/">http:/
     </ul></li>
     <li><a id="toc-Readline-Signal-Handling-1" href="#Readline-Signal-Handling">2.5 Readline Signal Handling</a></li>
     <li><a id="toc-Custom-Completers-1" href="#Custom-Completers">2.6 Custom Completers</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-How-Completing-Works-1" href="#How-Completing-Works">2.6.1 How Completing Works</a></li>
       <li><a id="toc-Completion-Functions-1" href="#Completion-Functions">2.6.2 Completion Functions</a></li>
       <li><a id="toc-Completion-Variables-1" href="#Completion-Variables">2.6.3 Completion Variables</a></li>
@@ -159,18 +159,18 @@ The Readline home page is <a href="http://www.gnu.org/software/readline/">http:/
 </div>
 </div>
 <hr>
-<div class="chapter" id="Command-Line-Editing">
-<div class="header">
+<div class="chapter-level-extent" id="Command-Line-Editing">
+<div class="nav-panel">
 <p>
 Next: <a href="#Programming-with-GNU-Readline" accesskey="n" rel="next">Programming with GNU Readline</a>, Previous: <a href="#Top" accesskey="p" rel="prev">GNU Readline Library</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU Readline Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Command-Line-Editing-1"></span><h2 class="chapter">1 Command Line Editing</h2>
+<h2 class="chapter" id="Command-Line-Editing-1"><span>1 Command Line Editing<a class="copiable-link" href="#Command-Line-Editing-1"> &para;</a></span></h2>
 
-<p>This chapter describes the basic features of the <small>GNU</small>
+<p>This chapter describes the basic features of the <small class="sc">GNU</small>
 command line editing interface.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Introduction-and-Notation" accesskey="1">Introduction to Line Editing</a></li>
 <li><a href="#Readline-Interaction" accesskey="2">Readline Interaction</a></li>
 <li><a href="#Readline-Init-File" accesskey="3">Readline Init File</a></li>
@@ -178,71 +178,89 @@ command line editing interface.
 <li><a href="#Readline-vi-Mode" accesskey="5">Readline vi Mode</a></li>
 </ul>
 <hr>
-<div class="section" id="Introduction-and-Notation">
-<div class="header">
+<div class="section-level-extent" id="Introduction-and-Notation">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Interaction" accesskey="n" rel="next">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Introduction-to-Line-Editing"></span><h3 class="section">1.1 Introduction to Line Editing</h3>
+<h3 class="section" id="Introduction-to-Line-Editing"><span>1.1 Introduction to Line Editing<a class="copiable-link" href="#Introduction-to-Line-Editing"> &para;</a></span></h3>
 
-<p>The following paragraphs describe the notation used to represent
-keystrokes.
+<p>The following paragraphs use Emacs style to
+describe the notation used to represent keystrokes.
 </p>
-<p>The text <kbd>C-k</kbd> is read as &lsquo;Control-K&rsquo; and describes the character
-produced when the <tt class="key">k</tt> key is pressed while the Control key
+<p>The text <kbd class="kbd">C-k</kbd> is read as &lsquo;Control-K&rsquo; and describes the character
+produced when the <kbd class="key">k</kbd> key is pressed while the Control key
 is depressed.
 </p>
-<p>The text <kbd>M-k</kbd> is read as &lsquo;Meta-K&rsquo; and describes the character
-produced when the Meta key (if you have one) is depressed, and the <tt class="key">k</tt>
-key is pressed.
-The Meta key is labeled <tt class="key">ALT</tt> on many keyboards.
-On keyboards with two keys labeled <tt class="key">ALT</tt> (usually to either side of
-the space bar), the <tt class="key">ALT</tt> on the left side is generally set to
+<p>The text <kbd class="kbd">M-k</kbd> is read as &lsquo;Meta-K&rsquo; and describes the character
+produced when the Meta key (if you have one) is depressed, and the <kbd class="key">k</kbd>
+key is pressed (a <em class="dfn">meta character</em>), then both are released.
+The Meta key is labeled <kbd class="key">ALT</kbd> or <kbd class="key">Option</kbd> on many keyboards.
+On keyboards with two keys labeled <kbd class="key">ALT</kbd> (usually to either side of
+the space bar), the <kbd class="key">ALT</kbd> on the left side is generally set to
 work as a Meta key.
-The <tt class="key">ALT</tt> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
+One of the <kbd class="key">ALT</kbd> keys may also be configured
+as some other modifier, such as a
 Compose key for typing accented characters.
 </p>
-<p>If you do not have a Meta or <tt class="key">ALT</tt> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <tt class="key">ESC</tt>
-<em>first</em>, and then typing <tt class="key">k</tt>.
-Either process is known as <em>metafying</em> the <tt class="key">k</tt> key.
+<p>On some keyboards, the Meta key modifier produces characters with
+the eighth bit (0200) set.
+You can use the <code class="code">enable-meta-key</code> variable
+to control whether or not it does this, if the keyboard allows it.
+On many others, the terminal or terminal emulator converts the metafied
+key to a key sequence beginning with <kbd class="key">ESC</kbd> as described in the
+next paragraph.
 </p>
-<p>The text <kbd>M-C-k</kbd> is read as &lsquo;Meta-Control-k&rsquo; and describes the
-character produced by <em>metafying</em> <kbd>C-k</kbd>.
+<p>If you do not have a Meta or <kbd class="key">ALT</kbd> key, or another key working as
+a Meta key, you can generally achieve the latter effect by typing <kbd class="key">ESC</kbd>
+<em class="emph">first</em>, and then typing <kbd class="key">k</kbd>.
+The <kbd class="key">ESC</kbd> character is known as the <em class="dfn">meta prefix</em>).
 </p>
-<p>In addition, several keys have their own names.  Specifically,
-<tt class="key">DEL</tt>, <tt class="key">ESC</tt>, <tt class="key">LFD</tt>, <tt class="key">SPC</tt>, <tt class="key">RET</tt>, and <tt class="key">TAB</tt> all
+<p>Either process is known as <em class="dfn">metafying</em> the <kbd class="key">k</kbd> key.
+</p>
+<p>If your Meta key produces a key sequence with the <kbd class="key">ESC</kbd> meta prefix,
+you can make <kbd class="kbd">M-key</kbd> key bindings you specify
+(see <code class="code">Key Bindings</code> in <a class="ref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>)
+do the same thing by setting the <code class="code">force-meta-prefix</code> variable.
+</p>
+<p>The text <kbd class="kbd">M-C-k</kbd> is read as &lsquo;Meta-Control-k&rsquo; and describes the
+character produced by metafying <kbd class="kbd">C-k</kbd>.
+</p>
+<p>In addition, several keys have their own names.
+Specifically,
+<kbd class="key">DEL</kbd>, <kbd class="key">ESC</kbd>, <kbd class="key">LFD</kbd>, <kbd class="key">SPC</kbd>, <kbd class="key">RET</kbd>, and <kbd class="key">TAB</kbd> all
 stand for themselves when seen in this text, or in an init file
-(see <a href="#Readline-Init-File">Readline Init File</a>).
-If your keyboard lacks a <tt class="key">LFD</tt> key, typing <tt class="key">C-j</tt> will
-produce the desired character.
-The <tt class="key">RET</tt> key may be labeled <tt class="key">Return</tt> or <tt class="key">Enter</tt> on
+(see <a class="pxref" href="#Readline-Init-File">Readline Init File</a>).
+If your keyboard lacks a <kbd class="key">LFD</kbd> key, typing <kbd class="key">C-j</kbd> will
+output the appropriate character.
+The <kbd class="key">RET</kbd> key may be labeled <kbd class="key">Return</kbd> or <kbd class="key">Enter</kbd> on
 some keyboards.
 </p>
 <hr>
 </div>
-<div class="section" id="Readline-Interaction">
-<div class="header">
+<div class="section-level-extent" id="Readline-Interaction">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Init-File" accesskey="n" rel="next">Readline Init File</a>, Previous: <a href="#Introduction-and-Notation" accesskey="p" rel="prev">Introduction to Line Editing</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Interaction-1"></span><h3 class="section">1.2 Readline Interaction</h3>
-<span id="index-interaction_002c-readline"></span>
+<h3 class="section" id="Readline-Interaction-1"><span>1.2 Readline Interaction<a class="copiable-link" href="#Readline-Interaction-1"> &para;</a></span></h3>
+<a class="index-entry-id" id="index-interaction_002c-readline"></a>
 
 <p>Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
+only to notice that the first word on the line is misspelled.
+The Readline library gives you a set of commands for manipulating the text
 as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
+you to retype the majority of the line.
+Using these editing commands,
 you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press <tt class="key">RET</tt>.  You do not have to be at the
-end of the line to press <tt class="key">RET</tt>; the entire line is accepted
+insert the text of the corrections.
+Then, when you are satisfied with the line, you simply press <kbd class="key">RET</kbd>.
+You do not have to be at the
+end of the line to press <kbd class="key">RET</kbd>; the entire line is accepted
 regardless of the location of the cursor within the line.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Readline-Bare-Essentials" accesskey="1">Readline Bare Essentials</a></li>
 <li><a href="#Readline-Movement-Commands" accesskey="2">Readline Movement Commands</a></li>
 <li><a href="#Readline-Killing-Commands" accesskey="3">Readline Killing Commands</a></li>
@@ -250,113 +268,117 @@ regardless of the location of the cursor within the line.
 <li><a href="#Searching" accesskey="5">Searching for Commands in the History</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Readline-Bare-Essentials">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Bare-Essentials">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Movement-Commands" accesskey="n" rel="next">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Bare-Essentials-1"></span><h4 class="subsection">1.2.1 Readline Bare Essentials</h4>
-<span id="index-notation_002c-readline"></span>
-<span id="index-command-editing"></span>
-<span id="index-editing-command-lines"></span>
+<h4 class="subsection" id="Readline-Bare-Essentials-1"><span>1.2.1 Readline Bare Essentials<a class="copiable-link" href="#Readline-Bare-Essentials-1"> &para;</a></span></h4>
+<a class="index-entry-id" id="index-notation_002c-readline"></a>
+<a class="index-entry-id" id="index-command-editing"></a>
+<a class="index-entry-id" id="index-editing-command-lines"></a>
 
-<p>In order to enter characters into the line, simply type them.  The typed
+<p>In order to enter characters into the line, simply type them.
+The typed
 character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your
+space to the right.
+If you mistype a character, you can use your
 erase character to back up and delete the mistyped character.
 </p>
 <p>Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters.  In
-that case, you can type <kbd>C-b</kbd> to move the cursor to the left, and then
-correct your mistake.  Afterwards, you can move the cursor to the right
-with <kbd>C-f</kbd>.
+not notice the error until you have typed several other characters.
+In that case, you can type <kbd class="kbd">C-b</kbd> to move the cursor to the left,
+and then correct your mistake.
+Afterwards, you can move the cursor to the right with <kbd class="kbd">C-f</kbd>.
 </p>
 <p>When you add text in the middle of a line, you will notice that characters
 to the right of the cursor are &lsquo;pushed over&rsquo; to make room for the text
-that you have inserted.  Likewise, when you delete text behind the cursor,
+that you have inserted.
+Likewise, when you delete text behind the cursor,
 characters to the right of the cursor are &lsquo;pulled back&rsquo; to fill in the
-blank space created by the removal of the text.  A list of the bare
-essentials for editing the text of an input line follows.
+blank space created by the removal of the text.
+These are the bare
+essentials for editing the text of an input line:
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-b</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-b</kbd></dt>
 <dd><p>Move back one character.
 </p></dd>
-<dt><span><kbd>C-f</kbd></span></dt>
+<dt><kbd class="kbd">C-f</kbd></dt>
 <dd><p>Move forward one character.
 </p></dd>
-<dt><span><tt class="key">DEL</tt> or <tt class="key">Backspace</tt></span></dt>
+<dt><kbd class="key">DEL</kbd> or <kbd class="key">Backspace</kbd></dt>
 <dd><p>Delete the character to the left of the cursor.
 </p></dd>
-<dt><span><kbd>C-d</kbd></span></dt>
+<dt><kbd class="kbd">C-d</kbd></dt>
 <dd><p>Delete the character underneath the cursor.
 </p></dd>
-<dt><span>Printing&nbsp;characters<!-- /@w --></span></dt>
+<dt>Printing&nbsp;characters<!-- /@w --></dt>
 <dd><p>Insert the character into the line at the cursor.
 </p></dd>
-<dt><span><kbd>C-_</kbd> or <kbd>C-x C-u</kbd></span></dt>
-<dd><p>Undo the last editing command.  You can undo all the way back to an
-empty line.
+<dt><kbd class="kbd">C-_</kbd> or <kbd class="kbd">C-x C-u</kbd></dt>
+<dd><p>Undo the last editing command.
+You can undo all the way back to an empty line.
 </p></dd>
 </dl>
 
-<p>(Depending on your configuration, the <tt class="key">Backspace</tt> key might be set to
-delete the character to the left of the cursor and the <tt class="key">DEL</tt> key set
-to delete the character underneath the cursor, like <kbd>C-d</kbd>, rather
-than the character to the left of the cursor.)
+<p>Depending on your configuration, the <kbd class="key">Backspace</kbd> key might be set to
+delete the character to the left of the cursor and the <kbd class="key">DEL</kbd> key set
+to delete the character underneath the cursor, like <kbd class="kbd">C-d</kbd>, rather
+than the character to the left of the cursor.
 </p>
 <hr>
 </div>
-<div class="subsection" id="Readline-Movement-Commands">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Movement-Commands">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Killing-Commands" accesskey="n" rel="next">Readline Killing Commands</a>, Previous: <a href="#Readline-Bare-Essentials" accesskey="p" rel="prev">Readline Bare Essentials</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Movement-Commands-1"></span><h4 class="subsection">1.2.2 Readline Movement Commands</h4>
-
+<h4 class="subsection" id="Readline-Movement-Commands-1"><span>1.2.2 Readline Movement Commands<a class="copiable-link" href="#Readline-Movement-Commands-1"> &para;</a></span></h4>
 
 <p>The above table describes the most basic keystrokes that you need
-in order to do editing of the input line.  For your convenience, many
-other commands have been added in addition to <kbd>C-b</kbd>, <kbd>C-f</kbd>,
-<kbd>C-d</kbd>, and <tt class="key">DEL</tt>.  Here are some commands for moving more rapidly
-about the line.
+in order to do editing of the input line.
+For your convenience, many other commands are available in
+addition to <kbd class="kbd">C-b</kbd>, <kbd class="kbd">C-f</kbd>, <kbd class="kbd">C-d</kbd>, and <kbd class="key">DEL</kbd>.
+Here are some commands for moving more rapidly within the line.
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-a</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-a</kbd></dt>
 <dd><p>Move to the start of the line.
 </p></dd>
-<dt><span><kbd>C-e</kbd></span></dt>
+<dt><kbd class="kbd">C-e</kbd></dt>
 <dd><p>Move to the end of the line.
 </p></dd>
-<dt><span><kbd>M-f</kbd></span></dt>
+<dt><kbd class="kbd">M-f</kbd></dt>
 <dd><p>Move forward a word, where a word is composed of letters and digits.
 </p></dd>
-<dt><span><kbd>M-b</kbd></span></dt>
+<dt><kbd class="kbd">M-b</kbd></dt>
 <dd><p>Move backward a word.
 </p></dd>
-<dt><span><kbd>C-l</kbd></span></dt>
+<dt><kbd class="kbd">C-l</kbd></dt>
 <dd><p>Clear the screen, reprinting the current line at the top.
 </p></dd>
 </dl>
 
-<p>Notice how <kbd>C-f</kbd> moves forward a character, while <kbd>M-f</kbd> moves
-forward a word.  It is a loose convention that control keystrokes
+<p>Notice how <kbd class="kbd">C-f</kbd> moves forward a character, while <kbd class="kbd">M-f</kbd> moves
+forward a word.
+It is a loose convention that control keystrokes
 operate on characters while meta keystrokes operate on words.
 </p>
 <hr>
 </div>
-<div class="subsection" id="Readline-Killing-Commands">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Killing-Commands">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Arguments" accesskey="n" rel="next">Readline Arguments</a>, Previous: <a href="#Readline-Movement-Commands" accesskey="p" rel="prev">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Killing-Commands-1"></span><h4 class="subsection">1.2.3 Readline Killing Commands</h4>
+<h4 class="subsection" id="Readline-Killing-Commands-1"><span>1.2.3 Readline Killing Commands<a class="copiable-link" href="#Readline-Killing-Commands-1"> &para;</a></span></h4>
 
-<span id="index-killing-text"></span>
-<span id="index-yanking-text"></span>
+<a class="index-entry-id" id="index-killing-text"></a>
+<a class="index-entry-id" id="index-yanking-text"></a>
 
-<p><em>Killing</em> text means to delete the text from the line, but to save
-it away for later use, usually by <em>yanking</em> (re-inserting)
+<p><em class="dfn">Killing</em> text means to delete the text from the line, but to save
+it away for later use, usually by <em class="dfn">yanking</em> (re-inserting)
 it back into the line.
 (&lsquo;Cut&rsquo; and &lsquo;paste&rsquo; are more recent jargon for &lsquo;kill&rsquo; and &lsquo;yank&rsquo;.)
 </p>
@@ -364,90 +386,97 @@ it back into the line.
 be sure that you can get the text back in a different (or the same)
 place later.
 </p>
-<p>When you use a kill command, the text is saved in a <em>kill-ring</em>.
+<p>When you use a kill command, the text is saved in a <em class="dfn">kill-ring</em>.
 Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill
-ring is not line specific; the text that you killed on a previously
+that when you yank it back, you get it all.
+The kill ring is not line specific; the text that you killed on a previously
 typed line is available to be yanked back later, when you are typing
 another line.
-<span id="index-kill-ring"></span>
+<a class="index-entry-id" id="index-kill-ring"></a>
 </p>
 <p>Here is the list of commands for killing text.
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-k</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-k</kbd></dt>
 <dd><p>Kill the text from the current cursor position to the end of the line.
 </p>
 </dd>
-<dt><span><kbd>M-d</kbd></span></dt>
+<dt><kbd class="kbd">M-d</kbd></dt>
 <dd><p>Kill from the cursor to the end of the current word, or, if between
 words, to the end of the next word.
-Word boundaries are the same as those used by <kbd>M-f</kbd>.
+Word boundaries are the same as those used by <kbd class="kbd">M-f</kbd>.
 </p>
 </dd>
-<dt><span><kbd>M-<span class="key">DEL</span></kbd></span></dt>
+<dt><kbd class="kbd">M-<kbd class="key">DEL</kbd></kbd></dt>
 <dd><p>Kill from the cursor to the start of the current word, or, if between
 words, to the start of the previous word.
-Word boundaries are the same as those used by <kbd>M-b</kbd>.
+Word boundaries are the same as those used by <kbd class="kbd">M-b</kbd>.
 </p>
 </dd>
-<dt><span><kbd>C-w</kbd></span></dt>
-<dd><p>Kill from the cursor to the previous whitespace.  This is different than
-<kbd>M-<span class="key">DEL</span></kbd> because the word boundaries differ.
+<dt><kbd class="kbd">C-w</kbd></dt>
+<dd><p>Kill from the cursor to the previous whitespace.
+This is different than
+<kbd class="kbd">M-<kbd class="key">DEL</kbd></kbd> because the word boundaries differ.
 </p>
 </dd>
 </dl>
 
-<p>Here is how to <em>yank</em> the text back into the line.  Yanking
-means to copy the most-recently-killed text from the kill buffer.
+<p>Here is how to <em class="dfn">yank</em> the text back into the line.  Yanking
+means to copy the most-recently-killed text from the kill buffer
+into the line at the current cursor position.
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-y</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-y</kbd></dt>
 <dd><p>Yank the most recently killed text back into the buffer at the cursor.
 </p>
 </dd>
-<dt><span><kbd>M-y</kbd></span></dt>
-<dd><p>Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is <kbd>C-y</kbd> or <kbd>M-y</kbd>.
+<dt><kbd class="kbd">M-y</kbd></dt>
+<dd><p>Rotate the kill-ring, and yank the new top.
+You can only do this if the prior command is <kbd class="kbd">C-y</kbd> or <kbd class="kbd">M-y</kbd>.
 </p></dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Readline-Arguments">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Arguments">
+<div class="nav-panel">
 <p>
 Next: <a href="#Searching" accesskey="n" rel="next">Searching for Commands in the History</a>, Previous: <a href="#Readline-Killing-Commands" accesskey="p" rel="prev">Readline Killing Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Arguments-1"></span><h4 class="subsection">1.2.4 Readline Arguments</h4>
+<h4 class="subsection" id="Readline-Arguments-1"><span>1.2.4 Readline Arguments<a class="copiable-link" href="#Readline-Arguments-1"> &para;</a></span></h4>
 
-<p>You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the <i>sign</i> of the
-argument that is significant.  If you pass a negative argument to a
+<p>You can pass numeric arguments to Readline commands.
+Sometimes the
+argument acts as a repeat count, other times it is the <i class="i">sign</i> of the
+argument that is significant.
+If you pass a negative argument to a
 command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type &lsquo;<samp>M-- C-k</samp>&rsquo;.
+act in a backward direction.
+For example, to kill text back to the
+start of the line, you might type &lsquo;<samp class="samp">M-- C-k</samp>&rsquo;.
 </p>
 <p>The general way to pass numeric arguments to a command is to type meta
-digits before the command.  If the first &lsquo;digit&rsquo; typed is a minus
-sign (&lsquo;<samp>-</samp>&rsquo;), then the sign of the argument will be negative.  Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command.  For example, to give
-the <kbd>C-d</kbd> command an argument of 10, you could type &lsquo;<samp>M-1 0 C-d</samp>&rsquo;,
+digits before the command.
+If the first &lsquo;digit&rsquo; typed is a minus
+sign (&lsquo;<samp class="samp">-</samp>&rsquo;), then the sign of the argument will be negative.
+Once you have typed one meta digit to get the argument started, you can
+type the remainder of the digits, and then the command.
+For example, to give
+the <kbd class="kbd">C-d</kbd> command an argument of 10, you could type &lsquo;<samp class="samp">M-1 0 C-d</samp>&rsquo;,
 which will delete the next ten characters on the input line.
 </p>
 <hr>
 </div>
-<div class="subsection" id="Searching">
-<div class="header">
+<div class="subsection-level-extent" id="Searching">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Readline-Arguments" accesskey="p" rel="prev">Readline Arguments</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Searching-for-Commands-in-the-History"></span><h4 class="subsection">1.2.5 Searching for Commands in the History</h4>
+<h4 class="subsection" id="Searching-for-Commands-in-the-History"><span>1.2.5 Searching for Commands in the History<a class="copiable-link" href="#Searching-for-Commands-in-the-History"> &para;</a></span></h4>
 
 <p>Readline provides commands for searching through the command history
 for lines containing a specified string.
-There are two search modes:  <em>incremental</em> and <em>non-incremental</em>.
+There are two search modes:  <em class="dfn">incremental</em> and <em class="dfn">non-incremental</em>.
 </p>
 <p>Incremental searches begin before the user has finished typing the
 search string.
@@ -455,538 +484,596 @@ As each character of the search string is typed, Readline displays
 the next entry from the history matching the string typed so far.
 An incremental search requires only as many characters as needed to
 find the desired history entry.
-To search backward in the history for a particular string, type
-<kbd>C-r</kbd>.  Typing <kbd>C-s</kbd> searches forward through the history.
-The characters present in the value of the <code>isearch-terminators</code> variable
+When using emacs editing mode, type <kbd class="kbd">C-r</kbd>
+to search backward in the history for a particular string.
+Typing <kbd class="kbd">C-s</kbd> searches forward through the history.
+The characters present in the value of the <code class="code">isearch-terminators</code> variable
 are used to terminate an incremental search.
-If that variable has not been assigned a value, the <tt class="key">ESC</tt> and
-<kbd>C-J</kbd> characters will terminate an incremental search.
-<kbd>C-g</kbd> will abort an incremental search and restore the original line.
+If that variable has not been assigned a value, the <kbd class="key">ESC</kbd> and
+<kbd class="kbd">C-j</kbd> characters terminate an incremental search.
+<kbd class="kbd">C-g</kbd> aborts an incremental search and restores the original line.
 When the search is terminated, the history entry containing the
 search string becomes the current line.
 </p>
-<p>To find other matching entries in the history list, type <kbd>C-r</kbd> or
-<kbd>C-s</kbd> as appropriate.
-This will search backward or forward in the history for the next
+<p>To find other matching entries in the history list, type <kbd class="kbd">C-r</kbd> or
+<kbd class="kbd">C-s</kbd> as appropriate.
+This searches backward or forward in the history for the next
 entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <tt class="key">RET</tt> will terminate the search and accept
+Any other key sequence bound to a Readline command terminates
+the search and executes that command.
+For instance, a <kbd class="key">RET</kbd> terminates the search and accepts
 the line, thereby executing the command from the history list.
 A movement command will terminate the search, make the last line found
 the current line, and begin editing.
 </p>
-<p>Readline remembers the last incremental search string.  If two
-<kbd>C-r</kbd>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
+<p>Readline remembers the last incremental search string.
+If two <kbd class="kbd">C-r</kbd>s are typed without any intervening characters defining
+a new search string, Readline uses any remembered search string.
 </p>
 <p>Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
+to search for matching history entries.
+The search string may be typed by the user or be part of the contents of
+the current line.
 </p>
 <hr>
 </div>
 </div>
-<div class="section" id="Readline-Init-File">
-<div class="header">
+<div class="section-level-extent" id="Readline-Init-File">
+<div class="nav-panel">
 <p>
 Next: <a href="#Bindable-Readline-Commands" accesskey="n" rel="next">Bindable Readline Commands</a>, Previous: <a href="#Readline-Interaction" accesskey="p" rel="prev">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Init-File-1"></span><h3 class="section">1.3 Readline Init File</h3>
-<span id="index-initialization-file_002c-readline"></span>
+<h3 class="section" id="Readline-Init-File-1"><span>1.3 Readline Init File<a class="copiable-link" href="#Readline-Init-File-1"> &para;</a></span></h3>
+<a class="index-entry-id" id="index-initialization-file_002c-readline"></a>
 
 <p>Although the Readline library comes with a set of Emacs-like
 keybindings installed by default, it is possible to use a different set
 of keybindings.
 Any user can customize programs that use Readline by putting
-commands in an <em>inputrc</em> file,
-conventionally in their home directory.
-The name of this
-file is taken from the value of the environment variable <code>INPUTRC</code>.  If
-that variable is unset, the default is <samp>~/.inputrc</samp>.  If that
-file does not exist or cannot be read, the ultimate default is
-<samp>/etc/inputrc</samp>.
-</p>
-<p>When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</p>
-<p>In addition, the <code>C-x C-r</code> command re-reads this init file, thus
+commands in an <em class="dfn">inputrc</em> file, conventionally in their home directory.
+The name of this file is taken from the value of the
+environment variable <code class="env">INPUTRC</code>.
+If that variable is unset, the default is <samp class="file">~/.inputrc</samp>.
+If that file does not exist or cannot be read, Readline looks for
+<samp class="file">/etc/inputrc</samp>.
+</p>
+<p>When a program that uses the Readline library starts up, Readline reads
+the init file and sets any variables and key bindings it contains.
+</p>
+<p>In addition, the <code class="code">C-x C-r</code> command re-reads this init file, thus
 incorporating any changes that you might have made to it.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Readline-Init-File-Syntax" accesskey="1">Readline Init File Syntax</a></li>
 <li><a href="#Conditional-Init-Constructs" accesskey="2">Conditional Init Constructs</a></li>
 <li><a href="#Sample-Init-File" accesskey="3">Sample Init File</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Readline-Init-File-Syntax">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Init-File-Syntax">
+<div class="nav-panel">
 <p>
 Next: <a href="#Conditional-Init-Constructs" accesskey="n" rel="next">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Init-File-Syntax-1"></span><h4 class="subsection">1.3.1 Readline Init File Syntax</h4>
+<h4 class="subsection" id="Readline-Init-File-Syntax-1"><span>1.3.1 Readline Init File Syntax<a class="copiable-link" href="#Readline-Init-File-Syntax-1"> &para;</a></span></h4>
 
 <p>There are only a few basic constructs allowed in the
-Readline init file.  Blank lines are ignored.
-Lines beginning with a &lsquo;<samp>#</samp>&rsquo; are comments.
-Lines beginning with a &lsquo;<samp>$</samp>&rsquo; indicate conditional
-constructs (see <a href="#Conditional-Init-Constructs">Conditional Init Constructs</a>).  Other lines
-denote variable settings and key bindings.
-</p>
-<dl compact="compact">
-<dt><span>Variable Settings</span></dt>
+Readline init file.
+Blank lines are ignored.
+Lines beginning with a &lsquo;<samp class="samp">#</samp>&rsquo; are comments.
+Lines beginning with a &lsquo;<samp class="samp">$</samp>&rsquo; indicate conditional
+constructs (see <a class="pxref" href="#Conditional-Init-Constructs">Conditional Init Constructs</a>).
+Other lines denote variable settings and key bindings.
+</p>
+<dl class="table">
+<dt>Variable Settings</dt>
 <dd><p>You can modify the run-time behavior of Readline by
 altering the values of variables in Readline
-using the <code>set</code> command within the init file.
+using the <code class="code">set</code> command within the init file.
 The syntax is simple:
 </p>
 <div class="example">
-<pre class="example">set <var>variable</var> <var>value</var>
+<pre class="example-preformatted">set <var class="var">variable</var> <var class="var">value</var>
 </pre></div>
 
 <p>Here, for example, is how to
 change from the default Emacs-like key binding to use
-<code>vi</code> line editing commands:
+<code class="code">vi</code> line editing commands:
 </p>
 <div class="example">
-<pre class="example">set editing-mode vi
+<pre class="example-preformatted">set editing-mode vi
 </pre></div>
 
-<p>Variable names and values, where appropriate, are recognized without regard
-to case.  Unrecognized variable names are ignored.
+<p>Variable names and values, where appropriate, are recognized without
+regard to case.
+Unrecognized variable names are ignored.
 </p>
 <p>Boolean variables (those that can be set to on or off) are set to on if
-the value is null or empty, <var>on</var> (case-insensitive), or 1.  Any other
-value results in the variable being set to off.
+the value is null or empty, <var class="var">on</var> (case-insensitive), or 1.
+Any other value results in the variable being set to off.
 </p>
 
 <p>A great deal of run-time behavior is changeable with the following
 variables.
 </p>
-<span id="index-variables_002c-readline"></span>
-<dl compact="compact">
-<dt id='index-active_002dregion_002dstart_002dcolor'><span><code>active-region-start-color</code><a href='#index-active_002dregion_002dstart_002dcolor' class='copiable-anchor'> &para;</a></span></dt>
+<a class="index-entry-id" id="index-variables_002c-readline"></a>
+<dl class="table">
+<dt><a id="index-active_002dregion_002dstart_002dcolor"></a><span><code class="code">active-region-start-color</code><a class="copiable-link" href="#index-active_002dregion_002dstart_002dcolor"> &para;</a></span></dt>
 <dd><p>A string variable that controls the text color and background when displaying
 the text in the active region (see the description of
-<code>enable-active-region</code> below).
+<code class="code">enable-active-region</code> below).
 This string must not take up any physical character positions on the display,
 so it should consist only of terminal escape sequences.
 It is output to the terminal before displaying the text in the active region.
 This variable is reset to the default value whenever the terminal type changes.
 The default value is the string that puts the terminal in standout mode,
 as obtained from the terminal&rsquo;s terminfo description.
-A sample value might be &lsquo;<samp>\e[01;33m</samp>&rsquo;.
+A sample value might be &lsquo;<samp class="samp">\e[01;33m</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-active_002dregion_002dend_002dcolor'><span><code>active-region-end-color</code><a href='#index-active_002dregion_002dend_002dcolor' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A string variable that &quot;undoes&quot; the effects of <code>active-region-start-color</code>
-and restores &quot;normal&quot; terminal display appearance after displaying text
-in the active region.
+<dt><a id="index-active_002dregion_002dend_002dcolor"></a><span><code class="code">active-region-end-color</code><a class="copiable-link" href="#index-active_002dregion_002dend_002dcolor"> &para;</a></span></dt>
+<dd><p>A string variable that &ldquo;undoes&rdquo;
+the effects of <code class="code">active-region-start-color</code>
+and restores &ldquo;normal&rdquo;
+terminal display appearance after displaying text in the active region.
 This string must not take up any physical character positions on the display,
 so it should consist only of terminal escape sequences.
 It is output to the terminal after displaying the text in the active region.
 This variable is reset to the default value whenever the terminal type changes.
 The default value is the string that restores the terminal from standout mode,
 as obtained from the terminal&rsquo;s terminfo description.
-A sample value might be &lsquo;<samp>\e[0m</samp>&rsquo;.
+A sample value might be &lsquo;<samp class="samp">\e[0m</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-bell_002dstyle'><span><code>bell-style</code><a href='#index-bell_002dstyle' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-bell_002dstyle"></a><span><code class="code">bell-style</code><a class="copiable-link" href="#index-bell_002dstyle"> &para;</a></span></dt>
 <dd><p>Controls what happens when Readline wants to ring the terminal bell.
-If set to &lsquo;<samp>none</samp>&rsquo;, Readline never rings the bell.  If set to
-&lsquo;<samp>visible</samp>&rsquo;, Readline uses a visible bell if one is available.
-If set to &lsquo;<samp>audible</samp>&rsquo; (the default), Readline attempts to ring
+If set to &lsquo;<samp class="samp">none</samp>&rsquo;, Readline never rings the bell.
+If set to &lsquo;<samp class="samp">visible</samp>&rsquo;, Readline uses a visible bell if one is available.
+If set to &lsquo;<samp class="samp">audible</samp>&rsquo; (the default), Readline attempts to ring
 the terminal&rsquo;s bell.
 </p>
 </dd>
-<dt id='index-bind_002dtty_002dspecial_002dchars'><span><code>bind-tty-special-chars</code><a href='#index-bind_002dtty_002dspecial_002dchars' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo; (the default), Readline attempts to bind the control
-characters   treated specially by the kernel&rsquo;s terminal driver to their
+<dt><a id="index-bind_002dtty_002dspecial_002dchars"></a><span><code class="code">bind-tty-special-chars</code><a class="copiable-link" href="#index-bind_002dtty_002dspecial_002dchars"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo; (the default), Readline attempts to bind the control
+characters that are
+treated specially by the kernel&rsquo;s terminal driver to their
 Readline equivalents.
+These override the default Readline bindings described here.
+Type &lsquo;<samp class="samp">stty -a</samp>&rsquo; at a Bash prompt to see your current terminal settings,
+including the special control characters (usually <code class="code">cchars</code>).
 </p>
 </dd>
-<dt id='index-blink_002dmatching_002dparen'><span><code>blink-matching-paren</code><a href='#index-blink_002dmatching_002dparen' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted.  The default
-is &lsquo;<samp>off</samp>&rsquo;.
+<dt><a id="index-blink_002dmatching_002dparen"></a><span><code class="code">blink-matching-paren</code><a class="copiable-link" href="#index-blink_002dmatching_002dparen"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline attempts to briefly move the cursor to an
+opening parenthesis when a closing parenthesis is inserted.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-colored_002dcompletion_002dprefix'><span><code>colored-completion-prefix</code><a href='#index-colored_002dcompletion_002dprefix' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, when listing completions, Readline displays the
+<dt><a id="index-colored_002dcompletion_002dprefix"></a><span><code class="code">colored-completion-prefix</code><a class="copiable-link" href="#index-colored_002dcompletion_002dprefix"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, when listing completions, Readline displays the
 common prefix of the set of possible completions using a different color.
-The color definitions are taken from the value of the <code>LS_COLORS</code>
+The color definitions are taken from the value of the <code class="env">LS_COLORS</code>
 environment variable.
-If there is a color definition in <code>LS_COLORS</code> for the custom suffix
-&lsquo;<samp>readline-colored-completion-prefix</samp>&rsquo;, Readline uses this color for
+If there is a color definition in <code class="env">LS_COLORS</code> for the custom suffix
+&lsquo;<samp class="samp">readline-colored-completion-prefix</samp>&rsquo;, Readline uses this color for
 the common prefix instead of its default.
-The default is &lsquo;<samp>off</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-colored_002dstats'><span><code>colored-stats</code><a href='#index-colored_002dstats' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline displays possible completions using different
+<dt><a id="index-colored_002dstats"></a><span><code class="code">colored-stats</code><a class="copiable-link" href="#index-colored_002dstats"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays possible completions using different
 colors to indicate their file type.
-The color definitions are taken from the value of the <code>LS_COLORS</code>
+The color definitions are taken from the value of the <code class="env">LS_COLORS</code>
 environment variable.
-The default is &lsquo;<samp>off</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-comment_002dbegin'><span><code>comment-begin</code><a href='#index-comment_002dbegin' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The string to insert at the beginning of the line when the
-<code>insert-comment</code> command is executed.  The default value
-is <code>&quot;#&quot;</code>.
+<dt><a id="index-comment_002dbegin"></a><span><code class="code">comment-begin</code><a class="copiable-link" href="#index-comment_002dbegin"> &para;</a></span></dt>
+<dd><p>The string to insert at the beginning of the line by the
+<code class="code">insert-comment</code> command.
+The default value is <code class="code">&quot;#&quot;</code>.
 </p>
 </dd>
-<dt id='index-completion_002ddisplay_002dwidth'><span><code>completion-display-width</code><a href='#index-completion_002ddisplay_002dwidth' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-completion_002ddisplay_002dwidth"></a><span><code class="code">completion-display-width</code><a class="copiable-link" href="#index-completion_002ddisplay_002dwidth"> &para;</a></span></dt>
 <dd><p>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.
+A value of 0 causes matches to be displayed one per line.
 The default value is -1.
 </p>
 </dd>
-<dt id='index-completion_002dignore_002dcase'><span><code>completion-ignore-case</code><a href='#index-completion_002dignore_002dcase' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline performs filename matching and completion
+<dt><a id="index-completion_002dignore_002dcase"></a><span><code class="code">completion-ignore-case</code><a class="copiable-link" href="#index-completion_002dignore_002dcase"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline performs filename matching and completion
 in a case-insensitive fashion.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-completion_002dmap_002dcase'><span><code>completion-map-case</code><a href='#index-completion_002dmap_002dcase' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, and <var>completion-ignore-case</var> is enabled, Readline
-treats hyphens (&lsquo;<samp>-</samp>&rsquo;) and underscores (&lsquo;<samp>_</samp>&rsquo;) as equivalent when
+<dt><a id="index-completion_002dmap_002dcase"></a><span><code class="code">completion-map-case</code><a class="copiable-link" href="#index-completion_002dmap_002dcase"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, and <var class="var">completion-ignore-case</var> is enabled, Readline
+treats hyphens (&lsquo;<samp class="samp">-</samp>&rsquo;) and underscores (&lsquo;<samp class="samp">_</samp>&rsquo;) as equivalent when
 performing case-insensitive filename matching and completion.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-completion_002dprefix_002ddisplay_002dlength'><span><code>completion-prefix-display-length</code><a href='#index-completion_002dprefix_002ddisplay_002dlength' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The length in characters of the common prefix of a list of possible
-completions that is displayed without modification.  When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
-</p>
-</dd>
-<dt id='index-completion_002dquery_002ditems'><span><code>completion-query-items</code><a href='#index-completion_002dquery_002ditems' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The number of possible completions that determines when the user is
-asked whether the list of possibilities should be displayed.
-If the number of possible completions is greater than or equal to this value,
-Readline will ask whether or not the user wishes to view them;
-otherwise, they are simply listed.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-completion_002dprefix_002ddisplay_002dlength"></a><span><code class="code">completion-prefix-display-length</code><a class="copiable-link" href="#index-completion_002dprefix_002ddisplay_002dlength"> &para;</a></span></dt>
+<dd><p>The maximum
+length in characters of the common prefix of a list of possible
+completions that is displayed without modification.
+When set to a value greater than zero, Readline
+replaces common prefixes longer than this value
+with an ellipsis when displaying possible completions.
+If a completion begins with a period,
+and Readline is completing filenames,
+it uses three underscores instead of an ellipsis.
+</p>
+</dd>
+<dt><a id="index-completion_002dquery_002ditems"></a><span><code class="code">completion-query-items</code><a class="copiable-link" href="#index-completion_002dquery_002ditems"> &para;</a></span></dt>
+<dd><p>The number of possible completions that determines when the user is asked
+whether the list of possibilities should be displayed.
+If the number of possible completions is greater than
+or equal to this value,
+Readline asks whether or not the user wishes to view them;
+otherwise, Readline simply lists the completions.
 This variable must be set to an integer value greater than or equal to zero.
-A zero value means Readline should never ask; negative values are
-treated as zero.
-The default limit is <code>100</code>.
-</p>
-</dd>
-<dt id='index-convert_002dmeta'><span><code>convert-meta</code><a href='#index-convert_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will convert characters with the
-eighth bit set to an <small>ASCII</small> key sequence by stripping the eighth
-bit and prefixing an <tt class="key">ESC</tt> character, converting them to a
-meta-prefixed key sequence.
-The default value is &lsquo;<samp>on</samp>&rsquo;, but
-will be set to &lsquo;<samp>off</samp>&rsquo; if the locale is one that contains
-eight-bit characters.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
-may change if the locale is changed.
-</p>
-</dd>
-<dt id='index-disable_002dcompletion'><span><code>disable-completion</code><a href='#index-disable_002dcompletion' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>On</samp>&rsquo;, Readline will inhibit word completion.
-Completion  characters will be inserted into the line as if they had
-been mapped to <code>self-insert</code>.  The default is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-echo_002dcontrol_002dcharacters'><span><code>echo-control-characters</code><a href='#index-echo_002dcontrol_002dcharacters' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When set to &lsquo;<samp>on</samp>&rsquo;, on operating systems that indicate they support it,
+A zero value means Readline should never ask; negative
+values are treated as zero.
+The default limit is <code class="code">100</code>.
+</p>
+</dd>
+<dt><a id="index-convert_002dmeta"></a><span><code class="code">convert-meta</code><a class="copiable-link" href="#index-convert_002dmeta"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline converts characters it reads
+that have the eighth bit set to an <small class="sc">ASCII</small> key sequence by
+clearing the eighth bit and prefixing an <kbd class="key">ESC</kbd> character,
+converting them to a meta-prefixed key sequence.
+The default value is &lsquo;<samp class="samp">on</samp>&rsquo;, but Readline sets it to &lsquo;<samp class="samp">off</samp>&rsquo;
+if the locale contains
+characters whose encodings may include bytes with the eighth bit set.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
+may change if the locale changes.
+This variable also affects key bindings;
+see the description of <code class="code">force-meta-prefix</code> below.
+</p>
+</dd>
+<dt><a id="index-disable_002dcompletion"></a><span><code class="code">disable-completion</code><a class="copiable-link" href="#index-disable_002dcompletion"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">On</samp>&rsquo;, Readline inhibits word completion.
+Completion characters are inserted into the line as if they
+had been mapped to <code class="code">self-insert</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-echo_002dcontrol_002dcharacters"></a><span><code class="code">echo-control-characters</code><a class="copiable-link" href="#index-echo_002dcontrol_002dcharacters"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">on</samp>&rsquo;, on operating systems that indicate they support it,
 Readline echoes a character corresponding to a signal generated from the
-keyboard.  The default is &lsquo;<samp>on</samp>&rsquo;.
+keyboard.
+The default is &lsquo;<samp class="samp">on</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-editing_002dmode'><span><code>editing-mode</code><a href='#index-editing_002dmode' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The <code>editing-mode</code> variable controls which default set of
-key bindings is used.  By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs.  This variable can be
-set to either &lsquo;<samp>emacs</samp>&rsquo; or &lsquo;<samp>vi</samp>&rsquo;.
+<dt><a id="index-editing_002dmode"></a><span><code class="code">editing-mode</code><a class="copiable-link" href="#index-editing_002dmode"> &para;</a></span></dt>
+<dd><p>The <code class="code">editing-mode</code> variable controls the default set of
+key bindings.
+By default, Readline starts up in emacs editing mode, where
+the keystrokes are most similar to Emacs.
+This variable can be set to either &lsquo;<samp class="samp">emacs</samp>&rsquo; or &lsquo;<samp class="samp">vi</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-emacs_002dmode_002dstring'><span><code>emacs-mode-string</code><a href='#index-emacs_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt><a id="index-emacs_002dmode_002dstring"></a><span><code class="code">emacs-mode-string</code><a class="copiable-link" href="#index-emacs_002dmode_002dstring"> &para;</a></span></dt>
+<dd><p>If the <var class="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
+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 &lsquo;<samp>\1</samp>&rsquo; and &lsquo;<samp>\2</samp>&rsquo; escapes to begin and end sequences of
+The &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes 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 &lsquo;<samp>@</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">@</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-enable_002dactive_002dregion'><span><code>enable-active-region</code><a href='#index-enable_002dactive_002dregion' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The <em>point</em> is the current cursor position, and <em>mark</em> refers
-to a saved cursor position (see <a href="#Commands-For-Moving">Commands For Moving</a>).
-The text between the point and mark is referred to as the <em>region</em>.
-When this variable is set to &lsquo;<samp>On</samp>&rsquo;, Readline allows certain commands
-to designate the region as <em>active</em>.
+<dt><a id="index-enable_002dactive_002dregion-The"></a><span><code class="code">enable-active-region</code><a class="copiable-link" href="#index-enable_002dactive_002dregion-The"> &para;</a></span></dt>
+<dd><p><em class="dfn">point</em> is the current cursor position, and <em class="dfn">mark</em> refers to a
+saved cursor position (see <a class="pxref" href="#Commands-For-Moving">Commands For Moving</a>).
+The text between the point and mark is referred to as the <em class="dfn">region</em>.
+When this variable is set to &lsquo;<samp class="samp">On</samp>&rsquo;, Readline allows certain commands
+to designate the region as <em class="dfn">active</em>.
 When the region is active, Readline highlights the text in the region using
-the value of the <code>active-region-start-color</code>, which defaults to the
-string that enables
-the terminal&rsquo;s standout mode.
+the value of the <code class="code">active-region-start-color</code>, which defaults to the
+string that enables the terminal&rsquo;s standout mode. 
 The active region shows the text inserted by bracketed-paste and any
-matching text found by incremental and non-incremental history searches.
-The default is &lsquo;<samp>On</samp>&rsquo;.
+matching text found by incremental and non-incremental history searches. 
+The default is &lsquo;<samp class="samp">On</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-enable_002dbracketed_002dpaste'><span><code>enable-bracketed-paste</code><a href='#index-enable_002dbracketed_002dpaste' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When set to &lsquo;<samp>On</samp>&rsquo;, Readline configures the terminal to insert each
+<dt><a id="index-enable_002dbracketed_002dpaste"></a><span><code class="code">enable-bracketed-paste</code><a class="copiable-link" href="#index-enable_002dbracketed_002dpaste"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">On</samp>&rsquo;, Readline configures the terminal to insert each
 paste into the editing buffer as a single string of characters, instead
 of treating each character as if it had been read from the keyboard.
-This is called putting the terminal into <em>bracketed paste mode</em>;
-it prevents Readline from executing any editing commands bound to key
-sequences appearing in the pasted text.
-The default is &lsquo;<samp>On</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-enable_002dkeypad'><span><code>enable-keypad</code><a href='#index-enable_002dkeypad' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When set to &lsquo;<samp>on</samp>&rsquo;, Readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.  The default is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt><span><code>enable-meta-key</code></span></dt>
-<dd><p>When set to &lsquo;<samp>on</samp>&rsquo;, 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.
-The default is &lsquo;<samp>on</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-expand_002dtilde'><span><code>expand-tilde</code><a href='#index-expand_002dtilde' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, tilde expansion is performed when Readline
-attempts word completion.  The default is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-history_002dpreserve_002dpoint'><span><code>history-preserve-point</code><a href='#index-history_002dpreserve_002dpoint' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, the history code attempts to place the point (the
+This is called putting the terminal into <em class="dfn">bracketed paste mode</em>;
+it prevents Readline from executing any editing commands bound
+to key sequences appearing in the pasted text.
+The default is &lsquo;<samp class="samp">On</samp>&rsquo;. 
+</p>
+</dd>
+<dt><a id="index-enable_002dkeypad"></a><span><code class="code">enable-keypad</code><a class="copiable-link" href="#index-enable_002dkeypad"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline tries to enable the application
+keypad when it is called.
+Some systems need this to enable the arrow keys.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-enable_002dmeta_002dkey"></a><span><code class="code">enable-meta-key</code><a class="copiable-link" href="#index-enable_002dmeta_002dkey"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline tries 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;
+this variable checks for the terminal capability that indicates the
+terminal can enable and disable a mode that sets the eighth bit of a
+character (0200) if the Meta key is held down when the character is
+typed (a meta character).
+The default is &lsquo;<samp class="samp">on</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-expand_002dtilde"></a><span><code class="code">expand-tilde</code><a class="copiable-link" href="#index-expand_002dtilde"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline attempts tilde expansion when it
+attempts word completion.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-force_002dmeta_002dprefix"></a><span><code class="code">force-meta-prefix</code><a class="copiable-link" href="#index-force_002dmeta_002dprefix"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline modifies its behavior when binding key
+sequences containing <kbd class="kbd">\M-</kbd> or <code class="code">Meta-</code>
+(see <code class="code">Key Bindings</code> in <a class="ref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>)
+by converting a key sequence of the form
+<kbd class="kbd">\M-</kbd><var class="var">C</var> or <code class="code">Meta-</code><var class="var">C</var> to the two-character sequence
+<kbd class="kbd">ESC</kbd> <var class="var">C</var> (adding the meta prefix).
+If <code class="code">force-meta-prefix</code> is set to &lsquo;<samp class="samp">off</samp>&rsquo; (the default),
+Readline uses the value of the <code class="code">convert-meta</code> variable to determine
+whether to perform this conversion:
+if <code class="code">convert-meta</code> is &lsquo;<samp class="samp">on</samp>&rsquo;,
+Readline performs the conversion described above;
+if it is &lsquo;<samp class="samp">off</samp>&rsquo;, Readline converts <var class="var">C</var> to a meta character by
+setting the eighth bit (0200).
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-history_002dpreserve_002dpoint"></a><span><code class="code">history-preserve-point</code><a class="copiable-link" href="#index-history_002dpreserve_002dpoint"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, the history code attempts to place the point (the
 current cursor position) at the
-same location on each history line retrieved with <code>previous-history</code>
-or <code>next-history</code>.  The default is &lsquo;<samp>off</samp>&rsquo;.
+same location on each history line retrieved with <code class="code">previous-history</code>
+or <code class="code">next-history</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-history_002dsize'><span><code>history-size</code><a href='#index-history_002dsize' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-history_002dsize"></a><span><code class="code">history-size</code><a class="copiable-link" href="#index-history_002dsize"> &para;</a></span></dt>
 <dd><p>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 number of history entries is not limited.
-If an attempt is made to set <var>history-size</var> to a non-numeric value,
+If you try to set <var class="var">history-size</var> to a non-numeric value,
 the maximum number of history entries will be set to 500.
 </p>
 </dd>
-<dt id='index-horizontal_002dscroll_002dmode'><span><code>horizontal-scroll-mode</code><a href='#index-horizontal_002dscroll_002dmode' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable can be set to either &lsquo;<samp>on</samp>&rsquo; or &lsquo;<samp>off</samp>&rsquo;.  Setting it
-to &lsquo;<samp>on</samp>&rsquo; means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line.
-This variable is automatically set to &lsquo;<samp>on</samp>&rsquo; for terminals of height 1.
-By default, this variable is set to &lsquo;<samp>off</samp>&rsquo;.
+<dt><a id="index-horizontal_002dscroll_002dmode"></a><span><code class="code">horizontal-scroll-mode</code><a class="copiable-link" href="#index-horizontal_002dscroll_002dmode"> &para;</a></span></dt>
+<dd><p>Setting this variable to &lsquo;<samp class="samp">on</samp>&rsquo; means that the text of the lines
+being edited will scroll horizontally on a single screen line when
+the lines are longer than the width of the screen, instead of wrapping
+onto a new screen line.
+This variable is automatically set to &lsquo;<samp class="samp">on</samp>&rsquo; for terminals of height 1.
+By default, this variable is set to &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-input_002dmeta'><span><code>input-meta</code><a href='#index-input_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
-<dd><span id="index-meta_002dflag"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The
-default value is &lsquo;<samp>off</samp>&rsquo;, but Readline will set it to &lsquo;<samp>on</samp>&rsquo; if the 
-locale contains eight-bit characters.
-The name <code>meta-flag</code> is a synonym for this variable.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
-may change if the locale is changed.
+<dt><a class="index-entry-id" id="index-meta_002dflag"></a>
+<a id="index-input_002dmeta"></a><span><code class="code">input-meta</code><a class="copiable-link" href="#index-input_002dmeta"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline enables eight-bit input (that is, it
+does not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline sets it to &lsquo;<samp class="samp">on</samp>&rsquo;
+if the locale contains characters whose encodings may include bytes
+with the eighth bit set.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
+its value may change if the locale changes.
+The name <code class="code">meta-flag</code> is a synonym for <code class="code">input-meta</code>.
 </p>
 </dd>
-<dt id='index-isearch_002dterminators'><span><code>isearch-terminators</code><a href='#index-isearch_002dterminators' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-isearch_002dterminators"></a><span><code class="code">isearch-terminators</code><a class="copiable-link" href="#index-isearch_002dterminators"> &para;</a></span></dt>
 <dd><p>The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see <a href="#Searching">Searching for Commands in the History</a>).
-If this variable has not been given a value, the characters <tt class="key">ESC</tt> and
-<kbd>C-J</kbd> will terminate an incremental search.
+subsequently executing the character as a command (see <a class="pxref" href="#Searching">Searching for Commands in the History</a>).
+If this variable has not been given a value, the characters <kbd class="key">ESC</kbd> and
+<kbd class="kbd">C-j</kbd> terminate an incremental search.
 </p>
 </dd>
-<dt id='index-keymap'><span><code>keymap</code><a href='#index-keymap' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-keymap"></a><span><code class="code">keymap</code><a class="copiable-link" href="#index-keymap"> &para;</a></span></dt>
 <dd><p>Sets Readline&rsquo;s idea of the current keymap for key binding commands.
-Built-in <code>keymap</code> names are
-<code>emacs</code>,
-<code>emacs-standard</code>,
-<code>emacs-meta</code>,
-<code>emacs-ctlx</code>,
-<code>vi</code>,
-<code>vi-move</code>,
-<code>vi-command</code>, and
-<code>vi-insert</code>.
-<code>vi</code> is equivalent to <code>vi-command</code> (<code>vi-move</code> is also a
-synonym); <code>emacs</code> is equivalent to <code>emacs-standard</code>.
+Built-in <code class="code">keymap</code> names are
+<code class="code">emacs</code>,
+<code class="code">emacs-standard</code>,
+<code class="code">emacs-meta</code>,
+<code class="code">emacs-ctlx</code>,
+<code class="code">vi</code>,
+<code class="code">vi-move</code>,
+<code class="code">vi-command</code>, and
+<code class="code">vi-insert</code>.
+<code class="code">vi</code> is equivalent to <code class="code">vi-command</code> (<code class="code">vi-move</code> is also a
+synonym); <code class="code">emacs</code> is equivalent to <code class="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
+The default value is <code class="code">emacs</code>;
+the value of the <code class="code">editing-mode</code> variable also affects the
 default keymap.
 </p>
 </dd>
-<dt><span><code>keyseq-timeout</code></span></dt>
-<dd><p>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.
+<dt><code class="code">keyseq-timeout</code></dt>
+<dd><p>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 Readline doesn&rsquo;t receive any input within the timeout, it uses the
+shorter but complete key sequence.
 Readline uses this value to determine whether or not input is
-available on the current input source (<code>rl_instream</code> by default).
+available on the current input source (<code class="code">rl_instream</code> by default).
 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
+non-numeric value, Readline waits until another key is pressed to
 decide which key sequence to complete.
-The default value is <code>500</code>.
+The default value is <code class="code">500</code>.
 </p>
 </dd>
-<dt><span><code>mark-directories</code></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, completed directory names have a slash
-appended.  The default is &lsquo;<samp>on</samp>&rsquo;.
+<dt><code class="code">mark-directories</code></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, completed directory names have a slash appended.
+The default is &lsquo;<samp class="samp">on</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-mark_002dmodified_002dlines'><span><code>mark-modified-lines</code><a href='#index-mark_002dmodified_002dlines' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable, when set to &lsquo;<samp>on</samp>&rsquo;, causes Readline to display an
-asterisk (&lsquo;<samp>*</samp>&rsquo;) at the start of history lines which have been modified.
-This variable is &lsquo;<samp>off</samp>&rsquo; by default.
+<dt><a id="index-mark_002dmodified_002dlines"></a><span><code class="code">mark-modified-lines</code><a class="copiable-link" href="#index-mark_002dmodified_002dlines"> &para;</a></span></dt>
+<dd><p>When this variable is set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays an
+asterisk (&lsquo;<samp class="samp">*</samp>&rsquo;) at the start of history lines which have been modified.
+This variable is &lsquo;<samp class="samp">off</samp>&rsquo; by default.
 </p>
 </dd>
-<dt id='index-mark_002dsymlinked_002ddirectories'><span><code>mark-symlinked-directories</code><a href='#index-mark_002dsymlinked_002ddirectories' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<code>mark-directories</code>).
-The default is &lsquo;<samp>off</samp>&rsquo;.
+<dt><a id="index-mark_002dsymlinked_002ddirectories"></a><span><code class="code">mark-symlinked-directories</code><a class="copiable-link" href="#index-mark_002dsymlinked_002ddirectories"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, completed names which are symbolic links to directories
+have a slash appended, subject to the value of <code class="code">mark-directories</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-match_002dhidden_002dfiles'><span><code>match-hidden-files</code><a href='#index-match_002dhidden_002dfiles' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable, when set to &lsquo;<samp>on</samp>&rsquo;, causes Readline to match files whose
-names begin with a &lsquo;<samp>.</samp>&rsquo; (hidden files) when performing filename
+<dt><a id="index-match_002dhidden_002dfiles"></a><span><code class="code">match-hidden-files</code><a class="copiable-link" href="#index-match_002dhidden_002dfiles"> &para;</a></span></dt>
+<dd><p>This variable, when set to &lsquo;<samp class="samp">on</samp>&rsquo;, forces Readline to match files whose
+names begin with a &lsquo;<samp class="samp">.</samp>&rsquo; (hidden files) when performing filename
 completion.
-If set to &lsquo;<samp>off</samp>&rsquo;, the leading &lsquo;<samp>.</samp>&rsquo; must be
-supplied by the user in the filename to be completed.
-This variable is &lsquo;<samp>on</samp>&rsquo; by default.
+If set to &lsquo;<samp class="samp">off</samp>&rsquo;, the user must include the leading &lsquo;<samp class="samp">.</samp>&rsquo;
+in the filename to be completed.
+This variable is &lsquo;<samp class="samp">on</samp>&rsquo; by default.
 </p>
 </dd>
-<dt id='index-menu_002dcomplete_002ddisplay_002dprefix'><span><code>menu-complete-display-prefix</code><a href='#index-menu_002dcomplete_002ddisplay_002dprefix' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, menu completion displays the common prefix of the
+<dt><a id="index-menu_002dcomplete_002ddisplay_002dprefix"></a><span><code class="code">menu-complete-display-prefix</code><a class="copiable-link" href="#index-menu_002dcomplete_002ddisplay_002dprefix"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, menu completion displays the common prefix of the
 list of possible completions (which may be empty) before cycling through
-the list.  The default is &lsquo;<samp>off</samp>&rsquo;.
+the list.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-output_002dmeta'><span><code>output-meta</code><a href='#index-output_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will display characters with the
+<dt><a id="index-output_002dmeta"></a><span><code class="code">output-meta</code><a class="copiable-link" href="#index-output_002dmeta"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays characters with the
 eighth bit set directly rather than as a meta-prefixed escape
 sequence.
-The default is &lsquo;<samp>off</samp>&rsquo;, but Readline will set it to &lsquo;<samp>on</samp>&rsquo; if the
-locale contains eight-bit characters.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
-may change if the locale is changed.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline sets it to &lsquo;<samp class="samp">on</samp>&rsquo;
+if the locale contains characters whose encodings may include
+bytes with the eighth bit set.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
+its value may change if the locale changes.
 </p>
 </dd>
-<dt id='index-page_002dcompletions'><span><code>page-completions</code><a href='#index-page_002dcompletions' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline uses an internal <code>more</code>-like pager
+<dt><a id="index-page_002dcompletions"></a><span><code class="code">page-completions</code><a class="copiable-link" href="#index-page_002dcompletions"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline uses an internal pager resembling
+<i class="i">more</i>(1)
 to display a screenful of possible completions at a time.
-This variable is &lsquo;<samp>on</samp>&rsquo; by default.
+This variable is &lsquo;<samp class="samp">on</samp>&rsquo; by default.
 </p>
 </dd>
-<dt><span><code>print-completions-horizontally</code></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will display completions with matches
+<dt><code class="code">prefer-visible-bell</code></dt>
+<dd><p>See <code class="code">bell-style</code>.
+</p>
+</dd>
+<dt><code class="code">print-completions-horizontally</code></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays completions with matches
 sorted horizontally in alphabetical order, rather than down the screen.
-The default is &lsquo;<samp>off</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-revert_002dall_002dat_002dnewline'><span><code>revert-all-at-newline</code><a href='#index-revert_002dall_002dat_002dnewline' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will undo all changes to history lines
-before returning when <code>accept-line</code> is executed.  By default,
+<dt><a id="index-revert_002dall_002dat_002dnewline"></a><span><code class="code">revert-all-at-newline</code><a class="copiable-link" href="#index-revert_002dall_002dat_002dnewline"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline will undo all changes to history lines
+before returning when executing <code class="code">accept-line</code>.
+By default,
 history lines may be modified and retain individual undo lists across
-calls to <code>readline()</code>.  The default is &lsquo;<samp>off</samp>&rsquo;.
+calls to <code class="code">readline()</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-show_002dall_002dif_002dambiguous'><span><code>show-all-if-ambiguous</code><a href='#index-show_002dall_002dif_002dambiguous' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This alters the default behavior of the completion functions.  If
-set to &lsquo;<samp>on</samp>&rsquo;, 
+<dt><a id="index-search_002dignore_002dcase"></a><span><code class="code">search-ignore-case</code><a class="copiable-link" href="#index-search_002dignore_002dcase"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline performs incremental and non-incremental
+history list searches in a case-insensitive fashion.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-show_002dall_002dif_002dambiguous"></a><span><code class="code">show-all-if-ambiguous</code><a class="copiable-link" href="#index-show_002dall_002dif_002dambiguous"> &para;</a></span></dt>
+<dd><p>This alters the default behavior of the completion functions.
+If set to &lsquo;<samp class="samp">on</samp>&rsquo;, 
 words which have more than one possible completion cause the
 matches to be listed immediately instead of ringing the bell.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-show_002dall_002dif_002dunmodified'><span><code>show-all-if-unmodified</code><a href='#index-show_002dall_002dif_002dunmodified' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-show_002dall_002dif_002dunmodified"></a><span><code class="code">show-all-if-unmodified</code><a class="copiable-link" href="#index-show_002dall_002dif_002dunmodified"> &para;</a></span></dt>
 <dd><p>This alters the default behavior of the completion functions in
-a fashion similar to <var>show-all-if-ambiguous</var>.
-If set to &lsquo;<samp>on</samp>&rsquo;, 
+a fashion similar to <var class="var">show-all-if-ambiguous</var>.
+If set to &lsquo;<samp class="samp">on</samp>&rsquo;, 
 words which have more than one possible completion without any
 possible partial completion (the possible completions don&rsquo;t share
 a common prefix) cause the matches to be listed immediately instead
 of ringing the bell.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-show_002dmode_002din_002dprompt'><span><code>show-mode-in-prompt</code><a href='#index-show_002dmode_002din_002dprompt' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, add a string to the beginning of the prompt
+<dt><a id="index-show_002dmode_002din_002dprompt"></a><span><code class="code">show-mode-in-prompt</code><a class="copiable-link" href="#index-show_002dmode_002din_002dprompt"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, 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 (e.g., <var>emacs-mode-string</var>).
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The mode strings are user-settable (e.g., <var class="var">emacs-mode-string</var>).
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-skip_002dcompleted_002dtext'><span><code>skip-completed-text</code><a href='#index-skip_002dcompleted_002dtext' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, this alters the default completion behavior when
-inserting a single match into the line.  It&rsquo;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.
+<dt><a id="index-skip_002dcompleted_002dtext"></a><span><code class="code">skip-completed-text</code><a class="copiable-link" href="#index-skip_002dcompleted_002dtext"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, this alters the default completion behavior when
+inserting a single match into the line.
+It&rsquo;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.
 For instance, if this is enabled, attempting completion when the cursor
-is after the &lsquo;<samp>e</samp>&rsquo; in &lsquo;<samp>Makefile</samp>&rsquo; will result in &lsquo;<samp>Makefile</samp>&rsquo;
-rather than &lsquo;<samp>Makefilefile</samp>&rsquo;, assuming there is a single possible
-completion.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+is after the first &lsquo;<samp class="samp">e</samp>&rsquo; in &lsquo;<samp class="samp">Makefile</samp>&rsquo; will result in
+&lsquo;<samp class="samp">Makefile</samp>&rsquo; rather than &lsquo;<samp class="samp">Makefilefile</samp>&rsquo;,
+assuming there is a single possible completion.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-vi_002dcmd_002dmode_002dstring'><span><code>vi-cmd-mode-string</code><a href='#index-vi_002dcmd_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt><a id="index-vi_002dcmd_002dmode_002dstring"></a><span><code class="code">vi-cmd-mode-string</code><a class="copiable-link" href="#index-vi_002dcmd_002dmode_002dstring"> &para;</a></span></dt>
+<dd><p>If the <var class="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
-backslash escape sequences is available.
-Use the &lsquo;<samp>\1</samp>&rsquo; and &lsquo;<samp>\2</samp>&rsquo; escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes 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 &lsquo;<samp>(cmd)</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">(cmd)</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-vi_002dins_002dmode_002dstring'><span><code>vi-ins-mode-string</code><a href='#index-vi_002dins_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt><a id="index-vi_002dins_002dmode_002dstring"></a><span><code class="code">vi-ins-mode-string</code><a class="copiable-link" href="#index-vi_002dins_002dmode_002dstring"> &para;</a></span></dt>
+<dd><p>If the <var class="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
-backslash escape sequences is available.
-Use the &lsquo;<samp>\1</samp>&rsquo; and &lsquo;<samp>\2</samp>&rsquo; escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes 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 &lsquo;<samp>(ins)</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">(ins)</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-visible_002dstats'><span><code>visible-stats</code><a href='#index-visible_002dstats' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, a character denoting a file&rsquo;s type
+<dt><a id="index-visible_002dstats"></a><span><code class="code">visible-stats</code><a class="copiable-link" href="#index-visible_002dstats"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, a character denoting a file&rsquo;s type
 is appended to the filename when listing possible
-completions.  The default is &lsquo;<samp>off</samp>&rsquo;.
+completions.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
 </dl>
 
 </dd>
-<dt><span>Key Bindings</span></dt>
-<dd><p>The syntax for controlling key bindings in the init file is
-simple.  First you need to find the name of the command that you
-want to change.  The following sections contain tables of the command
+<dt>Key Bindings</dt>
+<dd><p>The syntax for controlling key bindings in the init file is simple.
+First you need to find the name of the command that you
+want to change.
+The following sections contain tables of the command
 name, the default keybinding, if any, and a short description of what
 the command does.
 </p>
@@ -1000,135 +1087,142 @@ The name of the key can be expressed in different ways, depending on
 what you find most comfortable.
 </p>
 <p>In addition to command names, Readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <var>macro</var>).
+to a string that is inserted when the key is pressed (a <var class="var">macro</var>).
+The difference between a macro and a command is that a macro is
+enclosed in single or double quotes.
 </p>
 
-<dl compact="compact">
-<dt><span><var>keyname</var>:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></span></dt>
-<dd><p><var>keyname</var> is the name of a key spelled out in English.  For example:
+<dl class="table">
+<dt><var class="var">keyname</var>:&nbsp;<var class="var">function-name</var>&nbsp;or&nbsp;<var class="var">macro</var><!-- /@w --></dt>
+<dd><p><var class="var">keyname</var> is the name of a key spelled out in English.
+For example:
 </p><div class="example">
-<pre class="example">Control-u: universal-argument
+<pre class="example-preformatted">Control-u: universal-argument
 Meta-Rubout: backward-kill-word
 Control-o: &quot;&gt; output&quot;
 </pre></div>
 
-<p>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
+<p>In the example above, <kbd class="kbd">C-u</kbd> is bound to the function
+<code class="code">universal-argument</code>,
+<kbd class="kbd">M-DEL</kbd> is bound to the function <code class="code">backward-kill-word</code>, and
+<kbd class="kbd">C-o</kbd> is bound to run the macro
 expressed on the right hand side (that is, to insert the text
-&lsquo;<samp>&gt; output</samp>&rsquo; into the line).
-</p>
-<p>A number of symbolic character names are recognized while
-processing this key binding syntax:
-<var>DEL</var>,
-<var>ESC</var>,
-<var>ESCAPE</var>,
-<var>LFD</var>,
-<var>NEWLINE</var>,
-<var>RET</var>,
-<var>RETURN</var>,
-<var>RUBOUT</var>,
-<var>SPACE</var>,
-<var>SPC</var>,
+&lsquo;<samp class="samp">&gt; output</samp>&rsquo; into the line).
+</p>
+<p>This key binding syntax recognizes a number of symbolic character names:
+<var class="var">DEL</var>,
+<var class="var">ESC</var>,
+<var class="var">ESCAPE</var>,
+<var class="var">LFD</var>,
+<var class="var">NEWLINE</var>,
+<var class="var">RET</var>,
+<var class="var">RETURN</var>,
+<var class="var">RUBOUT</var>
+(a destructive backspace),
+<var class="var">SPACE</var>,
+<var class="var">SPC</var>,
 and
-<var>TAB</var>.
+<var class="var">TAB</var>.
 </p>
 </dd>
-<dt><span>&quot;<var>keyseq</var>&quot;:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></span></dt>
-<dd><p><var>keyseq</var> differs from <var>keyname</var> above in that strings
+<dt>&quot;<var class="var">keyseq</var>&quot;:&nbsp;<var class="var">function-name</var>&nbsp;or&nbsp;<var class="var">macro</var><!-- /@w --></dt>
+<dd><p><var class="var">keyseq</var> differs from <var class="var">keyname</var> above in that strings
 denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes.  Some <small>GNU</small> Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
+the key sequence in double quotes.
+Some <small class="sc">GNU</small> Emacs style key escapes can be used,
+as in the following example, but none of the
+special character names are recognized.
 </p>
 <div class="example">
-<pre class="example">&quot;\C-u&quot;: universal-argument
+<pre class="example-preformatted">&quot;\C-u&quot;: universal-argument
 &quot;\C-x\C-r&quot;: re-read-init-file
 &quot;\e[11~&quot;: &quot;Function Key 1&quot;
 </pre></div>
 
-<p>In the above example, <kbd>C-u</kbd> is again bound to the function
-<code>universal-argument</code> (just as it was in the first example),
-&lsquo;<samp><kbd>C-x</kbd> <kbd>C-r</kbd></samp>&rsquo; is bound to the function <code>re-read-init-file</code>,
-and &lsquo;<samp><span class="key">ESC</span> <span class="key">[</span> <span class="key">1</span> <span class="key">1</span> <span class="key">~</span></samp>&rsquo; is bound to insert
-the text &lsquo;<samp>Function Key 1</samp>&rsquo;.
+<p>In the above example, <kbd class="kbd">C-u</kbd> is again bound to the function
+<code class="code">universal-argument</code> (just as it was in the first example),
+&lsquo;<samp class="samp"><kbd class="kbd">C-x</kbd> <kbd class="kbd">C-r</kbd></samp>&rsquo; is bound to the function <code class="code">re-read-init-file</code>,
+and &lsquo;<samp class="samp"><kbd class="key">ESC</kbd> <kbd class="key">[</kbd> <kbd class="key">1</kbd> <kbd class="key">1</kbd> <kbd class="key">~</kbd></samp>&rsquo; is bound to insert
+the text &lsquo;<samp class="samp">Function Key 1</samp>&rsquo;.
 </p>
 </dd>
 </dl>
 
-<p>The following <small>GNU</small> Emacs style escape sequences are available when
+<p>The following <small class="sc">GNU</small> Emacs style escape sequences are available when
 specifying key sequences:
 </p>
-<dl compact="compact">
-<dt><span><code><kbd>\C-</kbd></code></span></dt>
-<dd><p>control prefix
+<dl class="table">
+<dt><code class="code"><kbd class="kbd">\C-</kbd></code></dt>
+<dd><p>A control prefix.
 </p></dd>
-<dt><span><code><kbd>\M-</kbd></code></span></dt>
-<dd><p>meta prefix
+<dt><code class="code"><kbd class="kbd">\M-</kbd></code></dt>
+<dd><p>Adding the meta prefix or converting the following character to a meta
+character, as described above under <code class="code">force-meta-prefix</code>
+(see <code class="code">Variable Settings</code> in <a class="ref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>).
 </p></dd>
-<dt><span><code><kbd>\e</kbd></code></span></dt>
-<dd><p>an escape character
+<dt><code class="code"><kbd class="kbd">\e</kbd></code></dt>
+<dd><p>An escape character.
 </p></dd>
-<dt><span><code><kbd>\\</kbd></code></span></dt>
-<dd><p>backslash
+<dt><code class="code"><kbd class="kbd">\\</kbd></code></dt>
+<dd><p>Backslash.
 </p></dd>
-<dt><span><code><kbd>\&quot;</kbd></code></span></dt>
-<dd><p><tt class="key">&quot;</tt>, a double quotation mark
+<dt><code class="code"><kbd class="kbd">\&quot;</kbd></code></dt>
+<dd><p><kbd class="key">&quot;</kbd>, a double quotation mark.
 </p></dd>
-<dt><span><code><kbd>\'</kbd></code></span></dt>
-<dd><p><tt class="key">'</tt>, a single quote or apostrophe
+<dt><code class="code"><kbd class="kbd">\'</kbd></code></dt>
+<dd><p><kbd class="key">'</kbd>, a single quote or apostrophe.
 </p></dd>
 </dl>
 
-<p>In addition to the <small>GNU</small> Emacs style escape sequences, a second
+<p>In addition to the <small class="sc">GNU</small> Emacs style escape sequences, a second
 set of backslash escapes is available:
 </p>
-<dl compact="compact">
-<dt><span><code>\a</code></span></dt>
+<dl class="table">
+<dt><code class="code">\a</code></dt>
 <dd><p>alert (bell)
 </p></dd>
-<dt><span><code>\b</code></span></dt>
+<dt><code class="code">\b</code></dt>
 <dd><p>backspace
 </p></dd>
-<dt><span><code>\d</code></span></dt>
+<dt><code class="code">\d</code></dt>
 <dd><p>delete
 </p></dd>
-<dt><span><code>\f</code></span></dt>
+<dt><code class="code">\f</code></dt>
 <dd><p>form feed
 </p></dd>
-<dt><span><code>\n</code></span></dt>
+<dt><code class="code">\n</code></dt>
 <dd><p>newline
 </p></dd>
-<dt><span><code>\r</code></span></dt>
+<dt><code class="code">\r</code></dt>
 <dd><p>carriage return
 </p></dd>
-<dt><span><code>\t</code></span></dt>
+<dt><code class="code">\t</code></dt>
 <dd><p>horizontal tab
 </p></dd>
-<dt><span><code>\v</code></span></dt>
+<dt><code class="code">\v</code></dt>
 <dd><p>vertical tab
 </p></dd>
-<dt><span><code>\<var>nnn</var></code></span></dt>
-<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
-(one to three digits)
+<dt><code class="code">\<var class="var">nnn</var></code></dt>
+<dd><p>The eight-bit character whose value is the octal value <var class="var">nnn</var>
+(one to three digits).
 </p></dd>
-<dt><span><code>\x<var>HH</var></code></span></dt>
-<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
-(one or two hex digits)
+<dt><code class="code">\x<var class="var">HH</var></code></dt>
+<dd><p>The eight-bit character whose value is the hexadecimal value <var class="var">HH</var>
+(one or two hex digits).
 </p></dd>
 </dl>
 
 <p>When entering the text of a macro, single or double quotes must
 be used to indicate a macro definition.
 Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
+The backslash escapes described above are expanded
+in the macro body.
 Backslash will quote any other character in the macro text,
-including &lsquo;<samp>&quot;</samp>&rsquo; and &lsquo;<samp>'</samp>&rsquo;.
-For example, the following binding will make &lsquo;<samp><kbd>C-x</kbd> \</samp>&rsquo;
-insert a single &lsquo;<samp>\</samp>&rsquo; into the line:
+including &lsquo;<samp class="samp">&quot;</samp>&rsquo; and &lsquo;<samp class="samp">'</samp>&rsquo;.
+For example, the following binding will make &lsquo;<samp class="samp"><kbd class="kbd">C-x</kbd> \</samp>&rsquo;
+insert a single &lsquo;<samp class="samp">\</samp>&rsquo; into the line:
 </p><div class="example">
-<pre class="example">&quot;\C-x\\&quot;: &quot;\\&quot;
+<pre class="example-preformatted">&quot;\C-x\\&quot;: &quot;\\&quot;
 </pre></div>
 
 </dd>
@@ -1136,97 +1230,105 @@ insert a single &lsquo;<samp>\</samp>&rsquo; into the line:
 
 <hr>
 </div>
-<div class="subsection" id="Conditional-Init-Constructs">
-<div class="header">
+<div class="subsection-level-extent" id="Conditional-Init-Constructs">
+<div class="nav-panel">
 <p>
 Next: <a href="#Sample-Init-File" accesskey="n" rel="next">Sample Init File</a>, Previous: <a href="#Readline-Init-File-Syntax" accesskey="p" rel="prev">Readline Init File Syntax</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Conditional-Init-Constructs-1"></span><h4 class="subsection">1.3.2 Conditional Init Constructs</h4>
+<h4 class="subsection" id="Conditional-Init-Constructs-1"><span>1.3.2 Conditional Init Constructs<a class="copiable-link" href="#Conditional-Init-Constructs-1"> &para;</a></span></h4>
 
 <p>Readline implements a facility similar in spirit to the conditional
 compilation features of the C preprocessor which allows key
 bindings and variable settings to be performed as the result
-of tests.  There are four parser directives used.
+of tests.
+There are four parser directives available.
 </p>
-<dl compact="compact">
-<dt><span><code>$if</code></span></dt>
-<dd><p>The <code>$if</code> construct allows bindings to be made based on the
+<dl class="table">
+<dt><code class="code">$if</code></dt>
+<dd><p>The <code class="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, after any comparison operator,
+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="compact">
-<dt><span><code>mode</code></span></dt>
-<dd><p>The <code>mode=</code> form of the <code>$if</code> directive is used to test
-whether Readline is in <code>emacs</code> or <code>vi</code> mode.
+<dl class="table">
+<dt><code class="code">mode</code></dt>
+<dd><p>The <code class="code">mode=</code> form of the <code class="code">$if</code> directive is used to test
+whether Readline is in <code class="code">emacs</code> or <code class="code">vi</code> mode.
 This may be used in conjunction
-with the &lsquo;<samp>set keymap</samp>&rsquo; command, for instance, to set bindings in
-the <code>emacs-standard</code> and <code>emacs-ctlx</code> keymaps only if
-Readline is starting out in <code>emacs</code> mode.
+with the &lsquo;<samp class="samp">set keymap</samp>&rsquo; command, for instance, to set bindings in
+the <code class="code">emacs-standard</code> and <code class="code">emacs-ctlx</code> keymaps only if
+Readline is starting out in <code class="code">emacs</code> mode.
 </p>
 </dd>
-<dt><span><code>term</code></span></dt>
-<dd><p>The <code>term=</code> form may be used to include terminal-specific
+<dt><code class="code">term</code></dt>
+<dd><p>The <code class="code">term=</code> form may be used to include terminal-specific
 key bindings, perhaps to bind the key sequences output by the
-terminal&rsquo;s function keys.  The word on the right side of the
-&lsquo;<samp>=</samp>&rsquo; is tested against both the full name of the terminal and
-the portion of the terminal name before the first &lsquo;<samp>-</samp>&rsquo;.  This
-allows <code>sun</code> to match both <code>sun</code> and <code>sun-cmd</code>,
-for instance.
+terminal&rsquo;s function keys.
+The word on the right side of the
+&lsquo;<samp class="samp">=</samp>&rsquo;
+is tested against both the full name of the terminal and the portion
+of the terminal name before the first &lsquo;<samp class="samp">-</samp>&rsquo;.
+This allows <code class="code">xterm</code> to match both <code class="code">xterm</code> and
+<code class="code">xterm-256color</code>, for instance.
 </p>
 </dd>
-<dt><span><code>version</code></span></dt>
-<dd><p>The <code>version</code> test may be used to perform comparisons against
+<dt><code class="code">version</code></dt>
+<dd><p>The <code class="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 <code class="code">version</code> expands to the current Readline version.
 The set of comparison operators includes
-&lsquo;<samp>=</samp>&rsquo; (and &lsquo;<samp>==</samp>&rsquo;), &lsquo;<samp>!=</samp>&rsquo;, &lsquo;<samp>&lt;=</samp>&rsquo;, &lsquo;<samp>&gt;=</samp>&rsquo;, &lsquo;<samp>&lt;</samp>&rsquo;,
-and &lsquo;<samp>&gt;</samp>&rsquo;.
+&lsquo;<samp class="samp">=</samp>&rsquo; (and &lsquo;<samp class="samp">==</samp>&rsquo;), &lsquo;<samp class="samp">!=</samp>&rsquo;, &lsquo;<samp class="samp">&lt;=</samp>&rsquo;, &lsquo;<samp class="samp">&gt;=</samp>&rsquo;, &lsquo;<samp class="samp">&lt;</samp>&rsquo;,
+and &lsquo;<samp class="samp">&gt;</samp>&rsquo;.
 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., &lsquo;<samp>7.1</samp>&rsquo;). If the minor version is omitted, it
-is assumed to be &lsquo;<samp>0</samp>&rsquo;.
-The operator may be separated from the string <code>version</code> and
+minor version (e.g., &lsquo;<samp class="samp">7.1</samp>&rsquo;).
+If the minor version is omitted, it
+defaults to &lsquo;<samp class="samp">0</samp>&rsquo;.
+The operator may be separated from the string <code class="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:
 </p><div class="example">
-<pre class="example">$if version &gt;= 7.0
+<pre class="example-preformatted">$if version &gt;= 7.0
 set show-mode-in-prompt on
 $endif
 </pre></div>
 
 </dd>
-<dt><span><code>application</code></span></dt>
-<dd><p>The <var>application</var> construct is used to include
-application-specific settings.  Each program using the Readline
-library sets the <var>application name</var>, and you can test for
+<dt><code class="code">application</code></dt>
+<dd><p>The <var class="var">application</var> construct is used to include
+application-specific settings.
+Each program using the Readline
+library sets the <var class="var">application name</var>, and you can test for
 a particular value. 
 This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
+a specific program.
+For instance, the following command adds a
 key sequence that quotes the current or previous word in Bash:
 </p><div class="example">
-<pre class="example">$if Bash
+<pre class="example-preformatted">$if Bash
 # Quote the current or previous word
 &quot;\C-xq&quot;: &quot;\eb\&quot;\ef\&quot;&quot;
 $endif
 </pre></div>
 
 </dd>
-<dt><span><code>variable</code></span></dt>
-<dd><p>The <var>variable</var> construct provides simple equality tests for Readline
+<dt><code class="code">variable</code></dt>
+<dd><p>The <var class="var">variable</var> construct provides simple equality tests for Readline
 variables and values.
-The permitted comparison operators are &lsquo;<samp>=</samp>&rsquo;, &lsquo;<samp>==</samp>&rsquo;, and &lsquo;<samp>!=</samp>&rsquo;.
+The permitted comparison operators are &lsquo;<samp class="samp">=</samp>&rsquo;, &lsquo;<samp class="samp">==</samp>&rsquo;, and &lsquo;<samp class="samp">!=</samp>&rsquo;.
 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
+String and boolean variables may be tested.
+Boolean variables must be
+tested against the values <var class="var">on</var> and <var class="var">off</var>.
+The following example is equivalent to the <code class="code">mode=emacs</code> test described
 above:
 </p><div class="example">
-<pre class="example">$if editing-mode == emacs
+<pre class="example-preformatted">$if editing-mode == emacs
 set show-mode-in-prompt on
 $endif
 </pre></div>
@@ -1234,40 +1336,40 @@ $endif
 </dl>
 
 </dd>
-<dt><span><code>$endif</code></span></dt>
-<dd><p>This command, as seen in the previous example, terminates an
-<code>$if</code> command.
+<dt><code class="code">$else</code></dt>
+<dd><p>Commands in this branch of the <code class="code">$if</code> directive are executed if
+the test fails.
 </p>
 </dd>
-<dt><span><code>$else</code></span></dt>
-<dd><p>Commands in this branch of the <code>$if</code> directive are executed if
-the test fails.
+<dt><code class="code">$endif</code></dt>
+<dd><p>This command, as seen in the previous example, terminates an
+<code class="code">$if</code> command.
 </p>
 </dd>
-<dt><span><code>$include</code></span></dt>
+<dt><code class="code">$include</code></dt>
 <dd><p>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <samp>/etc/inputrc</samp>:
+and key bindings from that file.
+For example, the following directive reads from <samp class="file">/etc/inputrc</samp>:
 </p><div class="example">
-<pre class="example">$include /etc/inputrc
+<pre class="example-preformatted">$include /etc/inputrc
 </pre></div>
 </dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Sample-Init-File">
-<div class="header">
+<div class="subsection-level-extent" id="Sample-Init-File">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Conditional-Init-Constructs" accesskey="p" rel="prev">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Sample-Init-File-1"></span><h4 class="subsection">1.3.3 Sample Init File</h4>
+<h4 class="subsection" id="Sample-Init-File-1"><span>1.3.3 Sample Init File<a class="copiable-link" href="#Sample-Init-File-1"> &para;</a></span></h4>
 
-<p>Here is an example of an <var>inputrc</var> file.  This illustrates key
+<p>Here is an example of an <var class="var">inputrc</var> file.  This illustrates key
 binding, variable assignment, and conditional syntax.
 </p>
 <div class="example">
-<pre class="example"># This file controls the behaviour of line input editing for
+<pre class="example-preformatted"># This file controls the behavior of line input editing for
 # programs that use the GNU Readline library.  Existing
 # programs include FTP, Bash, and GDB.
 #
@@ -1371,24 +1473,33 @@ $endif
 <hr>
 </div>
 </div>
-<div class="section" id="Bindable-Readline-Commands">
-<div class="header">
+<div class="section-level-extent" id="Bindable-Readline-Commands">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-vi-Mode" accesskey="n" rel="next">Readline vi Mode</a>, Previous: <a href="#Readline-Init-File" accesskey="p" rel="prev">Readline Init File</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Bindable-Readline-Commands-1"></span><h3 class="section">1.4 Bindable Readline Commands</h3>
+<h3 class="section" id="Bindable-Readline-Commands-1"><span>1.4 Bindable Readline Commands<a class="copiable-link" href="#Bindable-Readline-Commands-1"> &para;</a></span></h3>
 
 
 <p>This section describes Readline commands that may be bound to key
 sequences.
 Command names without an accompanying key sequence are unbound by default.
 </p>
-<p>In the following descriptions, <em>point</em> refers to the current cursor
-position, and <em>mark</em> refers to a cursor position saved by the
-<code>set-mark</code> command.
-The text between the point and mark is referred to as the <em>region</em>.
-</p>
-<ul class="section-toc">
+<p>In the following descriptions, <em class="dfn">point</em> refers to the current cursor
+position, and <em class="dfn">mark</em> refers to a cursor position saved by the
+<code class="code">set-mark</code> command.
+The text between the point and mark is referred to as the <em class="dfn">region</em>.
+Readline
+has the concept of an <em class="emph">active region</em>:
+when the region is active,
+Readline redisplay highlights the region using the
+value of the
+<code class="code">active-region-start-color</code>
+variable.
+The <code class="code">enable-active-region</code> variable turns this on and off.
+Several commands set the region to active; those are noted below.
+</p>
+<ul class="mini-toc">
 <li><a href="#Commands-For-Moving" accesskey="1">Commands For Moving</a></li>
 <li><a href="#Commands-For-History" accesskey="2">Commands For Manipulating The History</a></li>
 <li><a href="#Commands-For-Text" accesskey="3">Commands For Changing Text</a></li>
@@ -1399,68 +1510,76 @@ The text between the point and mark is referred to as the <em>region</em>.
 <li><a href="#Miscellaneous-Commands" accesskey="8">Some Miscellaneous Commands</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Commands-For-Moving">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Moving">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-History" accesskey="n" rel="next">Commands For Manipulating The History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Commands-For-Moving-1"></span><h4 class="subsection">1.4.1 Commands For Moving</h4>
-<dl compact="compact">
-<dt id='index-beginning_002dof_002dline-_0028C_002da_0029'><span><code>beginning-of-line (C-a)</code><a href='#index-beginning_002dof_002dline-_0028C_002da_0029' class='copiable-anchor'> &para;</a></span></dt>
+<h4 class="subsection" id="Commands-For-Moving-1"><span>1.4.1 Commands For Moving<a class="copiable-link" href="#Commands-For-Moving-1"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-beginning_002dof_002dline-_0028C_002da_0029"></a><span><code class="code">beginning-of-line (C-a)</code><a class="copiable-link" href="#index-beginning_002dof_002dline-_0028C_002da_0029"> &para;</a></span></dt>
 <dd><p>Move to the start of the current line.
+This may also be bound to the Home key on some keyboards.
 </p>
 </dd>
-<dt id='index-end_002dof_002dline-_0028C_002de_0029'><span><code>end-of-line (C-e)</code><a href='#index-end_002dof_002dline-_0028C_002de_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-end_002dof_002dline-_0028C_002de_0029"></a><span><code class="code">end-of-line (C-e)</code><a class="copiable-link" href="#index-end_002dof_002dline-_0028C_002de_0029"> &para;</a></span></dt>
 <dd><p>Move to the end of the line.
+This may also be bound to the End key on some keyboards.
 </p>
 </dd>
-<dt id='index-forward_002dchar-_0028C_002df_0029'><span><code>forward-char (C-f)</code><a href='#index-forward_002dchar-_0028C_002df_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dchar-_0028C_002df_0029"></a><span><code class="code">forward-char (C-f)</code><a class="copiable-link" href="#index-forward_002dchar-_0028C_002df_0029"> &para;</a></span></dt>
 <dd><p>Move forward a character.
+This may also be bound to the right arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-backward_002dchar-_0028C_002db_0029'><span><code>backward-char (C-b)</code><a href='#index-backward_002dchar-_0028C_002db_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dchar-_0028C_002db_0029"></a><span><code class="code">backward-char (C-b)</code><a class="copiable-link" href="#index-backward_002dchar-_0028C_002db_0029"> &para;</a></span></dt>
 <dd><p>Move back a character.
+This may also be bound to the left arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-forward_002dword-_0028M_002df_0029'><span><code>forward-word (M-f)</code><a href='#index-forward_002dword-_0028M_002df_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dword-_0028M_002df_0029"></a><span><code class="code">forward-word (M-f)</code><a class="copiable-link" href="#index-forward_002dword-_0028M_002df_0029"> &para;</a></span></dt>
 <dd><p>Move forward to the end of the next word.
 Words are composed of letters and digits.
 </p>
 </dd>
-<dt id='index-backward_002dword-_0028M_002db_0029'><span><code>backward-word (M-b)</code><a href='#index-backward_002dword-_0028M_002db_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dword-_0028M_002db_0029"></a><span><code class="code">backward-word (M-b)</code><a class="copiable-link" href="#index-backward_002dword-_0028M_002db_0029"> &para;</a></span></dt>
 <dd><p>Move back to the start of the current or previous word.
 Words are composed of letters and digits.
 </p>
 
 </dd>
-<dt id='index-previous_002dscreen_002dline-_0028_0029'><span><code>previous-screen-line ()</code><a href='#index-previous_002dscreen_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-previous_002dscreen_002dline-_0028_0029"></a><span><code class="code">previous-screen-line ()</code><a class="copiable-link" href="#index-previous_002dscreen_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>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
+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>
 </dd>
-<dt id='index-next_002dscreen_002dline-_0028_0029'><span><code>next-screen-line ()</code><a href='#index-next_002dscreen_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-next_002dscreen_002dline-_0028_0029"></a><span><code class="code">next-screen-line ()</code><a class="copiable-link" href="#index-next_002dscreen_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>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
+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>
 </dd>
-<dt id='index-clear_002ddisplay-_0028M_002dC_002dl_0029'><span><code>clear-display (M-C-l)</code><a href='#index-clear_002ddisplay-_0028M_002dC_002dl_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-clear_002ddisplay-_0028M_002dC_002dl_0029"></a><span><code class="code">clear-display (M-C-l)</code><a class="copiable-link" href="#index-clear_002ddisplay-_0028M_002dC_002dl_0029"> &para;</a></span></dt>
 <dd><p>Clear the screen and, if possible, the terminal&rsquo;s scrollback buffer,
 then redraw the current line,
 leaving the current line at the top of the screen.
 </p>
 </dd>
-<dt id='index-clear_002dscreen-_0028C_002dl_0029'><span><code>clear-screen (C-l)</code><a href='#index-clear_002dscreen-_0028C_002dl_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-clear_002dscreen-_0028C_002dl_0029"></a><span><code class="code">clear-screen (C-l)</code><a class="copiable-link" href="#index-clear_002dscreen-_0028C_002dl_0029"> &para;</a></span></dt>
 <dd><p>Clear the screen,
 then redraw the current line,
 leaving the current line at the top of the screen.
+If given a numeric argument, this refreshes the current line
+without clearing the screen.
 </p>
 </dd>
-<dt id='index-redraw_002dcurrent_002dline-_0028_0029'><span><code>redraw-current-line ()</code><a href='#index-redraw_002dcurrent_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-redraw_002dcurrent_002dline-_0028_0029"></a><span><code class="code">redraw-current-line ()</code><a class="copiable-link" href="#index-redraw_002dcurrent_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>Refresh the current line.  By default, this is unbound.
 </p>
 </dd>
@@ -1468,133 +1587,143 @@ leaving the current line at the top of the screen.
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-History">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-History">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-Text" accesskey="n" rel="next">Commands For Changing Text</a>, Previous: <a href="#Commands-For-Moving" accesskey="p" rel="prev">Commands For Moving</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Commands-For-Manipulating-The-History"></span><h4 class="subsection">1.4.2 Commands For Manipulating The History</h4>
+<h4 class="subsection" id="Commands-For-Manipulating-The-History"><span>1.4.2 Commands For Manipulating The History<a class="copiable-link" href="#Commands-For-Manipulating-The-History"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-accept_002dline-_0028Newline-or-Return_0029'><span><code>accept-line (Newline or Return)</code><a href='#index-accept_002dline-_0028Newline-or-Return_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="ftable">
+<dt><a id="index-accept_002dline-_0028Newline-or-Return_0029"></a><span><code class="code">accept-line (Newline or Return)</code><a class="copiable-link" href="#index-accept_002dline-_0028Newline-or-Return_0029"> &para;</a></span></dt>
 <dd><p>Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<code>add_history()</code>.
-If this line is a modified history line, the history line is restored
+If this line is non-empty, you can add it to the history list using
+<code class="code">add_history()</code>.
+If this line is a modified history line, then restore the history line
 to its original state.
 </p>
 </dd>
-<dt id='index-previous_002dhistory-_0028C_002dp_0029'><span><code>previous-history (C-p)</code><a href='#index-previous_002dhistory-_0028C_002dp_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-previous_002dhistory-_0028C_002dp_0029"></a><span><code class="code">previous-history (C-p)</code><a class="copiable-link" href="#index-previous_002dhistory-_0028C_002dp_0029"> &para;</a></span></dt>
 <dd><p>Move &lsquo;back&rsquo; through the history list, fetching the previous command.
+This may also be bound to the up arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-next_002dhistory-_0028C_002dn_0029'><span><code>next-history (C-n)</code><a href='#index-next_002dhistory-_0028C_002dn_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-next_002dhistory-_0028C_002dn_0029"></a><span><code class="code">next-history (C-n)</code><a class="copiable-link" href="#index-next_002dhistory-_0028C_002dn_0029"> &para;</a></span></dt>
 <dd><p>Move &lsquo;forward&rsquo; through the history list, fetching the next command.
+This may also be bound to the down arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-beginning_002dof_002dhistory-_0028M_002d_003c_0029'><span><code>beginning-of-history (M-&lt;)</code><a href='#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"></a><span><code class="code">beginning-of-history (M-&lt;)</code><a class="copiable-link" href="#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"> &para;</a></span></dt>
 <dd><p>Move to the first line in the history.
 </p>
 </dd>
-<dt id='index-end_002dof_002dhistory-_0028M_002d_003e_0029'><span><code>end-of-history (M-&gt;)</code><a href='#index-end_002dof_002dhistory-_0028M_002d_003e_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-end_002dof_002dhistory-_0028M_002d_003e_0029"></a><span><code class="code">end-of-history (M-&gt;)</code><a class="copiable-link" href="#index-end_002dof_002dhistory-_0028M_002d_003e_0029"> &para;</a></span></dt>
 <dd><p>Move to the end of the input history, i.e., the line currently
 being entered.
 </p>
 </dd>
-<dt id='index-reverse_002dsearch_002dhistory-_0028C_002dr_0029'><span><code>reverse-search-history (C-r)</code><a href='#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"></a><span><code class="code">reverse-search-history (C-r)</code><a class="copiable-link" href="#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"> &para;</a></span></dt>
 <dd><p>Search backward starting at the current line and moving &lsquo;up&rsquo; through
-the history as necessary.  This is an incremental search.
-This command sets the region to the matched text and activates the mark.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 </p>
 </dd>
-<dt id='index-forward_002dsearch_002dhistory-_0028C_002ds_0029'><span><code>forward-search-history (C-s)</code><a href='#index-forward_002dsearch_002dhistory-_0028C_002ds_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dsearch_002dhistory-_0028C_002ds_0029"></a><span><code class="code">forward-search-history (C-s)</code><a class="copiable-link" href="#index-forward_002dsearch_002dhistory-_0028C_002ds_0029"> &para;</a></span></dt>
 <dd><p>Search forward starting at the current line and moving &lsquo;down&rsquo; through
-the history as necessary.  This is an incremental search.
-This command sets the region to the matched text and activates the mark.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 </p>
 </dd>
-<dt id='index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029'><span><code>non-incremental-reverse-search-history (M-p)</code><a href='#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"></a><span><code class="code">non-incremental-reverse-search-history (M-p)</code><a class="copiable-link" href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"> &para;</a></span></dt>
 <dd><p>Search backward starting at the current line and moving &lsquo;up&rsquo;
 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>
 </dd>
-<dt id='index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029'><span><code>non-incremental-forward-search-history (M-n)</code><a href='#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"></a><span><code class="code">non-incremental-forward-search-history (M-n)</code><a class="copiable-link" href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"> &para;</a></span></dt>
 <dd><p>Search forward starting at the current line and moving &lsquo;down&rsquo;
 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>
 </dd>
-<dt id='index-history_002dsearch_002dforward-_0028_0029'><span><code>history-search-forward ()</code><a href='#index-history_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search forward through the history for the string of characters
+<dt><a id="index-history_002dsearch_002dbackward-_0028_0029"></a><span><code class="code">history-search-backward ()</code><a class="copiable-link" href="#index-history_002dsearch_002dbackward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
 This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Down
+key on some keyboards.
 </p>
 </dd>
-<dt id='index-history_002dsearch_002dbackward-_0028_0029'><span><code>history-search-backward ()</code><a href='#index-history_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search backward through the history for the string of characters
+<dt><a id="index-history_002dsearch_002dforward-_0028_0029"></a><span><code class="code">history-search-forward ()</code><a class="copiable-link" href="#index-history_002dsearch_002dforward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
 This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Up
+key on some keyboards.
 </p>
 </dd>
-<dt id='index-history_002dsubstring_002dsearch_002dforward-_0028_0029'><span><code>history-substring-search-forward ()</code><a href='#index-history_002dsubstring_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search forward through the history for the string of characters
+<dt><a id="index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"></a><span><code class="code">history-substring-search-backward ()</code><a class="copiable-link" href="#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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 non-incremental search.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-history_002dsubstring_002dsearch_002dbackward-_0028_0029'><span><code>history-substring-search-backward ()</code><a href='#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search backward through the history for the string of characters
+<dt><a id="index-history_002dsubstring_002dsearch_002dforward-_0028_0029"></a><span><code class="code">history-substring-search-forward ()</code><a class="copiable-link" href="#index-history_002dsubstring_002dsearch_002dforward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
 </p>
 </dd>
-<dt id='index-yank_002dnth_002darg-_0028M_002dC_002dy_0029'><span><code>yank-nth-arg (M-C-y)</code><a href='#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"></a><span><code class="code">yank-nth-arg (M-C-y)</code><a class="copiable-link" href="#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"> &para;</a></span></dt>
 <dd><p>Insert the first argument to the previous command (usually
 the second word on the previous line) at point.
-With an argument <var>n</var>,
-insert the <var>n</var>th word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the <var>n</var>th word from the end of the previous command.
-Once the argument <var>n</var> is computed, the argument is extracted
-as if the &lsquo;<samp>!<var>n</var></samp>&rsquo; history expansion had been specified.
-</p>
-</dd>
-<dt id='index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029'><span><code>yank-last-arg (M-. or M-_)</code><a href='#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029' class='copiable-anchor'> &para;</a></span></dt>
+With an argument <var class="var">n</var>,
+insert the <var class="var">n</var>th word from the previous command (the words
+in the previous command begin with word 0).
+A negative argument inserts the <var class="var">n</var>th word from the end of
+the previous command.
+Once the argument <var class="var">n</var> is computed,
+this uses the history expansion facilities to extract the
+<var class="var">n</var>th word, as if the
+&lsquo;<samp class="samp">!<var class="var">n</var></samp>&rsquo; history expansion had been specified.
+</p>
+</dd>
+<dt><a id="index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"></a><span><code class="code">yank-last-arg (M-. or M-_)</code><a class="copiable-link" href="#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"> &para;</a></span></dt>
 <dd><p>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>.
-Successive calls to <code>yank-last-arg</code> move back through the history
+With a numeric argument, behave exactly like <code class="code">yank-nth-arg</code>.
+Successive calls to <code class="code">yank-last-arg</code> move back through the history
 list, inserting the last word (or the word specified by the argument to
 the first call) of each line in turn.
 Any numeric argument supplied to these successive calls determines
-the direction to move through the history.  A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the &lsquo;<samp>!$</samp>&rsquo; history expansion had been specified.
+the direction to move through the history.
+A negative argument switches the direction through the history
+(back or forward).
+This uses the history expansion facilities to extract the
+last  word, as if the
+&lsquo;<samp class="samp">!$</samp>&rsquo; history expansion had been specified.
 </p>
 </dd>
-<dt id='index-operate_002dand_002dget_002dnext-_0028C_002do_0029'><span><code>operate-and-get-next (C-o)</code><a href='#index-operate_002dand_002dget_002dnext-_0028C_002do_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-operate_002dand_002dget_002dnext-_0028C_002do_0029"></a><span><code class="code">operate-and-get-next (C-o)</code><a class="copiable-link" href="#index-operate_002dand_002dget_002dnext-_0028C_002do_0029"> &para;</a></span></dt>
 <dd><p>Accept the current line for return to the calling application as if a
 newline had been entered,
 and fetch the next line 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.
+A numeric argument, if supplied, specifies the history entry
+to use instead of the current line.
 </p>
 </dd>
-<dt id='index-fetch_002dhistory-_0028_0029'><span><code>fetch-history ()</code><a href='#index-fetch_002dhistory-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-fetch_002dhistory-_0028_0029"></a><span><code class="code">fetch-history ()</code><a class="copiable-link" href="#index-fetch_002dhistory-_0028_0029"> &para;</a></span></dt>
 <dd><p>With a numeric argument, fetch that entry from the history list
 and make it the current line.
 Without an argument, move back to the first entry in the history list.
@@ -1604,231 +1733,239 @@ Without an argument, move back to the first entry in the history list.
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-Text">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Text">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-Killing" accesskey="n" rel="next">Killing And Yanking</a>, Previous: <a href="#Commands-For-History" accesskey="p" rel="prev">Commands For Manipulating The History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Commands-For-Changing-Text"></span><h4 class="subsection">1.4.3 Commands For Changing Text</h4>
+<h4 class="subsection" id="Commands-For-Changing-Text"><span>1.4.3 Commands For Changing Text<a class="copiable-link" href="#Commands-For-Changing-Text"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-end_002dof_002dfile-_0028usually-C_002dd_0029'><span><code><i>end-of-file</i> (usually C-d)</code><a href='#index-end_002dof_002dfile-_0028usually-C_002dd_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="ftable">
+<dt><a id="index-end_002dof_002dfile-_0028usually-C_002dd_0029"></a><span><code class="code"><i class="i">end-of-file</i> (usually C-d)</code><a class="copiable-link" href="#index-end_002dof_002dfile-_0028usually-C_002dd_0029"> &para;</a></span></dt>
 <dd><p>The character indicating end-of-file as set, for example, by
-<code>stty</code>.  If this character is read when there are no characters
+<code class="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 <small>EOF</small>.
+interprets it as the end of input and returns <small class="sc">EOF</small>.
 </p>
 </dd>
-<dt id='index-delete_002dchar-_0028C_002dd_0029'><span><code>delete-char (C-d)</code><a href='#index-delete_002dchar-_0028C_002dd_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Delete the character at point.  If this function is bound to the
-same character as the tty <small>EOF</small> character, as <kbd>C-d</kbd>
+<dt><a id="index-delete_002dchar-_0028C_002dd_0029"></a><span><code class="code">delete-char (C-d)</code><a class="copiable-link" href="#index-delete_002dchar-_0028C_002dd_0029"> &para;</a></span></dt>
+<dd><p>Delete the character at point.
+If this function is bound to the
+same character as the tty <small class="sc">EOF</small> character, as <kbd class="kbd">C-d</kbd>
 commonly is, see above for the effects.
+This may also be bound to the Delete key on some keyboards.
 </p>
 </dd>
-<dt id='index-backward_002ddelete_002dchar-_0028Rubout_0029'><span><code>backward-delete-char (Rubout)</code><a href='#index-backward_002ddelete_002dchar-_0028Rubout_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Delete the character behind the cursor.  A numeric argument means
-to kill the characters instead of deleting them.
+<dt><a id="index-backward_002ddelete_002dchar-_0028Rubout_0029"></a><span><code class="code">backward-delete-char (Rubout)</code><a class="copiable-link" href="#index-backward_002ddelete_002dchar-_0028Rubout_0029"> &para;</a></span></dt>
+<dd><p>Delete the character behind the cursor.
+A numeric argument means
+to kill the characters, saving them on the kill ring,
+instead of deleting them.
 </p>
 </dd>
-<dt id='index-forward_002dbackward_002ddelete_002dchar-_0028_0029'><span><code>forward-backward-delete-char ()</code><a href='#index-forward_002dbackward_002ddelete_002dchar-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dbackward_002ddelete_002dchar-_0028_0029"></a><span><code class="code">forward-backward-delete-char ()</code><a class="copiable-link" href="#index-forward_002dbackward_002ddelete_002dchar-_0028_0029"> &para;</a></span></dt>
 <dd><p>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.
+deleted.
+By default, this is not bound to a key.
 </p>
 </dd>
-<dt id='index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029'><span><code>quoted-insert (C-q or C-v)</code><a href='#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Add the next character typed to the line verbatim.  This is
-how to insert key sequences like <kbd>C-q</kbd>, for example.
+<dt><a id="index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"></a><span><code class="code">quoted-insert (C-q or C-v)</code><a class="copiable-link" href="#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"> &para;</a></span></dt>
+<dd><p>Add the next character typed to the line verbatim.
+This is how to insert key sequences like <kbd class="kbd">C-q</kbd>, for example.
 </p>
 </dd>
-<dt id='index-tab_002dinsert-_0028M_002dTAB_0029'><span><code>tab-insert (M-<span class="key">TAB</span>)</code><a href='#index-tab_002dinsert-_0028M_002dTAB_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-tab_002dinsert-_0028M_002dTAB_0029"></a><span><code class="code">tab-insert (M-<kbd class="key">TAB</kbd>)</code><a class="copiable-link" href="#index-tab_002dinsert-_0028M_002dTAB_0029"> &para;</a></span></dt>
 <dd><p>Insert a tab character.
 </p>
 </dd>
-<dt id='index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029'><span><code>self-insert (a, b, A, 1, !, &hellip;)</code><a href='#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Insert yourself.
+<dt><a id="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"></a><span><code class="code">self-insert (a, b, A, 1, !, &hellip;)</code><a class="copiable-link" href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"> &para;</a></span></dt>
+<dd><p>Insert the character typed.
 </p>
 </dd>
-<dt id='index-bracketed_002dpaste_002dbegin-_0028_0029'><span><code>bracketed-paste-begin ()</code><a href='#index-bracketed_002dpaste_002dbegin-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-bracketed_002dpaste_002dbegin-_0028_0029"></a><span><code class="code">bracketed-paste-begin ()</code><a class="copiable-link" href="#index-bracketed_002dpaste_002dbegin-_0028_0029"> &para;</a></span></dt>
 <dd><p>This function is intended to be bound to the &quot;bracketed paste&quot; 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
+each character as if it had been read from the keyboard.
+The characters
+are inserted as if each one was bound to <code class="code">self-insert</code> instead of
 executing any editing commands.
 </p>
 <p>Bracketed paste sets the region (the characters between point and the mark)
-to the inserted text. It uses the concept of an <em>active mark</em>: when the
-mark is active, Readline redisplay uses the terminal&rsquo;s standout mode to
-denote the region.
+to the inserted text.
+It sets the <em class="emph">active region</em>.
 </p>
 </dd>
-<dt id='index-transpose_002dchars-_0028C_002dt_0029'><span><code>transpose-chars (C-t)</code><a href='#index-transpose_002dchars-_0028C_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-transpose_002dchars-_0028C_002dt_0029"></a><span><code class="code">transpose-chars (C-t)</code><a class="copiable-link" href="#index-transpose_002dchars-_0028C_002dt_0029"> &para;</a></span></dt>
 <dd><p>Drag the character before the cursor forward over
 the character at the cursor, moving the
-cursor forward as well.  If the insertion point
+cursor forward as well.
+If the insertion point
 is at the end of the line, then this
 transposes the last two characters of the line.
 Negative arguments have no effect.
 </p>
 </dd>
-<dt id='index-transpose_002dwords-_0028M_002dt_0029'><span><code>transpose-words (M-t)</code><a href='#index-transpose_002dwords-_0028M_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-transpose_002dwords-_0028M_002dt_0029"></a><span><code class="code">transpose-words (M-t)</code><a class="copiable-link" href="#index-transpose_002dwords-_0028M_002dt_0029"> &para;</a></span></dt>
 <dd><p>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>
+
 </dd>
-<dt id='index-upcase_002dword-_0028M_002du_0029'><span><code>upcase-word (M-u)</code><a href='#index-upcase_002dword-_0028M_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Uppercase the current (or following) word.  With a negative argument,
+<dt><a id="index-upcase_002dword-_0028M_002du_0029"></a><span><code class="code">upcase-word (M-u)</code><a class="copiable-link" href="#index-upcase_002dword-_0028M_002du_0029"> &para;</a></span></dt>
+<dd><p>Uppercase the current (or following) word.
+With a negative argument,
 uppercase the previous word, but do not move the cursor.
 </p>
 </dd>
-<dt id='index-downcase_002dword-_0028M_002dl_0029'><span><code>downcase-word (M-l)</code><a href='#index-downcase_002dword-_0028M_002dl_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Lowercase the current (or following) word.  With a negative argument,
+<dt><a id="index-downcase_002dword-_0028M_002dl_0029"></a><span><code class="code">downcase-word (M-l)</code><a class="copiable-link" href="#index-downcase_002dword-_0028M_002dl_0029"> &para;</a></span></dt>
+<dd><p>Lowercase the current (or following) word.
+With a negative argument,
 lowercase the previous word, but do not move the cursor.
 </p>
 </dd>
-<dt id='index-capitalize_002dword-_0028M_002dc_0029'><span><code>capitalize-word (M-c)</code><a href='#index-capitalize_002dword-_0028M_002dc_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Capitalize the current (or following) word.  With a negative argument,
+<dt><a id="index-capitalize_002dword-_0028M_002dc_0029"></a><span><code class="code">capitalize-word (M-c)</code><a class="copiable-link" href="#index-capitalize_002dword-_0028M_002dc_0029"> &para;</a></span></dt>
+<dd><p>Capitalize the current (or following) word.
+With a negative argument,
 capitalize the previous word, but do not move the cursor.
 </p>
 </dd>
-<dt id='index-overwrite_002dmode-_0028_0029'><span><code>overwrite-mode ()</code><a href='#index-overwrite_002dmode-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-<code>emacs</code> mode; <code>vi</code> mode does overwrite differently.
-Each call to <code>readline()</code> starts in insert mode.
+<dt><a id="index-overwrite_002dmode-_0028_0029"></a><span><code class="code">overwrite-mode ()</code><a class="copiable-link" href="#index-overwrite_002dmode-_0028_0029"> &para;</a></span></dt>
+<dd><p>Toggle overwrite mode.
+With an explicit positive numeric argument, switches to overwrite mode.
+With an explicit non-positive numeric argument, switches to insert mode.
+This command affects only <code class="code">emacs</code> mode;
+<code class="code">vi</code> mode does overwrite differently.
+Each call to <code class="code">readline()</code> starts in insert mode.
 </p>
-<p>In overwrite mode, characters bound to <code>self-insert</code> replace
+<p>In overwrite mode, characters bound to <code class="code">self-insert</code> replace
 the text at point rather than pushing the text to the right.
-Characters bound to <code>backward-delete-char</code> replace the character
+Characters bound to <code class="code">backward-delete-char</code> replace the character
 before point with a space.
 </p>
-<p>By default, this command is unbound.
+<p>By default, this command is unbound, but may be bound to the Insert
+key on some keyboards.
 </p>
 </dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-Killing">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Killing">
+<div class="nav-panel">
 <p>
 Next: <a href="#Numeric-Arguments" accesskey="n" rel="next">Specifying Numeric Arguments</a>, Previous: <a href="#Commands-For-Text" accesskey="p" rel="prev">Commands For Changing Text</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Killing-And-Yanking"></span><h4 class="subsection">1.4.4 Killing And Yanking</h4>
+<h4 class="subsection" id="Killing-And-Yanking"><span>1.4.4 Killing And Yanking<a class="copiable-link" href="#Killing-And-Yanking"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-kill_002dline-_0028C_002dk_0029'><span><code>kill-line (C-k)</code><a href='#index-kill_002dline-_0028C_002dk_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Kill the text from point to the end of the line.
+<dl class="ftable">
+<dt><a id="index-kill_002dline-_0028C_002dk_0029"></a><span><code class="code">kill-line (C-k)</code><a class="copiable-link" href="#index-kill_002dline-_0028C_002dk_0029"> &para;</a></span></dt>
+<dd><p>Kill the text from point to the end of the current line.
 With a negative numeric argument, kill backward from the cursor to the
-beginning of the current line.
+beginning of the line.
 </p>
 </dd>
-<dt id='index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029'><span><code>backward-kill-line (C-x Rubout)</code><a href='#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"></a><span><code class="code">backward-kill-line (C-x Rubout)</code><a class="copiable-link" href="#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"> &para;</a></span></dt>
 <dd><p>Kill backward from the cursor to the beginning of the current line.
 With a negative numeric argument, kill forward from the cursor to the
-end of the current line.
+end of the line.
 </p>
 </dd>
-<dt id='index-unix_002dline_002ddiscard-_0028C_002du_0029'><span><code>unix-line-discard (C-u)</code><a href='#index-unix_002dline_002ddiscard-_0028C_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-unix_002dline_002ddiscard-_0028C_002du_0029"></a><span><code class="code">unix-line-discard (C-u)</code><a class="copiable-link" href="#index-unix_002dline_002ddiscard-_0028C_002du_0029"> &para;</a></span></dt>
 <dd><p>Kill backward from the cursor to the beginning of the current line.
 </p>
 </dd>
-<dt id='index-kill_002dwhole_002dline-_0028_0029'><span><code>kill-whole-line ()</code><a href='#index-kill_002dwhole_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-kill_002dwhole_002dline-_0028_0029"></a><span><code class="code">kill-whole-line ()</code><a class="copiable-link" href="#index-kill_002dwhole_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>Kill all characters on the current line, no matter where point is.
 By default, this is unbound.
 </p>
 </dd>
-<dt id='index-kill_002dword-_0028M_002dd_0029'><span><code>kill-word (M-d)</code><a href='#index-kill_002dword-_0028M_002dd_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-kill_002dword-_0028M_002dd_0029"></a><span><code class="code">kill-word (M-d)</code><a class="copiable-link" href="#index-kill_002dword-_0028M_002dd_0029"> &para;</a></span></dt>
 <dd><p>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>.
+Word boundaries are the same as <code class="code">forward-word</code>.
 </p>
 </dd>
-<dt id='index-backward_002dkill_002dword-_0028M_002dDEL_0029'><span><code>backward-kill-word (M-<span class="key">DEL</span>)</code><a href='#index-backward_002dkill_002dword-_0028M_002dDEL_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dkill_002dword-_0028M_002dDEL_0029"></a><span><code class="code">backward-kill-word (M-<kbd class="key">DEL</kbd>)</code><a class="copiable-link" href="#index-backward_002dkill_002dword-_0028M_002dDEL_0029"> &para;</a></span></dt>
 <dd><p>Kill the word behind point.
-Word boundaries are the same as <code>backward-word</code>.
+Word boundaries are the same as <code class="code">backward-word</code>.
 </p>
 
 </dd>
-<dt id='index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029'><span><code>shell-transpose-words (M-C-t)</code><a href='#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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.
-Word boundaries are the same as <code>shell-forward-word</code> and
-<code>shell-backward-word</code>.
-</p>
-</dd>
-<dt id='index-unix_002dword_002drubout-_0028C_002dw_0029'><span><code>unix-word-rubout (C-w)</code><a href='#index-unix_002dword_002drubout-_0028C_002dw_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
+<dt><a id="index-unix_002dword_002drubout-_0028C_002dw_0029"></a><span><code class="code">unix-word-rubout (C-w)</code><a class="copiable-link" href="#index-unix_002dword_002drubout-_0028C_002dw_0029"> &para;</a></span></dt>
+<dd><p>Kill the word behind point, using white space as a word boundary,
+saving the killed text on the kill-ring.
 </p>
 </dd>
-<dt id='index-unix_002dfilename_002drubout-_0028_0029'><span><code>unix-filename-rubout ()</code><a href='#index-unix_002dfilename_002drubout-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-unix_002dfilename_002drubout-_0028_0029"></a><span><code class="code">unix-filename-rubout ()</code><a class="copiable-link" href="#index-unix_002dfilename_002drubout-_0028_0029"> &para;</a></span></dt>
 <dd><p>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.
+as the word boundaries,
+saving the killed text on the kill-ring.
 </p>
 </dd>
-<dt id='index-delete_002dhorizontal_002dspace-_0028_0029'><span><code>delete-horizontal-space ()</code><a href='#index-delete_002dhorizontal_002dspace-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Delete all spaces and tabs around point.  By default, this is unbound.
+<dt><a id="index-delete_002dhorizontal_002dspace-_0028_0029"></a><span><code class="code">delete-horizontal-space ()</code><a class="copiable-link" href="#index-delete_002dhorizontal_002dspace-_0028_0029"> &para;</a></span></dt>
+<dd><p>Delete all spaces and tabs around point.
+By default, this is unbound.
 </p>
 </dd>
-<dt id='index-kill_002dregion-_0028_0029'><span><code>kill-region ()</code><a href='#index-kill_002dregion-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-kill_002dregion-_0028_0029"></a><span><code class="code">kill-region ()</code><a class="copiable-link" href="#index-kill_002dregion-_0028_0029"> &para;</a></span></dt>
 <dd><p>Kill the text in the current region.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-copy_002dregion_002das_002dkill-_0028_0029'><span><code>copy-region-as-kill ()</code><a href='#index-copy_002dregion_002das_002dkill-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-copy_002dregion_002das_002dkill-_0028_0029"></a><span><code class="code">copy-region-as-kill ()</code><a class="copiable-link" href="#index-copy_002dregion_002das_002dkill-_0028_0029"> &para;</a></span></dt>
 <dd><p>Copy the text in the region to the kill buffer, so it can be yanked
-right away.  By default, this command is unbound.
+right away.
+By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-copy_002dbackward_002dword-_0028_0029'><span><code>copy-backward-word ()</code><a href='#index-copy_002dbackward_002dword-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-copy_002dbackward_002dword-_0028_0029"></a><span><code class="code">copy-backward-word ()</code><a class="copiable-link" href="#index-copy_002dbackward_002dword-_0028_0029"> &para;</a></span></dt>
 <dd><p>Copy the word before point to the kill buffer.
-The word boundaries are the same as <code>backward-word</code>.
+The word boundaries are the same as <code class="code">backward-word</code>.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-copy_002dforward_002dword-_0028_0029'><span><code>copy-forward-word ()</code><a href='#index-copy_002dforward_002dword-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-copy_002dforward_002dword-_0028_0029"></a><span><code class="code">copy-forward-word ()</code><a class="copiable-link" href="#index-copy_002dforward_002dword-_0028_0029"> &para;</a></span></dt>
 <dd><p>Copy the word following point to the kill buffer.
-The word boundaries are the same as <code>forward-word</code>.
+The word boundaries are the same as <code class="code">forward-word</code>.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-yank-_0028C_002dy_0029'><span><code>yank (C-y)</code><a href='#index-yank-_0028C_002dy_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-yank-_0028C_002dy_0029"></a><span><code class="code">yank (C-y)</code><a class="copiable-link" href="#index-yank-_0028C_002dy_0029"> &para;</a></span></dt>
 <dd><p>Yank the top of the kill ring into the buffer at point.
 </p>
 </dd>
-<dt id='index-yank_002dpop-_0028M_002dy_0029'><span><code>yank-pop (M-y)</code><a href='#index-yank_002dpop-_0028M_002dy_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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>.
+<dt><a id="index-yank_002dpop-_0028M_002dy_0029"></a><span><code class="code">yank-pop (M-y)</code><a class="copiable-link" href="#index-yank_002dpop-_0028M_002dy_0029"> &para;</a></span></dt>
+<dd><p>Rotate the kill-ring, and yank the new top.
+You can only do this if
+the prior command is <code class="code">yank</code> or <code class="code">yank-pop</code>.
 </p></dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Numeric-Arguments">
-<div class="header">
+<div class="subsection-level-extent" id="Numeric-Arguments">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-Completion" accesskey="n" rel="next">Letting Readline Type For You</a>, Previous: <a href="#Commands-For-Killing" accesskey="p" rel="prev">Killing And Yanking</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Specifying-Numeric-Arguments"></span><h4 class="subsection">1.4.5 Specifying Numeric Arguments</h4>
-<dl compact="compact">
-<dt id='index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029'><span><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, &hellip; <kbd>M--</kbd>)</code><a href='#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029' class='copiable-anchor'> &para;</a></span></dt>
+<h4 class="subsection" id="Specifying-Numeric-Arguments"><span>1.4.5 Specifying Numeric Arguments<a class="copiable-link" href="#Specifying-Numeric-Arguments"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"></a><span><code class="code">digit-argument (<kbd class="kbd">M-0</kbd>, <kbd class="kbd">M-1</kbd>, &hellip; <kbd class="kbd">M--</kbd>)</code><a class="copiable-link" href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"> &para;</a></span></dt>
 <dd><p>Add this digit to the argument already accumulating, or start a new
-argument.  <kbd>M--</kbd> starts a negative argument.
+argument.
+<kbd class="kbd">M--</kbd> starts a negative argument.
 </p>
 </dd>
-<dt id='index-universal_002dargument-_0028_0029'><span><code>universal-argument ()</code><a href='#index-universal_002dargument-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-universal_002dargument-_0028_0029"></a><span><code class="code">universal-argument ()</code><a class="copiable-link" href="#index-universal_002dargument-_0028_0029"> &para;</a></span></dt>
 <dd><p>This is another way to specify an argument.
 If this command is followed by one or more digits, optionally with a
 leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <code>universal-argument</code>
+If the command is followed by digits, executing <code class="code">universal-argument</code>
 again ends the numeric argument, but is otherwise ignored.
 As a special case, if this command is immediately followed by a
 character that is neither a digit nor minus sign, the argument count
@@ -1842,58 +1979,88 @@ By default, this is not bound to a key.
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-Completion">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Completion">
+<div class="nav-panel">
 <p>
 Next: <a href="#Keyboard-Macros" accesskey="n" rel="next">Keyboard Macros</a>, Previous: <a href="#Numeric-Arguments" accesskey="p" rel="prev">Specifying Numeric Arguments</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Letting-Readline-Type-For-You"></span><h4 class="subsection">1.4.6 Letting Readline Type For You</h4>
+<h4 class="subsection" id="Letting-Readline-Type-For-You"><span>1.4.6 Letting Readline Type For You<a class="copiable-link" href="#Letting-Readline-Type-For-You"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-complete-_0028TAB_0029'><span><code>complete (<span class="key">TAB</span>)</code><a href='#index-complete-_0028TAB_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="ftable">
+<dt><a id="index-complete-_0028TAB_0029"></a><span><code class="code">complete (<kbd class="key">TAB</kbd>)</code><a class="copiable-link" href="#index-complete-_0028TAB_0029"> &para;</a></span></dt>
 <dd><p>Attempt to perform completion on the text before point.
 The actual completion performed is application-specific.
 The default is filename completion.
 </p>
 </dd>
-<dt id='index-possible_002dcompletions-_0028M_002d_003f_0029'><span><code>possible-completions (M-?)</code><a href='#index-possible_002dcompletions-_0028M_002d_003f_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-possible_002dcompletions-_0028M_002d_003f_0029"></a><span><code class="code">possible-completions (M-?)</code><a class="copiable-link" href="#index-possible_002dcompletions-_0028M_002d_003f_0029"> &para;</a></span></dt>
 <dd><p>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.
+for display to the value of <code class="code">completion-display-width</code>, the value of
+the environment variable <code class="env">COLUMNS</code>, or the screen width, in that order.
 </p>
 </dd>
-<dt id='index-insert_002dcompletions-_0028M_002d_002a_0029'><span><code>insert-completions (M-*)</code><a href='#index-insert_002dcompletions-_0028M_002d_002a_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-insert_002dcompletions-_0028M_002d_002a_0029"></a><span><code class="code">insert-completions (M-*)</code><a class="copiable-link" href="#index-insert_002dcompletions-_0028M_002d_002a_0029"> &para;</a></span></dt>
 <dd><p>Insert all completions of the text before point that would have
-been generated by <code>possible-completions</code>.
+been generated by <code class="code">possible-completions</code>,
+separated by a space.
 </p>
 </dd>
-<dt id='index-menu_002dcomplete-_0028_0029'><span><code>menu-complete ()</code><a href='#index-menu_002dcomplete-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Similar to <code>complete</code>, but replaces the word to be completed
+<dt><a id="index-menu_002dcomplete-_0028_0029"></a><span><code class="code">menu-complete ()</code><a class="copiable-link" href="#index-menu_002dcomplete-_0028_0029"> &para;</a></span></dt>
+<dd><p>Similar to <code class="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
+Repeatedly executing <code class="code">menu-complete</code> steps through the list
 of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <code>bell-style</code>)
-and the original text is restored.
-An argument of <var>n</var> moves <var>n</var> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <tt class="key">TAB</tt>, but is unbound
+At the end of the list of completions,
+<code class="code">menu-complete</code> rings the bell
+(subject to the setting of <code class="code">bell-style</code>)
+and restores the original text.
+An argument of <var class="var">n</var> moves <var class="var">n</var> positions forward in the list
+of matches; a negative argument moves backward through the list.
+This command is intended to be bound to <kbd class="key">TAB</kbd>, but is unbound
 by default.
 </p>
 </dd>
-<dt id='index-menu_002dcomplete_002dbackward-_0028_0029'><span><code>menu-complete-backward ()</code><a href='#index-menu_002dcomplete_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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
+<dt><a id="index-menu_002dcomplete_002dbackward-_0028_0029"></a><span><code class="code">menu-complete-backward ()</code><a class="copiable-link" href="#index-menu_002dcomplete_002dbackward-_0028_0029"> &para;</a></span></dt>
+<dd><p>Identical to <code class="code">menu-complete</code>, but moves backward through the list
+of possible completions, as if <code class="code">menu-complete</code> had been given a
 negative argument.
+This command is unbound by default.
+</p>
+</dd>
+<dt><a id="index-export_002dcompletions-_0028_0029"></a><span><code class="code">export-completions ()</code><a class="copiable-link" href="#index-export_002dcompletions-_0028_0029"> &para;</a></span></dt>
+<dd><p>Perform completion on the word before point as described above
+and write the list of possible completions to Readline&rsquo;s output stream
+using the following format, writing information on separate lines:
+</p>
+<ul class="itemize mark-bullet">
+<li>the number of matches <var class="var">N</var>;
+</li><li>the word being completed;
+</li><li><var class="var">S</var>:<var class="var">E</var>,
+where <var class="var">S</var> and <var class="var">E</var> are the start and end offsets of the word
+in the Readline line buffer; then
+</li><li>each match, one per line
+</li></ul>
+
+<p>If there are no matches, the first line will be &ldquo;0&rdquo;,
+and this command does not print any output after the <var class="var">S</var>:<var class="var">E</var>.
+If there is only a single match, this prints a single line containing it.
+If there is more than one match, this prints the common prefix of the
+matches, which may be empty, on the first line after the <var class="var">S</var>:<var class="var">E</var>,
+then the matches on subsequent lines.
+In this case, <var class="var">N</var> will include the first line with the common prefix.
+</p>
+<p>The user or application
+should be able to accommodate the possibility of a blank line.
+The intent is that the user or application reads <var class="var">N</var> lines after
+the line containing <var class="var">S</var>:<var class="var">E</var> to obtain the match list.
+This command is unbound by default.
 </p>
 </dd>
-<dt id='index-delete_002dchar_002dor_002dlist-_0028_0029'><span><code>delete-char-or-list ()</code><a href='#index-delete_002dchar_002dor_002dlist-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-delete_002dchar_002dor_002dlist-_0028_0029"></a><span><code class="code">delete-char-or-list ()</code><a class="copiable-link" href="#index-delete_002dchar_002dor_002dlist-_0028_0029"> &para;</a></span></dt>
 <dd><p>Deletes the character under the cursor if not at the beginning or
-end of the line (like <code>delete-char</code>).
-If at the end of the line, behaves identically to
-<code>possible-completions</code>.
+end of the line (like <code class="code">delete-char</code>).
+At the end of the line, it behaves identically to <code class="code">possible-completions</code>.
 This command is unbound by default.
 </p>
 </dd>
@@ -1901,150 +2068,167 @@ This command is unbound by default.
 
 <hr>
 </div>
-<div class="subsection" id="Keyboard-Macros">
-<div class="header">
+<div class="subsection-level-extent" id="Keyboard-Macros">
+<div class="nav-panel">
 <p>
 Next: <a href="#Miscellaneous-Commands" accesskey="n" rel="next">Some Miscellaneous Commands</a>, Previous: <a href="#Commands-For-Completion" accesskey="p" rel="prev">Letting Readline Type For You</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Keyboard-Macros-1"></span><h4 class="subsection">1.4.7 Keyboard Macros</h4>
-<dl compact="compact">
-<dt id='index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029'><span><code>start-kbd-macro (C-x ()</code><a href='#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<h4 class="subsection" id="Keyboard-Macros-1"><span>1.4.7 Keyboard Macros<a class="copiable-link" href="#Keyboard-Macros-1"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"></a><span><code class="code">start-kbd-macro (C-x ()</code><a class="copiable-link" href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"> &para;</a></span></dt>
 <dd><p>Begin saving the characters typed into the current keyboard macro.
 </p>
 </dd>
-<dt id='index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029'><span><code>end-kbd-macro (C-x ))</code><a href='#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"></a><span><code class="code">end-kbd-macro (C-x ))</code><a class="copiable-link" href="#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"> &para;</a></span></dt>
 <dd><p>Stop saving the characters typed into the current keyboard macro
 and save the definition.
 </p>
 </dd>
-<dt id='index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029'><span><code>call-last-kbd-macro (C-x e)</code><a href='#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"></a><span><code class="code">call-last-kbd-macro (C-x e)</code><a class="copiable-link" href="#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"> &para;</a></span></dt>
 <dd><p>Re-execute the last keyboard macro defined, by making the characters
 in the macro appear as if typed at the keyboard.
 </p>
 </dd>
-<dt id='index-print_002dlast_002dkbd_002dmacro-_0028_0029'><span><code>print-last-kbd-macro ()</code><a href='#index-print_002dlast_002dkbd_002dmacro-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-print_002dlast_002dkbd_002dmacro-_0028_0029"></a><span><code class="code">print-last-kbd-macro ()</code><a class="copiable-link" href="#index-print_002dlast_002dkbd_002dmacro-_0028_0029"> &para;</a></span></dt>
 <dd><p>Print the last keyboard macro defined in a format suitable for the
-<var>inputrc</var> file.
+<var class="var">inputrc</var> file.
 </p>
 </dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Miscellaneous-Commands">
-<div class="header">
+<div class="subsection-level-extent" id="Miscellaneous-Commands">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Keyboard-Macros" accesskey="p" rel="prev">Keyboard Macros</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Some-Miscellaneous-Commands"></span><h4 class="subsection">1.4.8 Some Miscellaneous Commands</h4>
-<dl compact="compact">
-<dt id='index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029'><span><code>re-read-init-file (C-x C-r)</code><a href='#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Read in the contents of the <var>inputrc</var> file, and incorporate
+<h4 class="subsection" id="Some-Miscellaneous-Commands"><span>1.4.8 Some Miscellaneous Commands<a class="copiable-link" href="#Some-Miscellaneous-Commands"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"></a><span><code class="code">re-read-init-file (C-x C-r)</code><a class="copiable-link" href="#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"> &para;</a></span></dt>
+<dd><p>Read in the contents of the <var class="var">inputrc</var> file, and incorporate
 any bindings or variable assignments found there.
 </p>
 </dd>
-<dt id='index-abort-_0028C_002dg_0029'><span><code>abort (C-g)</code><a href='#index-abort-_0028C_002dg_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-abort-_0028C_002dg_0029"></a><span><code class="code">abort (C-g)</code><a class="copiable-link" href="#index-abort-_0028C_002dg_0029"> &para;</a></span></dt>
 <dd><p>Abort the current editing command and
 ring the terminal&rsquo;s bell (subject to the setting of
-<code>bell-style</code>).
+<code class="code">bell-style</code>).
 </p>
 </dd>
-<dt id='index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029'><span><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code><a href='#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the metafied character <var>x</var> is upper case, run the command
+<dt><a id="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></a><span><code class="code">do-lowercase-version (M-A, M-B, M-<var class="var">x</var>, &hellip;)</code><a class="copiable-link" href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"> &para;</a></span></dt>
+<dd><p>If the metafied character <var class="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.
+The behavior is undefined if <var class="var">x</var> is already lower case.
 </p>
 </dd>
-<dt id='index-prefix_002dmeta-_0028ESC_0029'><span><code>prefix-meta (<span class="key">ESC</span>)</code><a href='#index-prefix_002dmeta-_0028ESC_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Metafy the next character typed.  This is for keyboards
-without a meta key.  Typing &lsquo;<samp><span class="key">ESC</span> f</samp>&rsquo; is equivalent to typing
-<kbd>M-f</kbd>.
+<dt><a id="index-prefix_002dmeta-_0028ESC_0029"></a><span><code class="code">prefix-meta (<kbd class="key">ESC</kbd>)</code><a class="copiable-link" href="#index-prefix_002dmeta-_0028ESC_0029"> &para;</a></span></dt>
+<dd><p>Metafy the next character typed.
+Typing &lsquo;<samp class="samp"><kbd class="key">ESC</kbd> f</samp>&rsquo; is equivalent to typing <kbd class="kbd">M-f</kbd>.
 </p>
 </dd>
-<dt id='index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029'><span><code>undo (C-_ or C-x C-u)</code><a href='#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"></a><span><code class="code">undo (C-_ or C-x C-u)</code><a class="copiable-link" href="#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"> &para;</a></span></dt>
 <dd><p>Incremental undo, separately remembered for each line.
 </p>
 </dd>
-<dt id='index-revert_002dline-_0028M_002dr_0029'><span><code>revert-line (M-r)</code><a href='#index-revert_002dline-_0028M_002dr_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Undo all changes made to this line.  This is like executing the <code>undo</code>
-command enough times to get back to the beginning.
+<dt><a id="index-revert_002dline-_0028M_002dr_0029"></a><span><code class="code">revert-line (M-r)</code><a class="copiable-link" href="#index-revert_002dline-_0028M_002dr_0029"> &para;</a></span></dt>
+<dd><p>Undo all changes made to this line.
+This is like executing the <code class="code">undo</code>
+command enough times to get back to the initial state.
 </p>
 </dd>
-<dt id='index-tilde_002dexpand-_0028M_002d_007e_0029'><span><code>tilde-expand (M-~)</code><a href='#index-tilde_002dexpand-_0028M_002d_007e_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-tilde_002dexpand-_0028M_002d_007e_0029"></a><span><code class="code">tilde-expand (M-~)</code><a class="copiable-link" href="#index-tilde_002dexpand-_0028M_002d_007e_0029"> &para;</a></span></dt>
 <dd><p>Perform tilde expansion on the current word.
 </p>
 </dd>
-<dt id='index-set_002dmark-_0028C_002d_0040_0029'><span><code>set-mark (C-@)</code><a href='#index-set_002dmark-_0028C_002d_0040_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
+<dt><a id="index-set_002dmark-_0028C_002d_0040_0029"></a><span><code class="code">set-mark (C-@)</code><a class="copiable-link" href="#index-set_002dmark-_0028C_002d_0040_0029"> &para;</a></span></dt>
+<dd><p>Set the mark to the point.
+If a numeric argument is supplied, set the mark to that position.
 </p>
 </dd>
-<dt id='index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029'><span><code>exchange-point-and-mark (C-x C-x)</code><a href='#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
+<dt><a id="index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"></a><span><code class="code">exchange-point-and-mark (C-x C-x)</code><a class="copiable-link" href="#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"> &para;</a></span></dt>
+<dd><p>Swap the point with the mark.
+Set the current cursor position to the saved position,
+then set the mark to the old cursor position.
 </p>
 </dd>
-<dt id='index-character_002dsearch-_0028C_002d_005d_0029'><span><code>character-search (C-])</code><a href='#index-character_002dsearch-_0028C_002d_005d_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A character is read and point is moved to the next occurrence of that
-character.  A negative argument searches for previous occurrences.
+<dt><a id="index-character_002dsearch-_0028C_002d_005d_0029"></a><span><code class="code">character-search (C-])</code><a class="copiable-link" href="#index-character_002dsearch-_0028C_002d_005d_0029"> &para;</a></span></dt>
+<dd><p>Read a character and move point to the next occurrence of that character.
+A negative argument searches for previous occurrences.
 </p>
 </dd>
-<dt id='index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029'><span><code>character-search-backward (M-C-])</code><a href='#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A character is read and point is moved to the previous occurrence
-of that character.  A negative argument searches for subsequent
-occurrences.
+<dt><a id="index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"></a><span><code class="code">character-search-backward (M-C-])</code><a class="copiable-link" href="#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"> &para;</a></span></dt>
+<dd><p>Read a character and move point to the previous occurrence of that character.
+A negative argument searches for subsequent occurrences.
 </p>
 </dd>
-<dt id='index-skip_002dcsi_002dsequence-_0028_0029'><span><code>skip-csi-sequence ()</code><a href='#index-skip_002dcsi_002dsequence-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-skip_002dcsi_002dsequence-_0028_0029"></a><span><code class="code">skip-csi-sequence ()</code><a class="copiable-link" href="#index-skip_002dcsi_002dsequence-_0028_0029"> &para;</a></span></dt>
 <dd><p>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
-bound to &quot;\e[&quot;, keys producing such sequences will have no effect
-unless explicitly bound to a Readline command, instead of inserting
-stray characters into the editing buffer.  This is unbound by default,
-but usually bound to ESC-[.
-</p>
-</dd>
-<dt id='index-insert_002dcomment-_0028M_002d_0023_0029'><span><code>insert-comment (M-#)</code><a href='#index-insert_002dcomment-_0028M_002d_0023_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Without a numeric argument, the value of the <code>comment-begin</code>
-variable is inserted at the beginning of the current line.
+defined for keys like Home and End.
+CSI sequences begin with a Control Sequence Indicator (CSI), usually
+<kbd class="kbd">ESC [</kbd>.
+If this sequence is bound to &quot;\e[&quot;,
+keys producing CSI sequences have no effect
+unless explicitly bound to a Readline command,
+instead of inserting stray characters into the editing buffer.
+This is unbound by default, but usually bound to
+<kbd class="kbd">ESC [</kbd>.
+</p>
+</dd>
+<dt><a id="index-insert_002dcomment-_0028M_002d_0023_0029"></a><span><code class="code">insert-comment (M-#)</code><a class="copiable-link" href="#index-insert_002dcomment-_0028M_002d_0023_0029"> &para;</a></span></dt>
+<dd><p>Without a numeric argument, insert the value of the <code class="code">comment-begin</code>
+variable at the beginning of the current line.
 If a numeric argument is supplied, this command acts as a toggle:  if
 the characters at the beginning of the line do not match the value
-of <code>comment-begin</code>, the value is inserted, otherwise
-the characters in <code>comment-begin</code> are deleted from the beginning of
-the line.
+of <code class="code">comment-begin</code>, insert the value; otherwise delete
+the characters in <code class="code">comment-begin</code> from the beginning of the line.
 In either case, the line is accepted as if a newline had been typed.
 </p>
 </dd>
-<dt id='index-dump_002dfunctions-_0028_0029'><span><code>dump-functions ()</code><a href='#index-dump_002dfunctions-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Print all of the functions and their key bindings to the
-Readline output stream.  If a numeric argument is supplied,
+<dt><a id="index-dump_002dfunctions-_0028_0029"></a><span><code class="code">dump-functions ()</code><a class="copiable-link" href="#index-dump_002dfunctions-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
+of an <var class="var">inputrc</var> file.
+This command is unbound by default.
 </p>
 </dd>
-<dt id='index-dump_002dvariables-_0028_0029'><span><code>dump-variables ()</code><a href='#index-dump_002dvariables-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Print all of the settable variables and their values to the
-Readline output stream.  If a numeric argument is supplied,
+<dt><a id="index-dump_002dvariables-_0028_0029"></a><span><code class="code">dump-variables ()</code><a class="copiable-link" href="#index-dump_002dvariables-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
+of an <var class="var">inputrc</var> file.
+This command is unbound by default.
 </p>
 </dd>
-<dt id='index-dump_002dmacros-_0028_0029'><span><code>dump-macros ()</code><a href='#index-dump_002dmacros-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-dump_002dmacros-_0028_0029"></a><span><code class="code">dump-macros ()</code><a class="copiable-link" href="#index-dump_002dmacros-_0028_0029"> &para;</a></span></dt>
 <dd><p>Print all of the Readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
+strings they output
+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.
+of an <var class="var">inputrc</var> file.
+This command is unbound by default.
+</p>
+</dd>
+<dt><a id="index-execute_002dnamed_002dcommand-_0028M_002dx_0029"></a><span><code class="code">execute-named-command (M-x)</code><a class="copiable-link" href="#index-execute_002dnamed_002dcommand-_0028M_002dx_0029"> &para;</a></span></dt>
+<dd><p>Read a bindable Readline command name from the input and execute the
+function to which it&rsquo;s bound, as if the key sequence to which it was
+bound appeared in the input.
+If this function is supplied with a numeric argument, it passes that
+argument to the function it executes.
 </p>
 
 </dd>
-<dt id='index-emacs_002dediting_002dmode-_0028C_002de_0029'><span><code>emacs-editing-mode (C-e)</code><a href='#index-emacs_002dediting_002dmode-_0028C_002de_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When in <code>vi</code> command mode, this causes a switch to <code>emacs</code>
+<dt><a id="index-emacs_002dediting_002dmode-_0028C_002de_0029"></a><span><code class="code">emacs-editing-mode (C-e)</code><a class="copiable-link" href="#index-emacs_002dediting_002dmode-_0028C_002de_0029"> &para;</a></span></dt>
+<dd><p>When in <code class="code">vi</code> command mode, this causes a switch to <code class="code">emacs</code>
 editing mode.
 </p>
 </dd>
-<dt id='index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029'><span><code>vi-editing-mode (M-C-j)</code><a href='#index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When in <code>emacs</code> editing mode, this causes a switch to <code>vi</code>
+<dt><a id="index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029"></a><span><code class="code">vi-editing-mode (M-C-j)</code><a class="copiable-link" href="#index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029"> &para;</a></span></dt>
+<dd><p>When in <code class="code">emacs</code> editing mode, this causes a switch to <code class="code">vi</code>
 editing mode.
 </p>
 
@@ -2054,28 +2238,29 @@ editing mode.
 <hr>
 </div>
 </div>
-<div class="section" id="Readline-vi-Mode">
-<div class="header">
+<div class="section-level-extent" id="Readline-vi-Mode">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Bindable-Readline-Commands" accesskey="p" rel="prev">Bindable Readline Commands</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-vi-Mode-1"></span><h3 class="section">1.5 Readline vi Mode</h3>
+<h3 class="section" id="Readline-vi-Mode-1"><span>1.5 Readline vi Mode<a class="copiable-link" href="#Readline-vi-Mode-1"> &para;</a></span></h3>
 
-<p>While the Readline library does not have a full set of <code>vi</code>
+<p>While the Readline library does not have a full set of <code class="code">vi</code>
 editing functions, it does contain enough to allow simple editing
-of the line.  The Readline <code>vi</code> mode behaves as specified in
-the <small>POSIX</small> standard.
+of the line.
+The Readline <code class="code">vi</code> mode behaves as specified in the
+<code class="code">sh</code> description in the <small class="sc">POSIX</small> standard.
 </p>
-<p>In order to switch interactively between <code>emacs</code> and <code>vi</code>
-editing modes, use the command <kbd>M-C-j</kbd> (bound to emacs-editing-mode
-when in <code>vi</code> mode and to vi-editing-mode in <code>emacs</code> mode).
-The Readline default is <code>emacs</code> mode.
+<p>In order to switch interactively between <code class="code">emacs</code> and <code class="code">vi</code>
+editing modes, use the command <kbd class="kbd">M-C-j</kbd> (bound to emacs-editing-mode
+when in <code class="code">vi</code> mode and to vi-editing-mode in <code class="code">emacs</code> mode).
+The Readline default is <code class="code">emacs</code> mode.
 </p>
-<p>When you enter a line in <code>vi</code> mode, you are already placed in
-&lsquo;insertion&rsquo; mode, as if you had typed an &lsquo;<samp>i</samp>&rsquo;.  Pressing <tt class="key">ESC</tt>
+<p>When you enter a line in <code class="code">vi</code> mode, you are already placed in
+&lsquo;insertion&rsquo; mode, as if you had typed an &lsquo;<samp class="samp">i</samp>&rsquo;.  Pressing <kbd class="key">ESC</kbd>
 switches you into &lsquo;command&rsquo; mode, where you can edit the text of the
-line with the standard <code>vi</code> movement keys, move to previous
-history lines with &lsquo;<samp>k</samp>&rsquo; and subsequent lines with &lsquo;<samp>j</samp>&rsquo;, and
+line with the standard <code class="code">vi</code> movement keys, move to previous
+history lines with &lsquo;<samp class="samp">k</samp>&rsquo; and subsequent lines with &lsquo;<samp class="samp">j</samp>&rsquo;, and
 so forth.
 </p>
 
@@ -2083,21 +2268,21 @@ so forth.
 <hr>
 </div>
 </div>
-<div class="chapter" id="Programming-with-GNU-Readline">
-<div class="header">
+<div class="chapter-level-extent" id="Programming-with-GNU-Readline">
+<div class="nav-panel">
 <p>
 Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Command-Line-Editing" accesskey="p" rel="prev">Command Line Editing</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU Readline Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Programming-with-GNU-Readline-1"></span><h2 class="chapter">2 Programming with GNU Readline</h2>
+<h2 class="chapter" id="Programming-with-GNU-Readline-1"><span>2 Programming with GNU Readline<a class="copiable-link" href="#Programming-with-GNU-Readline-1"> &para;</a></span></h2>
 
-<p>This chapter describes the interface between the <small>GNU</small> Readline Library and
+<p>This chapter describes the interface between the <small class="sc">GNU</small> Readline Library and
 other programs.  If you are a programmer, and you wish to include the
-features found in <small>GNU</small> Readline
+features found in <small class="sc">GNU</small> Readline
 such as completion, line editing, and interactive history manipulation
 in your own programs, this section is for you.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Basic-Behavior" accesskey="1">Basic Behavior</a></li>
 <li><a href="#Custom-Functions" accesskey="2">Custom Functions</a></li>
 <li><a href="#Readline-Variables" accesskey="3">Readline Variables</a></li>
@@ -2106,68 +2291,76 @@ in your own programs, this section is for you.
 <li><a href="#Custom-Completers" accesskey="6">Custom Completers</a></li>
 </ul>
 <hr>
-<div class="section" id="Basic-Behavior">
-<div class="header">
+<div class="section-level-extent" id="Basic-Behavior">
+<div class="nav-panel">
 <p>
 Next: <a href="#Custom-Functions" accesskey="n" rel="next">Custom Functions</a>, Up: <a href="#Programming-with-GNU-Readline" accesskey="u" rel="up">Programming with GNU Readline</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Basic-Behavior-1"></span><h3 class="section">2.1 Basic Behavior</h3>
+<h3 class="section" id="Basic-Behavior-1"><span>2.1 Basic Behavior<a class="copiable-link" href="#Basic-Behavior-1"> &para;</a></span></h3>
 
-<p>Many programs provide a command line interface, such as <code>mail</code>,
-<code>ftp</code>, and <code>sh</code>.  For such programs, the default behaviour of
-Readline is sufficient.  This section describes how to use Readline in
+<p>Many programs provide a command line interface, such as <code class="code">mail</code>,
+<code class="code">ftp</code>, and <code class="code">sh</code>.
+For such programs, the default behavior of Readline is sufficient.
+This section describes how to use Readline in
 the simplest way possible, perhaps to replace calls in your code to
-<code>gets()</code> or <code>fgets()</code>.
+<code class="code">fgets()</code>.
 </p>
-<span id="index-readline"></span>
-<span id="index-readline_002c-function"></span>
+<a class="index-entry-id" id="index-readline"></a>
+<a class="index-entry-id" id="index-readline_002c-function"></a>
 
-<p>The function <code>readline()</code> prints a prompt <var>prompt</var>
+<p>The function <code class="code">readline()</code> prints a prompt <var class="var">prompt</var>
 and then reads and returns a single line of text from the user.
-If <var>prompt</var> is <code>NULL</code> or the empty string, no prompt is displayed.
-The line <code>readline</code> returns is allocated with <code>malloc()</code>;
-the caller should <code>free()</code> the line when it has finished with it.
-The declaration for <code>readline</code> in ANSI C is
+Since it&rsquo;s possible to enter characters into the line while quoting
+them to disable any Readline editing function they might normally have,
+this line may include embedded newlines and other special characters.
+If <var class="var">prompt</var> is <code class="code">NULL</code> or the empty string,
+<code class="code">readline()</code> does not display a prompt.
+The line <code class="code">readline()</code> returns is allocated with <code class="code">malloc()</code>;
+the caller should <code class="code">free()</code> the line when it has finished with it.
+The declaration for <code class="code">readline</code> in ANSI C is
 </p>
 <div class="example">
-<pre class="example"><code>char *readline (const char *<var>prompt</var>);</code>
+<pre class="example-preformatted"><code class="code">char *readline (const char *<var class="var">prompt</var>);</code>
 </pre></div>
 
 <p>So, one might say
 </p><div class="example">
-<pre class="example"><code>char *line = readline (&quot;Enter a line: &quot;);</code>
+<pre class="example-preformatted"><code class="code">char *line = readline (&quot;Enter a line: &quot;);</code>
 </pre></div>
 <p>in order to read a line of text from the user.
 The line returned has the final newline removed, so only the
 text remains.
+This means that lines consisting of a newline return the empty string.
 </p>
-<p>If <code>readline</code> encounters an <code>EOF</code> while reading the line, and the
-line is empty at that point, then <code>(char *)NULL</code> is returned.
+<p>If Readline encounters an <code class="code">EOF</code> while reading the line,
+and the line is empty at that point,
+then <code class="code">readline()</code> returns <code class="code">(char *)NULL</code>.
 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 <a href="#Redisplay">Redisplay</a>) for additional details, especially if <var>prompt</var>
+<p>Readline performs some expansion on the <var class="var">prompt</var> before it is
+displayed on the screen.
+See the description of <code class="code">rl_expand_prompt</code>
+(see <a class="pxref" href="#Redisplay">Redisplay</a>) for additional details, especially if <var class="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
-<tt class="key">C-p</tt> for example), you must call <code>add_history()</code> to save the
-line away in a <em>history</em> list of such lines.
+<kbd class="key">C-p</kbd> for example), you must call <code class="code">add_history()</code> to save the
+line away in a <em class="dfn">history</em> list of such lines.
 </p>
 <div class="example">
-<pre class="example"><code>add_history (line)</code>;
+<pre class="example-preformatted"><code class="code">add_history (line)</code>;
 </pre></div>
 
 <p>For full details on the GNU History Library, see the associated manual.
 </p>
 <p>It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line.  Here is
-a function which usefully replaces the standard <code>gets()</code> library
+users rarely have a burning need to reuse a blank line.
+Here is a function which usefully replaces the standard <code class="code">gets()</code> library
 function, and has the advantage of no static buffer to overflow:
 </p>
 <div class="example">
-<pre class="example">/* A static variable for holding the line. */
+<pre class="example-preformatted">/* A static variable for holding the line. */
 static char *line_read = (char *)NULL;
 
 /* Read a string, and return a pointer to it.
@@ -2195,76 +2388,81 @@ rl_gets ()
 }
 </pre></div>
 
-<p>This function gives the user the default behaviour of <tt class="key">TAB</tt>
-completion: completion on file names.  If you do not want Readline to
-complete on filenames, you can change the binding of the <tt class="key">TAB</tt> key
-with <code>rl_bind_key()</code>.
+<p>This function gives the user the default behavior of <kbd class="key">TAB</kbd>
+completion: filename completion.
+If you do not want Readline to
+complete filenames, you can change the binding of the <kbd class="key">TAB</kbd> key
+with <code class="code">rl_bind_key()</code>.
 </p>
 <div class="example">
-<pre class="example"><code>int rl_bind_key (int <var>key</var>, rl_command_func_t *<var>function</var>);</code>
+<pre class="example-preformatted"><code class="code">int rl_bind_key (int <var class="var">key</var>, rl_command_func_t *<var class="var">function</var>);</code>
 </pre></div>
 
-<p><code>rl_bind_key()</code> takes two arguments: <var>key</var> is the character that
-you want to bind, and <var>function</var> is the address of the function to
-call when <var>key</var> is pressed.  Binding <tt class="key">TAB</tt> to <code>rl_insert()</code>
-makes <tt class="key">TAB</tt> insert itself.
-<code>rl_bind_key()</code> returns non-zero if <var>key</var> is not a valid
+<p><code class="code">rl_bind_key()</code> takes two arguments: <var class="var">key</var> is the character that
+you want to bind, and <var class="var">function</var> is the address of the function to
+call when <var class="var">key</var> is pressed.
+Binding <kbd class="key">TAB</kbd> to <code class="code">rl_insert()</code> makes <kbd class="key">TAB</kbd> insert itself.
+<code class="code">rl_bind_key()</code> returns non-zero if <var class="var">key</var> is not a valid
 ASCII character code (between 0 and 255).
 </p>
-<p>Thus, to disable the default <tt class="key">TAB</tt> behavior, the following suffices:
+<p>Thus, to disable the default <kbd class="key">TAB</kbd> behavior, the following suffices:
 </p><div class="example">
-<pre class="example"><code>rl_bind_key ('\t', rl_insert);</code>
+<pre class="example-preformatted"><code class="code">rl_bind_key ('\t', rl_insert);</code>
 </pre></div>
 
 <p>This code should be executed once at the start of your program; you
-might write a function called <code>initialize_readline()</code> which
+might write a function called <code class="code">initialize_readline()</code> which
 performs this and other desired initializations, such as installing
-custom completers (see <a href="#Custom-Completers">Custom Completers</a>).
+custom completers (see <a class="pxref" href="#Custom-Completers">Custom Completers</a>).
 </p>
 <hr>
 </div>
-<div class="section" id="Custom-Functions">
-<div class="header">
+<div class="section-level-extent" id="Custom-Functions">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Variables" accesskey="n" rel="next">Readline Variables</a>, Previous: <a href="#Basic-Behavior" accesskey="p" rel="prev">Basic Behavior</a>, Up: <a href="#Programming-with-GNU-Readline" accesskey="u" rel="up">Programming with GNU Readline</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Custom-Functions-1"></span><h3 class="section">2.2 Custom Functions</h3>
+<h3 class="section" id="Custom-Functions-1"><span>2.2 Custom Functions<a class="copiable-link" href="#Custom-Functions-1"> &para;</a></span></h3>
 
 <p>Readline provides many functions for manipulating the text of
 the line, but it isn&rsquo;t possible to anticipate the needs of all
-programs.  This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
+programs.
+This section describes the various functions and variables
+defined within the Readline library which allow a program to add
 customized functionality to Readline.
 </p>
 <p>Before declaring any functions that customize Readline&rsquo;s behavior, or
 using any functionality Readline provides in other code, an
-application writer should include the file <code>&lt;readline/readline.h&gt;</code>
-in any file that uses Readline&rsquo;s features.  Since some of the definitions
-in <code>readline.h</code> use the <code>stdio</code> library, the file
-<code>&lt;stdio.h&gt;</code> should be included before <code>readline.h</code>.
-</p>
-<p><code>readline.h</code> defines a C preprocessor variable that should
-be treated as an integer, <code>RL_READLINE_VERSION</code>, which may
+application writer should include the file <code class="code">&lt;readline/readline.h&gt;</code>
+in any file that uses Readline&rsquo;s features.
+Since some of the definitions
+in <code class="code">readline.h</code> use the <code class="code">stdio</code> library, the program
+should include the file <code class="code">&lt;stdio.h&gt;</code>
+before <code class="code">readline.h</code>.
+</p>
+<p><code class="code">readline.h</code> defines a C preprocessor variable that should
+be treated as an integer, <code class="code">RL_READLINE_VERSION</code>, which may
 be used to conditionally compile application code depending on
-the installed Readline version.  The value is a hexadecimal
+the installed Readline version.
+The value is a hexadecimal
 encoding of the major and minor version numbers of the library,
-of the form 0x<var>MMmm</var>.  <var>MM</var> is the two-digit major
-version number; <var>mm</var> is the two-digit minor version number. 
+of the form 0x<var class="var">MMmm</var>.  <var class="var">MM</var> is the two-digit major
+version number; <var class="var">mm</var> is the two-digit minor version number. 
 For Readline 4.2, for example, the value of
-<code>RL_READLINE_VERSION</code> would be <code>0x0402</code>. 
+<code class="code">RL_READLINE_VERSION</code> would be <code class="code">0x0402</code>. 
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Readline-Typedefs" accesskey="1">Readline Typedefs</a></li>
 <li><a href="#Function-Writing" accesskey="2">Writing a New Function</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Readline-Typedefs">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Typedefs">
+<div class="nav-panel">
 <p>
 Next: <a href="#Function-Writing" accesskey="n" rel="next">Writing a New Function</a>, Up: <a href="#Custom-Functions" accesskey="u" rel="up">Custom Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Typedefs-1"></span><h4 class="subsection">2.2.1 Readline Typedefs</h4>
+<h4 class="subsection" id="Readline-Typedefs-1"><span>2.2.1 Readline Typedefs<a class="copiable-link" href="#Readline-Typedefs-1"> &para;</a></span></h4>
 
 <p>For readability, we declare a number of new object types, all pointers
 to functions.
@@ -2273,71 +2471,76 @@ to functions.
 code describing pointers to C functions with appropriately prototyped
 arguments and return values.
 </p>
-<p>For instance, say we want to declare a variable <var>func</var> as a pointer
-to a function which takes two <code>int</code> arguments and returns an
-<code>int</code> (this is the type of all of the Readline bindable functions).
+<p>For instance, say we want to declare a variable <var class="var">func</var> as a pointer
+to a function which takes two <code class="code">int</code> arguments and returns an
+<code class="code">int</code> (this is the type of all of the Readline bindable functions).
 Instead of the classic C declaration
 </p>
-<p><code>int (*func)();</code>
+<p><code class="code">int (*func)();</code>
 </p>
 <p>or the ANSI-C style declaration
 </p>
-<p><code>int (*func)(int, int);</code>
+<p><code class="code">int (*func)(int, int);</code>
 </p>
 <p>we may write
 </p>
-<p><code>rl_command_func_t *func;</code>
+<p><code class="code">rl_command_func_t *func;</code>
 </p>
 <p>The full list of function pointer types available is
 </p>
-<dl compact="compact">
-<dt><span><code>typedef int rl_command_func_t (int, int);</code></span></dt>
-<dt><span><code>typedef char *rl_compentry_func_t (const char *, int);</code></span></dt>
-<dt><span><code>typedef char **rl_completion_func_t (const char *, int, int);</code></span></dt>
-<dt><span><code>typedef char *rl_quote_func_t (char *, int, char *);</code></span></dt>
-<dt><span><code>typedef char *rl_dequote_func_t (char *, int);</code></span></dt>
-<dt><span><code>typedef int rl_compignore_func_t (char **);</code></span></dt>
-<dt><span><code>typedef void rl_compdisp_func_t (char **, int, int);</code></span></dt>
-<dt><span><code>typedef int rl_hook_func_t (void);</code></span></dt>
-<dt><span><code>typedef int rl_getc_func_t (FILE *);</code></span></dt>
-<dt><span><code>typedef int rl_linebuf_func_t (char *, int);</code></span></dt>
-<dt><span><code>typedef int rl_intfunc_t (int);</code></span></dt>
-<dt><span><code>#define rl_ivoidfunc_t rl_hook_func_t</code></span></dt>
-<dt><span><code>typedef int rl_icpfunc_t (char *);</code></span></dt>
-<dt><span><code>typedef int rl_icppfunc_t (char **);</code></span></dt>
-<dt><span><code>typedef void rl_voidfunc_t (void);</code></span></dt>
-<dt><span><code>typedef void rl_vintfunc_t (int);</code></span></dt>
-<dt><span><code>typedef void rl_vcpfunc_t (char *);</code></span></dt>
-<dt><span><code>typedef void rl_vcppfunc_t (char **);</code></span></dt>
+<dl class="table">
+<dt><code class="code">typedef int rl_command_func_t (int, int);</code></dt>
+<dt><code class="code">typedef char *rl_compentry_func_t (const char *, int);</code></dt>
+<dt><code class="code">typedef char **rl_completion_func_t (const char *, int, int);</code></dt>
+<dt><code class="code">typedef char *rl_quote_func_t (char *, int, char *);</code></dt>
+<dt><code class="code">typedef char *rl_dequote_func_t (char *, int);</code></dt>
+<dt><code class="code">typedef int rl_compignore_func_t (char **);</code></dt>
+<dt><code class="code">typedef void rl_compdisp_func_t (char **, int, int);</code></dt>
+<dt><code class="code">typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);</code></dt>
+<dt><code class="code">typedef int rl_hook_func_t (void);</code></dt>
+<dt><code class="code">typedef int rl_getc_func_t (FILE *);</code></dt>
+<dt><code class="code">typedef int rl_linebuf_func_t (char *, int);</code></dt>
+<dt><code class="code">typedef int rl_intfunc_t (int);</code></dt>
+<dt><code class="code">#define rl_ivoidfunc_t rl_hook_func_t</code></dt>
+<dt><code class="code">typedef int rl_icpfunc_t (char *);</code></dt>
+<dt><code class="code">typedef int rl_icppfunc_t (char **);</code></dt>
+<dt><code class="code">typedef void rl_voidfunc_t (void);</code></dt>
+<dt><code class="code">typedef void rl_vintfunc_t (int);</code></dt>
+<dt><code class="code">typedef void rl_vcpfunc_t (char *);</code></dt>
+<dt><code class="code">typedef void rl_vcppfunc_t (char **);</code></dt>
 </dl>
 
+<p>The <samp class="file">rltypedefs.h</samp> file has more documentation for these types.
+</p>
 <hr>
 </div>
-<div class="subsection" id="Function-Writing">
-<div class="header">
+<div class="subsection-level-extent" id="Function-Writing">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Readline-Typedefs" accesskey="p" rel="prev">Readline Typedefs</a>, Up: <a href="#Custom-Functions" accesskey="u" rel="up">Custom Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Writing-a-New-Function"></span><h4 class="subsection">2.2.2 Writing a New Function</h4>
+<h4 class="subsection" id="Writing-a-New-Function"><span>2.2.2 Writing a New Function<a class="copiable-link" href="#Writing-a-New-Function"> &para;</a></span></h4>
 
 <p>In order to write new functions for Readline, you need to know the
 calling conventions for keyboard-invoked functions, and the names of the
 variables that describe the current state of the line read so far.
 </p>
-<p>The calling sequence for a command <code>foo</code> looks like
+<p>The calling sequence for a command <code class="code">foo</code> looks like
 </p>
 <div class="example">
-<pre class="example"><code>int foo (int count, int key)</code>
+<pre class="example-preformatted"><code class="code">int foo (int count, int key)</code>
 </pre></div>
 
-<p>where <var>count</var> is the numeric argument (or 1 if defaulted) and
-<var>key</var> is the key that invoked this function.
+<p>where <var class="var">count</var> is the numeric argument (or 1 if defaulted) and
+<var class="var">key</var> is the key that invoked this function.
 </p>
 <p>It is completely up to the function as to what should be done with the
-numeric argument.  Some functions use it as a repeat count, some
+numeric argument.
+Some functions use it as a repeat count, some
 as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example).  Some choose to
-ignore it.  In general, if a
+line as opposed to refreshing the screen, for example).
+Some choose to ignore it.
+In general, if a
 function uses the numeric argument as a repeat count, it should be able
 to do something useful with both negative and positive arguments.
 At the very least, it should be aware that it can be passed a
@@ -2345,434 +2548,465 @@ negative argument.
 </p>
 <p>A command function should return 0 if its action completes successfully,
 and a value greater than zero if some error occurs.
-This is the convention obeyed by all of the builtin Readline bindable
-command functions.
+All of the builtin Readline bindable command functions
+obey this convention.
 </p>
 <hr>
 </div>
 </div>
-<div class="section" id="Readline-Variables">
-<div class="header">
+<div class="section-level-extent" id="Readline-Variables">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Convenience-Functions" accesskey="n" rel="next">Readline Convenience Functions</a>, Previous: <a href="#Custom-Functions" accesskey="p" rel="prev">Custom Functions</a>, Up: <a href="#Programming-with-GNU-Readline" accesskey="u" rel="up">Programming with GNU Readline</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Variables-1"></span><h3 class="section">2.3 Readline Variables</h3>
+<h3 class="section" id="Readline-Variables-1"><span>2.3 Readline Variables<a class="copiable-link" href="#Readline-Variables-1"> &para;</a></span></h3>
 
 <p>These variables are available to function writers.
 </p>
-<dl class="def">
-<dt id="index-rl_005fline_005fbuffer"><span class="category">Variable: </span><span><em>char *</em> <strong>rl_line_buffer</strong><a href='#index-rl_005fline_005fbuffer' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This is the line gathered so far.  You are welcome to modify the
-contents of the line, but see <a href="#Allowing-Undoing">Allowing Undoing</a>.  The
-function <code>rl_extend_line_buffer</code> is available to increase
-the memory allocated to <code>rl_line_buffer</code>.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fline_005fbuffer"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_line_buffer</strong><a class="copiable-link" href="#index-rl_005fline_005fbuffer"> &para;</a></span></dt>
+<dd><p>This is the line gathered so far.
+You are welcome to modify the contents of the line,
+but see <a class="ref" href="#Allowing-Undoing">Allowing Undoing</a>.
+The function <code class="code">rl_extend_line_buffer</code> will increase
+the memory allocated to <code class="code">rl_line_buffer</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fpoint"><span class="category">Variable: </span><span><em>int</em> <strong>rl_point</strong><a href='#index-rl_005fpoint' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The offset of the current cursor position in <code>rl_line_buffer</code>
-(the <em>point</em>).
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fpoint"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_point</strong><a class="copiable-link" href="#index-rl_005fpoint"> &para;</a></span></dt>
+<dd><p>The offset of the current cursor position in <code class="code">rl_line_buffer</code>
+(the <em class="emph">point</em>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fend"><span class="category">Variable: </span><span><em>int</em> <strong>rl_end</strong><a href='#index-rl_005fend' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The number of characters present in <code>rl_line_buffer</code>.  When
-<code>rl_point</code> is at the end of the line, <code>rl_point</code> and
-<code>rl_end</code> are equal.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fend"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_end</strong><a class="copiable-link" href="#index-rl_005fend"> &para;</a></span></dt>
+<dd><p>The number of characters present in <code class="code">rl_line_buffer</code>.
+When <code class="code">rl_point</code> is at the end of the line,
+<code class="code">rl_point</code> and <code class="code">rl_end</code> are equal.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fmark"><span class="category">Variable: </span><span><em>int</em> <strong>rl_mark</strong><a href='#index-rl_005fmark' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The <var>mark</var> (saved position) in the current line.  If set, the mark
-and point define a <em>region</em>.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fmark"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_mark</strong><a class="copiable-link" href="#index-rl_005fmark"> &para;</a></span></dt>
+<dd><p>The <var class="var">mark</var> (saved position) in the current line.
+If set, the mark and point define a <em class="emph">region</em>.
+Some Readline commands set the mark as part of operating;
+users can also set the mark explicitly.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdone"><span class="category">Variable: </span><span><em>int</em> <strong>rl_done</strong><a href='#index-rl_005fdone' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fdone"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_done</strong><a class="copiable-link" href="#index-rl_005fdone"> &para;</a></span></dt>
 <dd><p>Setting this to a non-zero value causes Readline to return the current
 line immediately.
 Readline will set this variable when it has read a key sequence bound
-to <code>accept-line</code> and is about to return the line to the caller.
+to <code class="code">accept-line</code> and is about to return the line to the caller.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005feof_005ffound"><span class="category">Variable: </span><span><em>int</em> <strong>rl_eof_found</strong><a href='#index-rl_005feof_005ffound' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Readline will set this variable when it has read an EOF character (e.g., the
-stty &lsquo;<samp>EOF</samp>&rsquo; character) on an empty line or encountered a read error and
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005feof_005ffound"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_eof_found</strong><a class="copiable-link" href="#index-rl_005feof_005ffound"> &para;</a></span></dt>
+<dd><p>Readline will set this variable when it has read an EOF character
+(e.g., the stty &lsquo;<samp class="samp">EOF</samp>&rsquo; character) on an empty line
+or has encountered a read error or EOF and 
 is about to return a NULL line to the caller.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fnum_005fchars_005fto_005fread"><span class="category">Variable: </span><span><em>int</em> <strong>rl_num_chars_to_read</strong><a href='#index-rl_005fnum_005fchars_005fto_005fread' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Setting this to a positive value before calling <code>readline()</code> causes
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fnum_005fchars_005fto_005fread"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_num_chars_to_read</strong><a class="copiable-link" href="#index-rl_005fnum_005fchars_005fto_005fread"> &para;</a></span></dt>
+<dd><p>Setting this to a positive value before calling <code class="code">readline()</code> causes
 Readline to return after accepting that many characters, rather
-than reading up to a character bound to <code>accept-line</code>.
+than reading up to a character bound to <code class="code">accept-line</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fpending_005finput"><span class="category">Variable: </span><span><em>int</em> <strong>rl_pending_input</strong><a href='#index-rl_005fpending_005finput' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Setting this to a value makes it the next keystroke read.  This is a
-way to stuff a single character into the input stream.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fpending_005finput"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_pending_input</strong><a class="copiable-link" href="#index-rl_005fpending_005finput"> &para;</a></span></dt>
+<dd><p>Setting this to a value makes it the next keystroke read.
+This is a way to stuff a single character into the input stream.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdispatching"><span class="category">Variable: </span><span><em>int</em> <strong>rl_dispatching</strong><a href='#index-rl_005fdispatching' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fdispatching"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_dispatching</strong><a class="copiable-link" href="#index-rl_005fdispatching"> &para;</a></span></dt>
 <dd><p>Set to a non-zero value if a function is being called from a key binding;
-zero otherwise.  Application functions can test this to discover whether
+zero otherwise.
+Application functions can test this to discover whether
 they were called directly or by Readline&rsquo;s dispatching mechanism.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ferase_005fempty_005fline"><span class="category">Variable: </span><span><em>int</em> <strong>rl_erase_empty_line</strong><a href='#index-rl_005ferase_005fempty_005fline' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ferase_005fempty_005fline"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_erase_empty_line</strong><a class="copiable-link" href="#index-rl_005ferase_005fempty_005fline"> &para;</a></span></dt>
 <dd><p>Setting this to a non-zero value causes Readline to completely erase
 the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line.  The cursor is moved to
-the beginning of the newly-blank line.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fprompt"><span class="category">Variable: </span><span><em>char *</em> <strong>rl_prompt</strong><a href='#index-rl_005fprompt' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The prompt Readline uses.  This is set from the argument to
-<code>readline()</code>, and should not be assigned to directly.
-The <code>rl_set_prompt()</code> function (see <a href="#Redisplay">Redisplay</a>) may
-be used to modify the prompt string after calling <code>readline()</code>.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fdisplay_005fprompt"><span class="category">Variable: </span><span><em>char *</em> <strong>rl_display_prompt</strong><a href='#index-rl_005fdisplay_005fprompt' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The string displayed as the prompt.  This is usually identical to
-<var>rl_prompt</var>, but may be changed temporarily by functions that
+the only character on an otherwise-empty line.
+This moves the cursor to the beginning of the newly-blank line.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fprompt"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_prompt</strong><a class="copiable-link" href="#index-rl_005fprompt"> &para;</a></span></dt>
+<dd><p>The prompt Readline uses.
+This is set from the argument to
+<code class="code">readline()</code>, and should not be assigned to directly.
+The <code class="code">rl_set_prompt()</code> function (see <a class="pxref" href="#Redisplay">Redisplay</a>) may
+be used to modify the prompt string after calling <code class="code">readline()</code>.
+Readline performs some prompt expansions and analyzes the prompt for
+line breaks, so <code class="code">rl_set_prompt()</code> is preferred.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fdisplay_005fprompt"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_display_prompt</strong><a class="copiable-link" href="#index-rl_005fdisplay_005fprompt"> &para;</a></span></dt>
+<dd><p>The string displayed as the prompt.
+This is usually identical to
+<var class="var">rl_prompt</var>, but may be changed temporarily by functions that
 use the prompt string as a message area, such as incremental search.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005falready_005fprompted"><span class="category">Variable: </span><span><em>int</em> <strong>rl_already_prompted</strong><a href='#index-rl_005falready_005fprompted' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005falready_005fprompted"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_already_prompted</strong><a class="copiable-link" href="#index-rl_005falready_005fprompted"> &para;</a></span></dt>
 <dd><p>If an application wishes to display the prompt itself, rather than have
-Readline do it the first time <code>readline()</code> is called, it should set
+Readline do it the first time <code class="code">readline()</code> is called, it should set
 this variable to a non-zero value after displaying the prompt.
-The prompt must also be passed as the argument to <code>readline()</code> so
+The prompt must also be passed as the argument to <code class="code">readline()</code> so
 the redisplay functions can update the display properly.
 The calling application is responsible for managing the value; Readline
 never sets it.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005flibrary_005fversion"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_library_version</strong><a href='#index-rl_005flibrary_005fversion' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The version number of this revision of the library.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005flibrary_005fversion"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_library_version</strong><a class="copiable-link" href="#index-rl_005flibrary_005fversion"> &para;</a></span></dt>
+<dd><p>The version number of this revision of the Readline library, as a string
+(e.g., &quot;4.2&quot;).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freadline_005fversion"><span class="category">Variable: </span><span><em>int</em> <strong>rl_readline_version</strong><a href='#index-rl_005freadline_005fversion' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>An integer encoding the current version of the library.  The encoding is
-of the form 0x<var>MMmm</var>, where <var>MM</var> is the two-digit major version
-number, and <var>mm</var> is the two-digit minor version number.
-For example, for Readline-4.2, <code>rl_readline_version</code> would have the
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005freadline_005fversion"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_readline_version</strong><a class="copiable-link" href="#index-rl_005freadline_005fversion"> &para;</a></span></dt>
+<dd><p>An integer encoding the current version of the library.
+The encoding is of the form 0x<var class="var">MMmm</var>,
+where <var class="var">MM</var> is the two-digit major version number,
+and <var class="var">mm</var> is the two-digit minor version number.
+For example, for Readline-4.2, <code class="code">rl_readline_version</code> would have the
 value 0x0402.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fgnu_005freadline_005fp"><span class="category">Variable: </span><span><em>int</em> <strong>rl_gnu_readline_p</strong><a href='#index-rl_005fgnu_005freadline_005fp' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Always set to 1, denoting that this is <small>GNU</small> Readline rather than some
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fgnu_005freadline_005fp"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_gnu_readline_p</strong><a class="copiable-link" href="#index-rl_005fgnu_005freadline_005fp"> &para;</a></span></dt>
+<dd><p>Always set to 1, denoting that this is <small class="sc">GNU</small> Readline rather than some
 emulation.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fterminal_005fname"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_terminal_name</strong><a href='#index-rl_005fterminal_005fname' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The terminal type, used for initialization.  If not set by the application,
-Readline sets this to the value of the <code>TERM</code> environment variable
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fterminal_005fname"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_terminal_name</strong><a class="copiable-link" href="#index-rl_005fterminal_005fname"> &para;</a></span></dt>
+<dd><p>The terminal type, used for initialization.
+If not set by the application,
+Readline sets this to the value of the <code class="env">TERM</code> environment variable
 the first time it is called.
+Readline uses this to look up the terminal capabilities it needs in
+the terminfo database.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freadline_005fname"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_readline_name</strong><a href='#index-rl_005freadline_005fname' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005freadline_005fname"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_readline_name</strong><a class="copiable-link" href="#index-rl_005freadline_005fname"> &para;</a></span></dt>
 <dd><p>This variable is set to a unique name by each application using Readline.
 The value allows conditional parsing of the inputrc file
-(see <a href="#Conditional-Init-Constructs">Conditional Init Constructs</a>).
+(see <a class="pxref" href="#Conditional-Init-Constructs">Conditional Init Constructs</a>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005finstream"><span class="category">Variable: </span><span><em>FILE *</em> <strong>rl_instream</strong><a href='#index-rl_005finstream' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005finstream"><span class="category-def">Variable: </span><span><code class="def-type">FILE *</code> <strong class="def-name">rl_instream</strong><a class="copiable-link" href="#index-rl_005finstream"> &para;</a></span></dt>
 <dd><p>The stdio stream from which Readline reads input.
-If <code>NULL</code>, Readline defaults to <var>stdin</var>.
+If <code class="code">NULL</code>, Readline defaults to <var class="var">stdin</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005foutstream"><span class="category">Variable: </span><span><em>FILE *</em> <strong>rl_outstream</strong><a href='#index-rl_005foutstream' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005foutstream"><span class="category-def">Variable: </span><span><code class="def-type">FILE *</code> <strong class="def-name">rl_outstream</strong><a class="copiable-link" href="#index-rl_005foutstream"> &para;</a></span></dt>
 <dd><p>The stdio stream to which Readline performs output.
-If <code>NULL</code>, Readline defaults to <var>stdout</var>.
+If <code class="code">NULL</code>, Readline defaults to <var class="var">stdout</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fprefer_005fenv_005fwinsize"><span class="category">Variable: </span><span><em>int</em> <strong>rl_prefer_env_winsize</strong><a href='#index-rl_005fprefer_005fenv_005fwinsize' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If non-zero, Readline gives values found in the <code>LINES</code> and
-<code>COLUMNS</code> environment variables greater precedence than values fetched
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fprefer_005fenv_005fwinsize"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_prefer_env_winsize</strong><a class="copiable-link" href="#index-rl_005fprefer_005fenv_005fwinsize"> &para;</a></span></dt>
+<dd><p>If non-zero, Readline gives values found in the <code class="env">LINES</code> and
+<code class="env">COLUMNS</code> environment variables greater precedence than values fetched
 from the kernel when computing the screen dimensions.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005flast_005ffunc"><span class="category">Variable: </span><span><em>rl_command_func_t *</em> <strong>rl_last_func</strong><a href='#index-rl_005flast_005ffunc' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The address of the last command function Readline executed.  May be used to
-test whether or not a function is being executed twice in succession, for
-example.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005flast_005ffunc"><span class="category-def">Variable: </span><span><code class="def-type">rl_command_func_t *</code> <strong class="def-name">rl_last_func</strong><a class="copiable-link" href="#index-rl_005flast_005ffunc"> &para;</a></span></dt>
+<dd><p>The address of the last command function Readline executed.
+This may be used to test whether or not a function is being executed
+twice in succession, for example.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fstartup_005fhook"><span class="category">Variable: </span><span><em>rl_hook_func_t *</em> <strong>rl_startup_hook</strong><a href='#index-rl_005fstartup_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fstartup_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_hook_func_t *</code> <strong class="def-name">rl_startup_hook</strong><a class="copiable-link" href="#index-rl_005fstartup_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function to call just
-before <code>readline</code> prints the first prompt.
+before Readline prints the first prompt.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fpre_005finput_005fhook"><span class="category">Variable: </span><span><em>rl_hook_func_t *</em> <strong>rl_pre_input_hook</strong><a href='#index-rl_005fpre_005finput_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fpre_005finput_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_hook_func_t *</code> <strong class="def-name">rl_pre_input_hook</strong><a class="copiable-link" href="#index-rl_005fpre_005finput_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before <code>readline</code>
+the first prompt has been printed and just before Readline
 starts reading input characters.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fevent_005fhook"><span class="category">Variable: </span><span><em>rl_hook_func_t *</em> <strong>rl_event_hook</strong><a href='#index-rl_005fevent_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fevent_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_hook_func_t *</code> <strong class="def-name">rl_event_hook</strong><a class="copiable-link" href="#index-rl_005fevent_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function to call periodically
 when Readline is waiting for terminal input.
 By default, this will be called at most ten times a second if there
 is no keyboard input.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fgetc_005ffunction"><span class="category">Variable: </span><span><em>rl_getc_func_t *</em> <strong>rl_getc_function</strong><a href='#index-rl_005fgetc_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fgetc_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_getc_func_t *</code> <strong class="def-name">rl_getc_function</strong><a class="copiable-link" href="#index-rl_005fgetc_005ffunction"> &para;</a></span></dt>
 <dd><p>If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream.  By default, it is set to
-<code>rl_getc</code>, the default Readline character input function
-(see <a href="#Character-Input">Character Input</a>).
-In general, an application that sets <var>rl_getc_function</var> should consider
-setting <var>rl_input_available_hook</var> as well.
+to get a character from the input stream.
+By default, it is set to <code class="code">rl_getc</code>, the Readline character
+input function (see <a class="pxref" href="#Character-Input">Character Input</a>).
+In general, an application that sets <var class="var">rl_getc_function</var> should consider
+setting <var class="var">rl_input_available_hook</var> as well.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fsignal_005fevent_005fhook"><span class="category">Variable: </span><span><em>rl_hook_func_t *</em> <strong>rl_signal_event_hook</strong><a href='#index-rl_005fsignal_005fevent_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fsignal_005fevent_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_hook_func_t *</code> <strong class="def-name">rl_signal_event_hook</strong><a class="copiable-link" href="#index-rl_005fsignal_005fevent_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function to call if a read system
-call is interrupted when Readline is reading terminal input.
+call is interrupted by a signal when Readline is reading terminal input.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ftimeout_005fevent_005fhook"><span class="category">Variable: </span><span><em>rl_hook_func_t *</em> <strong>rl_timeout_event_hook</strong><a href='#index-rl_005ftimeout_005fevent_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ftimeout_005fevent_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_hook_func_t *</code> <strong class="def-name">rl_timeout_event_hook</strong><a class="copiable-link" href="#index-rl_005ftimeout_005fevent_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function to call if Readline times
 out while reading input.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005finput_005favailable_005fhook"><span class="category">Variable: </span><span><em>rl_hook_func_t *</em> <strong>rl_input_available_hook</strong><a href='#index-rl_005finput_005favailable_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005finput_005favailable_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_hook_func_t *</code> <strong class="def-name">rl_input_available_hook</strong><a class="copiable-link" href="#index-rl_005finput_005favailable_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, Readline will use this function&rsquo;s return value when it needs
 to determine whether or not there is available input on the current input
 source.
-The default hook checks <code>rl_instream</code>; if an application is using a
+The default hook checks <code class="code">rl_instream</code>; if an application is using a
 different input source, it should set the hook appropriately.
 Readline queries for available input when implementing intra-key-sequence
 timeouts during input and incremental searches.
+This function must return zero if there is no input available, and non-zero
+if input is available.
 This may use an application-specific timeout before returning a value;
-Readline uses the value passed to <code>rl_set_keyboard_input_timeout()</code>
-or the value of the user-settable <var>keyseq-timeout</var> variable.
+Readline uses the value passed to <code class="code">rl_set_keyboard_input_timeout()</code>
+or the value of the user-settable <var class="var">keyseq-timeout</var> variable.
 This is designed for use by applications using Readline&rsquo;s callback interface
-(see <a href="#Alternate-Interface">Alternate Interface</a>), which may not use the traditional
-<code>read(2)</code> and file descriptor interface, or other applications using
+(see <a class="pxref" href="#Alternate-Interface">Alternate Interface</a>), which may not use the traditional
+<code class="code">read(2)</code> and file descriptor interface, or other applications using
 a different input mechanism.
 If an application uses an input mechanism or hook that can potentially exceed
-the value of <var>keyseq-timeout</var>, it should increase the timeout or set
+the value of <var class="var">keyseq-timeout</var>, it should increase the timeout or set
 this hook appropriately even when not using the callback interface.
-In general, an application that sets <var>rl_getc_function</var> should consider
-setting <var>rl_input_available_hook</var> as well.
+In general, an application that sets <var class="var">rl_getc_function</var> should consider
+setting <var class="var">rl_input_available_hook</var> as well.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fredisplay_005ffunction"><span class="category">Variable: </span><span><em>rl_voidfunc_t *</em> <strong>rl_redisplay_function</strong><a href='#index-rl_005fredisplay_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If non-zero, Readline will call indirectly through this pointer
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fredisplay_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_voidfunc_t *</code> <strong class="def-name">rl_redisplay_function</strong><a class="copiable-link" href="#index-rl_005fredisplay_005ffunction"> &para;</a></span></dt>
+<dd><p>Readline will call indirectly through this pointer
 to update the display with the current contents of the editing buffer.
-By default, it is set to <code>rl_redisplay</code>, the default Readline
-redisplay function (see <a href="#Redisplay">Redisplay</a>).
+By default, it is set to <code class="code">rl_redisplay</code>, the default Readline
+redisplay function (see <a class="pxref" href="#Redisplay">Redisplay</a>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fprep_005fterm_005ffunction"><span class="category">Variable: </span><span><em>rl_vintfunc_t *</em> <strong>rl_prep_term_function</strong><a href='#index-rl_005fprep_005fterm_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fprep_005fterm_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_vintfunc_t *</code> <strong class="def-name">rl_prep_term_function</strong><a class="copiable-link" href="#index-rl_005fprep_005fterm_005ffunction"> &para;</a></span></dt>
 <dd><p>If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal.  The function takes a single argument, an
-<code>int</code> flag that says whether or not to use eight-bit characters.
-By default, this is set to <code>rl_prep_terminal</code>
-(see <a href="#Terminal-Management">Terminal Management</a>).
+to initialize the terminal.
+The function takes a single argument, an
+<code class="code">int</code> flag that says whether or not to use eight-bit characters.
+By default, this is set to <code class="code">rl_prep_terminal</code>
+(see <a class="pxref" href="#Terminal-Management">Terminal Management</a>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdeprep_005fterm_005ffunction"><span class="category">Variable: </span><span><em>rl_voidfunc_t *</em> <strong>rl_deprep_term_function</strong><a href='#index-rl_005fdeprep_005fterm_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fdeprep_005fterm_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_voidfunc_t *</code> <strong class="def-name">rl_deprep_term_function</strong><a class="copiable-link" href="#index-rl_005fdeprep_005fterm_005ffunction"> &para;</a></span></dt>
 <dd><p>If non-zero, Readline will call indirectly through this pointer
-to reset the terminal.  This function should undo the effects of
-<code>rl_prep_term_function</code>.
-By default, this is set to <code>rl_deprep_terminal</code>
-(see <a href="#Terminal-Management">Terminal Management</a>).
+to reset the terminal.
+This function should undo the effects of <code class="code">rl_prep_term_function</code>.
+By default, this is set to <code class="code">rl_deprep_terminal</code>
+(see <a class="pxref" href="#Terminal-Management">Terminal Management</a>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fexecuting_005fkeymap"><span class="category">Variable: </span><span><em>Keymap</em> <strong>rl_executing_keymap</strong><a href='#index-rl_005fexecuting_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable is set to the keymap (see <a href="#Keymaps">Selecting a Keymap</a>) in which the
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fmacro_005fdisplay_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">void</code> <strong class="def-name">rl_macro_display_hook</strong><a class="copiable-link" href="#index-rl_005fmacro_005fdisplay_005fhook"> &para;</a></span></dt>
+<dd><p>If set, this points to a function that <code class="code">rl_macro_dumper</code> will call to
+display a key sequence bound to a macro.
+It is called with the key sequence, the &quot;untranslated&quot; macro value (i.e.,
+with backslash escapes included, as when passed to <code class="code">rl_macro_bind</code>),
+the <code class="code">readable</code> argument passed to <code class="code">rl_macro_dumper</code>, and any
+prefix to display before the key sequence.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fexecuting_005fkeymap"><span class="category-def">Variable: </span><span><code class="def-type">Keymap</code> <strong class="def-name">rl_executing_keymap</strong><a class="copiable-link" href="#index-rl_005fexecuting_005fkeymap"> &para;</a></span></dt>
+<dd><p>This variable is set to the keymap (see <a class="pxref" href="#Keymaps">Selecting a Keymap</a>) in which the
 currently executing Readline function was found.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbinding_005fkeymap"><span class="category">Variable: </span><span><em>Keymap</em> <strong>rl_binding_keymap</strong><a href='#index-rl_005fbinding_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable is set to the keymap (see <a href="#Keymaps">Selecting a Keymap</a>) in which the
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fbinding_005fkeymap"><span class="category-def">Variable: </span><span><code class="def-type">Keymap</code> <strong class="def-name">rl_binding_keymap</strong><a class="copiable-link" href="#index-rl_005fbinding_005fkeymap"> &para;</a></span></dt>
+<dd><p>This variable is set to the keymap (see <a class="pxref" href="#Keymaps">Selecting a Keymap</a>) in which the
 last key binding occurred.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fexecuting_005fmacro"><span class="category">Variable: </span><span><em>char *</em> <strong>rl_executing_macro</strong><a href='#index-rl_005fexecuting_005fmacro' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fexecuting_005fmacro"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_executing_macro</strong><a class="copiable-link" href="#index-rl_005fexecuting_005fmacro"> &para;</a></span></dt>
 <dd><p>This variable is set to the text of any currently-executing macro.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fexecuting_005fkey"><span class="category">Variable: </span><span><em>int</em> <strong>rl_executing_key</strong><a href='#index-rl_005fexecuting_005fkey' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fexecuting_005fkey"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_executing_key</strong><a class="copiable-link" href="#index-rl_005fexecuting_005fkey"> &para;</a></span></dt>
 <dd><p>The key that caused the dispatch to the currently-executing Readline function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fexecuting_005fkeyseq"><span class="category">Variable: </span><span><em>char *</em> <strong>rl_executing_keyseq</strong><a href='#index-rl_005fexecuting_005fkeyseq' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fexecuting_005fkeyseq"><span class="category-def">Variable: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_executing_keyseq</strong><a class="copiable-link" href="#index-rl_005fexecuting_005fkeyseq"> &para;</a></span></dt>
 <dd><p>The full key sequence that caused the dispatch to the currently-executing
 Readline function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fkey_005fsequence_005flength"><span class="category">Variable: </span><span><em>int</em> <strong>rl_key_sequence_length</strong><a href='#index-rl_005fkey_005fsequence_005flength' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The number of characters in <var>rl_executing_keyseq</var>.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fkey_005fsequence_005flength"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_key_sequence_length</strong><a class="copiable-link" href="#index-rl_005fkey_005fsequence_005flength"> &para;</a></span></dt>
+<dd><p>The number of characters in <var class="var">rl_executing_keyseq</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freadline_005fstate"><span class="category">Variable: </span><span><em>int</em> <strong>rl_readline_state</strong><a href='#index-rl_005freadline_005fstate' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005freadline_005fstate"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_readline_state</strong><a class="copiable-link" href="#index-rl_005freadline_005fstate"> &para;</a></span></dt>
 <dd><p>A variable with bit values that encapsulate the current Readline state.
-A bit is set with the <code>RL_SETSTATE</code> macro, and unset with the
-<code>RL_UNSETSTATE</code> macro.  Use the <code>RL_ISSTATE</code> macro to test
-whether a particular state bit is set.  Current state bits include:
-</p>
-<dl compact="compact">
-<dt><span><code>RL_STATE_NONE</code></span></dt>
+A bit is set with the <code class="code">RL_SETSTATE</code> macro, and unset with the
+<code class="code">RL_UNSETSTATE</code> macro.
+Use the <code class="code">RL_ISSTATE</code> macro to test whether a particular state
+bit is set.
+Current state bits include:
+</p>
+<dl class="table">
+<dt><code class="code">RL_STATE_NONE</code></dt>
 <dd><p>Readline has not yet been called, nor has it begun to initialize.
 </p></dd>
-<dt><span><code>RL_STATE_INITIALIZING</code></span></dt>
+<dt><code class="code">RL_STATE_INITIALIZING</code></dt>
 <dd><p>Readline is initializing its internal data structures.
 </p></dd>
-<dt><span><code>RL_STATE_INITIALIZED</code></span></dt>
+<dt><code class="code">RL_STATE_INITIALIZED</code></dt>
 <dd><p>Readline has completed its initialization.
 </p></dd>
-<dt><span><code>RL_STATE_TERMPREPPED</code></span></dt>
+<dt><code class="code">RL_STATE_TERMPREPPED</code></dt>
 <dd><p>Readline has modified the terminal modes to do its own input and redisplay.
 </p></dd>
-<dt><span><code>RL_STATE_READCMD</code></span></dt>
+<dt><code class="code">RL_STATE_READCMD</code></dt>
 <dd><p>Readline is reading a command from the keyboard.
 </p></dd>
-<dt><span><code>RL_STATE_METANEXT</code></span></dt>
+<dt><code class="code">RL_STATE_METANEXT</code></dt>
 <dd><p>Readline is reading more input after reading the meta-prefix character.
 </p></dd>
-<dt><span><code>RL_STATE_DISPATCHING</code></span></dt>
+<dt><code class="code">RL_STATE_DISPATCHING</code></dt>
 <dd><p>Readline is dispatching to a command.
 </p></dd>
-<dt><span><code>RL_STATE_MOREINPUT</code></span></dt>
+<dt><code class="code">RL_STATE_MOREINPUT</code></dt>
 <dd><p>Readline is reading more input while executing an editing command.
 </p></dd>
-<dt><span><code>RL_STATE_ISEARCH</code></span></dt>
+<dt><code class="code">RL_STATE_ISEARCH</code></dt>
 <dd><p>Readline is performing an incremental history search.
 </p></dd>
-<dt><span><code>RL_STATE_NSEARCH</code></span></dt>
+<dt><code class="code">RL_STATE_NSEARCH</code></dt>
 <dd><p>Readline is performing a non-incremental history search.
 </p></dd>
-<dt><span><code>RL_STATE_SEARCH</code></span></dt>
+<dt><code class="code">RL_STATE_SEARCH</code></dt>
 <dd><p>Readline is searching backward or forward through the history for a string.
 </p></dd>
-<dt><span><code>RL_STATE_NUMERICARG</code></span></dt>
+<dt><code class="code">RL_STATE_NUMERICARG</code></dt>
 <dd><p>Readline is reading a numeric argument.
 </p></dd>
-<dt><span><code>RL_STATE_MACROINPUT</code></span></dt>
+<dt><code class="code">RL_STATE_MACROINPUT</code></dt>
 <dd><p>Readline is currently getting its input from a previously-defined keyboard
 macro.
 </p></dd>
-<dt><span><code>RL_STATE_MACRODEF</code></span></dt>
+<dt><code class="code">RL_STATE_MACRODEF</code></dt>
 <dd><p>Readline is currently reading characters defining a keyboard macro.
 </p></dd>
-<dt><span><code>RL_STATE_OVERWRITE</code></span></dt>
+<dt><code class="code">RL_STATE_OVERWRITE</code></dt>
 <dd><p>Readline is in overwrite mode.
 </p></dd>
-<dt><span><code>RL_STATE_COMPLETING</code></span></dt>
+<dt><code class="code">RL_STATE_COMPLETING</code></dt>
 <dd><p>Readline is performing word completion.
 </p></dd>
-<dt><span><code>RL_STATE_SIGHANDLER</code></span></dt>
-<dd><p>Readline is currently executing the readline signal handler.
+<dt><code class="code">RL_STATE_SIGHANDLER</code></dt>
+<dd><p>Readline is currently executing the Readline signal handler.
 </p></dd>
-<dt><span><code>RL_STATE_UNDOING</code></span></dt>
+<dt><code class="code">RL_STATE_UNDOING</code></dt>
 <dd><p>Readline is performing an undo.
 </p></dd>
-<dt><span><code>RL_STATE_INPUTPENDING</code></span></dt>
-<dd><p>Readline has input pending due to a call to <code>rl_execute_next()</code>.
+<dt><code class="code">RL_STATE_INPUTPENDING</code></dt>
+<dd><p>Readline has input pending due to a call to <code class="code">rl_execute_next()</code>.
 </p></dd>
-<dt><span><code>RL_STATE_TTYCSAVED</code></span></dt>
+<dt><code class="code">RL_STATE_TTYCSAVED</code></dt>
 <dd><p>Readline has saved the values of the terminal&rsquo;s special characters.
 </p></dd>
-<dt><span><code>RL_STATE_CALLBACK</code></span></dt>
+<dt><code class="code">RL_STATE_CALLBACK</code></dt>
 <dd><p>Readline is currently using the alternate (callback) interface
-(see <a href="#Alternate-Interface">Alternate Interface</a>).
+(see <a class="pxref" href="#Alternate-Interface">Alternate Interface</a>).
 </p></dd>
-<dt><span><code>RL_STATE_VIMOTION</code></span></dt>
+<dt><code class="code">RL_STATE_VIMOTION</code></dt>
 <dd><p>Readline is reading the argument to a vi-mode &quot;motion&quot; command.
 </p></dd>
-<dt><span><code>RL_STATE_MULTIKEY</code></span></dt>
+<dt><code class="code">RL_STATE_MULTIKEY</code></dt>
 <dd><p>Readline is reading a multiple-keystroke command.
 </p></dd>
-<dt><span><code>RL_STATE_VICMDONCE</code></span></dt>
+<dt><code class="code">RL_STATE_VICMDONCE</code></dt>
 <dd><p>Readline has entered vi command (movement) mode at least one time during
-the current call to <code>readline()</code>.
+the current call to <code class="code">readline()</code>.
 </p></dd>
-<dt><span><code>RL_STATE_DONE</code></span></dt>
-<dd><p>Readline has read a key sequence bound to <code>accept-line</code>
+<dt><code class="code">RL_STATE_DONE</code></dt>
+<dd><p>Readline has read a key sequence bound to <code class="code">accept-line</code>
 and is about to return the line to the caller.
 </p></dd>
-<dt><span><code>RL_STATE_TIMEOUT</code></span></dt>
+<dt><code class="code">RL_STATE_TIMEOUT</code></dt>
 <dd><p>Readline has timed out (it did not receive a line or specified number of
-characters before the timeout duration specified by <code>rl_set_timeout</code>
+characters before the timeout duration specified by <code class="code">rl_set_timeout</code>
 elapsed) and is returning that status to the caller.
 </p></dd>
-<dt><span><code>RL_STATE_EOF</code></span></dt>
-<dd><p>Readline has read an EOF character (e.g., the stty &lsquo;<samp>EOF</samp>&rsquo; character)
-or encountered a read error and is about to return a NULL line to the caller.
+<dt><code class="code">RL_STATE_EOF</code></dt>
+<dd><p>Readline has read an EOF character (e.g., the stty &lsquo;<samp class="samp">EOF</samp>&rsquo; character)
+or encountered a read error or EOF
+and is about to return a NULL line to the caller.
 </p></dd>
 </dl>
 
 </dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fexplicit_005farg"><span class="category">Variable: </span><span><em>int</em> <strong>rl_explicit_arg</strong><a href='#index-rl_005fexplicit_005farg' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fexplicit_005farg"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_explicit_arg</strong><a class="copiable-link" href="#index-rl_005fexplicit_005farg"> &para;</a></span></dt>
 <dd><p>Set to a non-zero value if an explicit numeric argument was specified by
-the user.  Only valid in a bindable command function.
+the user.
+It is only valid in a bindable command function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fnumeric_005farg"><span class="category">Variable: </span><span><em>int</em> <strong>rl_numeric_arg</strong><a href='#index-rl_005fnumeric_005farg' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fnumeric_005farg"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_numeric_arg</strong><a class="copiable-link" href="#index-rl_005fnumeric_005farg"> &para;</a></span></dt>
 <dd><p>Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function.  Only valid in a bindable
-command function.
+before executing the current Readline function.
+It is only valid in a bindable command function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fediting_005fmode"><span class="category">Variable: </span><span><em>int</em> <strong>rl_editing_mode</strong><a href='#index-rl_005fediting_005fmode' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set to a value denoting Readline&rsquo;s current editing mode.  A value of
-<var>1</var> means Readline is currently in emacs mode; <var>0</var>
-means that vi mode is active.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fediting_005fmode"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_editing_mode</strong><a class="copiable-link" href="#index-rl_005fediting_005fmode"> &para;</a></span></dt>
+<dd><p>Set to a value denoting Readline&rsquo;s current editing mode.
+A value of <var class="var">1</var> means Readline is currently in emacs mode;
+<var class="var">0</var> means that vi mode is active.
+This determines the current keymap and key bindings.
 </p></dd></dl>
 
-
 <hr>
 </div>
-<div class="section" id="Readline-Convenience-Functions">
-<div class="header">
+<div class="section-level-extent" id="Readline-Convenience-Functions">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Signal-Handling" accesskey="n" rel="next">Readline Signal Handling</a>, Previous: <a href="#Readline-Variables" accesskey="p" rel="prev">Readline Variables</a>, Up: <a href="#Programming-with-GNU-Readline" accesskey="u" rel="up">Programming with GNU Readline</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Convenience-Functions-1"></span><h3 class="section">2.4 Readline Convenience Functions</h3>
+<h3 class="section" id="Readline-Convenience-Functions-1"><span>2.4 Readline Convenience Functions<a class="copiable-link" href="#Readline-Convenience-Functions-1"> &para;</a></span></h3>
 
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Function-Naming" accesskey="1">Naming a Function</a></li>
 <li><a href="#Keymaps" accesskey="2">Selecting a Keymap</a></li>
 <li><a href="#Binding-Keys" accesskey="3">Binding Keys</a></li>
@@ -2789,32 +3023,37 @@ Next: <a href="#Readline-Signal-Handling" accesskey="n" rel="next">Readline Sign
 <li><a href="#Alternate-Interface-Example">Alternate Interface Example</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Function-Naming">
-<div class="header">
+<div class="subsection-level-extent" id="Function-Naming">
+<div class="nav-panel">
 <p>
 Next: <a href="#Keymaps" accesskey="n" rel="next">Selecting a Keymap</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Naming-a-Function"></span><h4 class="subsection">2.4.1 Naming a Function</h4>
+<h4 class="subsection" id="Naming-a-Function"><span>2.4.1 Naming a Function<a class="copiable-link" href="#Naming-a-Function"> &para;</a></span></h4>
 
-<p>The user can dynamically change the bindings of keys while using
-Readline.  This is done by representing the function with a descriptive
-name.  The user is able to type the descriptive name when referring to
-the function.  Thus, in an init file, one might find
+<p>Readline has a descriptive
+string name for every function a user can bind to a key sequence,
+so users can dynamically change the bindings associated with key
+sequences while using Readline,
+using the descriptive name when referring to the function.
+Thus, in an init file, one might find
 </p>
 <div class="example">
-<pre class="example">Meta-Rubout:      backward-kill-word
+<pre class="example-preformatted">Meta-Rubout: backward-kill-word
 </pre></div>
 
-<p>This binds the keystroke <tt class="key">Meta-Rubout</tt> to the function
-<em>descriptively</em> named <code>backward-kill-word</code>.  You, as the
-programmer, should bind the functions you write to descriptive names as
-well.  Readline provides a function for doing that:
+<p>This binds the keystroke <kbd class="key">Meta-Rubout</kbd> to the function
+<em class="emph">descriptively</em> named <code class="code">backward-kill-word</code>.
+As the programmer, you
+should bind the functions you write to descriptive names as well.
+Readline provides a function for doing that:
 </p>
-<dl class="def">
-<dt id="index-rl_005fadd_005fdefun"><span class="category">Function: </span><span><em>int</em> <strong>rl_add_defun</strong> <em>(const char *name, rl_command_func_t *function, int key)</em><a href='#index-rl_005fadd_005fdefun' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Add <var>name</var> to the list of named functions.  Make <var>function</var> be
-the function that gets called.  If <var>key</var> is not -1, then bind it to
-<var>function</var> using <code>rl_bind_key()</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fadd_005fdefun"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_add_defun</strong> <code class="def-code-arguments">(const char *name, rl_command_func_t *function, int key)</code><a class="copiable-link" href="#index-rl_005fadd_005fdefun"> &para;</a></span></dt>
+<dd><p>Add <var class="var">name</var> to the list of named functions.
+Make <var class="var">function</var> be the function that gets called by key sequences
+that bind to <var class="var">name</var>.
+If <var class="var">key</var> is not -1, then bind it to
+<var class="var">function</var> using <code class="code">rl_bind_key()</code>.
 </p></dd></dl>
 
 <p>Using this function alone is sufficient for most applications.
@@ -2825,1009 +3064,1071 @@ you may need to use the underlying functions described below.
 </p>
 <hr>
 </div>
-<div class="subsection" id="Keymaps">
-<div class="header">
+<div class="subsection-level-extent" id="Keymaps">
+<div class="nav-panel">
 <p>
 Next: <a href="#Binding-Keys" accesskey="n" rel="next">Binding Keys</a>, Previous: <a href="#Function-Naming" accesskey="p" rel="prev">Naming a Function</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Selecting-a-Keymap"></span><h4 class="subsection">2.4.2 Selecting a Keymap</h4>
+<h4 class="subsection" id="Selecting-a-Keymap"><span>2.4.2 Selecting a Keymap<a class="copiable-link" href="#Selecting-a-Keymap"> &para;</a></span></h4>
 
-<p>Key bindings take place on a <em>keymap</em>.  The keymap is the
-association between the keys that the user types and the functions that
-get run.  You can make your own keymaps, copy existing keymaps, and tell
+<p>Key bindings take place on a <em class="dfn">keymap</em>.
+The keymap is the association between the keys that the user types and
+the functions that get run.
+You can make your own keymaps, copy existing keymaps, and tell
 Readline which keymap to use.
 </p>
-<dl class="def">
-<dt id="index-rl_005fmake_005fbare_005fkeymap"><span class="category">Function: </span><span><em>Keymap</em> <strong>rl_make_bare_keymap</strong> <em>(void)</em><a href='#index-rl_005fmake_005fbare_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Returns a new, empty keymap.  The space for the keymap is allocated with
-<code>malloc()</code>; the caller should free it by calling
-<code>rl_free_keymap()</code> when done.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fmake_005fbare_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">Keymap</code> <strong class="def-name">rl_make_bare_keymap</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fmake_005fbare_005fkeymap"> &para;</a></span></dt>
+<dd><p>Returns a new, empty keymap.
+The space for the keymap is allocated with
+<code class="code">malloc()</code>; the caller should free it by calling
+<code class="code">rl_free_keymap()</code> when done.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcopy_005fkeymap"><span class="category">Function: </span><span><em>Keymap</em> <strong>rl_copy_keymap</strong> <em>(Keymap map)</em><a href='#index-rl_005fcopy_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return a new keymap which is a copy of <var>map</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcopy_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">Keymap</code> <strong class="def-name">rl_copy_keymap</strong> <code class="def-code-arguments">(Keymap map)</code><a class="copiable-link" href="#index-rl_005fcopy_005fkeymap"> &para;</a></span></dt>
+<dd><p>Return a new keymap which is a copy of <var class="var">map</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fmake_005fkeymap"><span class="category">Function: </span><span><em>Keymap</em> <strong>rl_make_keymap</strong> <em>(void)</em><a href='#index-rl_005fmake_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fmake_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">Keymap</code> <strong class="def-name">rl_make_keymap</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fmake_005fkeymap"> &para;</a></span></dt>
 <dd><p>Return a new keymap with the printing characters bound to rl_insert,
 the lowercase Meta characters bound to run their equivalents, and
 the Meta digits bound to produce numeric arguments.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdiscard_005fkeymap"><span class="category">Function: </span><span><em>void</em> <strong>rl_discard_keymap</strong> <em>(Keymap keymap)</em><a href='#index-rl_005fdiscard_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Free the storage associated with the data in <var>keymap</var>.
-The caller should free <var>keymap</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fdiscard_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_discard_keymap</strong> <code class="def-code-arguments">(Keymap keymap)</code><a class="copiable-link" href="#index-rl_005fdiscard_005fkeymap"> &para;</a></span></dt>
+<dd><p>Free the storage associated with the data in <var class="var">keymap</var>.
+The caller should free <var class="var">keymap</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffree_005fkeymap"><span class="category">Function: </span><span><em>void</em> <strong>rl_free_keymap</strong> <em>(Keymap keymap)</em><a href='#index-rl_005ffree_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Free all storage associated with <var>keymap</var>.  This calls
-<code>rl_discard_keymap</code> to free subordindate keymaps and macros.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffree_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_free_keymap</strong> <code class="def-code-arguments">(Keymap keymap)</code><a class="copiable-link" href="#index-rl_005ffree_005fkeymap"> &para;</a></span></dt>
+<dd><p>Free all storage associated with <var class="var">keymap</var>.
+This calls <code class="code">rl_discard_keymap</code> to free subordinate
+keymaps and macros.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fempty_005fkeymap"><span class="category">Function: </span><span><em>int</em> <strong>rl_empty_keymap</strong> <em>(Keymap keymap)</em><a href='#index-rl_005fempty_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return non-zero if there are no keys bound to functions in <var>keymap</var>;
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fempty_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_empty_keymap</strong> <code class="def-code-arguments">(Keymap keymap)</code><a class="copiable-link" href="#index-rl_005fempty_005fkeymap"> &para;</a></span></dt>
+<dd><p>Return non-zero if there are no keys bound to functions in <var class="var">keymap</var>;
 zero if there are any keys bound.
 </p></dd></dl>
 
-<p>Readline has several internal keymaps.  These functions allow you to
-change which keymap is active.
+<p>Readline has several internal keymaps.
+These functions allow you to change which keymap is active.
+This is one way to switch editing modes, for example.
 </p>
-<dl class="def">
-<dt id="index-rl_005fget_005fkeymap"><span class="category">Function: </span><span><em>Keymap</em> <strong>rl_get_keymap</strong> <em>(void)</em><a href='#index-rl_005fget_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fget_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">Keymap</code> <strong class="def-name">rl_get_keymap</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fget_005fkeymap"> &para;</a></span></dt>
 <dd><p>Returns the currently active keymap.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005fkeymap"><span class="category">Function: </span><span><em>void</em> <strong>rl_set_keymap</strong> <em>(Keymap keymap)</em><a href='#index-rl_005fset_005fkeymap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Makes <var>keymap</var> the currently active keymap.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fkeymap"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_set_keymap</strong> <code class="def-code-arguments">(Keymap keymap)</code><a class="copiable-link" href="#index-rl_005fset_005fkeymap"> &para;</a></span></dt>
+<dd><p>Makes <var class="var">keymap</var> the currently active keymap.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fget_005fkeymap_005fby_005fname"><span class="category">Function: </span><span><em>Keymap</em> <strong>rl_get_keymap_by_name</strong> <em>(const char *name)</em><a href='#index-rl_005fget_005fkeymap_005fby_005fname' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return the keymap matching <var>name</var>.  <var>name</var> is one which would
-be supplied in a <code>set keymap</code> inputrc line (see <a href="#Readline-Init-File">Readline Init File</a>).
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fget_005fkeymap_005fby_005fname"><span class="category-def">Function: </span><span><code class="def-type">Keymap</code> <strong class="def-name">rl_get_keymap_by_name</strong> <code class="def-code-arguments">(const char *name)</code><a class="copiable-link" href="#index-rl_005fget_005fkeymap_005fby_005fname"> &para;</a></span></dt>
+<dd><p>Return the keymap matching <var class="var">name</var>.
+<var class="var">name</var> is one which would be supplied in a
+<code class="code">set keymap</code> inputrc line (see <a class="pxref" href="#Readline-Init-File">Readline Init File</a>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fget_005fkeymap_005fname"><span class="category">Function: </span><span><em>char *</em> <strong>rl_get_keymap_name</strong> <em>(Keymap keymap)</em><a href='#index-rl_005fget_005fkeymap_005fname' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return the name matching <var>keymap</var>.  <var>name</var> is one which would
-be supplied in a <code>set keymap</code> inputrc line (see <a href="#Readline-Init-File">Readline Init File</a>).
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fget_005fkeymap_005fname"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_get_keymap_name</strong> <code class="def-code-arguments">(Keymap keymap)</code><a class="copiable-link" href="#index-rl_005fget_005fkeymap_005fname"> &para;</a></span></dt>
+<dd><p>Return the name matching <var class="var">keymap</var>.
+<var class="var">name</var> is one which would be supplied in a
+<code class="code">set keymap</code> inputrc line (see <a class="pxref" href="#Readline-Init-File">Readline Init File</a>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005fkeymap_005fname"><span class="category">Function: </span><span><em>int</em> <strong>rl_set_keymap_name</strong> <em>(const char *name, Keymap keymap)</em><a href='#index-rl_005fset_005fkeymap_005fname' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set the name of <var>keymap</var>.  This name will then be &quot;registered&quot; and
-available for use in a <code>set keymap</code> inputrc directive
-see <a href="#Readline-Init-File">Readline Init File</a>).
-The <var>name</var> may not be one of Readline&rsquo;s builtin keymap names;
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fkeymap_005fname"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_set_keymap_name</strong> <code class="def-code-arguments">(const char *name, Keymap keymap)</code><a class="copiable-link" href="#index-rl_005fset_005fkeymap_005fname"> &para;</a></span></dt>
+<dd><p>Set the name of <var class="var">keymap</var>.
+This name will then be &quot;registered&quot; and
+available for use in a <code class="code">set keymap</code> inputrc directive
+see <a class="pxref" href="#Readline-Init-File">Readline Init File</a>).
+The <var class="var">name</var> may not be one of Readline&rsquo;s builtin keymap names;
 you may not add a different name for one of Readline&rsquo;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.
+function more than once with the same <var class="var">keymap</var> argument.
+You may associate a registered <var class="var">name</var> with a new keymap by calling this
+function more than once  with the same <var class="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&rsquo;s builtin keymap names or <var>keymap</var> is one of Readline&rsquo;s
+Readline will make a copy of <var class="var">name</var>.
+The return value is greater than zero unless <var class="var">name</var> is one of
+Readline&rsquo;s builtin keymap names or <var class="var">keymap</var> is one of Readline&rsquo;s
 builtin keymaps.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Binding-Keys">
-<div class="header">
+<div class="subsection-level-extent" id="Binding-Keys">
+<div class="nav-panel">
 <p>
 Next: <a href="#Associating-Function-Names-and-Bindings" accesskey="n" rel="next">Associating Function Names and Bindings</a>, Previous: <a href="#Keymaps" accesskey="p" rel="prev">Selecting a Keymap</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Binding-Keys-1"></span><h4 class="subsection">2.4.3 Binding Keys</h4>
+<h4 class="subsection" id="Binding-Keys-1"><span>2.4.3 Binding Keys<a class="copiable-link" href="#Binding-Keys-1"> &para;</a></span></h4>
 
-<p>Key sequences are associate with functions through the keymap.
-Readline has several internal keymaps: <code>emacs_standard_keymap</code>,
-<code>emacs_meta_keymap</code>, <code>emacs_ctlx_keymap</code>,
-<code>vi_movement_keymap</code>, and <code>vi_insertion_keymap</code>.
-<code>emacs_standard_keymap</code> is the default, and the examples in
+<p>Key sequences are associated with functions through the keymap.
+Readline has several internal keymaps: <code class="code">emacs_standard_keymap</code>,
+<code class="code">emacs_meta_keymap</code>, <code class="code">emacs_ctlx_keymap</code>,
+<code class="code">vi_movement_keymap</code>, and <code class="code">vi_insertion_keymap</code>.
+<code class="code">emacs_standard_keymap</code> is the default, and the examples in
 this manual assume that.
 </p>
-<p>Since <code>readline()</code> installs a set of default key bindings the first
+<p>Since <code class="code">readline()</code> installs a set of default key bindings the first
 time it is called, there is always the danger that a custom binding
-installed before the first call to <code>readline()</code> will be overridden.
-An alternate mechanism is to install custom key bindings in an
-initialization function assigned to the <code>rl_startup_hook</code> variable
-(see <a href="#Readline-Variables">Readline Variables</a>).
+installed before the first call to <code class="code">readline()</code> will be overridden.
+An alternate mechanism that can avoid this
+is to install custom key bindings in an
+initialization function assigned to the <code class="code">rl_startup_hook</code> variable
+(see <a class="pxref" href="#Readline-Variables">Readline Variables</a>).
 </p>
 <p>These functions manage key bindings.
 </p>
-<dl class="def">
-<dt id="index-rl_005fbind_005fkey"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_key</strong> <em>(int key, rl_command_func_t *function)</em><a href='#index-rl_005fbind_005fkey' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Binds <var>key</var> to <var>function</var> in the currently active keymap.
-Returns non-zero in the case of an invalid <var>key</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkey"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_key</strong> <code class="def-code-arguments">(int key, rl_command_func_t *function)</code><a class="copiable-link" href="#index-rl_005fbind_005fkey"> &para;</a></span></dt>
+<dd><p>Binds <var class="var">key</var> to <var class="var">function</var> in the currently active keymap.
+Returns non-zero in the case of an invalid <var class="var">key</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbind_005fkey_005fin_005fmap"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_key_in_map</strong> <em>(int key, rl_command_func_t *function, Keymap map)</em><a href='#index-rl_005fbind_005fkey_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Bind <var>key</var> to <var>function</var> in <var>map</var>.
-Returns non-zero in the case of an invalid <var>key</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkey_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_key_in_map</strong> <code class="def-code-arguments">(int key, rl_command_func_t *function, Keymap map)</code><a class="copiable-link" href="#index-rl_005fbind_005fkey_005fin_005fmap"> &para;</a></span></dt>
+<dd><p>Bind <var class="var">key</var> to <var class="var">function</var> in <var class="var">map</var>.
+Returns non-zero in the case of an invalid <var class="var">key</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbind_005fkey_005fif_005funbound"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_key_if_unbound</strong> <em>(int key, rl_command_func_t *function)</em><a href='#index-rl_005fbind_005fkey_005fif_005funbound' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Binds <var>key</var> to <var>function</var> if it is not already bound in the
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkey_005fif_005funbound"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_key_if_unbound</strong> <code class="def-code-arguments">(int key, rl_command_func_t *function)</code><a class="copiable-link" href="#index-rl_005fbind_005fkey_005fif_005funbound"> &para;</a></span></dt>
+<dd><p>Binds <var class="var">key</var> to <var class="var">function</var> if it is not already bound in the
 currently active keymap.
-Returns non-zero in the case of an invalid <var>key</var> or if <var>key</var> is
+Returns non-zero in the case of an invalid <var class="var">key</var> or if <var class="var">key</var> is
 already bound.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbind_005fkey_005fif_005funbound_005fin_005fmap"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_key_if_unbound_in_map</strong> <em>(int key, rl_command_func_t *function, Keymap map)</em><a href='#index-rl_005fbind_005fkey_005fif_005funbound_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Binds <var>key</var> to <var>function</var> if it is not already bound in <var>map</var>.
-Returns non-zero in the case of an invalid <var>key</var> or if <var>key</var> is
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkey_005fif_005funbound_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_key_if_unbound_in_map</strong> <code class="def-code-arguments">(int key, rl_command_func_t *function, Keymap map)</code><a class="copiable-link" href="#index-rl_005fbind_005fkey_005fif_005funbound_005fin_005fmap"> &para;</a></span></dt>
+<dd><p>Binds <var class="var">key</var> to <var class="var">function</var> if it is not already bound in <var class="var">map</var>.
+Returns non-zero in the case of an invalid <var class="var">key</var> or if <var class="var">key</var> is
 already bound.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005funbind_005fkey"><span class="category">Function: </span><span><em>int</em> <strong>rl_unbind_key</strong> <em>(int key)</em><a href='#index-rl_005funbind_005fkey' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Bind <var>key</var> to the null function in the currently active keymap.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005funbind_005fkey"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_unbind_key</strong> <code class="def-code-arguments">(int key)</code><a class="copiable-link" href="#index-rl_005funbind_005fkey"> &para;</a></span></dt>
+<dd><p>Bind <var class="var">key</var> to the null function in the currently active keymap.
+This is not the same as binding it to <code class="code">self-insert</code>.
 Returns non-zero in case of error.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005funbind_005fkey_005fin_005fmap"><span class="category">Function: </span><span><em>int</em> <strong>rl_unbind_key_in_map</strong> <em>(int key, Keymap map)</em><a href='#index-rl_005funbind_005fkey_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Bind <var>key</var> to the null function in <var>map</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005funbind_005fkey_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_unbind_key_in_map</strong> <code class="def-code-arguments">(int key, Keymap map)</code><a class="copiable-link" href="#index-rl_005funbind_005fkey_005fin_005fmap"> &para;</a></span></dt>
+<dd><p>Bind <var class="var">key</var> to the null function in <var class="var">map</var>.
+This is not the same as binding it to <code class="code">self-insert</code>.
 Returns non-zero in case of error.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005funbind_005ffunction_005fin_005fmap"><span class="category">Function: </span><span><em>int</em> <strong>rl_unbind_function_in_map</strong> <em>(rl_command_func_t *function, Keymap map)</em><a href='#index-rl_005funbind_005ffunction_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Unbind all keys that execute <var>function</var> in <var>map</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005funbind_005ffunction_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_unbind_function_in_map</strong> <code class="def-code-arguments">(rl_command_func_t *function, Keymap map)</code><a class="copiable-link" href="#index-rl_005funbind_005ffunction_005fin_005fmap"> &para;</a></span></dt>
+<dd><p>Unbind all keys that execute <var class="var">function</var> in <var class="var">map</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005funbind_005fcommand_005fin_005fmap"><span class="category">Function: </span><span><em>int</em> <strong>rl_unbind_command_in_map</strong> <em>(const char *command, Keymap map)</em><a href='#index-rl_005funbind_005fcommand_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Unbind all keys that are bound to <var>command</var> in <var>map</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005funbind_005fcommand_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_unbind_command_in_map</strong> <code class="def-code-arguments">(const char *command, Keymap map)</code><a class="copiable-link" href="#index-rl_005funbind_005fcommand_005fin_005fmap"> &para;</a></span></dt>
+<dd><p>Unbind all keys that are bound to <var class="var">command</var> in <var class="var">map</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbind_005fkeyseq"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_keyseq</strong> <em>(const char *keyseq, rl_command_func_t *function)</em><a href='#index-rl_005fbind_005fkeyseq' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Bind the key sequence represented by the string <var>keyseq</var> to the function
-<var>function</var>, beginning in the current keymap.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkeyseq"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_keyseq</strong> <code class="def-code-arguments">(const char *keyseq, rl_command_func_t *function)</code><a class="copiable-link" href="#index-rl_005fbind_005fkeyseq"> &para;</a></span></dt>
+<dd><p>Bind the key sequence represented by the string <var class="var">keyseq</var> to the function
+<var class="var">function</var>, beginning in the current keymap.
 This makes new keymaps as necessary.
-The return value is non-zero if <var>keyseq</var> is invalid.
+The return value is non-zero if <var class="var">keyseq</var> is invalid.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbind_005fkeyseq_005fin_005fmap"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_keyseq_in_map</strong> <em>(const char *keyseq, rl_command_func_t *function, Keymap map)</em><a href='#index-rl_005fbind_005fkeyseq_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Bind the key sequence represented by the string <var>keyseq</var> to the function
-<var>function</var>.  This makes new keymaps as necessary.
-Initial bindings are performed in <var>map</var>.
-The return value is non-zero if <var>keyseq</var> is invalid.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkeyseq_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_keyseq_in_map</strong> <code class="def-code-arguments">(const char *keyseq, rl_command_func_t *function, Keymap map)</code><a class="copiable-link" href="#index-rl_005fbind_005fkeyseq_005fin_005fmap"> &para;</a></span></dt>
+<dd><p>Bind the key sequence represented by the string <var class="var">keyseq</var> to the function
+<var class="var">function</var> in <var class="var">map</var>.
+This makes new keymaps as necessary.
+Initial bindings are performed in <var class="var">map</var>.
+The return value is non-zero if <var class="var">keyseq</var> is invalid.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005fkey"><span class="category">Function: </span><span><em>int</em> <strong>rl_set_key</strong> <em>(const char *keyseq, rl_command_func_t *function, Keymap map)</em><a href='#index-rl_005fset_005fkey' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Equivalent to <code>rl_bind_keyseq_in_map</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fkey"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_set_key</strong> <code class="def-code-arguments">(const char *keyseq, rl_command_func_t *function, Keymap map)</code><a class="copiable-link" href="#index-rl_005fset_005fkey"> &para;</a></span></dt>
+<dd><p>Equivalent to <code class="code">rl_bind_keyseq_in_map</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbind_005fkeyseq_005fif_005funbound"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_keyseq_if_unbound</strong> <em>(const char *keyseq, rl_command_func_t *function)</em><a href='#index-rl_005fbind_005fkeyseq_005fif_005funbound' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Binds <var>keyseq</var> to <var>function</var> if it is not already bound in the
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkeyseq_005fif_005funbound"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_keyseq_if_unbound</strong> <code class="def-code-arguments">(const char *keyseq, rl_command_func_t *function)</code><a class="copiable-link" href="#index-rl_005fbind_005fkeyseq_005fif_005funbound"> &para;</a></span></dt>
+<dd><p>Binds <var class="var">keyseq</var> to <var class="var">function</var> if it is not already bound in the
 currently active keymap.
-Returns non-zero in the case of an invalid <var>keyseq</var> or if <var>keyseq</var> is
+Returns non-zero in the case of an invalid <var class="var">keyseq</var> or if <var class="var">keyseq</var> is
 already bound.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbind_005fkeyseq_005fif_005funbound_005fin_005fmap"><span class="category">Function: </span><span><em>int</em> <strong>rl_bind_keyseq_if_unbound_in_map</strong> <em>(const char *keyseq, rl_command_func_t *function, Keymap map)</em><a href='#index-rl_005fbind_005fkeyseq_005fif_005funbound_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Binds <var>keyseq</var> to <var>function</var> if it is not already bound in <var>map</var>.
-Returns non-zero in the case of an invalid <var>keyseq</var> or if <var>keyseq</var> is
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbind_005fkeyseq_005fif_005funbound_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_bind_keyseq_if_unbound_in_map</strong> <code class="def-code-arguments">(const char *keyseq, rl_command_func_t *function, Keymap map)</code><a class="copiable-link" href="#index-rl_005fbind_005fkeyseq_005fif_005funbound_005fin_005fmap"> &para;</a></span></dt>
+<dd><p>Binds <var class="var">keyseq</var> to <var class="var">function</var> if it is not already bound in <var class="var">map</var>.
+Returns non-zero in the case of an invalid <var class="var">keyseq</var> or if <var class="var">keyseq</var> is
 already bound.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fgeneric_005fbind"><span class="category">Function: </span><span><em>int</em> <strong>rl_generic_bind</strong> <em>(int type, const char *keyseq, char *data, Keymap map)</em><a href='#index-rl_005fgeneric_005fbind' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Bind the key sequence represented by the string <var>keyseq</var> to the arbitrary
-pointer <var>data</var>.  <var>type</var> says what kind of data is pointed to by
-<var>data</var>; this can be a function (<code>ISFUNC</code>), a macro
-(<code>ISMACR</code>), or a keymap (<code>ISKMAP</code>).  This makes new keymaps as
-necessary.  The initial keymap in which to do bindings is <var>map</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fgeneric_005fbind"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_generic_bind</strong> <code class="def-code-arguments">(int type, const char *keyseq, char *data, Keymap map)</code><a class="copiable-link" href="#index-rl_005fgeneric_005fbind"> &para;</a></span></dt>
+<dd><p>Bind the key sequence represented by the string <var class="var">keyseq</var> to the arbitrary
+pointer <var class="var">data</var>.
+<var class="var">type</var> says what kind of data is pointed to by <var class="var">data</var>; this can be
+a function (<code class="code">ISFUNC</code>),
+a macro (<code class="code">ISMACR</code>),
+or a keymap (<code class="code">ISKMAP</code>).
+This makes new keymaps as necessary.
+The initial keymap in which to do bindings is <var class="var">map</var>.
+Returns non-zero in the case of an invalid <var class="var">keyseq</var>, zero otherwise.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fparse_005fand_005fbind"><span class="category">Function: </span><span><em>int</em> <strong>rl_parse_and_bind</strong> <em>(char *line)</em><a href='#index-rl_005fparse_005fand_005fbind' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Parse <var>line</var> as if it had been read from the <code>inputrc</code> file and
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fparse_005fand_005fbind"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_parse_and_bind</strong> <code class="def-code-arguments">(char *line)</code><a class="copiable-link" href="#index-rl_005fparse_005fand_005fbind"> &para;</a></span></dt>
+<dd><p>Parse <var class="var">line</var> as if it had been read from the <code class="code">inputrc</code> file and
 perform any key bindings and variable assignments found
-(see <a href="#Readline-Init-File">Readline Init File</a>).
+(see <a class="pxref" href="#Readline-Init-File">Readline Init File</a>).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fread_005finit_005ffile"><span class="category">Function: </span><span><em>int</em> <strong>rl_read_init_file</strong> <em>(const char *filename)</em><a href='#index-rl_005fread_005finit_005ffile' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Read keybindings and variable assignments from <var>filename</var>
-(see <a href="#Readline-Init-File">Readline Init File</a>).
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fread_005finit_005ffile"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_read_init_file</strong> <code class="def-code-arguments">(const char *filename)</code><a class="copiable-link" href="#index-rl_005fread_005finit_005ffile"> &para;</a></span></dt>
+<dd><p>Read keybindings and variable assignments from <var class="var">filename</var>
+(see <a class="pxref" href="#Readline-Init-File">Readline Init File</a>).
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Associating-Function-Names-and-Bindings">
-<div class="header">
+<div class="subsection-level-extent" id="Associating-Function-Names-and-Bindings">
+<div class="nav-panel">
 <p>
 Next: <a href="#Allowing-Undoing" accesskey="n" rel="next">Allowing Undoing</a>, Previous: <a href="#Binding-Keys" accesskey="p" rel="prev">Binding Keys</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Associating-Function-Names-and-Bindings-1"></span><h4 class="subsection">2.4.4 Associating Function Names and Bindings</h4>
+<h4 class="subsection" id="Associating-Function-Names-and-Bindings-1"><span>2.4.4 Associating Function Names and Bindings<a class="copiable-link" href="#Associating-Function-Names-and-Bindings-1"> &para;</a></span></h4>
 
 <p>These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence.  You may also
-associate a new function name with an arbitrary function.
-</p>
-<dl class="def">
-<dt id="index-rl_005fnamed_005ffunction"><span class="category">Function: </span><span><em>rl_command_func_t *</em> <strong>rl_named_function</strong> <em>(const char *name)</em><a href='#index-rl_005fnamed_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return the function with name <var>name</var>.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005ffunction_005fof_005fkeyseq"><span class="category">Function: </span><span><em>rl_command_func_t *</em> <strong>rl_function_of_keyseq</strong> <em>(const char *keyseq, Keymap map, int *type)</em><a href='#index-rl_005ffunction_005fof_005fkeyseq' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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 &quot;translated&quot; key sequence and should not be used if the key sequence
-can include NUL.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005ffunction_005fof_005fkeyseq_005flen"><span class="category">Function: </span><span><em>rl_command_func_t *</em> <strong>rl_function_of_keyseq_len</strong> <em>(const char *keyseq, size_t len, Keymap map, int *type)</em><a href='#index-rl_005ffunction_005fof_005fkeyseq_005flen' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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 &quot;translated&quot; key sequence and should be used if the key sequence
-can include NUL.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005ftrim_005farg_005ffrom_005fkeyseq"><span class="category">Function: </span><span><em>int</em> <strong>rl_trim_arg_from_keyseq</strong> <em>(const char *keyseq, size_t len, Keymap map)</em><a href='#index-rl_005ftrim_005farg_005ffrom_005fkeyseq' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If there is a numeric argument at the beginning of <var>keyseq</var>, possibly
-including digits, return the index of the first character in <var>keyseq</var>
+and the functions invoked by a particular key sequence.
+You may also associate a new function name with an arbitrary function.
+</p>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fnamed_005ffunction"><span class="category-def">Function: </span><span><code class="def-type">rl_command_func_t *</code> <strong class="def-name">rl_named_function</strong> <code class="def-code-arguments">(const char *name)</code><a class="copiable-link" href="#index-rl_005fnamed_005ffunction"> &para;</a></span></dt>
+<dd><p>Return the function with name <var class="var">name</var>.
+<var class="var">name</var> is a descriptive name users might use in a key binding.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffunction_005fof_005fkeyseq"><span class="category-def">Function: </span><span><code class="def-type">rl_command_func_t *</code> <strong class="def-name">rl_function_of_keyseq</strong> <code class="def-code-arguments">(const char *keyseq, Keymap map, int *type)</code><a class="copiable-link" href="#index-rl_005ffunction_005fof_005fkeyseq"> &para;</a></span></dt>
+<dd><p>Return the function invoked by <var class="var">keyseq</var> in keymap <var class="var">map</var>.
+If <var class="var">map</var> is <code class="code">NULL</code>, this uses the current keymap.
+If <var class="var">type</var> is not <code class="code">NULL</code>, this returns the type of the object
+in the <code class="code">int</code> variable it points to
+(one of <code class="code">ISFUNC</code>, <code class="code">ISKMAP</code>, or <code class="code">ISMACR</code>).
+It takes a &quot;translated&quot; key sequence and should not be used
+if the key sequence can include NUL.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffunction_005fof_005fkeyseq_005flen"><span class="category-def">Function: </span><span><code class="def-type">rl_command_func_t *</code> <strong class="def-name">rl_function_of_keyseq_len</strong> <code class="def-code-arguments">(const char *keyseq, size_t len, Keymap map, int *type)</code><a class="copiable-link" href="#index-rl_005ffunction_005fof_005fkeyseq_005flen"> &para;</a></span></dt>
+<dd><p>Return the function invoked by <var class="var">keyseq</var> of length <var class="var">len</var>
+in keymap <var class="var">map</var>.
+Equivalent to <code class="code">rl_function_of_keyseq</code> with the addition
+of the <var class="var">len</var> parameter.
+It takes a &quot;translated&quot; key sequence and should be used
+if the key sequence can include NUL.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ftrim_005farg_005ffrom_005fkeyseq"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_trim_arg_from_keyseq</strong> <code class="def-code-arguments">(const char *keyseq, size_t len, Keymap map)</code><a class="copiable-link" href="#index-rl_005ftrim_005farg_005ffrom_005fkeyseq"> &para;</a></span></dt>
+<dd><p>If there is a numeric argument at the beginning of <var class="var">keyseq</var>, possibly
+including digits, return the index of the first character in <var class="var">keyseq</var>
 following the numeric argument.
 This can be used to skip over the numeric argument (which is available as
-<code>rl_numeric_arg</code> while traversing the key sequence that invoked the
+<code class="code">rl_numeric_arg</code>) while traversing the key sequence that invoked the
 current command.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005finvoking_005fkeyseqs"><span class="category">Function: </span><span><em>char **</em> <strong>rl_invoking_keyseqs</strong> <em>(rl_command_func_t *function)</em><a href='#index-rl_005finvoking_005fkeyseqs' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005finvoking_005fkeyseqs"><span class="category-def">Function: </span><span><code class="def-type">char **</code> <strong class="def-name">rl_invoking_keyseqs</strong> <code class="def-code-arguments">(rl_command_func_t *function)</code><a class="copiable-link" href="#index-rl_005finvoking_005fkeyseqs"> &para;</a></span></dt>
 <dd><p>Return an array of strings representing the key sequences used to
-invoke <var>function</var> in the current keymap.
+invoke <var class="var">function</var> in the current keymap.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005finvoking_005fkeyseqs_005fin_005fmap"><span class="category">Function: </span><span><em>char **</em> <strong>rl_invoking_keyseqs_in_map</strong> <em>(rl_command_func_t *function, Keymap map)</em><a href='#index-rl_005finvoking_005fkeyseqs_005fin_005fmap' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005finvoking_005fkeyseqs_005fin_005fmap"><span class="category-def">Function: </span><span><code class="def-type">char **</code> <strong class="def-name">rl_invoking_keyseqs_in_map</strong> <code class="def-code-arguments">(rl_command_func_t *function, Keymap map)</code><a class="copiable-link" href="#index-rl_005finvoking_005fkeyseqs_005fin_005fmap"> &para;</a></span></dt>
 <dd><p>Return an array of strings representing the key sequences used to
-invoke <var>function</var> in the keymap <var>map</var>.
+invoke <var class="var">function</var> in the keymap <var class="var">map</var>.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fprint_005fkeybinding"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_print_keybinding</strong> <code class="def-code-arguments">(const char *name, Keymap map, int readable)</code><a class="copiable-link" href="#index-rl_005fprint_005fkeybinding"> &para;</a></span></dt>
+<dd><p>Print key sequences bound to Readline function name <var class="var">name</var> in
+keymap <var class="var">map</var>.
+If <var class="var">map</var> is NULL, this uses the current keymap.
+If <var class="var">readable</var> is non-zero,
+the list is formatted in such a way that it can be made part of an
+<code class="code">inputrc</code> file and re-read to recreate the key binding.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffunction_005fdumper"><span class="category">Function: </span><span><em>void</em> <strong>rl_function_dumper</strong> <em>(int readable)</em><a href='#index-rl_005ffunction_005fdumper' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffunction_005fdumper"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_function_dumper</strong> <code class="def-code-arguments">(int readable)</code><a class="copiable-link" href="#index-rl_005ffunction_005fdumper"> &para;</a></span></dt>
 <dd><p>Print the Readline function names and the key sequences currently
-bound to them to <code>rl_outstream</code>.  If <var>readable</var> is non-zero,
+bound to them to <code class="code">rl_outstream</code>.
+If <var class="var">readable</var> is non-zero,
 the list is formatted in such a way that it can be made part of an
-<code>inputrc</code> file and re-read.
+<code class="code">inputrc</code> file and re-read.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005flist_005ffunmap_005fnames"><span class="category">Function: </span><span><em>void</em> <strong>rl_list_funmap_names</strong> <em>(void)</em><a href='#index-rl_005flist_005ffunmap_005fnames' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Print the names of all bindable Readline functions to <code>rl_outstream</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005flist_005ffunmap_005fnames"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_list_funmap_names</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005flist_005ffunmap_005fnames"> &para;</a></span></dt>
+<dd><p>Print the names of all bindable Readline functions to <code class="code">rl_outstream</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffunmap_005fnames"><span class="category">Function: </span><span><em>const char **</em> <strong>rl_funmap_names</strong> <em>(void)</em><a href='#index-rl_005ffunmap_005fnames' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return a NULL terminated array of known function names.  The array is
-sorted.  The array itself is allocated, but not the strings inside.  You
-should free the array, but not the pointers, using <code>free</code> or
-<code>rl_free</code> when you are done.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffunmap_005fnames"><span class="category-def">Function: </span><span><code class="def-type">const char **</code> <strong class="def-name">rl_funmap_names</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005ffunmap_005fnames"> &para;</a></span></dt>
+<dd><p>Return a NULL terminated array of known function names.
+The array is sorted. 
+The array itself is allocated, but not the strings inside.
+You should free the array, but not the pointers, using <code class="code">free</code>
+or <code class="code">rl_free</code> when you are done.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fadd_005ffunmap_005fentry"><span class="category">Function: </span><span><em>int</em> <strong>rl_add_funmap_entry</strong> <em>(const char *name, rl_command_func_t *function)</em><a href='#index-rl_005fadd_005ffunmap_005fentry' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Add <var>name</var> to the list of bindable Readline command names, and make
-<var>function</var> the function to be called when <var>name</var> is invoked.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fadd_005ffunmap_005fentry"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_add_funmap_entry</strong> <code class="def-code-arguments">(const char *name, rl_command_func_t *function)</code><a class="copiable-link" href="#index-rl_005fadd_005ffunmap_005fentry"> &para;</a></span></dt>
+<dd><p>Add <var class="var">name</var> to the list of bindable Readline command names, and make
+<var class="var">function</var> the function to be called when <var class="var">name</var> is invoked.
+This returns the index of the newly-added <var class="var">name</var> in the array of
+function names.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Allowing-Undoing">
-<div class="header">
+<div class="subsection-level-extent" id="Allowing-Undoing">
+<div class="nav-panel">
 <p>
 Next: <a href="#Redisplay" accesskey="n" rel="next">Redisplay</a>, Previous: <a href="#Associating-Function-Names-and-Bindings" accesskey="p" rel="prev">Associating Function Names and Bindings</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Allowing-Undoing-1"></span><h4 class="subsection">2.4.5 Allowing Undoing</h4>
+<h4 class="subsection" id="Allowing-Undoing-1"><span>2.4.5 Allowing Undoing<a class="copiable-link" href="#Allowing-Undoing-1"> &para;</a></span></h4>
 
 <p>Supporting the undo command is a painless thing, and makes your
-functions much more useful.  It is certainly easy to try
-something if you know you can undo it.
+functions much more useful.
+It is certainly easier to try something if you know you can undo it.
 </p>
-<p>If your function simply inserts text once, or deletes text once, and
-uses <code>rl_insert_text()</code> or <code>rl_delete_text()</code> to do it, then
-undoing is already done for you automatically.
+<p>If your function simply inserts text once, or deletes text once,
+and uses <code class="code">rl_insert_text()</code> or <code class="code">rl_delete_text()</code> to do it,
+then Readline does the undoing for you automatically.
 </p>
 <p>If you do multiple insertions or multiple deletions, or any combination
 of these operations, you should group them together into one operation.
-This is done with <code>rl_begin_undo_group()</code> and
-<code>rl_end_undo_group()</code>.
+This is done with <code class="code">rl_begin_undo_group()</code> and
+<code class="code">rl_end_undo_group()</code>.
 </p>
-<p>The types of events that can be undone are:
+<p>The types of events Readline can undo are:
 </p>
-<div class="example">
-<pre class="example">enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; 
+<div class="example smallexample">
+<pre class="example-preformatted">enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END }; 
 </pre></div>
 
-<p>Notice that <code>UNDO_DELETE</code> means to insert some text, and
-<code>UNDO_INSERT</code> means to delete some text.  That is, the undo code
-tells what to undo, not how to undo it.  <code>UNDO_BEGIN</code> and
-<code>UNDO_END</code> are tags added by <code>rl_begin_undo_group()</code> and
-<code>rl_end_undo_group()</code>.
+<p>Notice that <code class="code">UNDO_DELETE</code> means to insert some text, and
+<code class="code">UNDO_INSERT</code> means to delete some text.
+That is, the undo code tells what to undo, not how to undo it.
+<code class="code">UNDO_BEGIN</code> and <code class="code">UNDO_END</code> are tags
+added by <code class="code">rl_begin_undo_group()</code> and <code class="code">rl_end_undo_group()</code>;
+they are how Readline delimits groups of commands that should be
+undone together.
 </p>
-<dl class="def">
-<dt id="index-rl_005fbegin_005fundo_005fgroup"><span class="category">Function: </span><span><em>int</em> <strong>rl_begin_undo_group</strong> <em>(void)</em><a href='#index-rl_005fbegin_005fundo_005fgroup' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Begins saving undo information in a group construct.  The undo
-information usually comes from calls to <code>rl_insert_text()</code> and
-<code>rl_delete_text()</code>, but could be the result of calls to
-<code>rl_add_undo()</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fbegin_005fundo_005fgroup"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_begin_undo_group</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fbegin_005fundo_005fgroup"> &para;</a></span></dt>
+<dd><p>Begins saving undo information in a group construct.
+The undo information usually comes from calls to <code class="code">rl_insert_text()</code>
+and <code class="code">rl_delete_text()</code>, but could be the result of calls to
+<code class="code">rl_add_undo()</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fend_005fundo_005fgroup"><span class="category">Function: </span><span><em>int</em> <strong>rl_end_undo_group</strong> <em>(void)</em><a href='#index-rl_005fend_005fundo_005fgroup' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Closes the current undo group started with <code>rl_begin_undo_group
-()</code>.  There should be one call to <code>rl_end_undo_group()</code>
-for each call to <code>rl_begin_undo_group()</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fend_005fundo_005fgroup"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_end_undo_group</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fend_005fundo_005fgroup"> &para;</a></span></dt>
+<dd><p>Closes the current undo group started with <code class="code">rl_begin_undo_group()</code>.
+There should be one call to <code class="code">rl_end_undo_group()</code>
+for each call to <code class="code">rl_begin_undo_group()</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fadd_005fundo"><span class="category">Function: </span><span><em>void</em> <strong>rl_add_undo</strong> <em>(enum undo_code what, int start, int end, char *text)</em><a href='#index-rl_005fadd_005fundo' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Remember how to undo an event (according to <var>what</var>).  The affected
-text runs from <var>start</var> to <var>end</var>, and encompasses <var>text</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fadd_005fundo"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_add_undo</strong> <code class="def-code-arguments">(enum undo_code what, int start, int end, char *text)</code><a class="copiable-link" href="#index-rl_005fadd_005fundo"> &para;</a></span></dt>
+<dd><p>Remember how to undo an event (according to <var class="var">what</var>).
+The affected text runs from <var class="var">start</var> to <var class="var">end</var>,
+and encompasses <var class="var">text</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffree_005fundo_005flist"><span class="category">Function: </span><span><em>void</em> <strong>rl_free_undo_list</strong> <em>(void)</em><a href='#index-rl_005ffree_005fundo_005flist' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffree_005fundo_005flist"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_free_undo_list</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005ffree_005fundo_005flist"> &para;</a></span></dt>
 <dd><p>Free the existing undo list.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdo_005fundo"><span class="category">Function: </span><span><em>int</em> <strong>rl_do_undo</strong> <em>(void)</em><a href='#index-rl_005fdo_005fundo' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Undo the first thing on the undo list.  Returns <code>0</code> if there was
-nothing to undo, non-zero if something was undone.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fdo_005fundo"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_do_undo</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fdo_005fundo"> &para;</a></span></dt>
+<dd><p>Undo the first thing on the undo list.
+Returns <code class="code">0</code> if there was nothing to undo,
+non-zero if something was undone.
 </p></dd></dl>
 
 <p>Finally, if you neither insert nor delete text, but directly modify the
-existing text (e.g., change its case), call <code>rl_modifying()</code>
-once, just before you modify the text.  You must supply the indices of
-the text range that you are going to modify.
+existing text (e.g., change its case), call <code class="code">rl_modifying()</code>
+once, just before you modify the text.
+You must supply the indices of the text range that you are going to modify.
+Readline will create an undo group for you.
 </p>
-<dl class="def">
-<dt id="index-rl_005fmodifying"><span class="category">Function: </span><span><em>int</em> <strong>rl_modifying</strong> <em>(int start, int end)</em><a href='#index-rl_005fmodifying' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Tell Readline to save the text between <var>start</var> and <var>end</var> as a
-single undo unit.  It is assumed that you will subsequently modify
-that text.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fmodifying"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_modifying</strong> <code class="def-code-arguments">(int start, int end)</code><a class="copiable-link" href="#index-rl_005fmodifying"> &para;</a></span></dt>
+<dd><p>Tell Readline to save the text between <var class="var">start</var> and <var class="var">end</var> as a
+single undo unit.
+It is assumed that you will subsequently modify that text.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Redisplay">
-<div class="header">
+<div class="subsection-level-extent" id="Redisplay">
+<div class="nav-panel">
 <p>
 Next: <a href="#Modifying-Text" accesskey="n" rel="next">Modifying Text</a>, Previous: <a href="#Allowing-Undoing" accesskey="p" rel="prev">Allowing Undoing</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Redisplay-1"></span><h4 class="subsection">2.4.6 Redisplay</h4>
+<h4 class="subsection" id="Redisplay-1"><span>2.4.6 Redisplay<a class="copiable-link" href="#Redisplay-1"> &para;</a></span></h4>
 
-<dl class="def">
-<dt id="index-rl_005fredisplay"><span class="category">Function: </span><span><em>void</em> <strong>rl_redisplay</strong> <em>(void)</em><a href='#index-rl_005fredisplay' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fredisplay"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_redisplay</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fredisplay"> &para;</a></span></dt>
 <dd><p>Change what&rsquo;s displayed on the screen to reflect the current contents
-of <code>rl_line_buffer</code>.
+of <code class="code">rl_line_buffer</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fforced_005fupdate_005fdisplay"><span class="category">Function: </span><span><em>int</em> <strong>rl_forced_update_display</strong> <em>(void)</em><a href='#index-rl_005fforced_005fupdate_005fdisplay' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fforced_005fupdate_005fdisplay"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_forced_update_display</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fforced_005fupdate_005fdisplay"> &para;</a></span></dt>
 <dd><p>Force the line to be updated and redisplayed, whether or not
 Readline thinks the screen display is correct.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fon_005fnew_005fline"><span class="category">Function: </span><span><em>int</em> <strong>rl_on_new_line</strong> <em>(void)</em><a href='#index-rl_005fon_005fnew_005fline' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fon_005fnew_005fline"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_on_new_line</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fon_005fnew_005fline"> &para;</a></span></dt>
 <dd><p>Tell the update functions that we have moved onto a new (empty) line,
 usually after outputting a newline.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fon_005fnew_005fline_005fwith_005fprompt"><span class="category">Function: </span><span><em>int</em> <strong>rl_on_new_line_with_prompt</strong> <em>(void)</em><a href='#index-rl_005fon_005fnew_005fline_005fwith_005fprompt' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fon_005fnew_005fline_005fwith_005fprompt"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_on_new_line_with_prompt</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fon_005fnew_005fline_005fwith_005fprompt"> &para;</a></span></dt>
 <dd><p>Tell the update functions that we have moved onto a new line, with
-<var>rl_prompt</var> already displayed.
+<var class="var">rl_prompt</var> already displayed.
 This could be used by applications that want to output the prompt string
 themselves, but still need Readline to know the prompt string length for
 redisplay.
-It should be used after setting <var>rl_already_prompted</var>.
+It should be used after setting <var class="var">rl_already_prompted</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fclear_005fvisible_005fline"><span class="category">Function: </span><span><em>int</em> <strong>rl_clear_visible_line</strong> <em>(void)</em><a href='#index-rl_005fclear_005fvisible_005fline' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fclear_005fvisible_005fline"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_clear_visible_line</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fclear_005fvisible_005fline"> &para;</a></span></dt>
 <dd><p>Clear the screen lines corresponding to the current line&rsquo;s contents.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freset_005fline_005fstate"><span class="category">Function: </span><span><em>int</em> <strong>rl_reset_line_state</strong> <em>(void)</em><a href='#index-rl_005freset_005fline_005fstate' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005freset_005fline_005fstate"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_reset_line_state</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005freset_005fline_005fstate"> &para;</a></span></dt>
 <dd><p>Reset the display state to a clean state and redisplay the current line
 starting on a new line.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcrlf"><span class="category">Function: </span><span><em>int</em> <strong>rl_crlf</strong> <em>(void)</em><a href='#index-rl_005fcrlf' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcrlf"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_crlf</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fcrlf"> &para;</a></span></dt>
 <dd><p>Move the cursor to the start of the next screen line.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fshow_005fchar"><span class="category">Function: </span><span><em>int</em> <strong>rl_show_char</strong> <em>(int c)</em><a href='#index-rl_005fshow_005fchar' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Display character <var>c</var> on <code>rl_outstream</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fshow_005fchar"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_show_char</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-rl_005fshow_005fchar"> &para;</a></span></dt>
+<dd><p>Display character <var class="var">c</var> on <code class="code">rl_outstream</code>.
 If Readline has not been set to display meta characters directly, this
 will convert meta characters to a meta-prefixed key sequence.
 This is intended for use by applications which wish to do their own
 redisplay.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fmessage"><span class="category">Function: </span><span><em>int</em> <strong>rl_message</strong> <em>(const char *, &hellip;)</em><a href='#index-rl_005fmessage' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The arguments are a format string as would be supplied to <code>printf</code>,
-possibly containing conversion specifications such as &lsquo;<samp>%d</samp>&rsquo;, and
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fmessage"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_message</strong> <code class="def-code-arguments">(const char *, &hellip;)</code><a class="copiable-link" href="#index-rl_005fmessage"> &para;</a></span></dt>
+<dd><p>The arguments are a format string as would be supplied to <code class="code">printf</code>,
+possibly containing conversion specifications such as &lsquo;<samp class="samp">%d</samp>&rsquo;, and
 any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the <em>echo area</em>.  The echo area
-is also used to display numeric arguments and search strings.
-You should call <code>rl_save_prompt</code> to save the prompt information
+The resulting string is displayed in the <em class="dfn">echo area</em>.
+The echo area is also used to display numeric arguments and search strings.
+You should call <code class="code">rl_save_prompt</code> to save the prompt information
 before calling this function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fclear_005fmessage"><span class="category">Function: </span><span><em>int</em> <strong>rl_clear_message</strong> <em>(void)</em><a href='#index-rl_005fclear_005fmessage' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Clear the message in the echo area.  If the prompt was saved with a call to
-<code>rl_save_prompt</code> before the last call to <code>rl_message</code>,
-call <code>rl_restore_prompt</code> before calling this function.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fclear_005fmessage"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_clear_message</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fclear_005fmessage"> &para;</a></span></dt>
+<dd><p>Clear the message in the echo area.
+If the prompt was saved with a call to
+<code class="code">rl_save_prompt</code> before the last call to <code class="code">rl_message</code>,
+you must call <code class="code">rl_restore_prompt</code> before calling this function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fsave_005fprompt"><span class="category">Function: </span><span><em>void</em> <strong>rl_save_prompt</strong> <em>(void)</em><a href='#index-rl_005fsave_005fprompt' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fsave_005fprompt"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_save_prompt</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fsave_005fprompt"> &para;</a></span></dt>
 <dd><p>Save the local Readline prompt display state in preparation for
-displaying a new message in the message area with <code>rl_message()</code>.
+displaying a new message in the message area with <code class="code">rl_message()</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005frestore_005fprompt"><span class="category">Function: </span><span><em>void</em> <strong>rl_restore_prompt</strong> <em>(void)</em><a href='#index-rl_005frestore_005fprompt' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005frestore_005fprompt"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_restore_prompt</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005frestore_005fprompt"> &para;</a></span></dt>
 <dd><p>Restore the local Readline prompt display state saved by the most
-recent call to <code>rl_save_prompt</code>.
-if <code>rl_save_prompt</code> was called to save the prompt before a call
-to <code>rl_message</code>, this function should be called before the
-corresponding call to <code>rl_clear_message</code>.
+recent call to <code class="code">rl_save_prompt</code>.
+If you called <code class="code">rl_save_prompt</code> to save the prompt before a call
+to <code class="code">rl_message</code>, you should call this function before the
+corresponding call to <code class="code">rl_clear_message</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fexpand_005fprompt"><span class="category">Function: </span><span><em>int</em> <strong>rl_expand_prompt</strong> <em>(char *prompt)</em><a href='#index-rl_005fexpand_005fprompt' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Expand any special character sequences in <var>prompt</var> and set up the
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fexpand_005fprompt"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_expand_prompt</strong> <code class="def-code-arguments">(char *prompt)</code><a class="copiable-link" href="#index-rl_005fexpand_005fprompt"> &para;</a></span></dt>
+<dd><p>Expand any special character sequences in <var class="var">prompt</var> and set up the
 local Readline prompt redisplay variables.
-This function is called by <code>readline()</code>.  It may also be called to
-expand the primary prompt if the <code>rl_on_new_line_with_prompt()</code>
-function or <code>rl_already_prompted</code> variable is used.
+This function is called by <code class="code">readline()</code>.
+It may also be called to
+expand the primary prompt if the application uses the
+<code class="code">rl_on_new_line_with_prompt()</code> function or
+<code class="code">rl_already_prompted</code> variable.
 It returns the number of visible characters on the last line of the
 (possibly multi-line) prompt.
 Applications may indicate that the prompt contains characters that take
 up no physical screen space when displayed by bracketing a sequence of
-such characters with the special markers <code>RL_PROMPT_START_IGNORE</code>
-and <code>RL_PROMPT_END_IGNORE</code> (declared in <samp>readline.h</samp> as
-&lsquo;<samp>\001</samp>&rsquo; and &lsquo;<samp>\002</samp>&rsquo;, respectively).
+such characters with the special markers <code class="code">RL_PROMPT_START_IGNORE</code>
+and <code class="code">RL_PROMPT_END_IGNORE</code> (declared in <samp class="file">readline.h</samp> as
+&lsquo;<samp class="samp">\001</samp>&rsquo; and &lsquo;<samp class="samp">\002</samp>&rsquo;, respectively).
 This may be used to embed terminal-specific escape sequences in prompts.
+If you don&rsquo;t use these indicators, redisplay will likely produce screen
+contents that don&rsquo;t match the line buffer.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005fprompt"><span class="category">Function: </span><span><em>int</em> <strong>rl_set_prompt</strong> <em>(const char *prompt)</em><a href='#index-rl_005fset_005fprompt' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Make Readline use <var>prompt</var> for subsequent redisplay.  This calls
-<code>rl_expand_prompt()</code> to expand the prompt and sets <code>rl_prompt</code>
-to the result.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fprompt"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_set_prompt</strong> <code class="def-code-arguments">(const char *prompt)</code><a class="copiable-link" href="#index-rl_005fset_005fprompt"> &para;</a></span></dt>
+<dd><p>Make Readline use <var class="var">prompt</var> for subsequent redisplay.
+This calls <code class="code">rl_expand_prompt()</code> to expand the prompt
+and sets <code class="code">rl_prompt</code> to the result.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Modifying-Text">
-<div class="header">
+<div class="subsection-level-extent" id="Modifying-Text">
+<div class="nav-panel">
 <p>
 Next: <a href="#Character-Input" accesskey="n" rel="next">Character Input</a>, Previous: <a href="#Redisplay" accesskey="p" rel="prev">Redisplay</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Modifying-Text-1"></span><h4 class="subsection">2.4.7 Modifying Text</h4>
+<h4 class="subsection" id="Modifying-Text-1"><span>2.4.7 Modifying Text<a class="copiable-link" href="#Modifying-Text-1"> &para;</a></span></h4>
 
-<dl class="def">
-<dt id="index-rl_005finsert_005ftext"><span class="category">Function: </span><span><em>int</em> <strong>rl_insert_text</strong> <em>(const char *text)</em><a href='#index-rl_005finsert_005ftext' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Insert <var>text</var> into the line at the current cursor position.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005finsert_005ftext"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_insert_text</strong> <code class="def-code-arguments">(const char *text)</code><a class="copiable-link" href="#index-rl_005finsert_005ftext"> &para;</a></span></dt>
+<dd><p>Insert <var class="var">text</var> into the line at the current cursor position.
 Returns the number of characters inserted.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdelete_005ftext"><span class="category">Function: </span><span><em>int</em> <strong>rl_delete_text</strong> <em>(int start, int end)</em><a href='#index-rl_005fdelete_005ftext' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Delete the text between <var>start</var> and <var>end</var> in the current line.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fdelete_005ftext"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_delete_text</strong> <code class="def-code-arguments">(int start, int end)</code><a class="copiable-link" href="#index-rl_005fdelete_005ftext"> &para;</a></span></dt>
+<dd><p>Delete the text between <var class="var">start</var> and <var class="var">end</var> in the current line.
 Returns the number of characters deleted.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcopy_005ftext"><span class="category">Function: </span><span><em>char *</em> <strong>rl_copy_text</strong> <em>(int start, int end)</em><a href='#index-rl_005fcopy_005ftext' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return a copy of the text between <var>start</var> and <var>end</var> in
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcopy_005ftext"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_copy_text</strong> <code class="def-code-arguments">(int start, int end)</code><a class="copiable-link" href="#index-rl_005fcopy_005ftext"> &para;</a></span></dt>
+<dd><p>Return a copy of the text between <var class="var">start</var> and <var class="var">end</var> in
 the current line.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fkill_005ftext"><span class="category">Function: </span><span><em>int</em> <strong>rl_kill_text</strong> <em>(int start, int end)</em><a href='#index-rl_005fkill_005ftext' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Copy the text between <var>start</var> and <var>end</var> in the current line
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fkill_005ftext"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_kill_text</strong> <code class="def-code-arguments">(int start, int end)</code><a class="copiable-link" href="#index-rl_005fkill_005ftext"> &para;</a></span></dt>
+<dd><p>Copy the text between <var class="var">start</var> and <var class="var">end</var> in the current line
 to the kill ring, appending or prepending to the last kill if the
-last command was a kill command.  The text is deleted.
-If <var>start</var> is less than <var>end</var>,
-the text is appended, otherwise prepended.  If the last command was
-not a kill, a new kill ring slot is used.
+last command was a kill command.
+This deletes the text from the line.
+If <var class="var">start</var> is less than <var class="var">end</var>, the text is appended,
+otherwise it is prepended.
+If the last command was not a kill, this uses a new kill ring slot.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005freplace_005fline"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_replace_line</strong> <code class="def-code-arguments">(const char *text, int clear_undo)</code><a class="copiable-link" href="#index-rl_005freplace_005fline"> &para;</a></span></dt>
+<dd><p>Replace the contents of <code class="code">rl_line_buffer</code> with <var class="var">text</var>.
+This preserves the point and mark, if possible.
+If <var class="var">clear_undo</var> is non-zero, this clears the undo list associated
+with the current line.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fpush_005fmacro_005finput"><span class="category">Function: </span><span><em>int</em> <strong>rl_push_macro_input</strong> <em>(char *macro)</em><a href='#index-rl_005fpush_005fmacro_005finput' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Cause <var>macro</var> to be inserted into the line, as if it had been invoked
-by a key bound to a macro.  Not especially useful; use
-<code>rl_insert_text()</code> instead.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fpush_005fmacro_005finput"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_push_macro_input</strong> <code class="def-code-arguments">(char *macro)</code><a class="copiable-link" href="#index-rl_005fpush_005fmacro_005finput"> &para;</a></span></dt>
+<dd><p>Insert <var class="var">macro</var> into the line, as if it had been invoked
+by a key bound to a macro.
+Not especially useful; use <code class="code">rl_insert_text()</code> instead.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Character-Input">
-<div class="header">
+<div class="subsection-level-extent" id="Character-Input">
+<div class="nav-panel">
 <p>
 Next: <a href="#Terminal-Management" accesskey="n" rel="next">Terminal Management</a>, Previous: <a href="#Modifying-Text" accesskey="p" rel="prev">Modifying Text</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Character-Input-1"></span><h4 class="subsection">2.4.8 Character Input</h4>
+<h4 class="subsection" id="Character-Input-1"><span>2.4.8 Character Input<a class="copiable-link" href="#Character-Input-1"> &para;</a></span></h4>
 
-<dl class="def">
-<dt id="index-rl_005fread_005fkey"><span class="category">Function: </span><span><em>int</em> <strong>rl_read_key</strong> <em>(void)</em><a href='#index-rl_005fread_005fkey' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fread_005fkey"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_read_key</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fread_005fkey"> &para;</a></span></dt>
 <dd><p>Return the next character available from Readline&rsquo;s current input stream.
 This handles input inserted into
-the input stream via <var>rl_pending_input</var> (see <a href="#Readline-Variables">Readline Variables</a>)
-and <code>rl_stuff_char()</code>, macros, and characters read from the keyboard.
+the input stream via <var class="var">rl_pending_input</var> (see <a class="pxref" href="#Readline-Variables">Readline Variables</a>)
+and <code class="code">rl_stuff_char()</code>, macros, and characters read from the keyboard.
 While waiting for input, this function will call any function assigned to
-the <code>rl_event_hook</code> variable.
+the <code class="code">rl_event_hook</code> variable.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fgetc"><span class="category">Function: </span><span><em>int</em> <strong>rl_getc</strong> <em>(FILE *stream)</em><a href='#index-rl_005fgetc' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return the next character available from <var>stream</var>, which is assumed to
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fgetc"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_getc</strong> <code class="def-code-arguments">(FILE *stream)</code><a class="copiable-link" href="#index-rl_005fgetc"> &para;</a></span></dt>
+<dd><p>Return the next character available from <var class="var">stream</var>, which is assumed to
 be the keyboard.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fstuff_005fchar"><span class="category">Function: </span><span><em>int</em> <strong>rl_stuff_char</strong> <em>(int c)</em><a href='#index-rl_005fstuff_005fchar' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Insert <var>c</var> into the Readline input stream.  It will be &quot;read&quot;
-before Readline attempts to read characters from the terminal with
-<code>rl_read_key()</code>.  Up to 512 characters may be pushed back.
-<code>rl_stuff_char</code> returns 1 if the character was successfully inserted;
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fstuff_005fchar"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_stuff_char</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-rl_005fstuff_005fchar"> &para;</a></span></dt>
+<dd><p>Insert <var class="var">c</var> into the Readline input stream.
+It will be &quot;read&quot; before Readline attempts to read characters
+from the terminal with <code class="code">rl_read_key()</code>.
+Applications can push back up to 512 characters.
+<code class="code">rl_stuff_char</code> returns 1 if the character was successfully inserted;
 0 otherwise.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fexecute_005fnext"><span class="category">Function: </span><span><em>int</em> <strong>rl_execute_next</strong> <em>(int c)</em><a href='#index-rl_005fexecute_005fnext' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Make <var>c</var> be the next command to be executed when <code>rl_read_key()</code>
-is called.  This sets <var>rl_pending_input</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fexecute_005fnext"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_execute_next</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-rl_005fexecute_005fnext"> &para;</a></span></dt>
+<dd><p>Make <var class="var">c</var> be the next command to be executed when <code class="code">rl_read_key()</code>
+is called.
+This sets <var class="var">rl_pending_input</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fclear_005fpending_005finput"><span class="category">Function: </span><span><em>int</em> <strong>rl_clear_pending_input</strong> <em>(void)</em><a href='#index-rl_005fclear_005fpending_005finput' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Unset <var>rl_pending_input</var>, effectively negating the effect of any
-previous call to <code>rl_execute_next()</code>.  This works only if the
-pending input has not already been read with <code>rl_read_key()</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fclear_005fpending_005finput"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_clear_pending_input</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fclear_005fpending_005finput"> &para;</a></span></dt>
+<dd><p>Unset <var class="var">rl_pending_input</var>, effectively negating the effect of any
+previous call to <code class="code">rl_execute_next()</code>.
+This works only if the pending input has not already been read
+with <code class="code">rl_read_key()</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005fkeyboard_005finput_005ftimeout"><span class="category">Function: </span><span><em>int</em> <strong>rl_set_keyboard_input_timeout</strong> <em>(int u)</em><a href='#index-rl_005fset_005fkeyboard_005finput_005ftimeout' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>While waiting for keyboard input in <code>rl_read_key()</code>, Readline will
-wait for <var>u</var> microseconds for input before calling any function
-assigned to <code>rl_event_hook</code>.  <var>u</var> must be greater than or equal
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fkeyboard_005finput_005ftimeout"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_set_keyboard_input_timeout</strong> <code class="def-code-arguments">(int u)</code><a class="copiable-link" href="#index-rl_005fset_005fkeyboard_005finput_005ftimeout"> &para;</a></span></dt>
+<dd><p>While waiting for keyboard input in <code class="code">rl_read_key()</code>, Readline will
+wait for <var class="var">u</var> microseconds for input before calling any function
+assigned to <code class="code">rl_event_hook</code>.
+<var class="var">u</var> must be greater than or equal
 to zero (a zero-length timeout is equivalent to a poll).
 The default waiting period is one-tenth of a second.
 Returns the old timeout value.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005ftimeout"><span class="category">Function: </span><span><em>int</em> <strong>rl_set_timeout</strong> <em>(unsigned int secs, unsigned int usecs)</em><a href='#index-rl_005fset_005ftimeout' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set a timeout for subsequent calls to <code>readline()</code>. If Readline does
-not read a complete line, or the number of characters specified by
-<code>rl_num_chars_to_read</code>, before the duration specified by <var>secs</var>
-(in seconds) and <var>usecs</var> (microseconds), it returns and sets
-<code>RL_STATE_TIMEOUT</code> in <code>rl_readline_state</code>.
-Passing 0 for <code>secs</code> and <code>usecs</code> cancels any previously set
-timeout; the convenience macro <code>rl_clear_timeout()</code> is shorthand
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005ftimeout"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_set_timeout</strong> <code class="def-code-arguments">(unsigned int secs, unsigned int usecs)</code><a class="copiable-link" href="#index-rl_005fset_005ftimeout"> &para;</a></span></dt>
+<dd><p>Set a timeout for subsequent calls to <code class="code">readline()</code>.
+If Readline does not read a complete line, or the number of characters
+specified by <code class="code">rl_num_chars_to_read</code>,
+before the duration specified by <var class="var">secs</var> (in seconds)
+and <var class="var">usecs</var> (microseconds), it returns and sets
+<code class="code">RL_STATE_TIMEOUT</code> in <code class="code">rl_readline_state</code>.
+Passing 0 for <code class="code">secs</code> and <code class="code">usecs</code> cancels any previously set
+timeout; the convenience macro <code class="code">rl_clear_timeout()</code> is shorthand
 for this.
 Returns 0 if the timeout is set successfully.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ftimeout_005fremaining"><span class="category">Function: </span><span><em>int</em> <strong>rl_timeout_remaining</strong> <em>(unsigned int *secs, unsigned int *usecs)</em><a href='#index-rl_005ftimeout_005fremaining' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ftimeout_005fremaining"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_timeout_remaining</strong> <code class="def-code-arguments">(unsigned int *secs, unsigned int *usecs)</code><a class="copiable-link" href="#index-rl_005ftimeout_005fremaining"> &para;</a></span></dt>
 <dd><p>Return the number of seconds and microseconds remaining in the current
-timeout duration in <var>*secs</var> and <var>*usecs</var>, respectively.
-Both <var>*secs</var> and <var>*usecs</var> must be non-NULL to return any values.
+timeout duration in <var class="var">*secs</var> and <var class="var">*usecs</var>, respectively.
+Both <var class="var">*secs</var> and <var class="var">*usecs</var> must be non-NULL to return any values.
 The return value is -1 on error or when there is no timeout set,
-0 when the timeout has expired (leaving <var>*secs</var> and <var>*usecs</var>
+0 when the timeout has expired (leaving <var class="var">*secs</var> and <var class="var">*usecs</var>
 unchanged),
 and 1 if the timeout has not expired.
-If either of <var>secs</var> and <var>usecs</var> is <code>NULL</code>,
+If either of <var class="var">secs</var> and <var class="var">usecs</var> is <code class="code">NULL</code>,
 the return value indicates whether the timeout has expired.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Terminal-Management">
-<div class="header">
+<div class="subsection-level-extent" id="Terminal-Management">
+<div class="nav-panel">
 <p>
 Next: <a href="#Utility-Functions" accesskey="n" rel="next">Utility Functions</a>, Previous: <a href="#Character-Input" accesskey="p" rel="prev">Character Input</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Terminal-Management-1"></span><h4 class="subsection">2.4.9 Terminal Management</h4>
-
-<dl class="def">
-<dt id="index-rl_005fprep_005fterminal"><span class="category">Function: </span><span><em>void</em> <strong>rl_prep_terminal</strong> <em>(int meta_flag)</em><a href='#index-rl_005fprep_005fterminal' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Modify the terminal settings for Readline&rsquo;s use, so <code>readline()</code>
-can read a single character at a time from the keyboard.
-The <var>meta_flag</var> argument should be non-zero if Readline should
+<h4 class="subsection" id="Terminal-Management-1"><span>2.4.9 Terminal Management<a class="copiable-link" href="#Terminal-Management-1"> &para;</a></span></h4>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fprep_005fterminal"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_prep_terminal</strong> <code class="def-code-arguments">(int meta_flag)</code><a class="copiable-link" href="#index-rl_005fprep_005fterminal"> &para;</a></span></dt>
+<dd><p>Modify the terminal settings for Readline&rsquo;s use, so <code class="code">readline()</code>
+can read a single character at a time from the keyboard
+and perform redisplay.
+The <var class="var">meta_flag</var> argument should be non-zero if Readline should
 read eight-bit input.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdeprep_005fterminal"><span class="category">Function: </span><span><em>void</em> <strong>rl_deprep_terminal</strong> <em>(void)</em><a href='#index-rl_005fdeprep_005fterminal' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Undo the effects of <code>rl_prep_terminal()</code>, leaving the terminal in
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fdeprep_005fterminal"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_deprep_terminal</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fdeprep_005fterminal"> &para;</a></span></dt>
+<dd><p>Undo the effects of <code class="code">rl_prep_terminal()</code>, leaving the terminal in
 the state in which it was before the most recent call to
-<code>rl_prep_terminal()</code>.
+<code class="code">rl_prep_terminal()</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ftty_005fset_005fdefault_005fbindings"><span class="category">Function: </span><span><em>void</em> <strong>rl_tty_set_default_bindings</strong> <em>(Keymap kmap)</em><a href='#index-rl_005ftty_005fset_005fdefault_005fbindings' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ftty_005fset_005fdefault_005fbindings"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_tty_set_default_bindings</strong> <code class="def-code-arguments">(Keymap kmap)</code><a class="copiable-link" href="#index-rl_005ftty_005fset_005fdefault_005fbindings"> &para;</a></span></dt>
 <dd><p>Read the operating system&rsquo;s terminal editing characters (as would be
-displayed by <code>stty</code>) to their Readline equivalents.
-The bindings are performed in <var>kmap</var>.
+displayed by <code class="code">stty</code>) to their Readline equivalents.
+The bindings are performed in <var class="var">kmap</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ftty_005funset_005fdefault_005fbindings"><span class="category">Function: </span><span><em>void</em> <strong>rl_tty_unset_default_bindings</strong> <em>(Keymap kmap)</em><a href='#index-rl_005ftty_005funset_005fdefault_005fbindings' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Reset the bindings manipulated by <code>rl_tty_set_default_bindings</code> so
-that the terminal editing characters are bound to <code>rl_insert</code>.
-The bindings are performed in <var>kmap</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ftty_005funset_005fdefault_005fbindings"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_tty_unset_default_bindings</strong> <code class="def-code-arguments">(Keymap kmap)</code><a class="copiable-link" href="#index-rl_005ftty_005funset_005fdefault_005fbindings"> &para;</a></span></dt>
+<dd><p>Reset the bindings manipulated by <code class="code">rl_tty_set_default_bindings</code> so
+that the terminal editing characters are bound to <code class="code">rl_insert</code>.
+The bindings are performed in <var class="var">kmap</var>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ftty_005fset_005fechoing"><span class="category">Function: </span><span><em>int</em> <strong>rl_tty_set_echoing</strong> <em>(int value)</em><a href='#index-rl_005ftty_005fset_005fechoing' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set Readline&rsquo;s idea of whether or not it is echoing output to its output
-stream (<var>rl_outstream</var>).  If <var>value</var> is 0, Readline does not display
-output to <var>rl_outstream</var>; any other value enables output.  The initial
-value is set when Readline initializes the terminal settings.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ftty_005fset_005fechoing"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_tty_set_echoing</strong> <code class="def-code-arguments">(int value)</code><a class="copiable-link" href="#index-rl_005ftty_005fset_005fechoing"> &para;</a></span></dt>
+<dd><p>Set Readline&rsquo;s idea of whether or not it is
+echoing output to its output stream (<var class="var">rl_outstream</var>).
+If <var class="var">value</var> is 0,
+Readline does not display output to <var class="var">rl_outstream</var>; any other
+value enables output.
+The initial value is set when Readline initializes the terminal settings.
 This function returns the previous value.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freset_005fterminal"><span class="category">Function: </span><span><em>int</em> <strong>rl_reset_terminal</strong> <em>(const char *terminal_name)</em><a href='#index-rl_005freset_005fterminal' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005freset_005fterminal"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_reset_terminal</strong> <code class="def-code-arguments">(const char *terminal_name)</code><a class="copiable-link" href="#index-rl_005freset_005fterminal"> &para;</a></span></dt>
 <dd><p>Reinitialize Readline&rsquo;s idea of the terminal settings using
-<var>terminal_name</var> as the terminal type (e.g., <code>vt100</code>).
-If <var>terminal_name</var> is <code>NULL</code>, the value of the <code>TERM</code>
-environment variable is used.
+<var class="var">terminal_name</var> as the terminal type (e.g., <code class="code">xterm</code>).
+If <var class="var">terminal_name</var> is <code class="code">NULL</code>, Readline uses the value of the
+<code class="code">TERM</code> environment variable.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Utility-Functions">
-<div class="header">
+<div class="subsection-level-extent" id="Utility-Functions">
+<div class="nav-panel">
 <p>
 Next: <a href="#Miscellaneous-Functions" accesskey="n" rel="next">Miscellaneous Functions</a>, Previous: <a href="#Terminal-Management" accesskey="p" rel="prev">Terminal Management</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Utility-Functions-1"></span><h4 class="subsection">2.4.10 Utility Functions</h4>
+<h4 class="subsection" id="Utility-Functions-1"><span>2.4.10 Utility Functions<a class="copiable-link" href="#Utility-Functions-1"> &para;</a></span></h4>
 
-<dl class="def">
-<dt id="index-rl_005fsave_005fstate"><span class="category">Function: </span><span><em>int</em> <strong>rl_save_state</strong> <em>(struct readline_state *sp)</em><a href='#index-rl_005fsave_005fstate' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Save a snapshot of Readline&rsquo;s internal state to <var>sp</var>.
-The contents of the <var>readline_state</var> structure are documented
-in <samp>readline.h</samp>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fsave_005fstate"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_save_state</strong> <code class="def-code-arguments">(struct readline_state *sp)</code><a class="copiable-link" href="#index-rl_005fsave_005fstate"> &para;</a></span></dt>
+<dd><p>Save a snapshot of Readline&rsquo;s internal state to <var class="var">sp</var>.
+The contents of the <var class="var">readline_state</var> structure are
+documented in <samp class="file">readline.h</samp>.
 The caller is responsible for allocating the structure.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005frestore_005fstate"><span class="category">Function: </span><span><em>int</em> <strong>rl_restore_state</strong> <em>(struct readline_state *sp)</em><a href='#index-rl_005frestore_005fstate' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Restore Readline&rsquo;s internal state to that stored in <var>sp</var>, which must
-have been saved by a call to <code>rl_save_state</code>.
-The contents of the <var>readline_state</var> structure are documented
-in <samp>readline.h</samp>.
-The caller is responsible for freeing the structure.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005ffree"><span class="category">Function: </span><span><em>void</em> <strong>rl_free</strong> <em>(void *mem)</em><a href='#index-rl_005ffree' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Deallocate the memory pointed to by <var>mem</var>.  <var>mem</var> must have been
-allocated by <code>malloc</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005frestore_005fstate"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_restore_state</strong> <code class="def-code-arguments">(struct readline_state *sp)</code><a class="copiable-link" href="#index-rl_005frestore_005fstate"> &para;</a></span></dt>
+<dd><p>Restore Readline&rsquo;s internal state to that stored in <var class="var">sp</var>,
+which must have been saved by a call to <code class="code">rl_save_state</code>. 
+The contents of the <var class="var">readline_state</var> structure are documented in
+<samp class="file">readline.h</samp>.
+The caller is responsible for freeing the structure. 
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freplace_005fline"><span class="category">Function: </span><span><em>void</em> <strong>rl_replace_line</strong> <em>(const char *text, int clear_undo)</em><a href='#index-rl_005freplace_005fline' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Replace the contents of <code>rl_line_buffer</code> with <var>text</var>.
-The point and mark are preserved, if possible.
-If <var>clear_undo</var> is non-zero, the undo list associated with the
-current line is cleared.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffree"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_free</strong> <code class="def-code-arguments">(void *mem)</code><a class="copiable-link" href="#index-rl_005ffree"> &para;</a></span></dt>
+<dd><p>Deallocate the memory pointed to by <var class="var">mem</var>.
+<var class="var">mem</var> must have been allocated by <code class="code">malloc</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fextend_005fline_005fbuffer"><span class="category">Function: </span><span><em>void</em> <strong>rl_extend_line_buffer</strong> <em>(int len)</em><a href='#index-rl_005fextend_005fline_005fbuffer' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Ensure that <code>rl_line_buffer</code> has enough space to hold <var>len</var>
-characters, possibly reallocating it if necessary.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fextend_005fline_005fbuffer"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_extend_line_buffer</strong> <code class="def-code-arguments">(int len)</code><a class="copiable-link" href="#index-rl_005fextend_005fline_005fbuffer"> &para;</a></span></dt>
+<dd><p>Ensure that <code class="code">rl_line_buffer</code> has enough space to hold <var class="var">len</var>
+characters, reallocating it if necessary. 
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005finitialize"><span class="category">Function: </span><span><em>int</em> <strong>rl_initialize</strong> <em>(void)</em><a href='#index-rl_005finitialize' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005finitialize"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_initialize</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005finitialize"> &para;</a></span></dt>
 <dd><p>Initialize or re-initialize Readline&rsquo;s internal state.
-It&rsquo;s not strictly necessary to call this; <code>readline()</code> calls it before
-reading any input.
+It&rsquo;s not strictly necessary to call this;
+<code class="code">readline()</code> calls it before reading any input.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fding"><span class="category">Function: </span><span><em>int</em> <strong>rl_ding</strong> <em>(void)</em><a href='#index-rl_005fding' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Ring the terminal bell, obeying the setting of <code>bell-style</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fding"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_ding</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fding"> &para;</a></span></dt>
+<dd><p>Ring the terminal bell, obeying the setting of <code class="code">bell-style</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005falphabetic"><span class="category">Function: </span><span><em>int</em> <strong>rl_alphabetic</strong> <em>(int c)</em><a href='#index-rl_005falphabetic' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return 1 if <var>c</var> is an alphabetic character.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005falphabetic"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_alphabetic</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-rl_005falphabetic"> &para;</a></span></dt>
+<dd><p>Return 1 if <var class="var">c</var> is an alphabetic character.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdisplay_005fmatch_005flist"><span class="category">Function: </span><span><em>void</em> <strong>rl_display_match_list</strong> <em>(char **matches, int len, int max)</em><a href='#index-rl_005fdisplay_005fmatch_005flist' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fdisplay_005fmatch_005flist"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_display_match_list</strong> <code class="def-code-arguments">(char **matches, int len, int max)</code><a class="copiable-link" href="#index-rl_005fdisplay_005fmatch_005flist"> &para;</a></span></dt>
 <dd><p>A convenience function for displaying a list of strings in
-columnar format on Readline&rsquo;s output stream.  <code>matches</code> is the list
-of strings, in argv format, such as a list of completion matches.
-<code>len</code> is the number of strings in <code>matches</code>, and <code>max</code>
-is the length of the longest string in <code>matches</code>.  This function uses
-the setting of <code>print-completions-horizontally</code> to select how the
-matches are displayed (see <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>).
+columnar format on Readline&rsquo;s output stream.
+<code class="code">matches</code> is the list of strings, in argv format,
+such as a list of completion matches.
+<code class="code">len</code> is the number of strings in <code class="code">matches</code>, and <code class="code">max</code>
+is the length of the longest string in <code class="code">matches</code>.
+This function uses the setting of <code class="code">print-completions-horizontally</code>
+to select how the matches are displayed (see <a class="pxref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>).
 When displaying completions, this function 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.
+for display to the value of <code class="code">completion-display-width</code>, the value of
+the environment variable <code class="env">COLUMNS</code>, or the screen width, in that order.
 </p></dd></dl>
 
-<p>The following are implemented as macros, defined in <code>chardefs.h</code>.
+<p>The following are implemented as macros, defined in <code class="code">chardefs.h</code>.
 Applications should refrain from using them.
 </p>
-<dl class="def">
-<dt id="index-_005frl_005fuppercase_005fp"><span class="category">Function: </span><span><em>int</em> <strong>_rl_uppercase_p</strong> <em>(int c)</em><a href='#index-_005frl_005fuppercase_005fp' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return 1 if <var>c</var> is an uppercase alphabetic character.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-_005frl_005fuppercase_005fp"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">_rl_uppercase_p</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-_005frl_005fuppercase_005fp"> &para;</a></span></dt>
+<dd><p>Return 1 if <var class="var">c</var> is an uppercase alphabetic character.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-_005frl_005flowercase_005fp"><span class="category">Function: </span><span><em>int</em> <strong>_rl_lowercase_p</strong> <em>(int c)</em><a href='#index-_005frl_005flowercase_005fp' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return 1 if <var>c</var> is a lowercase alphabetic character.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-_005frl_005flowercase_005fp"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">_rl_lowercase_p</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-_005frl_005flowercase_005fp"> &para;</a></span></dt>
+<dd><p>Return 1 if <var class="var">c</var> is a lowercase alphabetic character.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-_005frl_005fdigit_005fp"><span class="category">Function: </span><span><em>int</em> <strong>_rl_digit_p</strong> <em>(int c)</em><a href='#index-_005frl_005fdigit_005fp' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return 1 if <var>c</var> is a numeric character.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-_005frl_005fdigit_005fp"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">_rl_digit_p</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-_005frl_005fdigit_005fp"> &para;</a></span></dt>
+<dd><p>Return 1 if <var class="var">c</var> is a numeric character.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-_005frl_005fto_005fupper"><span class="category">Function: </span><span><em>int</em> <strong>_rl_to_upper</strong> <em>(int c)</em><a href='#index-_005frl_005fto_005fupper' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If <var>c</var> is a lowercase alphabetic character, return the corresponding
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-_005frl_005fto_005fupper"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">_rl_to_upper</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-_005frl_005fto_005fupper"> &para;</a></span></dt>
+<dd><p>If <var class="var">c</var> is a lowercase alphabetic character, return the corresponding
 uppercase character.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-_005frl_005fto_005flower"><span class="category">Function: </span><span><em>int</em> <strong>_rl_to_lower</strong> <em>(int c)</em><a href='#index-_005frl_005fto_005flower' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If <var>c</var> is an uppercase alphabetic character, return the corresponding
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-_005frl_005fto_005flower"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">_rl_to_lower</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-_005frl_005fto_005flower"> &para;</a></span></dt>
+<dd><p>If <var class="var">c</var> is an uppercase alphabetic character, return the corresponding
 lowercase character.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-_005frl_005fdigit_005fvalue"><span class="category">Function: </span><span><em>int</em> <strong>_rl_digit_value</strong> <em>(int c)</em><a href='#index-_005frl_005fdigit_005fvalue' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If <var>c</var> is a number, return the value it represents.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-_005frl_005fdigit_005fvalue"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">_rl_digit_value</strong> <code class="def-code-arguments">(int c)</code><a class="copiable-link" href="#index-_005frl_005fdigit_005fvalue"> &para;</a></span></dt>
+<dd><p>If <var class="var">c</var> is a number, return the value it represents.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Miscellaneous-Functions">
-<div class="header">
+<div class="subsection-level-extent" id="Miscellaneous-Functions">
+<div class="nav-panel">
 <p>
 Next: <a href="#Alternate-Interface" accesskey="n" rel="next">Alternate Interface</a>, Previous: <a href="#Utility-Functions" accesskey="p" rel="prev">Utility Functions</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Miscellaneous-Functions-1"></span><h4 class="subsection">2.4.11 Miscellaneous Functions</h4>
+<h4 class="subsection" id="Miscellaneous-Functions-1"><span>2.4.11 Miscellaneous Functions<a class="copiable-link" href="#Miscellaneous-Functions-1"> &para;</a></span></h4>
 
-<dl class="def">
-<dt id="index-rl_005fmacro_005fbind"><span class="category">Function: </span><span><em>int</em> <strong>rl_macro_bind</strong> <em>(const char *keyseq, const char *macro, Keymap map)</em><a href='#index-rl_005fmacro_005fbind' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Bind the key sequence <var>keyseq</var> to invoke the macro <var>macro</var>.
-The binding is performed in <var>map</var>.  When <var>keyseq</var> is invoked, the
-<var>macro</var> will be inserted into the line.  This function is deprecated;
-use <code>rl_generic_bind()</code> instead.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fmacro_005fbind"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_macro_bind</strong> <code class="def-code-arguments">(const char *keyseq, const char *macro, Keymap map)</code><a class="copiable-link" href="#index-rl_005fmacro_005fbind"> &para;</a></span></dt>
+<dd><p>Bind the key sequence <var class="var">keyseq</var> to invoke the macro <var class="var">macro</var>.
+The binding is performed in <var class="var">map</var>.
+When <var class="var">keyseq</var> is invoked, the <var class="var">macro</var> will be inserted into the line.
+This function is deprecated; use <code class="code">rl_generic_bind</code> instead.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fmacro_005fdumper"><span class="category">Function: </span><span><em>void</em> <strong>rl_macro_dumper</strong> <em>(int readable)</em><a href='#index-rl_005fmacro_005fdumper' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fmacro_005fdumper"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_macro_dumper</strong> <code class="def-code-arguments">(int readable)</code><a class="copiable-link" href="#index-rl_005fmacro_005fdumper"> &para;</a></span></dt>
 <dd><p>Print the key sequences bound to macros and their values, using
-the current keymap, to <code>rl_outstream</code>.
-If <var>readable</var> is non-zero, the list is formatted in such a way
-that it can be made part of an <code>inputrc</code> file and re-read.
+the current keymap, to <code class="code">rl_outstream</code>.
+If the application has assigned a value to <code class="code">rl_macro_display_hook</code>,
+<code class="code">rl_macro_dumper</code> calls it instead of printing anything.
+If <var class="var">readable</var> is greater than zero, the list is formatted in such a way
+that it can be made part of an <code class="code">inputrc</code> file and re-read.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fvariable_005fbind"><span class="category">Function: </span><span><em>int</em> <strong>rl_variable_bind</strong> <em>(const char *variable, const char *value)</em><a href='#index-rl_005fvariable_005fbind' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Make the Readline variable <var>variable</var> have <var>value</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fvariable_005fbind"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_variable_bind</strong> <code class="def-code-arguments">(const char *variable, const char *value)</code><a class="copiable-link" href="#index-rl_005fvariable_005fbind"> &para;</a></span></dt>
+<dd><p>Make the Readline variable <var class="var">variable</var> have <var class="var">value</var>.
 This behaves as if the Readline command
-&lsquo;<samp>set <var>variable</var> <var>value</var></samp>&rsquo; had been executed in an <code>inputrc</code>
-file (see <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>).
+&lsquo;<samp class="samp">set <var class="var">variable</var> <var class="var">value</var></samp>&rsquo; had been executed in an <code class="code">inputrc</code>
+file (see <a class="pxref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>)
+or by <code class="code">rl_parse_and_bind</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fvariable_005fvalue"><span class="category">Function: </span><span><em>char *</em> <strong>rl_variable_value</strong> <em>(const char *variable)</em><a href='#index-rl_005fvariable_005fvalue' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Return a string representing the value of the Readline variable <var>variable</var>.
-For boolean variables, this string is either &lsquo;<samp>on</samp>&rsquo; or &lsquo;<samp>off</samp>&rsquo;.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fvariable_005fvalue"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_variable_value</strong> <code class="def-code-arguments">(const char *variable)</code><a class="copiable-link" href="#index-rl_005fvariable_005fvalue"> &para;</a></span></dt>
+<dd><p>Return a string representing the value of the Readline variable <var class="var">variable</var>.
+For boolean variables, this string is either &lsquo;<samp class="samp">on</samp>&rsquo; or &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fvariable_005fdumper"><span class="category">Function: </span><span><em>void</em> <strong>rl_variable_dumper</strong> <em>(int readable)</em><a href='#index-rl_005fvariable_005fdumper' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fvariable_005fdumper"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_variable_dumper</strong> <code class="def-code-arguments">(int readable)</code><a class="copiable-link" href="#index-rl_005fvariable_005fdumper"> &para;</a></span></dt>
 <dd><p>Print the Readline variable names and their current values
-to <code>rl_outstream</code>.
-If <var>readable</var> is non-zero, the list is formatted in such a way
-that it can be made part of an <code>inputrc</code> file and re-read.
+to <code class="code">rl_outstream</code>.
+If <var class="var">readable</var> is non-zero, the list is formatted in such a way
+that it can be made part of an <code class="code">inputrc</code> file and re-read.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005fparen_005fblink_005ftimeout"><span class="category">Function: </span><span><em>int</em> <strong>rl_set_paren_blink_timeout</strong> <em>(int u)</em><a href='#index-rl_005fset_005fparen_005fblink_005ftimeout' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fparen_005fblink_005ftimeout"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_set_paren_blink_timeout</strong> <code class="def-code-arguments">(int u)</code><a class="copiable-link" href="#index-rl_005fset_005fparen_005fblink_005ftimeout"> &para;</a></span></dt>
 <dd><p>Set the time interval (in microseconds) that Readline waits when showing
-a balancing character when <code>blink-matching-paren</code> has been enabled.
+a balancing character when <code class="code">blink-matching-paren</code> has been enabled.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fget_005ftermcap"><span class="category">Function: </span><span><em>char *</em> <strong>rl_get_termcap</strong> <em>(const char *cap)</em><a href='#index-rl_005fget_005ftermcap' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Retrieve the string value of the termcap capability <var>cap</var>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fget_005ftermcap"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_get_termcap</strong> <code class="def-code-arguments">(const char *cap)</code><a class="copiable-link" href="#index-rl_005fget_005ftermcap"> &para;</a></span></dt>
+<dd><p>Retrieve the string value of the termcap capability <var class="var">cap</var>.
 Readline fetches the termcap entry for the current terminal name and
 uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line.  Readline does not
-use all of a terminal&rsquo;s capabilities, and this function will return
-values for only those capabilities Readline uses.
+terminal-specific operations, like erasing a line.
+Readline does not fetch or use all of a terminal&rsquo;s capabilities,
+and this function will return
+values for only those capabilities Readline fetches.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005freparse_005fcolors"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_reparse_colors</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005freparse_005fcolors"> &para;</a></span></dt>
+<dd><p>Read or re-read color definitions from <code class="env">LS_COLORS</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fclear_005fhistory"><span class="category">Function: </span><span><em>void</em> <strong>rl_clear_history</strong> <em>(void)</em><a href='#index-rl_005fclear_005fhistory' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fclear_005fhistory"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_clear_history</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fclear_005fhistory"> &para;</a></span></dt>
 <dd><p>Clear the history list by deleting all of the entries, in the same manner
-as the History library&rsquo;s <code>clear_history()</code> function.
-This differs from <code>clear_history</code> because it frees private data
+as the History library&rsquo;s <code class="code">clear_history()</code> function.
+This differs from <code class="code">clear_history</code> because it frees private data
 Readline saves in the history list.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005factivate_005fmark"><span class="category">Function: </span><span><em>void</em> <strong>rl_activate_mark</strong> <em>(void)</em><a href='#index-rl_005factivate_005fmark' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Enable an <em>active</em> mark.
-When this is enabled, the text between point and mark (the <var>region</var>) is
-displayed in the terminal&rsquo;s standout mode (a <var>face</var>).
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005factivate_005fmark"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_activate_mark</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005factivate_005fmark"> &para;</a></span></dt>
+<dd><p>Enable an <em class="emph">active</em> region.
+When this is enabled, the text between point and mark (the <var class="var">region</var>) is
+displayed using the color specified by the value of the
+<code class="code">active-region-start-color</code> variable (a <var class="var">face</var>).
+The default face is the terminal&rsquo;s standout mode.
 This is called by various Readline functions that set the mark and insert
 text, and is available for applications to call.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdeactivate_005fmark"><span class="category">Function: </span><span><em>void</em> <strong>rl_deactivate_mark</strong> <em>(void)</em><a href='#index-rl_005fdeactivate_005fmark' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Turn off the active mark.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fdeactivate_005fmark"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_deactivate_mark</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fdeactivate_005fmark"> &para;</a></span></dt>
+<dd><p>Turn off the active region.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fkeep_005fmark_005factive"><span class="category">Function: </span><span><em>void</em> <strong>rl_keep_mark_active</strong> <em>(void)</em><a href='#index-rl_005fkeep_005fmark_005factive' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fkeep_005fmark_005factive"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_keep_mark_active</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fkeep_005fmark_005factive"> &para;</a></span></dt>
 <dd><p>Indicate that the mark should remain active when the current Readline
 function completes and after redisplay occurs.
 In most cases, the mark remains active for only the duration of a single
 bindable Readline function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fmark_005factive_005fp"><span class="category">Function: </span><span><em>int</em> <strong>rl_mark_active_p</strong> <em>(void)</em><a href='#index-rl_005fmark_005factive_005fp' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fmark_005factive_005fp"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_mark_active_p</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fmark_005factive_005fp"> &para;</a></span></dt>
 <dd><p>Return a non-zero value if the mark is currently active; zero otherwise.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Alternate-Interface">
-<div class="header">
+<div class="subsection-level-extent" id="Alternate-Interface">
+<div class="nav-panel">
 <p>
 Next: <a href="#A-Readline-Example" accesskey="n" rel="next">A Readline Example</a>, Previous: <a href="#Miscellaneous-Functions" accesskey="p" rel="prev">Miscellaneous Functions</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Alternate-Interface-1"></span><h4 class="subsection">2.4.12 Alternate Interface</h4>
-
-<p>An alternate interface is available to plain <code>readline()</code>.  Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to <code>select()</code>
-on various file descriptors.  To accommodate this need, Readline can
-also be invoked as a &lsquo;callback&rsquo; function from an event loop.  There
-are functions available to make this easy.
-</p>
-<dl class="def">
-<dt id="index-rl_005fcallback_005fhandler_005finstall"><span class="category">Function: </span><span><em>void</em> <strong>rl_callback_handler_install</strong> <em>(const char *prompt, rl_vcpfunc_t *lhandler)</em><a href='#index-rl_005fcallback_005fhandler_005finstall' class='copiable-anchor'> &para;</a></span></dt>
+<h4 class="subsection" id="Alternate-Interface-1"><span>2.4.12 Alternate Interface<a class="copiable-link" href="#Alternate-Interface-1"> &para;</a></span></h4>
+
+<p>For applications that need more granular control than
+plain <code class="code">readline()</code> provides, there is
+an alternate interface.
+Some applications need to interleave keyboard I/O with file, device,
+or window system I/O, typically by using a main loop to <code class="code">select()</code>
+on various file descriptors.
+To accommodate this use case, Readline can
+also be invoked as a &lsquo;callback&rsquo; function from an event loop.
+There are functions available to make this easy.
+</p>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcallback_005fhandler_005finstall"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_callback_handler_install</strong> <code class="def-code-arguments">(const char *prompt, rl_vcpfunc_t *line_handler)</code><a class="copiable-link" href="#index-rl_005fcallback_005fhandler_005finstall"> &para;</a></span></dt>
 <dd><p>Set up the terminal for Readline I/O and display the initial
-expanded value of <var>prompt</var>.  Save the value of <var>lhandler</var> to
+expanded value of <var class="var">prompt</var>.
+Save the value of <var class="var">line_handler</var> to
 use as a handler function to call when a complete line of input has been
 entered.
 The handler function receives the text of the line as an argument.
-As with <code>readline()</code>, the handler function should <code>free</code> the
+As with <code class="code">readline()</code>, the handler function should <code class="code">free</code> the
 line when it it finished with it.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcallback_005fread_005fchar"><span class="category">Function: </span><span><em>void</em> <strong>rl_callback_read_char</strong> <em>(void)</em><a href='#index-rl_005fcallback_005fread_005fchar' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcallback_005fread_005fchar"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_callback_read_char</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fcallback_005fread_005fchar"> &para;</a></span></dt>
 <dd><p>Whenever an application determines that keyboard input is available, it
-should call <code>rl_callback_read_char()</code>, which will read the next
+should call <code class="code">rl_callback_read_char()</code>, which will read the next
 character from the current input source.
-If that character completes the line, <code>rl_callback_read_char</code> will
-invoke the <var>lhandler</var> function installed by
-<code>rl_callback_handler_install</code> to process the line.
-Before calling the <var>lhandler</var> function, the terminal settings are
-reset to the values they had before calling
-<code>rl_callback_handler_install</code>.
-If the <var>lhandler</var> function returns,
+If that character completes the line, <code class="code">rl_callback_read_char</code> will
+invoke the <var class="var">line_handler</var> function installed by
+<code class="code">rl_callback_handler_install</code> to process the line.
+Before calling the <var class="var">line_handler</var> function, Readline resets
+the terminal settings to the values they had before calling
+<code class="code">rl_callback_handler_install</code>.
+If the <var class="var">line_handler</var> function returns,
 and the line handler remains installed,
-the terminal settings are modified for Readline&rsquo;s use again.
-<code>EOF</code> is indicated by calling <var>lhandler</var> with a
-<code>NULL</code> line.
+Readline modifies the terminal settings for its use again.
+<code class="code">EOF</code> is indicated by calling <var class="var">line_handler</var> with a
+<code class="code">NULL</code> line.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcallback_005fsigcleanup"><span class="category">Function: </span><span><em>void</em> <strong>rl_callback_sigcleanup</strong> <em>(void)</em><a href='#index-rl_005fcallback_005fsigcleanup' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcallback_005fsigcleanup"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_callback_sigcleanup</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fcallback_005fsigcleanup"> &para;</a></span></dt>
 <dd><p>Clean up any internal state the callback interface uses to maintain state
 between calls to rl_callback_read_char (e.g., the state of any active
-incremental searches).  This is intended to be used by applications that
-wish to perform their own signal handling; Readline&rsquo;s internal signal handler
-calls this when appropriate.
+incremental searches).
+This is intended to be used by applications that
+wish to perform their own signal handling;
+Readline&rsquo;s internal signal handler calls this when appropriate.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcallback_005fhandler_005fremove"><span class="category">Function: </span><span><em>void</em> <strong>rl_callback_handler_remove</strong> <em>(void)</em><a href='#index-rl_005fcallback_005fhandler_005fremove' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcallback_005fhandler_005fremove"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_callback_handler_remove</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fcallback_005fhandler_005fremove"> &para;</a></span></dt>
 <dd><p>Restore the terminal to its initial state and remove the line handler.
 You may call this function from within a callback as well as independently.
-If the <var>lhandler</var> installed by <code>rl_callback_handler_install</code>
-does not exit the program, either this function or the function referred
-to by the value of <code>rl_deprep_term_function</code> should be called before
-the program exits to reset the terminal settings.
+If the <var class="var">line_handler</var> installed by <code class="code">rl_callback_handler_install</code>
+does not exit the program, your program should call
+either this function or the function referred
+to by the value of <code class="code">rl_deprep_term_function</code>
+before the program exits to reset the terminal settings.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="A-Readline-Example">
-<div class="header">
+<div class="subsection-level-extent" id="A-Readline-Example">
+<div class="nav-panel">
 <p>
 Next: <a href="#Alternate-Interface-Example" accesskey="n" rel="next">Alternate Interface Example</a>, Previous: <a href="#Alternate-Interface" accesskey="p" rel="prev">Alternate Interface</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="A-Readline-Example-1"></span><h4 class="subsection">2.4.13 A Readline Example</h4>
+<h4 class="subsection" id="A-Readline-Example-1"><span>2.4.13 A Readline Example<a class="copiable-link" href="#A-Readline-Example-1"> &para;</a></span></h4>
 
 <p>Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase.  If
-this function was bound to &lsquo;<samp>M-c</samp>&rsquo;, then typing &lsquo;<samp>M-c</samp>&rsquo; would
-change the case of the character under point.  Typing &lsquo;<samp>M-1 0 M-c</samp>&rsquo;
-would change the case of the following 10 characters, leaving the cursor on
+equivalents, and uppercase characters to lowercase.
+If this function was bound to &lsquo;<samp class="samp">M-c</samp>&rsquo;, then typing &lsquo;<samp class="samp">M-c</samp>&rsquo; would
+change the case of the character under point.
+Typing &lsquo;<samp class="samp">M-1 0 M-c</samp>&rsquo; would change the case
+of the following 10 characters, leaving the cursor on
 the last character changed.
 </p>
 <div class="example">
-<pre class="example">/* Invert the case of the COUNT following characters. */
+<pre class="example-preformatted">/* Invert the case of the COUNT following characters. */
 int
 invert_case_line (count, key)
      int count, key;
 {
-  register int start, end, i;
+  int start, end, i;
 
   start = rl_point;
 
   if (rl_point &gt;= rl_end)
     return (0);
 
-  if (count &lt; 0)
-    {
-      direction = -1;
-      count = -count;
-    }
-  else
-    direction = 1;
-      
   /* Find the end of the range to modify. */
-  end = start + (count * direction);
+  end = start + count;
 
   /* Force it to be within range. */
   if (end &gt; rl_end)
@@ -3838,6 +4139,11 @@ invert_case_line (count, key)
   if (start == end)
     return (0);
 
+  /* For positive arguments, put point after the last changed character. For
+     negative arguments, put point before the last changed character. */
+  rl_point = end;
+
+  /* Swap start and end if we are moving backwards */
   if (start &gt; end)
     {
       int temp = start;
@@ -3856,20 +4162,19 @@ invert_case_line (count, key)
       else if (_rl_lowercase_p (rl_line_buffer[i]))
         rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
     }
-  /* Move point to on top of the last character changed. */
-  rl_point = (direction == 1) ? end - 1 : start;
+
   return (0);
 }
 </pre></div>
 
 <hr>
 </div>
-<div class="subsection" id="Alternate-Interface-Example">
-<div class="header">
+<div class="subsection-level-extent" id="Alternate-Interface-Example">
+<div class="nav-panel">
 <p>
 Previous: <a href="#A-Readline-Example" accesskey="p" rel="prev">A Readline Example</a>, Up: <a href="#Readline-Convenience-Functions" accesskey="u" rel="up">Readline Convenience Functions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Alternate-Interface-Example-1"></span><h4 class="subsection">2.4.14 Alternate Interface Example</h4>
+<h4 class="subsection" id="Alternate-Interface-Example-1"><span>2.4.14 Alternate Interface Example<a class="copiable-link" href="#Alternate-Interface-Example-1"> &para;</a></span></h4>
 
 <p>Here is a complete program that illustrates Readline&rsquo;s alternate interface.
 It reads lines from the terminal and displays them, providing the
@@ -3877,11 +4182,10 @@ standard history and TAB completion functions.
 It understands the EOF character or &quot;exit&quot; to exit the program.
 </p>
 <div class="example">
-<pre class="example">/* Standard include files. stdio.h is required. */
+<pre class="example-preformatted">/* Standard include files. stdio.h is required. */
 #include &lt;stdlib.h&gt;
 #include &lt;string.h&gt;
 #include &lt;unistd.h&gt;
-#include &lt;locale.h&gt;
 
 /* Used for select(2) */
 #include &lt;sys/types.h&gt;
@@ -3889,12 +4193,19 @@ It understands the EOF character or &quot;exit&quot; to exit the program.
 
 #include &lt;signal.h&gt;
 
+#include &lt;errno.h&gt;
 #include &lt;stdio.h&gt;
 
+#include &lt;locale.h&gt;
+
 /* Standard readline include files. */
 #include &lt;readline/readline.h&gt;
 #include &lt;readline/history.h&gt;
 
+#if !defined (errno)
+extern int errno;
+#endif
+
 static void cb_linehandler (char *);
 static void sighandler (int);
 
@@ -3962,7 +4273,7 @@ main (int c, char **v)
   while (running)
     {
       FD_ZERO (&amp;fds);
-      FD_SET (fileno (rl_instream), &amp;fds);    
+      FD_SET (fileno (rl_instream), &amp;fds);
 
       r = select (FD_SETSIZE, &amp;fds, NULL, NULL, NULL);
       if (r &lt; 0 &amp;&amp; errno != EINTR)
@@ -3991,533 +4302,572 @@ main (int c, char **v)
 <hr>
 </div>
 </div>
-<div class="section" id="Readline-Signal-Handling">
-<div class="header">
+<div class="section-level-extent" id="Readline-Signal-Handling">
+<div class="nav-panel">
 <p>
 Next: <a href="#Custom-Completers" accesskey="n" rel="next">Custom Completers</a>, Previous: <a href="#Readline-Convenience-Functions" accesskey="p" rel="prev">Readline Convenience Functions</a>, Up: <a href="#Programming-with-GNU-Readline" accesskey="u" rel="up">Programming with GNU Readline</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Readline-Signal-Handling-1"></span><h3 class="section">2.5 Readline Signal Handling</h3>
+<h3 class="section" id="Readline-Signal-Handling-1"><span>2.5 Readline Signal Handling<a class="copiable-link" href="#Readline-Signal-Handling-1"> &para;</a></span></h3>
 
 <p>Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process.  They are intended to indicate
-exceptional events, like a user pressing the terminal&rsquo;s interrupt key,
-or a network connection being broken.  There is a class of signals that can
-be sent to the process currently reading input from the keyboard.  Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually. 
+sometimes on behalf of another process.
+They are intended to indicate exceptional events,
+like a user pressing the terminal&rsquo;s interrupt key,
+or a network connection being broken.
+There is a class of signals that can
+be sent to the process currently reading input from the keyboard.
+Since Readline changes the terminal attributes when it is called, it needs
+to perform special processing when such a signal is received in order to
+restore the terminal to a sane state, or provide applications using
+Readline with functions to do so manually. 
 </p>
 <p>Readline contains an internal signal handler that is installed for a
-number of signals (<code>SIGINT</code>, <code>SIGQUIT</code>, <code>SIGTERM</code>,
-<code>SIGHUP</code>, 
-<code>SIGALRM</code>, <code>SIGTSTP</code>, <code>SIGTTIN</code>, and <code>SIGTTOU</code>).
-When one of these signals is received, the signal handler
+number of signals (<code class="code">SIGINT</code>, <code class="code">SIGQUIT</code>, <code class="code">SIGTERM</code>,
+<code class="code">SIGHUP</code>, 
+<code class="code">SIGALRM</code>, <code class="code">SIGTSTP</code>, <code class="code">SIGTTIN</code>, and <code class="code">SIGTTOU</code>).
+When Readline receives one of these signals, the signal handler
 will reset the terminal attributes to those that were in effect before
-<code>readline()</code> was called, reset the signal handling to what it was
-before <code>readline()</code> was called, and resend the signal to the calling
+<code class="code">readline()</code> was called, reset the signal handling to what it was
+before <code class="code">readline()</code> was called, and resend the signal to the calling
 application.
 If and when the calling application&rsquo;s signal handler returns, Readline
 will reinitialize the terminal and continue to accept input.
-When a <code>SIGINT</code> is received, the Readline signal handler performs
+When a <code class="code">SIGINT</code> is received, the Readline signal handler performs
 some additional work, which will cause any partially-entered line to be
-aborted (see the description of <code>rl_free_line_state()</code> below).
+aborted (see the description of <code class="code">rl_free_line_state()</code> below).
 </p>
-<p>There is an additional Readline signal handler, for <code>SIGWINCH</code>, which
+<p>There is an additional Readline signal handler, for <code class="code">SIGWINCH</code>, which
 the kernel sends to a process whenever the terminal&rsquo;s size changes (for
-example, if a user resizes an <code>xterm</code>).  The Readline <code>SIGWINCH</code>
-handler updates Readline&rsquo;s internal screen size information, and then calls
-any <code>SIGWINCH</code> signal handler the calling application has installed. 
-Readline calls the application&rsquo;s <code>SIGWINCH</code> signal handler without
-resetting the terminal to its original state.  If the application&rsquo;s signal
-handler does more than update its idea of the terminal size and return (for
-example, a <code>longjmp</code> back to a main processing loop), it <em>must</em>
-call <code>rl_cleanup_after_signal()</code> (described below), to restore the
-terminal state.
+example, if a user resizes an <code class="code">xterm</code>).
+The Readline <code class="code">SIGWINCH</code> handler updates
+Readline&rsquo;s internal screen size information, and then calls any
+<code class="code">SIGWINCH</code> signal handler the calling application has installed. 
+Readline calls the application&rsquo;s <code class="code">SIGWINCH</code> signal handler without
+resetting the terminal to its original state.
+If the application&rsquo;s signal
+handler does more than update its idea of the terminal size and return
+(for example, a <code class="code">longjmp</code> back to a main processing loop),
+it <em class="emph">must</em> call <code class="code">rl_cleanup_after_signal()</code> (described below),
+to restore the terminal state.
 </p>
 <p>When an application is using the callback interface
-(see <a href="#Alternate-Interface">Alternate Interface</a>), Readline installs signal handlers only for
-the duration of the call to <code>rl_callback_read_char</code>.  Applications
-using the callback interface should be prepared to clean up Readline&rsquo;s
-state if they wish to handle the signal before the line handler completes
-and restores the terminal state.
+(see <a class="pxref" href="#Alternate-Interface">Alternate Interface</a>), Readline installs signal handlers only for
+the duration of the call to <code class="code">rl_callback_read_char</code>.
+Applications using the callback interface should be prepared
+to clean up Readline&rsquo;s state if they wish to handle the signal
+before the line handler completes and restores the terminal state.
 </p>
 <p>If an application using the callback interface wishes to have Readline
 install its signal handlers at the time the application calls
-<code>rl_callback_handler_install</code> and remove them only when a complete
+<code class="code">rl_callback_handler_install</code> and remove them only when a complete
 line of input has been read, it should set the
-<code>rl_persistent_signal_handlers</code> variable to a non-zero value.
+<code class="code">rl_persistent_signal_handlers</code> variable to a non-zero value.
 This allows an application to defer all of the handling of the signals
 Readline catches to Readline.
 Applications should use this variable with care; it can result in Readline
 catching signals and not acting on them (or allowing the application to react
-to them) until the application calls <code>rl_callback_read_char</code>.  This
-can result in an application becoming less responsive to keyboard signals
-like SIGINT.
+to them) until the application calls <code class="code">rl_callback_read_char</code>.
+This can result in an application becoming less responsive to keyboard
+signals like SIGINT.
 If an application does not want or need to perform any signal handling, or
-does not need to do any processing between calls to <code>rl_callback_read_char</code>,
-setting this variable may be desirable.
+does not need to do any processing
+between calls to <code class="code">rl_callback_read_char</code>,
+setting this variable may be appropriate.
 </p>
 <p>Readline provides two variables that allow application writers to
 control whether or not it will catch certain signals and act on them
-when they are received.  It is important that applications change the
-values of these variables only when calling <code>readline()</code>, not in
-a signal handler, so Readline&rsquo;s internal signal state is not corrupted.
-</p>
-<dl class="def">
-<dt id="index-rl_005fcatch_005fsignals"><span class="category">Variable: </span><span><em>int</em> <strong>rl_catch_signals</strong><a href='#index-rl_005fcatch_005fsignals' class='copiable-anchor'> &para;</a></span></dt>
+when they are received.
+It is important that applications change the
+values of these variables only when calling <code class="code">readline()</code>,
+not in a signal handler, so Readline&rsquo;s internal signal state
+is not corrupted.
+</p>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcatch_005fsignals"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_catch_signals</strong><a class="copiable-link" href="#index-rl_005fcatch_005fsignals"> &para;</a></span></dt>
 <dd><p>If this variable is non-zero, Readline will install signal handlers for
-<code>SIGINT</code>, <code>SIGQUIT</code>, <code>SIGTERM</code>, <code>SIGHUP</code>, <code>SIGALRM</code>,
-<code>SIGTSTP</code>, <code>SIGTTIN</code>, and <code>SIGTTOU</code>.
+<code class="code">SIGINT</code>, <code class="code">SIGQUIT</code>, <code class="code">SIGTERM</code>, <code class="code">SIGHUP</code>, <code class="code">SIGALRM</code>,
+<code class="code">SIGTSTP</code>, <code class="code">SIGTTIN</code>, and <code class="code">SIGTTOU</code>.
 </p>
-<p>The default value of <code>rl_catch_signals</code> is 1.
+<p>The default value of <code class="code">rl_catch_signals</code> is 1.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcatch_005fsigwinch"><span class="category">Variable: </span><span><em>int</em> <strong>rl_catch_sigwinch</strong><a href='#index-rl_005fcatch_005fsigwinch' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcatch_005fsigwinch"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_catch_sigwinch</strong><a class="copiable-link" href="#index-rl_005fcatch_005fsigwinch"> &para;</a></span></dt>
 <dd><p>If this variable is set to a non-zero value,
-Readline will install a signal handler for <code>SIGWINCH</code>.
+Readline will install a signal handler for <code class="code">SIGWINCH</code>.
 </p>
-<p>The default value of <code>rl_catch_sigwinch</code> is 1.
+<p>The default value of <code class="code">rl_catch_sigwinch</code> is 1.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fpersistent_005fsignal_005fhandlers"><span class="category">Variable: </span><span><em>int</em> <strong>rl_persistent_signal_handlers</strong><a href='#index-rl_005fpersistent_005fsignal_005fhandlers' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fpersistent_005fsignal_005fhandlers"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_persistent_signal_handlers</strong><a class="copiable-link" href="#index-rl_005fpersistent_005fsignal_005fhandlers"> &para;</a></span></dt>
 <dd><p>If an application using the callback interface wishes Readline&rsquo;s signal
 handlers to be installed and active during the set of calls to
-<code>rl_callback_read_char</code> that constitutes an entire single line,
+<code class="code">rl_callback_read_char</code> that constitutes an entire single line,
 it should set this variable to a non-zero value.
 </p>
-<p>The default value of <code>rl_persistent_signal_handlers</code> is 0.
+<p>The default value of <code class="code">rl_persistent_signal_handlers</code> is 0.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fchange_005fenvironment"><span class="category">Variable: </span><span><em>int</em> <strong>rl_change_environment</strong><a href='#index-rl_005fchange_005fenvironment' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fchange_005fenvironment"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_change_environment</strong><a class="copiable-link" href="#index-rl_005fchange_005fenvironment"> &para;</a></span></dt>
 <dd><p>If this variable is set to a non-zero value,
-and Readline is handling <code>SIGWINCH</code>, Readline will modify the
-<var>LINES</var> and <var>COLUMNS</var> environment variables upon receipt of a
-<code>SIGWINCH</code>
+and Readline is handling <code class="code">SIGWINCH</code>, Readline will modify the
+<var class="var">LINES</var> and <var class="var">COLUMNS</var> environment variables upon receipt of a
+<code class="code">SIGWINCH</code>.
 </p>
-<p>The default value of <code>rl_change_environment</code> is 1.
+<p>The default value of <code class="code">rl_change_environment</code> is 1.
 </p></dd></dl>
 
 <p>If an application does not wish to have Readline catch any signals, or
-to handle signals other than those Readline catches (<code>SIGHUP</code>,
+to handle signals other than those Readline catches (<code class="code">SIGHUP</code>,
 for example), 
 Readline provides convenience functions to do the necessary terminal
 and internal state cleanup upon receipt of a signal.
 </p>
-<dl class="def">
-<dt id="index-rl_005fpending_005fsignal"><span class="category">Function: </span><span><em>int</em> <strong>rl_pending_signal</strong> <em>(void)</em><a href='#index-rl_005fpending_005fsignal' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fpending_005fsignal"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_pending_signal</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fpending_005fsignal"> &para;</a></span></dt>
 <dd><p>Return the signal number of the most recent signal Readline received but
 has not yet handled, or 0 if there is no pending signal.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcleanup_005fafter_005fsignal"><span class="category">Function: </span><span><em>void</em> <strong>rl_cleanup_after_signal</strong> <em>(void)</em><a href='#index-rl_005fcleanup_005fafter_005fsignal' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcleanup_005fafter_005fsignal"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_cleanup_after_signal</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fcleanup_005fafter_005fsignal"> &para;</a></span></dt>
 <dd><p>This function will reset the state of the terminal to what it was before
-<code>readline()</code> was called, and remove the Readline signal handlers for
-all signals, depending on the values of <code>rl_catch_signals</code> and
-<code>rl_catch_sigwinch</code>.
+<code class="code">readline()</code> was called, and remove the Readline signal handlers for
+all signals, depending on the values of <code class="code">rl_catch_signals</code> and
+<code class="code">rl_catch_sigwinch</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffree_005fline_005fstate"><span class="category">Function: </span><span><em>void</em> <strong>rl_free_line_state</strong> <em>(void)</em><a href='#index-rl_005ffree_005fline_005fstate' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffree_005fline_005fstate"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_free_line_state</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005ffree_005fline_005fstate"> &para;</a></span></dt>
 <dd><p>This will free any partial state associated with the current input line
 (undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument).  This
-should be called before <code>rl_cleanup_after_signal()</code>.  The
-Readline signal handler for <code>SIGINT</code> calls this to abort the
-current input line.
+keyboard macro, and any partially-entered numeric argument).
+This should be called before <code class="code">rl_cleanup_after_signal()</code>.
+The Readline signal handler for <code class="code">SIGINT</code> calls this to abort
+the current input line.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freset_005fafter_005fsignal"><span class="category">Function: </span><span><em>void</em> <strong>rl_reset_after_signal</strong> <em>(void)</em><a href='#index-rl_005freset_005fafter_005fsignal' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005freset_005fafter_005fsignal"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_reset_after_signal</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005freset_005fafter_005fsignal"> &para;</a></span></dt>
 <dd><p>This will reinitialize the terminal and reinstall any Readline signal
-handlers, depending on the values of <code>rl_catch_signals</code> and
-<code>rl_catch_sigwinch</code>.
+handlers, depending on the values of <code class="code">rl_catch_signals</code> and
+<code class="code">rl_catch_sigwinch</code>.
 </p></dd></dl>
 
 <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>
+have arrived while it has been executing, <code class="code">rl_check_signals()</code>
 will call Readline&rsquo;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 <a href="#Readline-Variables">Readline Variables</a>) and wish
+signals.
+This is primarily intended for those applications that use
+a custom <code class="code">rl_getc_function</code> (see <a class="pxref" href="#Readline-Variables">Readline Variables</a>) and wish
 to handle signals received while waiting for input.
 </p>
-<dl class="def">
-<dt id="index-rl_005fcheck_005fsignals"><span class="category">Function: </span><span><em>void</em> <strong>rl_check_signals</strong> <em>(void)</em><a href='#index-rl_005fcheck_005fsignals' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If there are any pending signals, call Readline&rsquo;s internal signal handling
-functions to process them. <code>rl_pending_signal()</code> can be used independently
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcheck_005fsignals"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_check_signals</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fcheck_005fsignals"> &para;</a></span></dt>
+<dd><p>If there are any pending signals, call Readline&rsquo;s internal signal
+handling functions to process them.
+<code class="code">rl_pending_signal()</code> can be used independently
 to determine whether or not there are any pending signals.
 </p></dd></dl>
 
-<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 it receives
-a <code>SIGWINCH</code>.
+<p>If an application does not wish Readline to catch <code class="code">SIGWINCH</code>,
+it may call <code class="code">rl_resize_terminal()</code> or <code class="code">rl_set_screen_size()</code> 
+to force Readline to update its idea of the terminal size when it receives
+a <code class="code">SIGWINCH</code>.
 </p>
-<dl class="def">
-<dt id="index-rl_005fecho_005fsignal_005fchar"><span class="category">Function: </span><span><em>void</em> <strong>rl_echo_signal_char</strong> <em>(int sig)</em><a href='#index-rl_005fecho_005fsignal_005fchar' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fecho_005fsignal_005fchar"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_echo_signal_char</strong> <code class="def-code-arguments">(int sig)</code><a class="copiable-link" href="#index-rl_005fecho_005fsignal_005fchar"> &para;</a></span></dt>
 <dd><p>If an application wishes to install its own signal handlers, but still
 have Readline display characters that generate signals, calling this
-function with <var>sig</var> set to <code>SIGINT</code>, <code>SIGQUIT</code>, or
-<code>SIGTSTP</code> will display the character generating that signal.
+function with <var class="var">sig</var> set to <code class="code">SIGINT</code>, <code class="code">SIGQUIT</code>, or
+<code class="code">SIGTSTP</code> will display the character generating that signal.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fresize_005fterminal"><span class="category">Function: </span><span><em>void</em> <strong>rl_resize_terminal</strong> <em>(void)</em><a href='#index-rl_005fresize_005fterminal' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fresize_005fterminal"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_resize_terminal</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fresize_005fterminal"> &para;</a></span></dt>
 <dd><p>Update Readline&rsquo;s internal screen size by reading values from the kernel.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fset_005fscreen_005fsize"><span class="category">Function: </span><span><em>void</em> <strong>rl_set_screen_size</strong> <em>(int rows, int cols)</em><a href='#index-rl_005fset_005fscreen_005fsize' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set Readline&rsquo;s idea of the terminal size to <var>rows</var> rows and
-<var>cols</var> columns.  If either <var>rows</var> or <var>columns</var> is less than
-or equal to 0, Readline&rsquo;s idea of that terminal dimension is unchanged.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fscreen_005fsize"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_set_screen_size</strong> <code class="def-code-arguments">(int rows, int cols)</code><a class="copiable-link" href="#index-rl_005fset_005fscreen_005fsize"> &para;</a></span></dt>
+<dd><p>Set Readline&rsquo;s idea of the terminal size to <var class="var">rows</var> rows and
+<var class="var">cols</var> columns.
+If either <var class="var">rows</var> or <var class="var">columns</var> is less than or equal to 0,
+Readline doesn&rsquo;t change that terminal dimension.
 This is intended to tell Readline the physical dimensions of the terminal,
 and is used internally to calculate the maximum number of characters that
 may appear on a single line and on the screen.
 </p></dd></dl>
 
-<p>If an application does not want to install a <code>SIGWINCH</code> handler, but
+<p>If an application does not want to install a <code class="code">SIGWINCH</code> handler, but
 is still interested in the screen dimensions, it may query Readline&rsquo;s idea
 of the screen size.
 </p>
-<dl class="def">
-<dt id="index-rl_005fget_005fscreen_005fsize"><span class="category">Function: </span><span><em>void</em> <strong>rl_get_screen_size</strong> <em>(int *rows, int *cols)</em><a href='#index-rl_005fget_005fscreen_005fsize' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fget_005fscreen_005fsize"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_get_screen_size</strong> <code class="def-code-arguments">(int *rows, int *cols)</code><a class="copiable-link" href="#index-rl_005fget_005fscreen_005fsize"> &para;</a></span></dt>
 <dd><p>Return Readline&rsquo;s idea of the terminal&rsquo;s size in the
 variables pointed to by the arguments.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005freset_005fscreen_005fsize"><span class="category">Function: </span><span><em>void</em> <strong>rl_reset_screen_size</strong> <em>(void)</em><a href='#index-rl_005freset_005fscreen_005fsize' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005freset_005fscreen_005fsize"><span class="category-def">Function: </span><span><code class="def-type">void</code> <strong class="def-name">rl_reset_screen_size</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005freset_005fscreen_005fsize"> &para;</a></span></dt>
 <dd><p>Cause Readline to reobtain the screen size and recalculate its dimensions.
 </p></dd></dl>
 
 <p>The following functions install and remove Readline&rsquo;s signal handlers.
 </p>
-<dl class="def">
-<dt id="index-rl_005fset_005fsignals"><span class="category">Function: </span><span><em>int</em> <strong>rl_set_signals</strong> <em>(void)</em><a href='#index-rl_005fset_005fsignals' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Install Readline&rsquo;s signal handler for <code>SIGINT</code>, <code>SIGQUIT</code>,
-<code>SIGTERM</code>, <code>SIGHUP</code>, <code>SIGALRM</code>, <code>SIGTSTP</code>, <code>SIGTTIN</code>,
-<code>SIGTTOU</code>, and <code>SIGWINCH</code>, depending on the values of
-<code>rl_catch_signals</code> and <code>rl_catch_sigwinch</code>.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fset_005fsignals"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_set_signals</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fset_005fsignals"> &para;</a></span></dt>
+<dd><p>Install Readline&rsquo;s signal handler for <code class="code">SIGINT</code>, <code class="code">SIGQUIT</code>,
+<code class="code">SIGTERM</code>, <code class="code">SIGHUP</code>, <code class="code">SIGALRM</code>, <code class="code">SIGTSTP</code>, <code class="code">SIGTTIN</code>,
+<code class="code">SIGTTOU</code>, and <code class="code">SIGWINCH</code>, depending on the values of
+<code class="code">rl_catch_signals</code> and <code class="code">rl_catch_sigwinch</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fclear_005fsignals"><span class="category">Function: </span><span><em>int</em> <strong>rl_clear_signals</strong> <em>(void)</em><a href='#index-rl_005fclear_005fsignals' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fclear_005fsignals"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_clear_signals</strong> <code class="def-code-arguments">(void)</code><a class="copiable-link" href="#index-rl_005fclear_005fsignals"> &para;</a></span></dt>
 <dd><p>Remove all of the Readline signal handlers installed by
-<code>rl_set_signals()</code>.
+<code class="code">rl_set_signals()</code>.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="section" id="Custom-Completers">
-<div class="header">
+<div class="section-level-extent" id="Custom-Completers">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Readline-Signal-Handling" accesskey="p" rel="prev">Readline Signal Handling</a>, Up: <a href="#Programming-with-GNU-Readline" accesskey="u" rel="up">Programming with GNU Readline</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Custom-Completers-1"></span><h3 class="section">2.6 Custom Completers</h3>
-<span id="index-application_002dspecific-completion-functions"></span>
+<h3 class="section" id="Custom-Completers-1"><span>2.6 Custom Completers<a class="copiable-link" href="#Custom-Completers-1"> &para;</a></span></h3>
+<a class="index-entry-id" id="index-application_002dspecific-completion-functions"></a>
 
 <p>Typically, a program that reads commands from the user has a way of
-disambiguating commands and data.  If your program is one of these, then
+disambiguating commands and data.
+If your program is one of these, then
 it can provide completion for commands, data, or both.
 The following sections describe how your program and Readline
 cooperate to provide this service.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#How-Completing-Works" accesskey="1">How Completing Works</a></li>
 <li><a href="#Completion-Functions" accesskey="2">Completion Functions</a></li>
 <li><a href="#Completion-Variables" accesskey="3">Completion Variables</a></li>
 <li><a href="#A-Short-Completion-Example" accesskey="4">A Short Completion Example</a></li>
 </ul>
 <hr>
-<div class="subsection" id="How-Completing-Works">
-<div class="header">
+<div class="subsection-level-extent" id="How-Completing-Works">
+<div class="nav-panel">
 <p>
 Next: <a href="#Completion-Functions" accesskey="n" rel="next">Completion Functions</a>, Up: <a href="#Custom-Completers" accesskey="u" rel="up">Custom Completers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="How-Completing-Works-1"></span><h4 class="subsection">2.6.1 How Completing Works</h4>
+<h4 class="subsection" id="How-Completing-Works-1"><span>2.6.1 How Completing Works<a class="copiable-link" href="#How-Completing-Works-1"> &para;</a></span></h4>
 
 <p>In order to complete some text, the full list of possible completions
-must be available.  That is, it is not possible to accurately
+must be available.
+That is, it is not possible to accurately
 expand a partial word without knowing all of the possible words
-which make sense in that context.  The Readline library provides
+which make sense in that context.
+The Readline library provides
 the user interface to completion, and two of the most common
-completion functions:  filename and username.  For completing other types
-of text, you must write your own completion function.  This section
+completion functions:  filename and username.
+For completing other types
+of text, you must write your own completion function.
+This section
 describes exactly what such functions must do, and provides an example.
 </p>
 <p>There are three major functions used to perform completion:
 </p>
-<ol>
-<li> The user-interface function <code>rl_complete()</code>.  This function is
-called with the same arguments as other bindable Readline functions:
-<var>count</var> and <var>invoking_key</var>.
+<ol class="enumerate">
+<li> The user-interface function <code class="code">rl_complete()</code>.
+This function is called with the same arguments as other bindable
+Readline functions: <var class="var">count</var> and <var class="var">invoking_key</var>.
 It isolates the word to be completed and calls
-<code>rl_completion_matches()</code> to generate a list of possible completions.
+<code class="code">rl_completion_matches()</code> to generate a list of possible completions.
 It then either lists the possible completions, inserts the possible
 completions, or actually performs the
 completion, depending on which behavior is desired.
 
-</li><li> The internal function <code>rl_completion_matches()</code> uses an
-application-supplied <em>generator</em> function to generate the list of
+</li><li> The internal function <code class="code">rl_completion_matches()</code> uses an
+application-supplied <em class="dfn">generator</em> function to generate the list of
 possible matches, and then returns the array of these matches.
 The caller should place the address of its generator function in
-<code>rl_completion_entry_function</code>.
+<code class="code">rl_completion_entry_function</code>.
 
 </li><li> The generator function is called repeatedly from
-<code>rl_completion_matches()</code>, returning a string each time.  The
-arguments to the generator function are <var>text</var> and <var>state</var>.
-<var>text</var> is the partial word to be completed.  <var>state</var> is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call.  The generator function returns
-<code>(char *)NULL</code> to inform <code>rl_completion_matches()</code> that there are
-no more possibilities left.  Usually the generator function computes the
-list of possible completions when <var>state</var> is zero, and returns them
-one at a time on subsequent calls.  Each string the generator function
-returns as a match must be allocated with <code>malloc()</code>; Readline
+<code class="code">rl_completion_matches()</code>, returning a string each time.
+The arguments to the generator function are <var class="var">text</var> and <var class="var">state</var>.
+<var class="var">text</var> is the partial word to be completed.
+<var class="var">state</var> is zero the first time the function is called,
+allowing the generator to perform any necessary initialization,
+and a positive integer for each subsequent call.
+The generator function returns
+<code class="code">(char *)NULL</code> to inform <code class="code">rl_completion_matches()</code> that there are
+no more possibilities left.
+Usually the generator function computes the
+list of possible completions when <var class="var">state</var> is zero, and returns them
+one at a time on subsequent calls.
+Each string the generator function
+returns as a match must be allocated with <code class="code">malloc()</code>; Readline
 frees the strings when it has finished with them.
 Such a generator function is referred to as an
-<em>application-specific completion function</em>.
+<em class="dfn">application-specific completion function</em>.
 
 </li></ol>
 
-<dl class="def">
-<dt id="index-rl_005fcomplete"><span class="category">Function: </span><span><em>int</em> <strong>rl_complete</strong> <em>(int ignore, int invoking_key)</em><a href='#index-rl_005fcomplete' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-<code>rl_completion_matches()</code>).  The default is to do filename completion.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcomplete"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_complete</strong> <code class="def-code-arguments">(int ignore, int invoking_key)</code><a class="copiable-link" href="#index-rl_005fcomplete"> &para;</a></span></dt>
+<dd><p>Complete the word at or before point.
+You have supplied the function that does the initial simple matching
+selection algorithm (see <code class="code">rl_completion_matches()</code>).
+The default is to do filename completion.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fentry_005ffunction"><span class="category">Variable: </span><span><em>rl_compentry_func_t *</em> <strong>rl_completion_entry_function</strong><a href='#index-rl_005fcompletion_005fentry_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fentry_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_compentry_func_t *</code> <strong class="def-name">rl_completion_entry_function</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fentry_005ffunction"> &para;</a></span></dt>
 <dd><p>This is a pointer to the generator function for
-<code>rl_completion_matches()</code>.
-If the value of <code>rl_completion_entry_function</code> is
-<code>NULL</code> then the default filename generator
-function, <code>rl_filename_completion_function()</code>, is used.
-An <em>application-specific completion function</em> is a function whose
-address is assigned to <code>rl_completion_entry_function</code> and whose
-return values are used to  generate possible completions.
+<code class="code">rl_completion_matches()</code>.
+If the value of <code class="code">rl_completion_entry_function</code> is
+<code class="code">NULL</code> then Readline uses the default filename generator
+function, <code class="code">rl_filename_completion_function()</code>.
+An <em class="dfn">application-specific completion function</em> is a function whose
+address is assigned to <code class="code">rl_completion_entry_function</code> and whose
+return values are used to generate possible completions.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Completion-Functions">
-<div class="header">
+<div class="subsection-level-extent" id="Completion-Functions">
+<div class="nav-panel">
 <p>
 Next: <a href="#Completion-Variables" accesskey="n" rel="next">Completion Variables</a>, Previous: <a href="#How-Completing-Works" accesskey="p" rel="prev">How Completing Works</a>, Up: <a href="#Custom-Completers" accesskey="u" rel="up">Custom Completers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Completion-Functions-1"></span><h4 class="subsection">2.6.2 Completion Functions</h4>
+<h4 class="subsection" id="Completion-Functions-1"><span>2.6.2 Completion Functions<a class="copiable-link" href="#Completion-Functions-1"> &para;</a></span></h4>
 
 <p>Here is the complete list of callable completion functions present in
 Readline.
 </p>
-<dl class="def">
-<dt id="index-rl_005fcomplete_005finternal"><span class="category">Function: </span><span><em>int</em> <strong>rl_complete_internal</strong> <em>(int what_to_do)</em><a href='#index-rl_005fcomplete_005finternal' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Complete the word at or before point.  <var>what_to_do</var> says what to do
-with the completion.  A value of &lsquo;<samp>?</samp>&rsquo; means list the possible
-completions.  &lsquo;<samp>TAB</samp>&rsquo; means do standard completion.  &lsquo;<samp>*</samp>&rsquo; means
-insert all of the possible completions.  &lsquo;<samp>!</samp>&rsquo; means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.  &lsquo;<samp>@</samp>&rsquo; is similar to &lsquo;<samp>!</samp>&rsquo;, but
-possible completions are not listed if the possible completions share
-a common prefix.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fcomplete-1"><span class="category">Function: </span><span><em>int</em> <strong>rl_complete</strong> <em>(int ignore, int invoking_key)</em><a href='#index-rl_005fcomplete-1' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-<code>rl_completion_matches()</code> and <code>rl_completion_entry_function</code>).
-The default is to do filename
-completion.  This calls <code>rl_complete_internal()</code> with an
-argument depending on <var>invoking_key</var>.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fpossible_005fcompletions"><span class="category">Function: </span><span><em>int</em> <strong>rl_possible_completions</strong> <em>(int count, int invoking_key)</em><a href='#index-rl_005fpossible_005fcompletions' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>List the possible completions.  See description of <code>rl_complete
-()</code>.  This calls <code>rl_complete_internal()</code> with an argument of
-&lsquo;<samp>?</samp>&rsquo;.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005finsert_005fcompletions"><span class="category">Function: </span><span><em>int</em> <strong>rl_insert_completions</strong> <em>(int count, int invoking_key)</em><a href='#index-rl_005finsert_005fcompletions' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcomplete_005finternal"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_complete_internal</strong> <code class="def-code-arguments">(int what_to_do)</code><a class="copiable-link" href="#index-rl_005fcomplete_005finternal"> &para;</a></span></dt>
+<dd><p>Complete the word at or before point.
+<var class="var">what_to_do</var> says what to do with the completion.
+A value of &lsquo;<samp class="samp">?</samp>&rsquo; means list the possible completions.
+&lsquo;<samp class="samp">TAB</samp>&rsquo; means do standard completion.
+&lsquo;<samp class="samp">*</samp>&rsquo; means insert all of the possible completions.
+&lsquo;<samp class="samp">!</samp>&rsquo; means to display all of the possible completions,
+if there is more than one, as well as performing partial completion.
+&lsquo;<samp class="samp">@</samp>&rsquo; is similar to &lsquo;<samp class="samp">!</samp>&rsquo;, but does not list possible completions
+if the possible completions share a common prefix.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcomplete-1"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_complete</strong> <code class="def-code-arguments">(int ignore, int invoking_key)</code><a class="copiable-link" href="#index-rl_005fcomplete-1"> &para;</a></span></dt>
+<dd><p>Complete the word at or before point.
+You have supplied the function that does the initial simple
+matching selection algorithm (see <code class="code">rl_completion_matches()</code> and
+<code class="code">rl_completion_entry_function</code>).
+The default is to do filename completion.
+This calls <code class="code">rl_complete_internal()</code> with an
+argument depending on <var class="var">invoking_key</var>.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fpossible_005fcompletions"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_possible_completions</strong> <code class="def-code-arguments">(int count, int invoking_key)</code><a class="copiable-link" href="#index-rl_005fpossible_005fcompletions"> &para;</a></span></dt>
+<dd><p>List the possible completions.
+See description of <code class="code">rl_complete()</code>.
+This calls <code class="code">rl_complete_internal()</code> with an argument of &lsquo;<samp class="samp">?</samp>&rsquo;.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005finsert_005fcompletions"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_insert_completions</strong> <code class="def-code-arguments">(int count, int invoking_key)</code><a class="copiable-link" href="#index-rl_005finsert_005fcompletions"> &para;</a></span></dt>
 <dd><p>Insert the list of possible completions into the line, deleting the
-partially-completed word.  See description of <code>rl_complete()</code>.
-This calls <code>rl_complete_internal()</code> with an argument of &lsquo;<samp>*</samp>&rsquo;.
+partially-completed word.
+See description of <code class="code">rl_complete()</code>.
+This calls <code class="code">rl_complete_internal()</code> with an argument of &lsquo;<samp class="samp">*</samp>&rsquo;.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fmode"><span class="category">Function: </span><span><em>int</em> <strong>rl_completion_mode</strong> <em>(rl_command_func_t *cfunc)</em><a href='#index-rl_005fcompletion_005fmode' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Returns the appropriate value to pass to <code>rl_complete_internal()</code>
-depending on whether <var>cfunc</var> was called twice in succession and
-the values of the <code>show-all-if-ambiguous</code> and
-<code>show-all-if-unmodified</code> variables.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcompletion_005fmode"><span class="category-def">Function: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_mode</strong> <code class="def-code-arguments">(rl_command_func_t *cfunc)</code><a class="copiable-link" href="#index-rl_005fcompletion_005fmode"> &para;</a></span></dt>
+<dd><p>Returns the appropriate value to pass to <code class="code">rl_complete_internal()</code>
+depending on whether <var class="var">cfunc</var> was called twice in succession and
+the values of the <code class="code">show-all-if-ambiguous</code> and
+<code class="code">show-all-if-unmodified</code> variables.
 Application-specific completion functions may use this function to present
-the same interface as <code>rl_complete()</code>.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fmatches"><span class="category">Function: </span><span><em>char **</em> <strong>rl_completion_matches</strong> <em>(const char *text, rl_compentry_func_t *entry_func)</em><a href='#index-rl_005fcompletion_005fmatches' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Returns an array of strings which is a list of completions for
-<var>text</var>.  If there are no completions, returns <code>NULL</code>.
-The first entry in the returned array is the substitution for <var>text</var>.
-The remaining entries are the possible completions.  The array is
-terminated with a <code>NULL</code> pointer.
-</p>
-<p><var>entry_func</var> is a function of two args, and returns a
-<code>char *</code>.  The first argument is <var>text</var>.  The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls.  <var>entry_func</var> returns a <code>NULL</code>  pointer to the caller
+the same interface as <code class="code">rl_complete()</code>.
+</p></dd></dl>
+
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fcompletion_005fmatches"><span class="category-def">Function: </span><span><code class="def-type">char **</code> <strong class="def-name">rl_completion_matches</strong> <code class="def-code-arguments">(const char *text, rl_compentry_func_t *entry_func)</code><a class="copiable-link" href="#index-rl_005fcompletion_005fmatches"> &para;</a></span></dt>
+<dd><p>Returns an array of strings which is a list of completions for <var class="var">text</var>.
+If there are no completions, returns <code class="code">NULL</code>.
+The first entry in the returned array is the substitution for <var class="var">text</var>.
+The remaining entries are the possible completions.
+The array is terminated with a <code class="code">NULL</code> pointer.
+</p>
+<p><var class="var">entry_func</var> is a function of two args, and returns a <code class="code">char *</code>.
+The first argument is <var class="var">text</var>.
+The second is a state argument;
+it is zero on the first call, and non-zero on subsequent calls.
+<var class="var">entry_func</var> returns a <code class="code">NULL</code> pointer to the caller
 when there are no more matches.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffilename_005fcompletion_005ffunction"><span class="category">Function: </span><span><em>char *</em> <strong>rl_filename_completion_function</strong> <em>(const char *text, int state)</em><a href='#index-rl_005ffilename_005fcompletion_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005ffilename_005fcompletion_005ffunction"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_filename_completion_function</strong> <code class="def-code-arguments">(const char *text, int state)</code><a class="copiable-link" href="#index-rl_005ffilename_005fcompletion_005ffunction"> &para;</a></span></dt>
 <dd><p>A generator function for filename completion in the general case.
-<var>text</var> is a partial filename.
+<var class="var">text</var> is a partial filename.
 The Bash source is a useful reference for writing application-specific
 completion functions (the Bash completion functions call this and other
 Readline functions).
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fusername_005fcompletion_005ffunction"><span class="category">Function: </span><span><em>char *</em> <strong>rl_username_completion_function</strong> <em>(const char *text, int state)</em><a href='#index-rl_005fusername_005fcompletion_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A completion generator for usernames.  <var>text</var> contains a partial
-username preceded by a random character (usually &lsquo;<samp>~</samp>&rsquo;).  As with all
-completion generators, <var>state</var> is zero on the first call and non-zero
-for subsequent calls.
+<dl class="first-deftypefn first-deftypefun-alias-first-deftypefn">
+<dt class="deftypefn deftypefun-alias-deftypefn" id="index-rl_005fusername_005fcompletion_005ffunction"><span class="category-def">Function: </span><span><code class="def-type">char *</code> <strong class="def-name">rl_username_completion_function</strong> <code class="def-code-arguments">(const char *text, int state)</code><a class="copiable-link" href="#index-rl_005fusername_005fcompletion_005ffunction"> &para;</a></span></dt>
+<dd><p>A completion generator for usernames.
+<var class="var">text</var> contains a partial username preceded by a
+random character (usually &lsquo;<samp class="samp">~</samp>&rsquo;).
+As with all completion generators,
+<var class="var">state</var> is zero on the first call and non-zero for subsequent calls.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="Completion-Variables">
-<div class="header">
+<div class="subsection-level-extent" id="Completion-Variables">
+<div class="nav-panel">
 <p>
 Next: <a href="#A-Short-Completion-Example" accesskey="n" rel="next">A Short Completion Example</a>, Previous: <a href="#Completion-Functions" accesskey="p" rel="prev">Completion Functions</a>, Up: <a href="#Custom-Completers" accesskey="u" rel="up">Custom Completers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Completion-Variables-1"></span><h4 class="subsection">2.6.3 Completion Variables</h4>
+<h4 class="subsection" id="Completion-Variables-1"><span>2.6.3 Completion Variables<a class="copiable-link" href="#Completion-Variables-1"> &para;</a></span></h4>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fentry_005ffunction-1"><span class="category">Variable: </span><span><em>rl_compentry_func_t *</em> <strong>rl_completion_entry_function</strong><a href='#index-rl_005fcompletion_005fentry_005ffunction-1' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A pointer to the generator function for <code>rl_completion_matches()</code>.
-<code>NULL</code> means to use <code>rl_filename_completion_function()</code>,
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fentry_005ffunction-1"><span class="category-def">Variable: </span><span><code class="def-type">rl_compentry_func_t *</code> <strong class="def-name">rl_completion_entry_function</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fentry_005ffunction-1"> &para;</a></span></dt>
+<dd><p>A pointer to the generator function for <code class="code">rl_completion_matches()</code>.
+<code class="code">NULL</code> means to use <code class="code">rl_filename_completion_function()</code>,
 the default filename completer.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fattempted_005fcompletion_005ffunction"><span class="category">Variable: </span><span><em>rl_completion_func_t *</em> <strong>rl_attempted_completion_function</strong><a href='#index-rl_005fattempted_005fcompletion_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fattempted_005fcompletion_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_completion_func_t *</code> <strong class="def-name">rl_attempted_completion_function</strong><a class="copiable-link" href="#index-rl_005fattempted_005fcompletion_005ffunction"> &para;</a></span></dt>
 <dd><p>A pointer to an alternative function to create matches.
-The function is called with <var>text</var>, <var>start</var>, and <var>end</var>.
-<var>start</var> and <var>end</var> are indices in <code>rl_line_buffer</code> defining
-the boundaries of <var>text</var>, which is a character string.
-If this function exists and returns <code>NULL</code>, or if this variable is
-set to <code>NULL</code>, then <code>rl_complete()</code> will call the value of
-<code>rl_completion_entry_function</code> to generate matches, otherwise the
-array of strings returned will be used.
-If this function sets the <code>rl_attempted_completion_over</code>
+The function is called with <var class="var">text</var>, <var class="var">start</var>, and <var class="var">end</var>.
+<var class="var">start</var> and <var class="var">end</var> are indices in <code class="code">rl_line_buffer</code> defining
+the boundaries of <var class="var">text</var>, which is a character string.
+If this function exists and returns <code class="code">NULL</code>, or if this variable is
+set to <code class="code">NULL</code>, then <code class="code">rl_complete()</code> will call the value of
+<code class="code">rl_completion_entry_function</code> to generate matches, otherwise
+completion will use the array of strings this function returns.
+If this function sets the <code class="code">rl_attempted_completion_over</code>
 variable to a non-zero value, Readline will not perform its default
 completion even if this function returns no matches.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffilename_005fquoting_005ffunction"><span class="category">Variable: </span><span><em>rl_quote_func_t *</em> <strong>rl_filename_quoting_function</strong><a href='#index-rl_005ffilename_005fquoting_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffilename_005fquoting_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_quote_func_t *</code> <strong class="def-name">rl_filename_quoting_function</strong><a class="copiable-link" href="#index-rl_005ffilename_005fquoting_005ffunction"> &para;</a></span></dt>
 <dd><p>A pointer to a function that will quote a filename in an
-application-specific fashion.  This is called if filename completion is being
-attempted and one of the characters in <code>rl_filename_quote_characters</code>
-appears in a completed filename.  The function is called with
-<var>text</var>, <var>match_type</var>, and <var>quote_pointer</var>.  The <var>text</var>
-is the filename to be quoted.  The <var>match_type</var> is either
-<code>SINGLE_MATCH</code>, if there is only one completion match, or
-<code>MULT_MATCH</code>.  Some functions use this to decide whether or not to
-insert a closing quote character.  The <var>quote_pointer</var> is a pointer
-to any opening quote character the user typed.  Some functions choose
-to reset this character.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005ffilename_005fdequoting_005ffunction"><span class="category">Variable: </span><span><em>rl_dequote_func_t *</em> <strong>rl_filename_dequoting_function</strong><a href='#index-rl_005ffilename_005fdequoting_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
+application-specific fashion.
+Readline calls this function during filename completion
+if one of the characters in <code class="code">rl_filename_quote_characters</code>
+appears in a completed filename.
+The function is called with
+<var class="var">text</var>, <var class="var">match_type</var>, and <var class="var">quote_pointer</var>.
+The <var class="var">text</var> is the filename to be quoted.
+The <var class="var">match_type</var> is either <code class="code">SINGLE_MATCH</code>,
+if there is only one completion match, or <code class="code">MULT_MATCH</code>.
+Some functions use this to decide whether or not to
+insert a closing quote character.
+The <var class="var">quote_pointer</var> is a pointer
+to any opening quote character the user typed.
+Some functions choose to reset this character if they decide to quote
+the filename in a different style.
+It&rsquo;s preferable to preserve the user&rsquo;s quoting as much as possible &ndash;
+it&rsquo;s less disruptive.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffilename_005fdequoting_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_dequote_func_t *</code> <strong class="def-name">rl_filename_dequoting_function</strong><a class="copiable-link" href="#index-rl_005ffilename_005fdequoting_005ffunction"> &para;</a></span></dt>
 <dd><p>A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem.  It is called with <var>text</var>, the text of the word
-to be dequoted, and <var>quote_char</var>, which is the quoting character 
-that delimits the filename (usually &lsquo;<samp>'</samp>&rsquo; or &lsquo;<samp>&quot;</samp>&rsquo;).  If
-<var>quote_char</var> is zero, the filename was not in an embedded string.
+characters from a filename before attempting completion,
+so those characters do not interfere with matching the text against
+names in the filesystem.
+It is called with <var class="var">text</var>, the text of the word
+to be dequoted, and <var class="var">quote_char</var>, which is the quoting character 
+that delimits the filename (usually &lsquo;<samp class="samp">'</samp>&rsquo; or &lsquo;<samp class="samp">&quot;</samp>&rsquo;).
+If <var class="var">quote_char</var> is zero, the filename was not in a quoted string.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fchar_005fis_005fquoted_005fp"><span class="category">Variable: </span><span><em>rl_linebuf_func_t *</em> <strong>rl_char_is_quoted_p</strong><a href='#index-rl_005fchar_005fis_005fquoted_005fp' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fchar_005fis_005fquoted_005fp"><span class="category-def">Variable: </span><span><code class="def-type">rl_linebuf_func_t *</code> <strong class="def-name">rl_char_is_quoted_p</strong><a class="copiable-link" href="#index-rl_005fchar_005fis_005fquoted_005fp"> &para;</a></span></dt>
 <dd><p>A pointer to a function to call that determines whether or not a specific
 character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses.  The function is called with
-two arguments: <var>text</var>, the text of the line, and <var>index</var>, the
-index of the character in the line.  It is used to decide whether a
-character found in <code>rl_completer_word_break_characters</code> should be
+mechanism the application uses.
+The function is called with two arguments:
+<var class="var">text</var>, the text of the line,
+and <var class="var">index</var>, the index of the character in the line.
+It is used to decide whether a character found in
+<code class="code">rl_completer_word_break_characters</code> should be
 used to break words for the completer.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fignore_005fsome_005fcompletions_005ffunction"><span class="category">Variable: </span><span><em>rl_compignore_func_t *</em> <strong>rl_ignore_some_completions_function</strong><a href='#index-rl_005fignore_005fsome_005fcompletions_005ffunction' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This function, if defined, is called by the completer when real filename
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fignore_005fsome_005fcompletions_005ffunction"><span class="category-def">Variable: </span><span><code class="def-type">rl_compignore_func_t *</code> <strong class="def-name">rl_ignore_some_completions_function</strong><a class="copiable-link" href="#index-rl_005fignore_005fsome_005fcompletions_005ffunction"> &para;</a></span></dt>
+<dd><p>Readline calls this function, if defined, when filename
 completion is done, after all the matching names have been generated.
-It is passed a <code>NULL</code> terminated array of matches.
-The first element (<code>matches[0]</code>) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
+It is passed a <code class="code">NULL</code> terminated array of matches.
+The first element (<code class="code">matches[0]</code>) is the maximal substring
+common to all matches.
+This function can re-arrange the list of matches as required, but
+must free each element it deletes from the array.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdirectory_005fcompletion_005fhook"><span class="category">Variable: </span><span><em>rl_icppfunc_t *</em> <strong>rl_directory_completion_hook</strong><a href='#index-rl_005fdirectory_005fcompletion_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fdirectory_005fcompletion_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_icppfunc_t *</code> <strong class="def-name">rl_directory_completion_hook</strong><a class="copiable-link" href="#index-rl_005fdirectory_005fcompletion_005fhook"> &para;</a></span></dt>
 <dd><p>This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes.
+of filenames during completion.
 It could be used to expand symbolic links or shell variables in pathnames.
 It is called with the address of a string (the current directory name) as an
 argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
+If the function replaces the string with a new string, it
+should free the old value.
 Any modified directory name should have a trailing slash.
 The modified value will be used as part of the completion, replacing
 the directory portion of the pathname the user typed.
 At the least, even if no other expansion is performed, this function should
 remove any quote characters from the directory name, because its result will
-be passed directly to <code>opendir()</code>.
+be passed directly to <code class="code">opendir()</code>.
 </p>
 <p>The directory completion hook returns an integer that should be non-zero if
 the function modifies its directory argument.
 The function should not modify the directory argument if it returns 0.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fdirectory_005frewrite_005fhook_003b"><span class="category">Variable: </span><span><em>rl_icppfunc_t *</em> <strong>rl_directory_rewrite_hook;</strong><a href='#index-rl_005fdirectory_005frewrite_005fhook_003b' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fdirectory_005frewrite_005fhook_003b"><span class="category-def">Variable: </span><span><code class="def-type">rl_icppfunc_t *</code> <strong class="def-name">rl_directory_rewrite_hook;</strong><a class="copiable-link" href="#index-rl_005fdirectory_005frewrite_005fhook_003b"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function to call when completing
-a directory name.  This function takes the address of the directory name
-to be modified as an argument.  Unlike <code>rl_directory_completion_hook</code>,
-it only modifies the directory name used in <code>opendir</code>, not what is
-displayed when the possible completions are printed or inserted.  It is
-called before rl_directory_completion_hook.
+a directory name.
+This function takes the address of the directory name
+to be modified as an argument.
+Unlike <code class="code">rl_directory_completion_hook</code>,
+it only modifies the directory name used in <code class="code">opendir()</code>,
+not what Readline displays when it prints or inserts
+the possible completions.
+Readline calls this before rl_directory_completion_hook.
 At the least, even if no other expansion is performed, this function should
 remove any quote characters from the directory name, because its result will
-be passed directly to <code>opendir()</code>.
+be passed directly to <code class="code">opendir()</code>.
 </p>
 <p>The directory rewrite hook returns an integer that should be non-zero if
 the function modifies its directory argument.
 The function should not modify the directory argument if it returns 0.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffilename_005fstat_005fhook"><span class="category">Variable: </span><span><em>rl_icppfunc_t *</em> <strong>rl_filename_stat_hook</strong><a href='#index-rl_005ffilename_005fstat_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffilename_005fstat_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_icppfunc_t *</code> <strong class="def-name">rl_filename_stat_hook</strong><a class="copiable-link" href="#index-rl_005ffilename_005fstat_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function for the completer to
 call before deciding which character to append to a completed name.
-This function modifies its filename name argument, and the modified value
-is passed to <code>stat()</code> to determine the file&rsquo;s type and characteristics.
+This function modifies its filename name argument, and Readline passes
+the modified value to <code class="code">stat()</code>
+to determine the file&rsquo;s type and characteristics.
 This function does not need to remove quote characters from the filename.
 </p>
 <p>The stat hook returns an integer that should be non-zero if
@@ -4525,248 +4875,314 @@ the function modifies its directory argument.
 The function should not modify the directory argument if it returns 0.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffilename_005frewrite_005fhook"><span class="category">Variable: </span><span><em>rl_dequote_func_t *</em> <strong>rl_filename_rewrite_hook</strong><a href='#index-rl_005ffilename_005frewrite_005fhook' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If non-zero, this is the address of a function called when reading
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffilename_005frewrite_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_dequote_func_t *</code> <strong class="def-name">rl_filename_rewrite_hook</strong><a class="copiable-link" href="#index-rl_005ffilename_005frewrite_005fhook"> &para;</a></span></dt>
+<dd><p>If non-zero, this is the address of a function
+for Readline to call when reading
 directory entries from the filesystem for completion and comparing
-them to the partial word to be completed.  The function should
-perform any necessary application or system-specific conversion on
-the filename, such as converting between character sets or converting
-from a filesystem format to a character input format.
-The function takes two arguments: <var>fname</var>, the filename to be converted,
-and <var>fnlen</var>, its length in bytes.
+them to the filename portion of the partial word being completed.
+It modifies the filesystem entries,
+as opposed to <code class="code">rl_completion_rewrite_hook</code>,
+which modifies the word being completed.
+The function takes two arguments:
+<var class="var">fname</var>, the filename to be converted,
+and <var class="var">fnlen</var>, its length in bytes.
 It must either return its first argument (if no conversion takes place)
-or the converted filename in newly-allocated memory.  The converted
-form is used to compare against the word to be completed, and, if it
-matches, is added to the list of matches.  Readline will free the
-allocated string.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fdisplay_005fmatches_005fhook"><span class="category">Variable: </span><span><em>rl_compdisp_func_t *</em> <strong>rl_completion_display_matches_hook</strong><a href='#index-rl_005fcompletion_005fdisplay_005fmatches_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+or the converted filename in newly-allocated memory.
+The function should perform any necessary application or system-specific
+conversion on the filename, such as converting between character sets
+or converting from a filesystem format to a character input format.
+Readline compares the converted form against the word to be completed,
+and, if it matches, adds it to the list of matches.
+Readline will free the allocated string.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005frewrite_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_dequote_func_t *</code> <strong class="def-name">rl_completion_rewrite_hook</strong><a class="copiable-link" href="#index-rl_005fcompletion_005frewrite_005fhook"> &para;</a></span></dt>
+<dd><p>If non-zero, this is the address of a function
+for Readline to call before
+comparing the filename portion of a word to be completed with directory
+entries from the filesystem.
+It modifies the word being completed,
+as opposed to <code class="code">rl_filename_rewrite_hook</code>,
+which modifies filesystem entries.
+The function takes two arguments:
+<var class="var">fname</var>, the word to be converted,
+after any <code class="code">rl_filename_dequoting_function</code> has been applied,
+and <var class="var">fnlen</var>, its length in bytes.
+It must either return its first argument (if no conversion takes place)
+or the converted filename in newly-allocated memory.
+The function should perform any necessary application or system-specific
+conversion on the filename, such as converting between character sets or
+converting from a character input format to some other format.
+Readline compares the converted form against directory entries, after
+their potential modification by <code class="code">rl_filename_rewrite_hook</code>,
+and adds any matches to the list of matches.
+Readline will free the allocated string.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fdisplay_005fmatches_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_compdisp_func_t *</code> <strong class="def-name">rl_completion_display_matches_hook</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fdisplay_005fmatches_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, then this is the address of a function to call when
 completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
+Readline calls this function instead of displaying the list itself.
 It takes three arguments:
-(<code>char **</code><var>matches</var>, <code>int</code> <var>num_matches</var>, <code>int</code> <var>max_length</var>)
-where <var>matches</var> is the array of matching strings,
-<var>num_matches</var> is the number of strings in that array, and
-<var>max_length</var> is the length of the longest string in that array.
-Readline provides a convenience function, <code>rl_display_match_list</code>,
+(<code class="code">char **</code><var class="var">matches</var>, <code class="code">int</code> <var class="var">num_matches</var>, <code class="code">int</code> <var class="var">max_length</var>)
+where <var class="var">matches</var> is the array of matching strings,
+<var class="var">num_matches</var> is the number of strings in that array, and
+<var class="var">max_length</var> is the length of the longest string in that array.
+Readline provides a convenience function, <code class="code">rl_display_match_list</code>,
 that takes care of doing the display to Readline&rsquo;s output stream.
 You may call that function from this hook.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbasic_005fword_005fbreak_005fcharacters"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_basic_word_break_characters</strong><a href='#index-rl_005fbasic_005fword_005fbreak_005fcharacters' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fbasic_005fword_005fbreak_005fcharacters"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_basic_word_break_characters</strong><a class="copiable-link" href="#index-rl_005fbasic_005fword_005fbreak_005fcharacters"> &para;</a></span></dt>
 <dd><p>The basic list of characters that signal a break between words for the
-completer routine.  The default value of this variable is the characters
+completer routine.
+The default value of this variable is the characters
 which break words for completion in Bash:
-<code>&quot; \t\n\&quot;\\'`@$&gt;&lt;=;|&amp;{(&quot;</code>.
+<code class="code">&quot; \t\n\&quot;\\'`@$&gt;&lt;=;|&amp;{(&quot;</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fbasic_005fquote_005fcharacters"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_basic_quote_characters</strong><a href='#index-rl_005fbasic_005fquote_005fcharacters' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fbasic_005fquote_005fcharacters"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_basic_quote_characters</strong><a class="copiable-link" href="#index-rl_005fbasic_005fquote_005fcharacters"> &para;</a></span></dt>
 <dd><p>A list of quote characters which can cause a word break.
+The default value includes single and double quotes.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompleter_005fword_005fbreak_005fcharacters"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_completer_word_break_characters</strong><a href='#index-rl_005fcompleter_005fword_005fbreak_005fcharacters' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompleter_005fword_005fbreak_005fcharacters"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_completer_word_break_characters</strong><a class="copiable-link" href="#index-rl_005fcompleter_005fword_005fbreak_005fcharacters"> &para;</a></span></dt>
 <dd><p>The list of characters that signal a break between words for
-<code>rl_complete_internal()</code>.  The default list is the value of
-<code>rl_basic_word_break_characters</code>.
+<code class="code">rl_complete_internal()</code>.
+These characters determine how Readline decides what to complete.
+The default list is the value of
+<code class="code">rl_basic_word_break_characters</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fword_005fbreak_005fhook"><span class="category">Variable: </span><span><em>rl_cpvfunc_t *</em> <strong>rl_completion_word_break_hook</strong><a href='#index-rl_005fcompletion_005fword_005fbreak_005fhook' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fword_005fbreak_005fhook"><span class="category-def">Variable: </span><span><code class="def-type">rl_cpvfunc_t *</code> <strong class="def-name">rl_completion_word_break_hook</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fword_005fbreak_005fhook"> &para;</a></span></dt>
 <dd><p>If non-zero, this is the address of a function to call when Readline is
-deciding where to separate words for word completion.  It should return
-a character string like <code>rl_completer_word_break_characters</code> to be
-used to perform the current completion.  The function may choose to set
-<code>rl_completer_word_break_characters</code> itself.  If the function
-returns <code>NULL</code>, <code>rl_completer_word_break_characters</code> is used.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fcompleter_005fquote_005fcharacters"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_completer_quote_characters</strong><a href='#index-rl_005fcompleter_005fquote_005fcharacters' class='copiable-anchor'> &para;</a></span></dt>
+deciding where to separate words for word completion.
+It should return a character string like
+<code class="code">rl_completer_word_break_characters</code> to be
+used to perform the current completion.
+The function may choose to set
+<code class="code">rl_completer_word_break_characters</code> itself.
+If the function returns <code class="code">NULL</code>, Readline uses
+<code class="code">rl_completer_word_break_characters</code>.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompleter_005fquote_005fcharacters"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_completer_quote_characters</strong><a class="copiable-link" href="#index-rl_005fcompleter_005fquote_005fcharacters"> &para;</a></span></dt>
 <dd><p>A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
-<code>rl_completer_word_break_characters</code> are treated as any other character,
+Completion occurs on the entire substring, and within the substring,
+<code class="code">rl_completer_word_break_characters</code> are treated as any other character,
 unless they also appear within this list.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffilename_005fquote_005fcharacters"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_filename_quote_characters</strong><a href='#index-rl_005ffilename_005fquote_005fcharacters' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename.  The default is the null string.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffilename_005fquote_005fcharacters"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_filename_quote_characters</strong><a class="copiable-link" href="#index-rl_005ffilename_005fquote_005fcharacters"> &para;</a></span></dt>
+<dd><p>A list of characters that cause Readline to quote a filename
+when they appear in a completed filename.
+The default is the null string.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fspecial_005fprefixes"><span class="category">Variable: </span><span><em>const char *</em> <strong>rl_special_prefixes</strong><a href='#index-rl_005fspecial_005fprefixes' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fspecial_005fprefixes"><span class="category-def">Variable: </span><span><code class="def-type">const char *</code> <strong class="def-name">rl_special_prefixes</strong><a class="copiable-link" href="#index-rl_005fspecial_005fprefixes"> &para;</a></span></dt>
 <dd><p>The list of characters that are word break characters, but should be
-left in <var>text</var> when it is passed to the completion function.
+left in <var class="var">text</var> when it is passed to the completion function.
 Programs can use this to help determine what kind of completing to do.
 For instance, Bash sets this variable to &quot;$@&quot; so that it can complete
 shell variables and hostnames.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fquery_005fitems"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_query_items</strong><a href='#index-rl_005fcompletion_005fquery_005fitems' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Up to this many items will be displayed in response to a
-possible-completions call.  After that, Readline asks the user for
-confirmation before displaying them.
-The default value is 100.  A negative value 
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fquery_005fitems"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_query_items</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fquery_005fitems"> &para;</a></span></dt>
+<dd><p>This determines the maximum number of items
+that possible-completions will display unconditionally.
+If there are more possible completions than this,
+Readline asks the user for confirmation before displaying them.
+The default value is 100.
+A negative value 
 indicates that Readline should never ask for confirmation.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fappend_005fcharacter"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_append_character</strong><a href='#index-rl_005fcompletion_005fappend_005fcharacter' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fappend_005fcharacter"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_append_character</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fappend_005fcharacter"> &para;</a></span></dt>
 <dd><p>When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text.  The
-default is a space character (&lsquo;<samp> </samp>&rsquo;).  Setting this to the null
-character (&lsquo;<samp>\0</samp>&rsquo;) prevents anything being appended automatically.
+line, Readline appends this character to the inserted completion text.
+The default is a space character (&lsquo;<samp class="samp"> </samp>&rsquo;).
+Setting this to the null
+character (&lsquo;<samp class="samp">\0</samp>&rsquo;) prevents anything being appended automatically.
 This can be changed in application-specific completion functions to
 provide the &ldquo;most sensible word separator character&rdquo; 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.
+It is set to the default before calling any application-specific completion
+function, and may only be changed within such a function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fsuppress_005fappend"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_suppress_append</strong><a href='#index-rl_005fcompletion_005fsuppress_005fappend' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If non-zero, <var>rl_completion_append_character</var> is not appended to
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fsuppress_005fappend"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_suppress_append</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fsuppress_005fappend"> &para;</a></span></dt>
+<dd><p>If non-zero, Readline will not append the
+<var class="var">rl_completion_append_character</var> to
 matches at the end of the command line, as described above.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fquote_005fcharacter"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_quote_character</strong><a href='#index-rl_005fcompletion_005fquote_005fcharacter' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When Readline is completing quoted text, as delimited by one of the
-characters in <var>rl_completer_quote_characters</var>, it sets this variable
-to the quoting character found.
-This is set before any application-specific completion function is called.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fsuppress_005fquote"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_suppress_quote</strong><a href='#index-rl_005fcompletion_005fsuppress_005fquote' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fsuppress_005fquote"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_suppress_quote</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fsuppress_005fquote"> &para;</a></span></dt>
 <dd><p>If non-zero, Readline does not append a matching quote character when
 performing completion on a quoted string.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005ffound_005fquote"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_found_quote</strong><a href='#index-rl_005fcompletion_005ffound_005fquote' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005ffound_005fquote"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_found_quote</strong><a class="copiable-link" href="#index-rl_005fcompletion_005ffound_005fquote"> &para;</a></span></dt>
 <dd><p>When Readline is completing quoted text, it sets this variable
 to a non-zero value if the word being completed contains or is delimited
 by any quoting characters, including backslashes.
-This is set before any application-specific completion function is called.
+This is set before calling any application-specific completion function.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fquote_005fcharacter"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_quote_character</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fquote_005fcharacter"> &para;</a></span></dt>
+<dd><p>When Readline is completing quoted text, as delimited by one of the
+characters in <var class="var">rl_completer_quote_characters</var>, it sets this variable
+to the quoting character it found.
+This is set before calling any application-specific completion function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005fmark_005fsymlink_005fdirs"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_mark_symlink_dirs</strong><a href='#index-rl_005fcompletion_005fmark_005fsymlink_005fdirs' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If non-zero, a slash will be appended to completed filenames that are
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005fmark_005fsymlink_005fdirs"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_mark_symlink_dirs</strong><a class="copiable-link" href="#index-rl_005fcompletion_005fmark_005fsymlink_005fdirs"> &para;</a></span></dt>
+<dd><p>If non-zero, Readline appends a slash to completed filenames that are
 symbolic links to directory names, subject to the value of the
-user-settable <var>mark-directories</var> variable.
+user-settable <var class="var">mark-directories</var> variable.
 This variable exists so that application-specific completion functions
 can override the user&rsquo;s global preference (set via the
-<var>mark-symlinked-directories</var> Readline variable) if appropriate.
-This variable is set to the user&rsquo;s preference before any
-application-specific completion function is called, so unless that
-function modifies the value, the user&rsquo;s preferences are honored.
+<var class="var">mark-symlinked-directories</var> Readline variable) if appropriate.
+This variable is set to the user&rsquo;s preference before calling any
+application-specific completion function,
+so unless that function modifies the value,
+Readline will honor the user&rsquo;s preferences.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fignore_005fcompletion_005fduplicates"><span class="category">Variable: </span><span><em>int</em> <strong>rl_ignore_completion_duplicates</strong><a href='#index-rl_005fignore_005fcompletion_005fduplicates' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If non-zero, then duplicates in the matches are removed.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fignore_005fcompletion_005fduplicates"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_ignore_completion_duplicates</strong><a class="copiable-link" href="#index-rl_005fignore_005fcompletion_005fduplicates"> &para;</a></span></dt>
+<dd><p>If non-zero, then Readline removes duplicates in the set of possible
+completions.
 The default is 1.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005ffilename_005fcompletion_005fdesired"><span class="category">Variable: </span><span><em>int</em> <strong>rl_filename_completion_desired</strong><a href='#index-rl_005ffilename_005fcompletion_005fdesired' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Non-zero means that the results of the matches are to be treated as
-filenames.  This is <em>always</em> zero when completion is attempted,
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffilename_005fcompletion_005fdesired"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_filename_completion_desired</strong><a class="copiable-link" href="#index-rl_005ffilename_005fcompletion_005fdesired"> &para;</a></span></dt>
+<dd><p>A non-zero value means that Readline should treat the results of the
+matches as filenames.
+This is <em class="emph">always</em> zero when completion is attempted,
 and can only be changed
-within an application-specific completion function.  If it is set to a
-non-zero value by such a function, directory names have a slash appended
-and Readline attempts to quote completed filenames if they contain any
-characters in <code>rl_filename_quote_characters</code> and
-<code>rl_filename_quoting_desired</code> is set to a non-zero value.
-</p></dd></dl>
-
-<dl class="def">
-<dt id="index-rl_005ffilename_005fquoting_005fdesired"><span class="category">Variable: </span><span><em>int</em> <strong>rl_filename_quoting_desired</strong><a href='#index-rl_005ffilename_005fquoting_005fdesired' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-<code>rl_filename_quote_chars</code>.  This is <em>always</em> non-zero
-when completion is attempted, and can only be changed within an
+within an application-specific completion function.
+If it is set to a
+non-zero value by such a function, Readline
+appends a slash to directory names
+and attempts to quote completed filenames if they contain any
+characters in <code class="code">rl_filename_quote_characters</code> and
+<code class="code">rl_filename_quoting_desired</code> is set to a non-zero value.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffilename_005fquoting_005fdesired"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_filename_quoting_desired</strong><a class="copiable-link" href="#index-rl_005ffilename_005fquoting_005fdesired"> &para;</a></span></dt>
+<dd><p>A non-zero value means that Readline should quote the results of the 
+matches using double quotes (or an application-specific quoting mechanism)
+if the completed filename contains any characters in
+<code class="code">rl_filename_quote_chars</code>.
+This is <em class="emph">always</em> non-zero when completion is attempted,
+and can only be changed within an
 application-specific completion function.
-The quoting is effected via a call to the function pointed to
-by <code>rl_filename_quoting_function</code>.
+The quoting is performed via a call to the function pointed to
+by <code class="code">rl_filename_quoting_function</code>.
+</p></dd></dl>
+
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005ffull_005fquoting_005fdesired"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_full_quoting_desired</strong><a class="copiable-link" href="#index-rl_005ffull_005fquoting_005fdesired"> &para;</a></span></dt>
+<dd><p>A non-zero value means that Readline should apply filename-style quoting,
+including any application-specified quoting mechanism,
+to all completion matches even if it is not otherwise treating the
+matches as filenames.
+This is <em class="emph">always</em> zero when completion is attempted,
+and can only be changed within an
+application-specific completion function.
+The quoting is performed via a call to the function pointed to
+by <code class="code">rl_filename_quoting_function</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fattempted_005fcompletion_005fover"><span class="category">Variable: </span><span><em>int</em> <strong>rl_attempted_completion_over</strong><a href='#index-rl_005fattempted_005fcompletion_005fover' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fattempted_005fcompletion_005fover"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_attempted_completion_over</strong><a class="copiable-link" href="#index-rl_005fattempted_005fcompletion_005fover"> &para;</a></span></dt>
 <dd><p>If an application-specific completion function assigned to
-<code>rl_attempted_completion_function</code> sets this variable to a non-zero
+<code class="code">rl_attempted_completion_function</code> sets this variable to a non-zero
 value, Readline will not perform its default filename completion even
 if the application&rsquo;s completion function returns no matches.
 It should be set only by an application&rsquo;s completion function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fsort_005fcompletion_005fmatches"><span class="category">Variable: </span><span><em>int</em> <strong>rl_sort_completion_matches</strong><a href='#index-rl_005fsort_005fcompletion_005fmatches' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fsort_005fcompletion_005fmatches"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_sort_completion_matches</strong><a class="copiable-link" href="#index-rl_005fsort_005fcompletion_005fmatches"> &para;</a></span></dt>
 <dd><p>If an application sets this variable to 0, Readline will not sort the
 list of completions (which implies that it cannot remove any duplicate
-completions).  The default value is 1, which means that Readline will
+completions).
+The default value is 1, which means that Readline will
 sort the completions and, depending on the value of
-<code>rl_ignore_completion_duplicates</code>, will attempt to remove duplicate
-matches.
+<code class="code">rl_ignore_completion_duplicates</code>, will attempt to remove
+duplicate matches.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005ftype"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_type</strong><a href='#index-rl_005fcompletion_005ftype' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005ftype"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_type</strong><a class="copiable-link" href="#index-rl_005fcompletion_005ftype"> &para;</a></span></dt>
 <dd><p>Set to a character describing the type of completion Readline is currently
-attempting; see the description of <code>rl_complete_internal()</code>
-(see <a href="#Completion-Functions">Completion Functions</a>) for the list of characters.
-This is set to the appropriate value before any application-specific
-completion function is called, allowing such functions to present
-the same interface as <code>rl_complete()</code>.
+attempting; see the description of <code class="code">rl_complete_internal()</code>
+(see <a class="pxref" href="#Completion-Functions">Completion Functions</a>) for the list of characters.
+This is set to the appropriate value before calling
+any application-specific completion function,
+so these functions can present
+the same interface as <code class="code">rl_complete()</code>.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005fcompletion_005finvoking_005fkey"><span class="category">Variable: </span><span><em>int</em> <strong>rl_completion_invoking_key</strong><a href='#index-rl_005fcompletion_005finvoking_005fkey' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005fcompletion_005finvoking_005fkey"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_completion_invoking_key</strong><a class="copiable-link" href="#index-rl_005fcompletion_005finvoking_005fkey"> &para;</a></span></dt>
 <dd><p>Set to the final character in the key sequence that invoked one of the
-completion functions that call <code>rl_complete_internal()</code>.  This is
-set to the appropriate value before any application-specific completion
-function is called.
+completion functions that call <code class="code">rl_complete_internal()</code>.
+This is set to the appropriate value before calling
+any application-specific completion function.
 </p></dd></dl>
 
-<dl class="def">
-<dt id="index-rl_005finhibit_005fcompletion"><span class="category">Variable: </span><span><em>int</em> <strong>rl_inhibit_completion</strong><a href='#index-rl_005finhibit_005fcompletion' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If this variable is non-zero, completion is inhibited.  The completion
-character will be inserted as any other bound to <code>self-insert</code>.
+<dl class="first-deftypevr first-deftypevar-alias-first-deftypevr">
+<dt class="deftypevr deftypevar-alias-deftypevr" id="index-rl_005finhibit_005fcompletion"><span class="category-def">Variable: </span><span><code class="def-type">int</code> <strong class="def-name">rl_inhibit_completion</strong><a class="copiable-link" href="#index-rl_005finhibit_005fcompletion"> &para;</a></span></dt>
+<dd><p>If this variable is non-zero, Readline does not perform completion,
+even if a key binding indicates it should.
+The completion character
+is inserted as if it were bound to <code class="code">self-insert</code>.
 </p></dd></dl>
 
 <hr>
 </div>
-<div class="subsection" id="A-Short-Completion-Example">
-<div class="header">
+<div class="subsection-level-extent" id="A-Short-Completion-Example">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Completion-Variables" accesskey="p" rel="prev">Completion Variables</a>, Up: <a href="#Custom-Completers" accesskey="u" rel="up">Custom Completers</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="A-Short-Completion-Example-1"></span><h4 class="subsection">2.6.4 A Short Completion Example</h4>
+<h4 class="subsection" id="A-Short-Completion-Example-1"><span>2.6.4 A Short Completion Example<a class="copiable-link" href="#A-Short-Completion-Example-1"> &para;</a></span></h4>
 
 <p>Here is a small application demonstrating the use of the GNU Readline
-library.  It is called <code>fileman</code>, and the source code resides in
-<samp>examples/fileman.c</samp>.  This sample application provides
-completion of command names, line editing features, and access to the
-history list.
-</p>
-<div class="example">
-<pre class="example">/* fileman.c -- A tiny application which demonstrates how to use the
+library.
+It is called <code class="code">fileman</code>, and the source code resides in
+<samp class="file">examples/fileman.c</samp>.
+This sample application provides
+command name completion, line editing features,
+and access to the history list.
+</p>
+<div class="example smallexample">
+<pre class="example-preformatted">/* fileman.c -- A tiny application which demonstrates how to use the
    GNU Readline library.  This application interactively allows users
    to manipulate files and their modes. */
 
@@ -4842,8 +5258,8 @@ COMMAND commands[] = {
 };
 
 /* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
+char *stripwhite (char *);
+COMMAND *find_command (char *);
 
 /* The name of this program, as taken from argv[0]. */
 char *progname;
@@ -4852,8 +5268,7 @@ char *progname;
 int done;
 
 char *
-dupstr (s)
-     char *s;
+dupstr (char *s)
 {
   char *r;
 
@@ -4862,9 +5277,8 @@ dupstr (s)
   return (r);
 }
 
-main (argc, argv)
-     int argc;
-     char **argv;
+int
+main (int argc, char **argv)
 {
   char *line, *s;
 
@@ -4900,8 +5314,7 @@ main (argc, argv)
 
 /* Execute a command line. */
 int
-execute_line (line)
-     char *line;
+execute_line (char *line)
 {
   register int i;
   COMMAND *command;
@@ -4940,8 +5353,7 @@ execute_line (line)
 /* Look up NAME as the name of a command, and return a pointer to that
    command.  Return a NULL pointer if NAME isn't a command name. */
 COMMAND *
-find_command (name)
-     char *name;
+find_command (char *name)
 {
   register int i;
 
@@ -4955,8 +5367,7 @@ find_command (name)
 /* Strip whitespace from the start and end of STRING.  Return a pointer
    into STRING. */
 char *
-stripwhite (string)
-     char *string;
+stripwhite (char *string)
 {
   register char *s, *t;
 
@@ -4980,13 +5391,14 @@ stripwhite (string)
 /*                                                                  */
 /* **************************************************************** */
 
-char *command_generator PARAMS((const char *, int));
-char **fileman_completion PARAMS((const char *, int, int));
+char *command_generator (const char *, int);
+char **fileman_completion (const char *, int, int);
 
 /* Tell the GNU Readline library how to complete.  We want to try to complete
    on command names if this is the first word in the line, or on filenames
    if not. */
-initialize_readline ()
+void
+initialize_readline (void)
 {
   /* Allow conditional parsing of the ~/.inputrc file. */
   rl_readline_name = &quot;FileMan&quot;;
@@ -5001,9 +5413,7 @@ initialize_readline ()
    in case we want to do some simple parsing.  Return the array of matches,
    or NULL if there aren't any. */
 char **
-fileman_completion (text, start, end)
-     const char *text;
-     int start, end;
+fileman_completion (const char *text, int start, int end)
 {
   char **matches;
 
@@ -5022,9 +5432,7 @@ fileman_completion (text, start, end)
    to start from scratch; without any state (i.e. STATE == 0), then we
    start at the top of the list. */
 char *
-command_generator (text, state)
-     const char *text;
-     int state;
+command_generator (const char *text, int state)
 {
   static int list_index, len;
   char *name;
@@ -5062,40 +5470,40 @@ command_generator (text, state)
 static char syscom[1024];
 
 /* List the file(s) named in arg. */
-com_list (arg)
-     char *arg;
+int
+com_list (char *arg)
 {
   if (!arg)
     arg = &quot;&quot;;
 
-  sprintf (syscom, &quot;ls -FClg %s&quot;, arg);
+  snprintf (syscom, sizeof (syscom), &quot;ls -FClg %s&quot;, arg);
   return (system (syscom));
 }
 
-com_view (arg)
-     char *arg;
+int
+com_view (char *arg)
 {
   if (!valid_argument (&quot;view&quot;, arg))
     return 1;
 
 #if defined (__MSDOS__)
   /* more.com doesn't grok slashes in pathnames */
-  sprintf (syscom, &quot;less %s&quot;, arg);
+  snprintf (syscom, sizeof (syscom), &quot;less %s&quot;, arg);
 #else
-  sprintf (syscom, &quot;more %s&quot;, arg);
+  snprintf (syscom, sizeof (syscom), &quot;more %s&quot;, arg);
 #endif
   return (system (syscom));
 }
 
-com_rename (arg)
-     char *arg;
+int
+com_rename (char *arg)
 {
   too_dangerous (&quot;rename&quot;);
   return (1);
 }
 
-com_stat (arg)
-     char *arg;
+int
+com_stat (char *arg)
 {
   struct stat finfo;
 
@@ -5122,8 +5530,8 @@ com_stat (arg)
   return (0);
 }
 
-com_delete (arg)
-     char *arg;
+int
+com_delete (char *arg)
 {
   too_dangerous (&quot;delete&quot;);
   return (1);
@@ -5131,8 +5539,8 @@ com_delete (arg)
 
 /* Print out help for ARG, or for all of the commands if ARG is
    not present. */
-com_help (arg)
-     char *arg;
+int
+com_help (char *arg)
 {
   register int i;
   int printed = 0;
@@ -5170,8 +5578,8 @@ com_help (arg)
 }
 
 /* Change to the directory ARG. */
-com_cd (arg)
-     char *arg;
+int
+com_cd (char *arg)
 {
   if (chdir (arg) == -1)
     {
@@ -5184,8 +5592,8 @@ com_cd (arg)
 }
 
 /* Print out the current working directory. */
-com_pwd (ignore)
-     char *ignore;
+int
+com_pwd (char *ignore)
 {
   char dir[1024], *s;
 
@@ -5201,16 +5609,16 @@ com_pwd (ignore)
 }
 
 /* The user wishes to quit using this program.  Just set DONE non-zero. */
-com_quit (arg)
-     char *arg;
+int
+com_quit (char *arg)
 {
   done = 1;
   return (0);
 }
 
 /* Function which tells you that you can't do this. */
-too_dangerous (caller)
-     char *caller;
+void
+too_dangerous (char *caller)
 {
   fprintf (stderr,
            &quot;%s: Too dangerous for me to distribute.  Write it yourself.\n&quot;,
@@ -5220,8 +5628,7 @@ too_dangerous (caller)
 /* Return non-zero if ARG is a valid argument for CALLER, else print
    an error message and return zero. */
 int
-valid_argument (caller, arg)
-     char *caller, *arg;
+valid_argument (char *caller, char *arg)
 {
   if (!arg || !*arg)
     {
@@ -5237,29 +5644,29 @@ valid_argument (caller, arg)
 </div>
 </div>
 </div>
-<div class="appendix" id="GNU-Free-Documentation-License">
-<div class="header">
+<div class="appendix-level-extent" id="GNU-Free-Documentation-License">
+<div class="nav-panel">
 <p>
 Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Programming-with-GNU-Readline" accesskey="p" rel="prev">Programming with GNU Readline</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU Readline Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix A GNU Free Documentation License</h2>
+<h2 class="appendix" id="GNU-Free-Documentation-License-1"><span>Appendix A GNU Free Documentation License<a class="copiable-link" href="#GNU-Free-Documentation-License-1"> &para;</a></span></h2>
 
-<div align="center">Version 1.3, 3 November 2008
+<div class="center">Version 1.3, 3 November 2008
 </div>
 
 <div class="display">
-<pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-<a href="http://fsf.org/">http://fsf.org/</a>
+<pre class="display-preformatted">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<a class="uref" href="http://fsf.org/">http://fsf.org/</a>
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
 </pre></div>
 
-<ol start="0">
+<ol class="enumerate" start="0">
 <li> PREAMBLE
 
 <p>The purpose of this License is to make a manual, textbook, or other
-functional and useful document <em>free</em> in the sense of freedom: to
+functional and useful document <em class="dfn">free</em> in the sense of freedom: to
 assure everyone the effective freedom to copy and redistribute it,
 with or without modifying it, either commercially or noncommercially.
 Secondarily, this License preserves for the author and publisher a way
@@ -5333,16 +5740,16 @@ An image format is not Transparent if used for any substantial amount
 of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
 </p>
 <p>Examples of suitable formats for Transparent copies include plain
-<small>ASCII</small> without markup, Texinfo input format, LaTeX input
-format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
-<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
-of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
-<acronym>JPG</acronym>.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, <acronym>SGML</acronym> or
-<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
-not generally available, and the machine-generated <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> produced by some word processors for
+<small class="sc">ASCII</small> without markup, Texinfo input format, LaTeX input
+format, <abbr class="acronym">SGML</abbr> or <abbr class="acronym">XML</abbr> using a publicly available
+<abbr class="acronym">DTD</abbr>, and standard-conforming simple <abbr class="acronym">HTML</abbr>,
+PostScript or <abbr class="acronym">PDF</abbr> designed for human modification.  Examples
+of transparent image formats include <abbr class="acronym">PNG</abbr>, <abbr class="acronym">XCF</abbr> and
+<abbr class="acronym">JPG</abbr>.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <abbr class="acronym">SGML</abbr> or
+<abbr class="acronym">XML</abbr> for which the <abbr class="acronym">DTD</abbr> and/or processing tools are
+not generally available, and the machine-generated <abbr class="acronym">HTML</abbr>,
+PostScript or <abbr class="acronym">PDF</abbr> produced by some word processors for
 output purposes only.
 </p>
 <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
@@ -5431,7 +5838,7 @@ Version filling the role of the Document, thus licensing distribution
 and modification of the Modified Version to whoever possesses a copy
 of it.  In addition, you must do these things in the Modified Version:
 </p>
-<ol type="A" start="1">
+<ol class="enumerate" type="A" start="1">
 <li> Use in the Title Page (and on the covers, if any) a title distinct
 from that of the Document, and from those of previous versions
 (which should, if there were any, be listed in the History section
@@ -5631,7 +6038,7 @@ not give you any rights to use it.
 of the GNU Free Documentation License from time to time.  Such new
 versions will be similar in spirit to the present version, but may
 differ in detail to address new problems or concerns.  See
-<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+<a class="uref" href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
 </p>
 <p>Each version of the License is given a distinguishing version number.
 If the Document specifies that a particular numbered version of this
@@ -5677,30 +6084,30 @@ provided the MMC is eligible for relicensing.
 </p>
 </li></ol>
 
-<span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
+<h3 class="heading" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"><span>ADDENDUM: How to use this License for your documents<a class="copiable-link" href="#ADDENDUM_003a-How-to-use-this-License-for-your-documents"> &para;</a></span></h3>
 
 <p>To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and
 license notices just after the title page:
 </p>
-<div class="example">
-<pre class="example">  Copyright (C)  <var>year</var>  <var>your name</var>.
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted">  Copyright (C)  <var class="var">year</var>  <var class="var">your name</var>.
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   Texts.  A copy of the license is included in the section entitled ``GNU
   Free Documentation License''.
-</pre></div>
+</pre></div></div>
 
 <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
 replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
 </p>
-<div class="example">
-<pre class="example">    with the Invariant Sections being <var>list their titles</var>, with
-    the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
-    being <var>list</var>.
-</pre></div>
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted">    with the Invariant Sections being <var class="var">list their titles</var>, with
+    the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts
+    being <var class="var">list</var>.
+</pre></div></div>
 
 <p>If you have Invariant Sections without Cover Texts, or some other
 combination of the three, merge those two alternatives to suit the
@@ -5715,567 +6122,580 @@ to permit their use in free software.
 
 <hr>
 </div>
-<div class="unnumbered" id="Concept-Index">
-<div class="header">
+<div class="unnumbered-level-extent" id="Concept-Index">
+<div class="nav-panel">
 <p>
 Next: <a href="#Function-and-Variable-Index" accesskey="n" rel="next">Function and Variable Index</a>, Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU Readline Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Concept-Index-1"></span><h2 class="unnumbered">Concept Index</h2>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+<h2 class="unnumbered" id="Concept-Index-1"><span>Concept Index<a class="copiable-link" href="#Concept-Index-1"> &para;</a></span></h2>
+<div class="printindex cp-printindex">
+<table class="cp-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
  &nbsp; 
 </td></tr></table>
-<table class="index-cp" border="0">
-<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-A">A</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-application_002dspecific-completion-functions">application-specific completion functions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Custom-Completers">Custom Completers</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-C">C</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-command-editing">command editing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-editing-command-lines">editing command lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-I">I</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-initialization-file_002c-readline">initialization file, readline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File">Readline Init File</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-interaction_002c-readline">interaction, readline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Interaction">Readline Interaction</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-K">K</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-kill-ring">kill ring</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-killing-text">killing text</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-N">N</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-notation_002c-readline">notation, readline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-R">R</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-readline_002c-function">readline, function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Basic-Behavior">Basic Behavior</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-V">V</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-variables_002c-readline">variables, readline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Concept-Index_cp_letter-Y">Y</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-yanking-text">yanking text</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
+<table class="cp-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-A">A</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-application_002dspecific-completion-functions">application-specific completion functions</a></td><td class="printindex-index-section"><a href="#Custom-Completers">Custom Completers</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-C">C</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-command-editing">command editing</a></td><td class="printindex-index-section"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-E">E</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-editing-command-lines">editing command lines</a></td><td class="printindex-index-section"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-I">I</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-initialization-file_002c-readline">initialization file, readline</a></td><td class="printindex-index-section"><a href="#Readline-Init-File">Readline Init File</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-interaction_002c-readline">interaction, readline</a></td><td class="printindex-index-section"><a href="#Readline-Interaction">Readline Interaction</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-K">K</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kill-ring">kill ring</a></td><td class="printindex-index-section"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-killing-text">killing text</a></td><td class="printindex-index-section"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-N">N</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-notation_002c-readline">notation, readline</a></td><td class="printindex-index-section"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-R">R</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-readline_002c-function">readline, function</a></td><td class="printindex-index-section"><a href="#Basic-Behavior">Basic Behavior</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-V">V</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-variables_002c-readline">variables, readline</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Concept-Index_cp_letter-Y">Y</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-yanking-text">yanking text</a></td><td class="printindex-index-section"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
 </table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
+<table class="cp-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Concept-Index_cp_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-C"><b>C</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-C"><b>C</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-E"><b>E</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-E"><b>E</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-I"><b>I</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-I"><b>I</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-K"><b>K</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-K"><b>K</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-N"><b>N</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-N"><b>N</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-R"><b>R</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-R"><b>R</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-V"><b>V</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-V"><b>V</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
+<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
  &nbsp; 
 </td></tr></table>
+</div>
 
 <hr>
 </div>
-<div class="unnumbered" id="Function-and-Variable-Index">
-<div class="header">
+<div class="unnumbered-level-extent" id="Function-and-Variable-Index">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Concept-Index" accesskey="p" rel="prev">Concept Index</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU Readline Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Concept-Index" title="Index" rel="index">Index</a>]</p>
 </div>
-<span id="Function-and-Variable-Index-1"></span><h2 class="unnumbered">Function and Variable Index</h2>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Function-and-Variable-Index_fn_symbol-1"><b>_</b></a>
+<h2 class="unnumbered" id="Function-and-Variable-Index-1"><span>Function and Variable Index<a class="copiable-link" href="#Function-and-Variable-Index-1"> &para;</a></span></h2>
+<div class="printindex fn-printindex">
+<table class="fn-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_symbol-1"><b>_</b></a>
  &nbsp; 
 <br>
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-A"><b>A</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-B"><b>B</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-B"><b>B</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-C"><b>C</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-C"><b>C</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-D"><b>D</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-D"><b>D</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-E"><b>E</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-E"><b>E</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-F"><b>F</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-F"><b>F</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-H"><b>H</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-H"><b>H</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-I"><b>I</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-I"><b>I</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-K"><b>K</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-K"><b>K</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-M"><b>M</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-M"><b>M</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-N"><b>N</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-N"><b>N</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-O"><b>O</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-O"><b>O</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-P"><b>P</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-P"><b>P</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-Q"><b>Q</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-Q"><b>Q</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-R"><b>R</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-R"><b>R</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-S"><b>S</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-S"><b>S</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-T"><b>T</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-T"><b>T</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-U"><b>U</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-U"><b>U</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-V"><b>V</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-V"><b>V</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-Y"><b>Y</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-Y"><b>Y</b></a>
  &nbsp; 
 </td></tr></table>
-<table class="index-fn" border="0">
-<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_symbol-1">_</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005frl_005fdigit_005fp"><code>_rl_digit_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005frl_005fdigit_005fvalue"><code>_rl_digit_value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005frl_005flowercase_005fp"><code>_rl_lowercase_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005frl_005fto_005flower"><code>_rl_to_lower</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005frl_005fto_005fupper"><code>_rl_to_upper</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005frl_005fuppercase_005fp"><code>_rl_uppercase_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-A">A</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-abort-_0028C_002dg_0029"><code>abort (C-g)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-accept_002dline-_0028Newline-or-Return_0029"><code>accept-line (Newline or Return)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-active_002dregion_002dend_002dcolor">active-region-end-color</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-active_002dregion_002dstart_002dcolor">active-region-start-color</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-B">B</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-backward_002dchar-_0028C_002db_0029"><code>backward-char (C-b)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-backward_002ddelete_002dchar-_0028Rubout_0029"><code>backward-delete-char (Rubout)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"><code>backward-kill-line (C-x Rubout)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-backward_002dkill_002dword-_0028M_002dDEL_0029"><code>backward-kill-word (M-<span class="key">DEL</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-backward_002dword-_0028M_002db_0029"><code>backward-word (M-b)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"><code>beginning-of-history (M-&lt;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-beginning_002dof_002dline-_0028C_002da_0029"><code>beginning-of-line (C-a)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-bell_002dstyle">bell-style</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-bind_002dtty_002dspecial_002dchars">bind-tty-special-chars</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-blink_002dmatching_002dparen">blink-matching-paren</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-bracketed_002dpaste_002dbegin-_0028_0029"><code>bracketed-paste-begin ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-C">C</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"><code>call-last-kbd-macro (C-x e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-capitalize_002dword-_0028M_002dc_0029"><code>capitalize-word (M-c)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-character_002dsearch-_0028C_002d_005d_0029"><code>character-search (C-])</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"><code>character-search-backward (M-C-])</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-clear_002ddisplay-_0028M_002dC_002dl_0029"><code>clear-display (M-C-l)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-clear_002dscreen-_0028C_002dl_0029"><code>clear-screen (C-l)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-colored_002dcompletion_002dprefix">colored-completion-prefix</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-colored_002dstats">colored-stats</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-comment_002dbegin">comment-begin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-complete-_0028TAB_0029"><code>complete (<span class="key">TAB</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-completion_002ddisplay_002dwidth">completion-display-width</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-completion_002dignore_002dcase">completion-ignore-case</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-completion_002dmap_002dcase">completion-map-case</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-completion_002dprefix_002ddisplay_002dlength">completion-prefix-display-length</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-completion_002dquery_002ditems">completion-query-items</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-convert_002dmeta">convert-meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-copy_002dbackward_002dword-_0028_0029"><code>copy-backward-word ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-copy_002dforward_002dword-_0028_0029"><code>copy-forward-word ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-copy_002dregion_002das_002dkill-_0028_0029"><code>copy-region-as-kill ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-D">D</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-delete_002dchar-_0028C_002dd_0029"><code>delete-char (C-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-delete_002dchar_002dor_002dlist-_0028_0029"><code>delete-char-or-list ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-delete_002dhorizontal_002dspace-_0028_0029"><code>delete-horizontal-space ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, &hellip; <kbd>M--</kbd>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-disable_002dcompletion">disable-completion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-downcase_002dword-_0028M_002dl_0029"><code>downcase-word (M-l)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dump_002dfunctions-_0028_0029"><code>dump-functions ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dump_002dmacros-_0028_0029"><code>dump-macros ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-dump_002dvariables-_0028_0029"><code>dump-variables ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-E">E</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-echo_002dcontrol_002dcharacters">echo-control-characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-editing_002dmode">editing-mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-emacs_002dediting_002dmode-_0028C_002de_0029"><code>emacs-editing-mode (C-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-emacs_002dmode_002dstring">emacs-mode-string</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-enable_002dactive_002dregion">enable-active-region</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-enable_002dbracketed_002dpaste">enable-bracketed-paste</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-enable_002dkeypad">enable-keypad</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"><code>end-kbd-macro (C-x ))</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-end_002dof_002dfile-_0028usually-C_002dd_0029"><code><i>end-of-file</i> (usually C-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-end_002dof_002dhistory-_0028M_002d_003e_0029"><code>end-of-history (M-&gt;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-end_002dof_002dline-_0028C_002de_0029"><code>end-of-line (C-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"><code>exchange-point-and-mark (C-x C-x)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-expand_002dtilde">expand-tilde</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-F">F</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-fetch_002dhistory-_0028_0029"><code>fetch-history ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-forward_002dbackward_002ddelete_002dchar-_0028_0029"><code>forward-backward-delete-char ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-forward_002dchar-_0028C_002df_0029"><code>forward-char (C-f)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-forward_002dsearch_002dhistory-_0028C_002ds_0029"><code>forward-search-history (C-s)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-forward_002dword-_0028M_002df_0029"><code>forward-word (M-f)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-H">H</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dpreserve_002dpoint">history-preserve-point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dsearch_002dbackward-_0028_0029"><code>history-search-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dsearch_002dforward-_0028_0029"><code>history-search-forward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dsize">history-size</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"><code>history-substring-search-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-history_002dsubstring_002dsearch_002dforward-_0028_0029"><code>history-substring-search-forward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-horizontal_002dscroll_002dmode">horizontal-scroll-mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-I">I</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-input_002dmeta">input-meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-insert_002dcomment-_0028M_002d_0023_0029"><code>insert-comment (M-#)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-insert_002dcompletions-_0028M_002d_002a_0029"><code>insert-completions (M-*)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-isearch_002dterminators">isearch-terminators</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-K">K</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-keymap">keymap</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-kill_002dline-_0028C_002dk_0029"><code>kill-line (C-k)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-kill_002dregion-_0028_0029"><code>kill-region ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-kill_002dwhole_002dline-_0028_0029"><code>kill-whole-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-kill_002dword-_0028M_002dd_0029"><code>kill-word (M-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-M">M</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mark_002dmodified_002dlines">mark-modified-lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-mark_002dsymlinked_002ddirectories">mark-symlinked-directories</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-match_002dhidden_002dfiles">match-hidden-files</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu_002dcomplete-_0028_0029"><code>menu-complete ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu_002dcomplete_002dbackward-_0028_0029"><code>menu-complete-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-menu_002dcomplete_002ddisplay_002dprefix">menu-complete-display-prefix</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-meta_002dflag">meta-flag</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-N">N</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-next_002dhistory-_0028C_002dn_0029"><code>next-history (C-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-next_002dscreen_002dline-_0028_0029"><code>next-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"><code>non-incremental-forward-search-history (M-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"><code>non-incremental-reverse-search-history (M-p)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-O">O</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operate_002dand_002dget_002dnext-_0028C_002do_0029"><code>operate-and-get-next (C-o)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-output_002dmeta">output-meta</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-overwrite_002dmode-_0028_0029"><code>overwrite-mode ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-P">P</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-page_002dcompletions">page-completions</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-possible_002dcompletions-_0028M_002d_003f_0029"><code>possible-completions (M-?)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-prefix_002dmeta-_0028ESC_0029"><code>prefix-meta (<span class="key">ESC</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-previous_002dhistory-_0028C_002dp_0029"><code>previous-history (C-p)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-previous_002dscreen_002dline-_0028_0029"><code>previous-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-print_002dlast_002dkbd_002dmacro-_0028_0029"><code>print-last-kbd-macro ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-Q">Q</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"><code>quoted-insert (C-q or C-v)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-R">R</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"><code>re-read-init-file (C-x C-r)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-readline"><code>readline</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Basic-Behavior">Basic Behavior</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-redraw_002dcurrent_002dline-_0028_0029"><code>redraw-current-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"><code>reverse-search-history (C-r)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-revert_002dall_002dat_002dnewline">revert-all-at-newline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-revert_002dline-_0028M_002dr_0029"><code>revert-line (M-r)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005factivate_005fmark"><code>rl_activate_mark</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fadd_005fdefun"><code>rl_add_defun</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Function-Naming">Function Naming</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fadd_005ffunmap_005fentry"><code>rl_add_funmap_entry</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fadd_005fundo"><code>rl_add_undo</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005falphabetic"><code>rl_alphabetic</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005falready_005fprompted">rl_already_prompted</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fattempted_005fcompletion_005ffunction">rl_attempted_completion_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fattempted_005fcompletion_005fover">rl_attempted_completion_over</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbasic_005fquote_005fcharacters">rl_basic_quote_characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbasic_005fword_005fbreak_005fcharacters">rl_basic_word_break_characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbegin_005fundo_005fgroup"><code>rl_begin_undo_group</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbinding_005fkeymap">rl_binding_keymap</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkey"><code>rl_bind_key</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkeyseq"><code>rl_bind_keyseq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkeyseq_005fif_005funbound"><code>rl_bind_keyseq_if_unbound</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkeyseq_005fif_005funbound_005fin_005fmap"><code>rl_bind_keyseq_if_unbound_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkeyseq_005fin_005fmap"><code>rl_bind_keyseq_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkey_005fif_005funbound"><code>rl_bind_key_if_unbound</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkey_005fif_005funbound_005fin_005fmap"><code>rl_bind_key_if_unbound_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fbind_005fkey_005fin_005fmap"><code>rl_bind_key_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcallback_005fhandler_005finstall"><code>rl_callback_handler_install</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcallback_005fhandler_005fremove"><code>rl_callback_handler_remove</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcallback_005fread_005fchar"><code>rl_callback_read_char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcallback_005fsigcleanup"><code>rl_callback_sigcleanup</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcatch_005fsignals">rl_catch_signals</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcatch_005fsigwinch">rl_catch_sigwinch</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fchange_005fenvironment">rl_change_environment</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fchar_005fis_005fquoted_005fp">rl_char_is_quoted_p</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcheck_005fsignals"><code>rl_check_signals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcleanup_005fafter_005fsignal"><code>rl_cleanup_after_signal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fclear_005fhistory"><code>rl_clear_history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fclear_005fmessage"><code>rl_clear_message</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fclear_005fpending_005finput"><code>rl_clear_pending_input</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fclear_005fsignals"><code>rl_clear_signals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fclear_005fvisible_005fline"><code>rl_clear_visible_line</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcomplete"><code>rl_complete</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#How-Completing-Works">How Completing Works</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcomplete-1"><code>rl_complete</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompleter_005fquote_005fcharacters">rl_completer_quote_characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompleter_005fword_005fbreak_005fcharacters">rl_completer_word_break_characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcomplete_005finternal"><code>rl_complete_internal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fappend_005fcharacter">rl_completion_append_character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fdisplay_005fmatches_005fhook">rl_completion_display_matches_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fentry_005ffunction">rl_completion_entry_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#How-Completing-Works">How Completing Works</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fentry_005ffunction-1">rl_completion_entry_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005ffound_005fquote">rl_completion_found_quote</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005finvoking_005fkey">rl_completion_invoking_key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fmark_005fsymlink_005fdirs">rl_completion_mark_symlink_dirs</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fmatches"><code>rl_completion_matches</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fmode"><code>rl_completion_mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fquery_005fitems">rl_completion_query_items</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fquote_005fcharacter">rl_completion_quote_character</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fsuppress_005fappend">rl_completion_suppress_append</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fsuppress_005fquote">rl_completion_suppress_quote</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005ftype">rl_completion_type</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcompletion_005fword_005fbreak_005fhook">rl_completion_word_break_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcopy_005fkeymap"><code>rl_copy_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcopy_005ftext"><code>rl_copy_text</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Modifying-Text">Modifying Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fcrlf"><code>rl_crlf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdeactivate_005fmark"><code>rl_deactivate_mark</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdelete_005ftext"><code>rl_delete_text</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Modifying-Text">Modifying Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdeprep_005fterminal"><code>rl_deprep_terminal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Terminal-Management">Terminal Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdeprep_005fterm_005ffunction">rl_deprep_term_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fding"><code>rl_ding</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdirectory_005fcompletion_005fhook">rl_directory_completion_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdirectory_005frewrite_005fhook_003b">rl_directory_rewrite_hook;</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdiscard_005fkeymap"><code>rl_discard_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdispatching">rl_dispatching</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdisplay_005fmatch_005flist"><code>rl_display_match_list</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdisplay_005fprompt">rl_display_prompt</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdone">rl_done</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fdo_005fundo"><code>rl_do_undo</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fecho_005fsignal_005fchar"><code>rl_echo_signal_char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fediting_005fmode">rl_editing_mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fempty_005fkeymap"><code>rl_empty_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fend">rl_end</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fend_005fundo_005fgroup"><code>rl_end_undo_group</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005feof_005ffound">rl_eof_found</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ferase_005fempty_005fline">rl_erase_empty_line</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fevent_005fhook">rl_event_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fexecute_005fnext"><code>rl_execute_next</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fexecuting_005fkey">rl_executing_key</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fexecuting_005fkeymap">rl_executing_keymap</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fexecuting_005fkeyseq">rl_executing_keyseq</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fexecuting_005fmacro">rl_executing_macro</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fexpand_005fprompt"><code>rl_expand_prompt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fexplicit_005farg">rl_explicit_arg</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fextend_005fline_005fbuffer"><code>rl_extend_line_buffer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005fcompletion_005fdesired">rl_filename_completion_desired</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005fcompletion_005ffunction"><code>rl_filename_completion_function</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005fdequoting_005ffunction">rl_filename_dequoting_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005fquote_005fcharacters">rl_filename_quote_characters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005fquoting_005fdesired">rl_filename_quoting_desired</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005fquoting_005ffunction">rl_filename_quoting_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005frewrite_005fhook">rl_filename_rewrite_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffilename_005fstat_005fhook">rl_filename_stat_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fforced_005fupdate_005fdisplay"><code>rl_forced_update_display</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffree"><code>rl_free</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffree_005fkeymap"><code>rl_free_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffree_005fline_005fstate"><code>rl_free_line_state</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffree_005fundo_005flist"><code>rl_free_undo_list</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffunction_005fdumper"><code>rl_function_dumper</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffunction_005fof_005fkeyseq"><code>rl_function_of_keyseq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffunction_005fof_005fkeyseq_005flen"><code>rl_function_of_keyseq_len</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ffunmap_005fnames"><code>rl_funmap_names</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fgeneric_005fbind"><code>rl_generic_bind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fgetc"><code>rl_getc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fgetc_005ffunction">rl_getc_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fget_005fkeymap"><code>rl_get_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fget_005fkeymap_005fby_005fname"><code>rl_get_keymap_by_name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fget_005fkeymap_005fname"><code>rl_get_keymap_name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fget_005fscreen_005fsize"><code>rl_get_screen_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fget_005ftermcap"><code>rl_get_termcap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fgnu_005freadline_005fp">rl_gnu_readline_p</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fignore_005fcompletion_005fduplicates">rl_ignore_completion_duplicates</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fignore_005fsome_005fcompletions_005ffunction">rl_ignore_some_completions_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finhibit_005fcompletion">rl_inhibit_completion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finitialize"><code>rl_initialize</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finput_005favailable_005fhook">rl_input_available_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finsert_005fcompletions"><code>rl_insert_completions</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finsert_005ftext"><code>rl_insert_text</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Modifying-Text">Modifying Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finstream">rl_instream</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finvoking_005fkeyseqs"><code>rl_invoking_keyseqs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005finvoking_005fkeyseqs_005fin_005fmap"><code>rl_invoking_keyseqs_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fkeep_005fmark_005factive"><code>rl_keep_mark_active</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fkey_005fsequence_005flength">rl_key_sequence_length</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fkill_005ftext"><code>rl_kill_text</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Modifying-Text">Modifying Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005flast_005ffunc">rl_last_func</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005flibrary_005fversion">rl_library_version</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fline_005fbuffer">rl_line_buffer</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005flist_005ffunmap_005fnames"><code>rl_list_funmap_names</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmacro_005fbind"><code>rl_macro_bind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmacro_005fdumper"><code>rl_macro_dumper</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmake_005fbare_005fkeymap"><code>rl_make_bare_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmake_005fkeymap"><code>rl_make_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmark">rl_mark</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmark_005factive_005fp"><code>rl_mark_active_p</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmessage"><code>rl_message</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fmodifying"><code>rl_modifying</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fnamed_005ffunction"><code>rl_named_function</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fnumeric_005farg">rl_numeric_arg</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fnum_005fchars_005fto_005fread">rl_num_chars_to_read</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fon_005fnew_005fline"><code>rl_on_new_line</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fon_005fnew_005fline_005fwith_005fprompt"><code>rl_on_new_line_with_prompt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005foutstream">rl_outstream</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fparse_005fand_005fbind"><code>rl_parse_and_bind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fpending_005finput">rl_pending_input</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fpending_005fsignal"><code>rl_pending_signal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fpersistent_005fsignal_005fhandlers">rl_persistent_signal_handlers</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fpoint">rl_point</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fpossible_005fcompletions"><code>rl_possible_completions</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fprefer_005fenv_005fwinsize">rl_prefer_env_winsize</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fprep_005fterminal"><code>rl_prep_terminal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Terminal-Management">Terminal Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fprep_005fterm_005ffunction">rl_prep_term_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fpre_005finput_005fhook">rl_pre_input_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fprompt">rl_prompt</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fpush_005fmacro_005finput"><code>rl_push_macro_input</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Modifying-Text">Modifying Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freadline_005fname">rl_readline_name</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freadline_005fstate">rl_readline_state</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freadline_005fversion">rl_readline_version</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fread_005finit_005ffile"><code>rl_read_init_file</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fread_005fkey"><code>rl_read_key</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fredisplay"><code>rl_redisplay</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fredisplay_005ffunction">rl_redisplay_function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freplace_005fline"><code>rl_replace_line</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freset_005fafter_005fsignal"><code>rl_reset_after_signal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freset_005fline_005fstate"><code>rl_reset_line_state</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freset_005fscreen_005fsize"><code>rl_reset_screen_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005freset_005fterminal"><code>rl_reset_terminal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Terminal-Management">Terminal Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fresize_005fterminal"><code>rl_resize_terminal</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005frestore_005fprompt"><code>rl_restore_prompt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005frestore_005fstate"><code>rl_restore_state</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fsave_005fprompt"><code>rl_save_prompt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fsave_005fstate"><code>rl_save_state</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Utility-Functions">Utility Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fkey"><code>rl_set_key</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fkeyboard_005finput_005ftimeout"><code>rl_set_keyboard_input_timeout</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fkeymap"><code>rl_set_keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fkeymap_005fname"><code>rl_set_keymap_name</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keymaps">Keymaps</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fparen_005fblink_005ftimeout"><code>rl_set_paren_blink_timeout</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fprompt"><code>rl_set_prompt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fscreen_005fsize"><code>rl_set_screen_size</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005fsignals"><code>rl_set_signals</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fset_005ftimeout"><code>rl_set_timeout</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fshow_005fchar"><code>rl_show_char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redisplay">Redisplay</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fsignal_005fevent_005fhook">rl_signal_event_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fsort_005fcompletion_005fmatches">rl_sort_completion_matches</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fspecial_005fprefixes">rl_special_prefixes</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Variables">Completion Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fstartup_005fhook">rl_startup_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fstuff_005fchar"><code>rl_stuff_char</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fterminal_005fname">rl_terminal_name</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ftimeout_005fevent_005fhook">rl_timeout_event_hook</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Variables">Readline Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ftimeout_005fremaining"><code>rl_timeout_remaining</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Character-Input">Character Input</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ftrim_005farg_005ffrom_005fkeyseq"><code>rl_trim_arg_from_keyseq</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ftty_005fset_005fdefault_005fbindings"><code>rl_tty_set_default_bindings</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Terminal-Management">Terminal Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ftty_005fset_005fechoing"><code>rl_tty_set_echoing</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Terminal-Management">Terminal Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005ftty_005funset_005fdefault_005fbindings"><code>rl_tty_unset_default_bindings</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Terminal-Management">Terminal Management</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005funbind_005fcommand_005fin_005fmap"><code>rl_unbind_command_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005funbind_005ffunction_005fin_005fmap"><code>rl_unbind_function_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005funbind_005fkey"><code>rl_unbind_key</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005funbind_005fkey_005fin_005fmap"><code>rl_unbind_key_in_map</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Binding-Keys">Binding Keys</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fusername_005fcompletion_005ffunction"><code>rl_username_completion_function</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Completion-Functions">Completion Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fvariable_005fbind"><code>rl_variable_bind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fvariable_005fdumper"><code>rl_variable_dumper</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-rl_005fvariable_005fvalue"><code>rl_variable_value</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-S">S</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"><code>self-insert (a, b, A, 1, !, &hellip;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-set_002dmark-_0028C_002d_0040_0029"><code>set-mark (C-@)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029"><code>shell-transpose-words (M-C-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-show_002dall_002dif_002dambiguous">show-all-if-ambiguous</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-show_002dall_002dif_002dunmodified">show-all-if-unmodified</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-show_002dmode_002din_002dprompt">show-mode-in-prompt</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-skip_002dcompleted_002dtext">skip-completed-text</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-skip_002dcsi_002dsequence-_0028_0029"><code>skip-csi-sequence ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"><code>start-kbd-macro (C-x ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-T">T</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-tab_002dinsert-_0028M_002dTAB_0029"><code>tab-insert (M-<span class="key">TAB</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-tilde_002dexpand-_0028M_002d_007e_0029"><code>tilde-expand (M-~)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-transpose_002dchars-_0028C_002dt_0029"><code>transpose-chars (C-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-transpose_002dwords-_0028M_002dt_0029"><code>transpose-words (M-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-U">U</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"><code>undo (C-_ or C-x C-u)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-universal_002dargument-_0028_0029"><code>universal-argument ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unix_002dfilename_002drubout-_0028_0029"><code>unix-filename-rubout ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unix_002dline_002ddiscard-_0028C_002du_0029"><code>unix-line-discard (C-u)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-unix_002dword_002drubout-_0028C_002dw_0029"><code>unix-word-rubout (C-w)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-upcase_002dword-_0028M_002du_0029"><code>upcase-word (M-u)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-V">V</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-vi_002dcmd_002dmode_002dstring">vi-cmd-mode-string</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029"><code>vi-editing-mode (M-C-j)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-vi_002dins_002dmode_002dstring">vi-ins-mode-string</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-visible_002dstats">visible-stats</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
-<tr><th id="Function-and-Variable-Index_fn_letter-Y">Y</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-yank-_0028C_002dy_0029"><code>yank (C-y)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"><code>yank-last-arg (M-. or M-_)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"><code>yank-nth-arg (M-C-y)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-yank_002dpop-_0028M_002dy_0029"><code>yank-pop (M-y)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td colspan="4"> <hr></td></tr>
+<table class="fn-entries-printindex" border="0">
+<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_symbol-1">_</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005frl_005fdigit_005fp"><code>_rl_digit_p</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005frl_005fdigit_005fvalue"><code>_rl_digit_value</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005frl_005flowercase_005fp"><code>_rl_lowercase_p</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005frl_005fto_005flower"><code>_rl_to_lower</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005frl_005fto_005fupper"><code>_rl_to_upper</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-_005frl_005fuppercase_005fp"><code>_rl_uppercase_p</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-A">A</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-abort-_0028C_002dg_0029"><code>abort (C-g)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-accept_002dline-_0028Newline-or-Return_0029"><code>accept-line (Newline or Return)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-active_002dregion_002dend_002dcolor">active-region-end-color</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-active_002dregion_002dstart_002dcolor">active-region-start-color</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-B">B</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backward_002dchar-_0028C_002db_0029"><code>backward-char (C-b)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backward_002ddelete_002dchar-_0028Rubout_0029"><code>backward-delete-char (Rubout)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"><code>backward-kill-line (C-x Rubout)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backward_002dkill_002dword-_0028M_002dDEL_0029"><code>backward-kill-word (M-<kbd class="key">DEL</kbd>)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-backward_002dword-_0028M_002db_0029"><code>backward-word (M-b)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"><code>beginning-of-history (M-&lt;)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-beginning_002dof_002dline-_0028C_002da_0029"><code>beginning-of-line (C-a)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bell_002dstyle">bell-style</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bind_002dtty_002dspecial_002dchars">bind-tty-special-chars</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-blink_002dmatching_002dparen">blink-matching-paren</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-bracketed_002dpaste_002dbegin-_0028_0029"><code>bracketed-paste-begin ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-C">C</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"><code>call-last-kbd-macro (C-x e)</code></a></td><td class="printindex-index-section"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-capitalize_002dword-_0028M_002dc_0029"><code>capitalize-word (M-c)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002dsearch-_0028C_002d_005d_0029"><code>character-search (C-])</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"><code>character-search-backward (M-C-])</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-clear_002ddisplay-_0028M_002dC_002dl_0029"><code>clear-display (M-C-l)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-clear_002dscreen-_0028C_002dl_0029"><code>clear-screen (C-l)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-colored_002dcompletion_002dprefix">colored-completion-prefix</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-colored_002dstats">colored-stats</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-comment_002dbegin">comment-begin</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-complete-_0028TAB_0029"><code>complete (<kbd class="key">TAB</kbd>)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-completion_002ddisplay_002dwidth">completion-display-width</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-completion_002dignore_002dcase">completion-ignore-case</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-completion_002dmap_002dcase">completion-map-case</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-completion_002dprefix_002ddisplay_002dlength">completion-prefix-display-length</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-completion_002dquery_002ditems">completion-query-items</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-convert_002dmeta">convert-meta</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy_002dbackward_002dword-_0028_0029"><code>copy-backward-word ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy_002dforward_002dword-_0028_0029"><code>copy-forward-word ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-copy_002dregion_002das_002dkill-_0028_0029"><code>copy-region-as-kill ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-D">D</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-delete_002dchar-_0028C_002dd_0029"><code>delete-char (C-d)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-delete_002dchar_002dor_002dlist-_0028_0029"><code>delete-char-or-list ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-delete_002dhorizontal_002dspace-_0028_0029"><code>delete-horizontal-space ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"><code>digit-argument (<kbd class="kbd">M-0</kbd>, <kbd class="kbd">M-1</kbd>, &hellip; <kbd class="kbd">M--</kbd>)</code></a></td><td class="printindex-index-section"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-disable_002dcompletion">disable-completion</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"><code>do-lowercase-version (M-A, M-B, M-<var class="var">x</var>, &hellip;)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-downcase_002dword-_0028M_002dl_0029"><code>downcase-word (M-l)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dump_002dfunctions-_0028_0029"><code>dump-functions ()</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dump_002dmacros-_0028_0029"><code>dump-macros ()</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-dump_002dvariables-_0028_0029"><code>dump-variables ()</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-E">E</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-echo_002dcontrol_002dcharacters">echo-control-characters</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-editing_002dmode">editing-mode</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-emacs_002dediting_002dmode-_0028C_002de_0029"><code>emacs-editing-mode (C-e)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-emacs_002dmode_002dstring">emacs-mode-string</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-enable_002dactive_002dregion-The">enable-active-region The</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-enable_002dbracketed_002dpaste">enable-bracketed-paste</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-enable_002dkeypad">enable-keypad</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-enable_002dmeta_002dkey">enable-meta-key</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"><code>end-kbd-macro (C-x ))</code></a></td><td class="printindex-index-section"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dfile-_0028usually-C_002dd_0029"><code><i class="i">end-of-file</i> (usually C-d)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dhistory-_0028M_002d_003e_0029"><code>end-of-history (M-&gt;)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-end_002dof_002dline-_0028C_002de_0029"><code>end-of-line (C-e)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"><code>exchange-point-and-mark (C-x C-x)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-execute_002dnamed_002dcommand-_0028M_002dx_0029"><code>execute-named-command (M-x)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-expand_002dtilde">expand-tilde</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-export_002dcompletions-_0028_0029"><code>export-completions ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-F">F</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-fetch_002dhistory-_0028_0029"><code>fetch-history ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-force_002dmeta_002dprefix">force-meta-prefix</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-forward_002dbackward_002ddelete_002dchar-_0028_0029"><code>forward-backward-delete-char ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-forward_002dchar-_0028C_002df_0029"><code>forward-char (C-f)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-forward_002dsearch_002dhistory-_0028C_002ds_0029"><code>forward-search-history (C-s)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-forward_002dword-_0028M_002df_0029"><code>forward-word (M-f)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-H">H</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_002dpreserve_002dpoint">history-preserve-point</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_002dsearch_002dbackward-_0028_0029"><code>history-search-backward ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_002dsearch_002dforward-_0028_0029"><code>history-search-forward ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_002dsize">history-size</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"><code>history-substring-search-backward ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-history_002dsubstring_002dsearch_002dforward-_0028_0029"><code>history-substring-search-forward ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-horizontal_002dscroll_002dmode">horizontal-scroll-mode</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-I">I</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-input_002dmeta">input-meta</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-insert_002dcomment-_0028M_002d_0023_0029"><code>insert-comment (M-#)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-insert_002dcompletions-_0028M_002d_002a_0029"><code>insert-completions (M-*)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-isearch_002dterminators">isearch-terminators</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-K">K</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-keymap">keymap</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kill_002dline-_0028C_002dk_0029"><code>kill-line (C-k)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kill_002dregion-_0028_0029"><code>kill-region ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kill_002dwhole_002dline-_0028_0029"><code>kill-whole-line ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-kill_002dword-_0028M_002dd_0029"><code>kill-word (M-d)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-M">M</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mark_002dmodified_002dlines">mark-modified-lines</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-mark_002dsymlinked_002ddirectories">mark-symlinked-directories</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-match_002dhidden_002dfiles">match-hidden-files</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-menu_002dcomplete-_0028_0029"><code>menu-complete ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-menu_002dcomplete_002dbackward-_0028_0029"><code>menu-complete-backward ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-menu_002dcomplete_002ddisplay_002dprefix">menu-complete-display-prefix</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-meta_002dflag">meta-flag</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-N">N</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-next_002dhistory-_0028C_002dn_0029"><code>next-history (C-n)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-next_002dscreen_002dline-_0028_0029"><code>next-screen-line ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"><code>non-incremental-forward-search-history (M-n)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"><code>non-incremental-reverse-search-history (M-p)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-O">O</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-operate_002dand_002dget_002dnext-_0028C_002do_0029"><code>operate-and-get-next (C-o)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-output_002dmeta">output-meta</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-overwrite_002dmode-_0028_0029"><code>overwrite-mode ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-P">P</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-page_002dcompletions">page-completions</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-possible_002dcompletions-_0028M_002d_003f_0029"><code>possible-completions (M-?)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-prefix_002dmeta-_0028ESC_0029"><code>prefix-meta (<kbd class="key">ESC</kbd>)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-previous_002dhistory-_0028C_002dp_0029"><code>previous-history (C-p)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-previous_002dscreen_002dline-_0028_0029"><code>previous-screen-line ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-print_002dlast_002dkbd_002dmacro-_0028_0029"><code>print-last-kbd-macro ()</code></a></td><td class="printindex-index-section"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-Q">Q</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"><code>quoted-insert (C-q or C-v)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-R">R</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"><code>re-read-init-file (C-x C-r)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-readline"><code>readline</code></a></td><td class="printindex-index-section"><a href="#Basic-Behavior">Basic Behavior</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-redraw_002dcurrent_002dline-_0028_0029"><code>redraw-current-line ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"><code>reverse-search-history (C-r)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-revert_002dall_002dat_002dnewline">revert-all-at-newline</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-revert_002dline-_0028M_002dr_0029"><code>revert-line (M-r)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005factivate_005fmark"><code>rl_activate_mark</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fadd_005fdefun"><code>rl_add_defun</code></a></td><td class="printindex-index-section"><a href="#Function-Naming">Function Naming</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fadd_005ffunmap_005fentry"><code>rl_add_funmap_entry</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fadd_005fundo"><code>rl_add_undo</code></a></td><td class="printindex-index-section"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005falphabetic"><code>rl_alphabetic</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005falready_005fprompted">rl_already_prompted</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fattempted_005fcompletion_005ffunction">rl_attempted_completion_function</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fattempted_005fcompletion_005fover">rl_attempted_completion_over</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbasic_005fquote_005fcharacters">rl_basic_quote_characters</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbasic_005fword_005fbreak_005fcharacters">rl_basic_word_break_characters</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbegin_005fundo_005fgroup"><code>rl_begin_undo_group</code></a></td><td class="printindex-index-section"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkey"><code>rl_bind_key</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkey_005fif_005funbound"><code>rl_bind_key_if_unbound</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkey_005fif_005funbound_005fin_005fmap"><code>rl_bind_key_if_unbound_in_map</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkey_005fin_005fmap"><code>rl_bind_key_in_map</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkeyseq"><code>rl_bind_keyseq</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkeyseq_005fif_005funbound"><code>rl_bind_keyseq_if_unbound</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkeyseq_005fif_005funbound_005fin_005fmap"><code>rl_bind_keyseq_if_unbound_in_map</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbind_005fkeyseq_005fin_005fmap"><code>rl_bind_keyseq_in_map</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fbinding_005fkeymap">rl_binding_keymap</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcallback_005fhandler_005finstall"><code>rl_callback_handler_install</code></a></td><td class="printindex-index-section"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcallback_005fhandler_005fremove"><code>rl_callback_handler_remove</code></a></td><td class="printindex-index-section"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcallback_005fread_005fchar"><code>rl_callback_read_char</code></a></td><td class="printindex-index-section"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcallback_005fsigcleanup"><code>rl_callback_sigcleanup</code></a></td><td class="printindex-index-section"><a href="#Alternate-Interface">Alternate Interface</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcatch_005fsignals">rl_catch_signals</a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcatch_005fsigwinch">rl_catch_sigwinch</a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fchange_005fenvironment">rl_change_environment</a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fchar_005fis_005fquoted_005fp">rl_char_is_quoted_p</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcheck_005fsignals"><code>rl_check_signals</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcleanup_005fafter_005fsignal"><code>rl_cleanup_after_signal</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fclear_005fhistory"><code>rl_clear_history</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fclear_005fmessage"><code>rl_clear_message</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fclear_005fpending_005finput"><code>rl_clear_pending_input</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fclear_005fsignals"><code>rl_clear_signals</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fclear_005fvisible_005fline"><code>rl_clear_visible_line</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcomplete"><code>rl_complete</code></a></td><td class="printindex-index-section"><a href="#How-Completing-Works">How Completing Works</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcomplete-1"><code>rl_complete</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcomplete_005finternal"><code>rl_complete_internal</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompleter_005fquote_005fcharacters">rl_completer_quote_characters</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompleter_005fword_005fbreak_005fcharacters">rl_completer_word_break_characters</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fappend_005fcharacter">rl_completion_append_character</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fdisplay_005fmatches_005fhook">rl_completion_display_matches_hook</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fentry_005ffunction">rl_completion_entry_function</a></td><td class="printindex-index-section"><a href="#How-Completing-Works">How Completing Works</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fentry_005ffunction-1">rl_completion_entry_function</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005ffound_005fquote">rl_completion_found_quote</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005finvoking_005fkey">rl_completion_invoking_key</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fmark_005fsymlink_005fdirs">rl_completion_mark_symlink_dirs</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fmatches"><code>rl_completion_matches</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fmode"><code>rl_completion_mode</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fquery_005fitems">rl_completion_query_items</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fquote_005fcharacter">rl_completion_quote_character</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005frewrite_005fhook">rl_completion_rewrite_hook</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fsuppress_005fappend">rl_completion_suppress_append</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fsuppress_005fquote">rl_completion_suppress_quote</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005ftype">rl_completion_type</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcompletion_005fword_005fbreak_005fhook">rl_completion_word_break_hook</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcopy_005fkeymap"><code>rl_copy_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcopy_005ftext"><code>rl_copy_text</code></a></td><td class="printindex-index-section"><a href="#Modifying-Text">Modifying Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fcrlf"><code>rl_crlf</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdeactivate_005fmark"><code>rl_deactivate_mark</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdelete_005ftext"><code>rl_delete_text</code></a></td><td class="printindex-index-section"><a href="#Modifying-Text">Modifying Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdeprep_005fterm_005ffunction">rl_deprep_term_function</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdeprep_005fterminal"><code>rl_deprep_terminal</code></a></td><td class="printindex-index-section"><a href="#Terminal-Management">Terminal Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fding"><code>rl_ding</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdirectory_005fcompletion_005fhook">rl_directory_completion_hook</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdirectory_005frewrite_005fhook_003b">rl_directory_rewrite_hook;</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdiscard_005fkeymap"><code>rl_discard_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdispatching">rl_dispatching</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdisplay_005fmatch_005flist"><code>rl_display_match_list</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdisplay_005fprompt">rl_display_prompt</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdo_005fundo"><code>rl_do_undo</code></a></td><td class="printindex-index-section"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fdone">rl_done</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fecho_005fsignal_005fchar"><code>rl_echo_signal_char</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fediting_005fmode">rl_editing_mode</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fempty_005fkeymap"><code>rl_empty_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fend">rl_end</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fend_005fundo_005fgroup"><code>rl_end_undo_group</code></a></td><td class="printindex-index-section"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005feof_005ffound">rl_eof_found</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ferase_005fempty_005fline">rl_erase_empty_line</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fevent_005fhook">rl_event_hook</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fexecute_005fnext"><code>rl_execute_next</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fexecuting_005fkey">rl_executing_key</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fexecuting_005fkeymap">rl_executing_keymap</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fexecuting_005fkeyseq">rl_executing_keyseq</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fexecuting_005fmacro">rl_executing_macro</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fexpand_005fprompt"><code>rl_expand_prompt</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fexplicit_005farg">rl_explicit_arg</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fextend_005fline_005fbuffer"><code>rl_extend_line_buffer</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005fcompletion_005fdesired">rl_filename_completion_desired</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005fcompletion_005ffunction"><code>rl_filename_completion_function</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005fdequoting_005ffunction">rl_filename_dequoting_function</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005fquote_005fcharacters">rl_filename_quote_characters</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005fquoting_005fdesired">rl_filename_quoting_desired</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005fquoting_005ffunction">rl_filename_quoting_function</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005frewrite_005fhook">rl_filename_rewrite_hook</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffilename_005fstat_005fhook">rl_filename_stat_hook</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fforced_005fupdate_005fdisplay"><code>rl_forced_update_display</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffree"><code>rl_free</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffree_005fkeymap"><code>rl_free_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffree_005fline_005fstate"><code>rl_free_line_state</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffree_005fundo_005flist"><code>rl_free_undo_list</code></a></td><td class="printindex-index-section"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffull_005fquoting_005fdesired">rl_full_quoting_desired</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffunction_005fdumper"><code>rl_function_dumper</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffunction_005fof_005fkeyseq"><code>rl_function_of_keyseq</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffunction_005fof_005fkeyseq_005flen"><code>rl_function_of_keyseq_len</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ffunmap_005fnames"><code>rl_funmap_names</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fgeneric_005fbind"><code>rl_generic_bind</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fget_005fkeymap"><code>rl_get_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fget_005fkeymap_005fby_005fname"><code>rl_get_keymap_by_name</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fget_005fkeymap_005fname"><code>rl_get_keymap_name</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fget_005fscreen_005fsize"><code>rl_get_screen_size</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fget_005ftermcap"><code>rl_get_termcap</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fgetc"><code>rl_getc</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fgetc_005ffunction">rl_getc_function</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fgnu_005freadline_005fp">rl_gnu_readline_p</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fignore_005fcompletion_005fduplicates">rl_ignore_completion_duplicates</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fignore_005fsome_005fcompletions_005ffunction">rl_ignore_some_completions_function</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finhibit_005fcompletion">rl_inhibit_completion</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finitialize"><code>rl_initialize</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finput_005favailable_005fhook">rl_input_available_hook</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finsert_005fcompletions"><code>rl_insert_completions</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finsert_005ftext"><code>rl_insert_text</code></a></td><td class="printindex-index-section"><a href="#Modifying-Text">Modifying Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finstream">rl_instream</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finvoking_005fkeyseqs"><code>rl_invoking_keyseqs</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005finvoking_005fkeyseqs_005fin_005fmap"><code>rl_invoking_keyseqs_in_map</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fkeep_005fmark_005factive"><code>rl_keep_mark_active</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fkey_005fsequence_005flength">rl_key_sequence_length</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fkill_005ftext"><code>rl_kill_text</code></a></td><td class="printindex-index-section"><a href="#Modifying-Text">Modifying Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005flast_005ffunc">rl_last_func</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005flibrary_005fversion">rl_library_version</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fline_005fbuffer">rl_line_buffer</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005flist_005ffunmap_005fnames"><code>rl_list_funmap_names</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmacro_005fbind"><code>rl_macro_bind</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmacro_005fdisplay_005fhook">rl_macro_display_hook</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmacro_005fdumper"><code>rl_macro_dumper</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmake_005fbare_005fkeymap"><code>rl_make_bare_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmake_005fkeymap"><code>rl_make_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmark">rl_mark</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmark_005factive_005fp"><code>rl_mark_active_p</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmessage"><code>rl_message</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fmodifying"><code>rl_modifying</code></a></td><td class="printindex-index-section"><a href="#Allowing-Undoing">Allowing Undoing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fnamed_005ffunction"><code>rl_named_function</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fnum_005fchars_005fto_005fread">rl_num_chars_to_read</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fnumeric_005farg">rl_numeric_arg</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fon_005fnew_005fline"><code>rl_on_new_line</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fon_005fnew_005fline_005fwith_005fprompt"><code>rl_on_new_line_with_prompt</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005foutstream">rl_outstream</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fparse_005fand_005fbind"><code>rl_parse_and_bind</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fpending_005finput">rl_pending_input</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fpending_005fsignal"><code>rl_pending_signal</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fpersistent_005fsignal_005fhandlers">rl_persistent_signal_handlers</a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fpoint">rl_point</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fpossible_005fcompletions"><code>rl_possible_completions</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fpre_005finput_005fhook">rl_pre_input_hook</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fprefer_005fenv_005fwinsize">rl_prefer_env_winsize</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fprep_005fterm_005ffunction">rl_prep_term_function</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fprep_005fterminal"><code>rl_prep_terminal</code></a></td><td class="printindex-index-section"><a href="#Terminal-Management">Terminal Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fprint_005fkeybinding"><code>rl_print_keybinding</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fprompt">rl_prompt</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fpush_005fmacro_005finput"><code>rl_push_macro_input</code></a></td><td class="printindex-index-section"><a href="#Modifying-Text">Modifying Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fread_005finit_005ffile"><code>rl_read_init_file</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fread_005fkey"><code>rl_read_key</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freadline_005fname">rl_readline_name</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freadline_005fstate">rl_readline_state</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freadline_005fversion">rl_readline_version</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fredisplay"><code>rl_redisplay</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fredisplay_005ffunction">rl_redisplay_function</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freparse_005fcolors"><code>rl_reparse_colors</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freplace_005fline"><code>rl_replace_line</code></a></td><td class="printindex-index-section"><a href="#Modifying-Text">Modifying Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freset_005fafter_005fsignal"><code>rl_reset_after_signal</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freset_005fline_005fstate"><code>rl_reset_line_state</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freset_005fscreen_005fsize"><code>rl_reset_screen_size</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005freset_005fterminal"><code>rl_reset_terminal</code></a></td><td class="printindex-index-section"><a href="#Terminal-Management">Terminal Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fresize_005fterminal"><code>rl_resize_terminal</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005frestore_005fprompt"><code>rl_restore_prompt</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005frestore_005fstate"><code>rl_restore_state</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fsave_005fprompt"><code>rl_save_prompt</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fsave_005fstate"><code>rl_save_state</code></a></td><td class="printindex-index-section"><a href="#Utility-Functions">Utility Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fkey"><code>rl_set_key</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fkeyboard_005finput_005ftimeout"><code>rl_set_keyboard_input_timeout</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fkeymap"><code>rl_set_keymap</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fkeymap_005fname"><code>rl_set_keymap_name</code></a></td><td class="printindex-index-section"><a href="#Keymaps">Keymaps</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fparen_005fblink_005ftimeout"><code>rl_set_paren_blink_timeout</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fprompt"><code>rl_set_prompt</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fscreen_005fsize"><code>rl_set_screen_size</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005fsignals"><code>rl_set_signals</code></a></td><td class="printindex-index-section"><a href="#Readline-Signal-Handling">Readline Signal Handling</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fset_005ftimeout"><code>rl_set_timeout</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fshow_005fchar"><code>rl_show_char</code></a></td><td class="printindex-index-section"><a href="#Redisplay">Redisplay</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fsignal_005fevent_005fhook">rl_signal_event_hook</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fsort_005fcompletion_005fmatches">rl_sort_completion_matches</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fspecial_005fprefixes">rl_special_prefixes</a></td><td class="printindex-index-section"><a href="#Completion-Variables">Completion Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fstartup_005fhook">rl_startup_hook</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fstuff_005fchar"><code>rl_stuff_char</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fterminal_005fname">rl_terminal_name</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ftimeout_005fevent_005fhook">rl_timeout_event_hook</a></td><td class="printindex-index-section"><a href="#Readline-Variables">Readline Variables</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ftimeout_005fremaining"><code>rl_timeout_remaining</code></a></td><td class="printindex-index-section"><a href="#Character-Input">Character Input</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ftrim_005farg_005ffrom_005fkeyseq"><code>rl_trim_arg_from_keyseq</code></a></td><td class="printindex-index-section"><a href="#Associating-Function-Names-and-Bindings">Associating Function Names and Bindings</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ftty_005fset_005fdefault_005fbindings"><code>rl_tty_set_default_bindings</code></a></td><td class="printindex-index-section"><a href="#Terminal-Management">Terminal Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ftty_005fset_005fechoing"><code>rl_tty_set_echoing</code></a></td><td class="printindex-index-section"><a href="#Terminal-Management">Terminal Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005ftty_005funset_005fdefault_005fbindings"><code>rl_tty_unset_default_bindings</code></a></td><td class="printindex-index-section"><a href="#Terminal-Management">Terminal Management</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005funbind_005fcommand_005fin_005fmap"><code>rl_unbind_command_in_map</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005funbind_005ffunction_005fin_005fmap"><code>rl_unbind_function_in_map</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005funbind_005fkey"><code>rl_unbind_key</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005funbind_005fkey_005fin_005fmap"><code>rl_unbind_key_in_map</code></a></td><td class="printindex-index-section"><a href="#Binding-Keys">Binding Keys</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fusername_005fcompletion_005ffunction"><code>rl_username_completion_function</code></a></td><td class="printindex-index-section"><a href="#Completion-Functions">Completion Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fvariable_005fbind"><code>rl_variable_bind</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fvariable_005fdumper"><code>rl_variable_dumper</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-rl_005fvariable_005fvalue"><code>rl_variable_value</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Functions">Miscellaneous Functions</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-S">S</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-search_002dignore_002dcase">search-ignore-case</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"><code>self-insert (a, b, A, 1, !, &hellip;)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-set_002dmark-_0028C_002d_0040_0029"><code>set-mark (C-@)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-show_002dall_002dif_002dambiguous">show-all-if-ambiguous</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-show_002dall_002dif_002dunmodified">show-all-if-unmodified</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-show_002dmode_002din_002dprompt">show-mode-in-prompt</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-skip_002dcompleted_002dtext">skip-completed-text</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-skip_002dcsi_002dsequence-_0028_0029"><code>skip-csi-sequence ()</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"><code>start-kbd-macro (C-x ()</code></a></td><td class="printindex-index-section"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-T">T</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tab_002dinsert-_0028M_002dTAB_0029"><code>tab-insert (M-<kbd class="key">TAB</kbd>)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-tilde_002dexpand-_0028M_002d_007e_0029"><code>tilde-expand (M-~)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-transpose_002dchars-_0028C_002dt_0029"><code>transpose-chars (C-t)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-transpose_002dwords-_0028M_002dt_0029"><code>transpose-words (M-t)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-U">U</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"><code>undo (C-_ or C-x C-u)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-universal_002dargument-_0028_0029"><code>universal-argument ()</code></a></td><td class="printindex-index-section"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unix_002dfilename_002drubout-_0028_0029"><code>unix-filename-rubout ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unix_002dline_002ddiscard-_0028C_002du_0029"><code>unix-line-discard (C-u)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-unix_002dword_002drubout-_0028C_002dw_0029"><code>unix-word-rubout (C-w)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-upcase_002dword-_0028M_002du_0029"><code>upcase-word (M-u)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-V">V</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vi_002dcmd_002dmode_002dstring">vi-cmd-mode-string</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029"><code>vi-editing-mode (M-C-j)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-vi_002dins_002dmode_002dstring">vi-ins-mode-string</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-visible_002dstats">visible-stats</a></td><td class="printindex-index-section"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
+<tr><th id="Function-and-Variable-Index_fn_letter-Y">Y</th></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-yank-_0028C_002dy_0029"><code>yank (C-y)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"><code>yank-last-arg (M-. or M-_)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"><code>yank-nth-arg (M-C-y)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-History">Commands For History</a></td></tr>
+<tr><td></td><td class="printindex-index-entry"><a href="#index-yank_002dpop-_0028M_002dy_0029"><code>yank-pop (M-y)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td colspan="3"><hr></td></tr>
 </table>
-<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Function-and-Variable-Index_fn_symbol-1"><b>_</b></a>
+<table class="fn-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_symbol-1"><b>_</b></a>
  &nbsp; 
 <br>
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-A"><b>A</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-A"><b>A</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-B"><b>B</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-B"><b>B</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-C"><b>C</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-C"><b>C</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-D"><b>D</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-D"><b>D</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-E"><b>E</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-E"><b>E</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-F"><b>F</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-F"><b>F</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-H"><b>H</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-H"><b>H</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-I"><b>I</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-I"><b>I</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-K"><b>K</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-K"><b>K</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-M"><b>M</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-M"><b>M</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-N"><b>N</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-N"><b>N</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-O"><b>O</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-O"><b>O</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-P"><b>P</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-P"><b>P</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-Q"><b>Q</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-Q"><b>Q</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-R"><b>R</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-R"><b>R</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-S"><b>S</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-S"><b>S</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-T"><b>T</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-T"><b>T</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-U"><b>U</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-U"><b>U</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-V"><b>V</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-V"><b>V</b></a>
  &nbsp; 
-<a class="summary-letter" href="#Function-and-Variable-Index_fn_letter-Y"><b>Y</b></a>
+<a class="summary-letter-printindex" href="#Function-and-Variable-Index_fn_letter-Y"><b>Y</b></a>
  &nbsp; 
 </td></tr></table>
+</div>
 
 </div>
 </div>
index 4ea6b8ce6f4a2db315137168177378572d0ea723..33b4b45ea6ee6bb08b0b90e0e640aed166150c06 100644 (file)
@@ -1,11 +1,10 @@
-This is readline.info, produced by makeinfo version 6.8 from rlman.texi.
+This is readline.info, produced by makeinfo version 7.1 from rlman.texi.
 
-This manual describes the GNU Readline Library (version 8.2, 19
-September 2022), a library which aids in the consistency of user
-interface across discrete programs which provide a command line
-interface.
+This manual describes the GNU Readline Library (version 8.3, 30 December
+2024), a library which aids in the consistency of user interface across
+discrete programs which provide a command line interface.
 
-   Copyright (C) 1988-2022 Free Software Foundation, Inc.
+   Copyright © 1988-2025 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -64,33 +63,46 @@ File: readline.info,  Node: Introduction and Notation,  Next: Readline Interacti
 1.1 Introduction to Line Editing
 ================================
 
-The following paragraphs describe the notation used to represent
-keystrokes.
+The following paragraphs use Emacs style to describe the notation used
+to represent keystrokes.
 
-   The text 'C-k' is read as 'Control-K' and describes the character
+   The text ‘C-k’ is read as 'Control-K' and describes the character
 produced when the <k> key is pressed while the Control key is depressed.
 
-   The text 'M-k' is read as 'Meta-K' and describes the character
+   The text ‘M-k’ is read as 'Meta-K' and describes the character
 produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed.  The Meta key is labeled <ALT> on many keyboards.  On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key.  The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
+key is pressed (a “meta character”), then both are released.  The Meta
+key is labeled <ALT> or <Option> on many keyboards.  On keyboards with
+two keys labeled <ALT> (usually to either side of the space bar), the
+<ALT> on the left side is generally set to work as a Meta key.  One of
+the <ALT> keys may also be configured as some other modifier, such as a
 Compose key for typing accented characters.
 
+   On some keyboards, the Meta key modifier produces characters with the
+eighth bit (0200) set.  You can use the ‘enable-meta-key’ variable to
+control whether or not it does this, if the keyboard allows it.  On many
+others, the terminal or terminal emulator converts the metafied key to a
+key sequence beginning with <ESC> as described in the next paragraph.
+
    If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>.  Either process is known as "metafying"
-the <k> key.
+Meta key, you can generally achieve the latter effect by typing <ESC>
+_first_, and then typing <k>.  The <ESC> character is known as the “meta
+prefix”).
+
+   Either process is known as “metafying” the <k> key.
 
-   The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
+   If your Meta key produces a key sequence with the <ESC> meta prefix,
+you can make ‘M-key’ key bindings you specify (see ‘Key Bindings’ in
+*note Readline Init File Syntax::) do the same thing by setting the
+‘force-meta-prefix’ variable.
+
+   The text ‘M-C-k’ is read as 'Meta-Control-k' and describes the
+character produced by metafying ‘C-k’.
 
    In addition, several keys have their own names.  Specifically, <DEL>,
 <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
 in this text, or in an init file (*note Readline Init File::).  If your
-keyboard lacks a <LFD> key, typing <C-j> will produce the desired
+keyboard lacks a <LFD> key, typing <C-j> will output the appropriate
 character.  The <RET> key may be labeled <Return> or <Enter> on some
 keyboards.
 
@@ -132,34 +144,34 @@ character to back up and delete the mistyped character.
 
    Sometimes you may mistype a character, and not notice the error until
 you have typed several other characters.  In that case, you can type
-'C-b' to move the cursor to the left, and then correct your mistake.
-Afterwards, you can move the cursor to the right with 'C-f'.
+‘C-b’ to move the cursor to the left, and then correct your mistake.
+Afterwards, you can move the cursor to the right with ‘C-f’.
 
    When you add text in the middle of a line, you will notice that
 characters to the right of the cursor are 'pushed over' to make room for
 the text that you have inserted.  Likewise, when you delete text behind
 the cursor, characters to the right of the cursor are 'pulled back' to
-fill in the blank space created by the removal of the text.  A list of
-the bare essentials for editing the text of an input line follows.
+fill in the blank space created by the removal of the text.  These are
+the bare essentials for editing the text of an input line:
 
-'C-b'
+‘C-b’
      Move back one character.
-'C-f'
+‘C-f’
      Move forward one character.
 <DEL> or <Backspace>
      Delete the character to the left of the cursor.
-'C-d'
+‘C-d’
      Delete the character underneath the cursor.
 Printing characters
      Insert the character into the line at the cursor.
-'C-_' or 'C-x C-u'
+‘C-_’ or ‘C-x C-u’
      Undo the last editing command.  You can undo all the way back to an
      empty line.
 
-(Depending on your configuration, the <Backspace> key might be set to
+Depending on your configuration, the <Backspace> key might be set to
 delete the character to the left of the cursor and the <DEL> key set to
-delete the character underneath the cursor, like 'C-d', rather than the
-character to the left of the cursor.)
+delete the character underneath the cursor, like ‘C-d’, rather than the
+character to the left of the cursor.
 
 \1f
 File: readline.info,  Node: Readline Movement Commands,  Next: Readline Killing Commands,  Prev: Readline Bare Essentials,  Up: Readline Interaction
@@ -169,22 +181,22 @@ File: readline.info,  Node: Readline Movement Commands,  Next: Readline Killing
 
 The above table describes the most basic keystrokes that you need in
 order to do editing of the input line.  For your convenience, many other
-commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
-Here are some commands for moving more rapidly about the line.
+commands are available in addition to ‘C-b’, ‘C-f’, ‘C-d’, and <DEL>.
+Here are some commands for moving more rapidly within the line.
 
-'C-a'
+‘C-a’
      Move to the start of the line.
-'C-e'
+‘C-e’
      Move to the end of the line.
-'M-f'
+‘M-f’
      Move forward a word, where a word is composed of letters and
      digits.
-'M-b'
+‘M-b’
      Move backward a word.
-'C-l'
+‘C-l’
      Clear the screen, reprinting the current line at the top.
 
-   Notice how 'C-f' moves forward a character, while 'M-f' moves forward
+   Notice how ‘C-f’ moves forward a character, while ‘M-f’ moves forward
 a word.  It is a loose convention that control keystrokes operate on
 characters while meta keystrokes operate on words.
 
@@ -194,15 +206,15 @@ File: readline.info,  Node: Readline Killing Commands,  Next: Readline Arguments
 1.2.3 Readline Killing Commands
 -------------------------------
 
-"Killing" text means to delete the text from the line, but to save it
-away for later use, usually by "yanking" (re-inserting) it back into the
+“Killing” text means to delete the text from the line, but to save it
+away for later use, usually by “yanking” (re-inserting) it back into the
 line.  ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
 
    If the description for a command says that it 'kills' text, then you
 can be sure that you can get the text back in a different (or the same)
 place later.
 
-   When you use a kill command, the text is saved in a "kill-ring".  Any
+   When you use a kill command, the text is saved in a “kill-ring”.  Any
 number of consecutive kills save all of the killed text together, so
 that when you yank it back, you get it all.  The kill ring is not line
 specific; the text that you killed on a previously typed line is
@@ -210,34 +222,35 @@ available to be yanked back later, when you are typing another line.
 
    Here is the list of commands for killing text.
 
-'C-k'
+‘C-k’
      Kill the text from the current cursor position to the end of the
      line.
 
-'M-d'
+‘M-d’
      Kill from the cursor to the end of the current word, or, if between
      words, to the end of the next word.  Word boundaries are the same
-     as those used by 'M-f'.
+     as those used by ‘M-f’.
 
-'M-<DEL>'
+‘M-<DEL>’
      Kill from the cursor to the start of the current word, or, if
      between words, to the start of the previous word.  Word boundaries
-     are the same as those used by 'M-b'.
+     are the same as those used by ‘M-b’.
 
-'C-w'
+‘C-w’
      Kill from the cursor to the previous whitespace.  This is different
-     than 'M-<DEL>' because the word boundaries differ.
+     than ‘M-<DEL>’ because the word boundaries differ.
 
-   Here is how to "yank" the text back into the line.  Yanking means to
-copy the most-recently-killed text from the kill buffer.
+   Here is how to “yank” the text back into the line.  Yanking means to
+copy the most-recently-killed text from the kill buffer into the line at
+the current cursor position.
 
-'C-y'
+‘C-y’
      Yank the most recently killed text back into the buffer at the
      cursor.
 
-'M-y'
+‘M-y’
      Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'C-y' or 'M-y'.
+     if the prior command is ‘C-y’ or ‘M-y’.
 
 \1f
 File: readline.info,  Node: Readline Arguments,  Next: Searching,  Prev: Readline Killing Commands,  Up: Readline Interaction
@@ -250,14 +263,14 @@ argument acts as a repeat count, other times it is the sign of the
 argument that is significant.  If you pass a negative argument to a
 command which normally acts in a forward direction, that command will
 act in a backward direction.  For example, to kill text back to the
-start of the line, you might type 'M-- C-k'.
+start of the line, you might type ‘M-- C-k’.
 
    The general way to pass numeric arguments to a command is to type
 meta digits before the command.  If the first 'digit' typed is a minus
-sign ('-'), then the sign of the argument will be negative.  Once you
+sign (‘-’), then the sign of the argument will be negative.  Once you
 have typed one meta digit to get the argument started, you can type the
 remainder of the digits, and then the command.  For example, to give the
-'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
+‘C-d’ command an argument of 10, you could type ‘M-1 0 C-d’, which will
 delete the next ten characters on the input line.
 
 \1f
@@ -268,38 +281,38 @@ File: readline.info,  Node: Searching,  Prev: Readline Arguments,  Up: Readline
 
 Readline provides commands for searching through the command history for
 lines containing a specified string.  There are two search modes:
-"incremental" and "non-incremental".
+“incremental” and “non-incremental”.
 
    Incremental searches begin before the user has finished typing the
 search string.  As each character of the search string is typed,
 Readline displays the next entry from the history matching the string
 typed so far.  An incremental search requires only as many characters as
-needed to find the desired history entry.  To search backward in the
-history for a particular string, type 'C-r'.  Typing 'C-s' searches
-forward through the history.  The characters present in the value of the
-'isearch-terminators' variable are used to terminate an incremental
-search.  If that variable has not been assigned a value, the <ESC> and
-'C-J' characters will terminate an incremental search.  'C-g' will abort
-an incremental search and restore the original line.  When the search is
-terminated, the history entry containing the search string becomes the
-current line.
-
-   To find other matching entries in the history list, type 'C-r' or
-'C-s' as appropriate.  This will search backward or forward in the
-history for the next entry matching the search string typed so far.  Any
-other key sequence bound to a Readline command will terminate the search
-and execute that command.  For instance, a <RET> will terminate the
-search and accept the line, thereby executing the command from the
-history list.  A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
-   Readline remembers the last incremental search string.  If two 'C-r's
+needed to find the desired history entry.  When using emacs editing
+mode, type ‘C-r’ to search backward in the history for a particular
+string.  Typing ‘C-s’ searches forward through the history.  The
+characters present in the value of the ‘isearch-terminators’ variable
+are used to terminate an incremental search.  If that variable has not
+been assigned a value, the <ESC> and ‘C-j’ characters terminate an
+incremental search.  ‘C-g’ aborts an incremental search and restores the
+original line.  When the search is terminated, the history entry
+containing the search string becomes the current line.
+
+   To find other matching entries in the history list, type ‘C-r’ or
+‘C-s’ as appropriate.  This searches backward or forward in the history
+for the next entry matching the search string typed so far.  Any other
+key sequence bound to a Readline command terminates the search and
+executes that command.  For instance, a <RET> terminates the search and
+accepts the line, thereby executing the command from the history list.
+A movement command will terminate the search, make the last line found
+the current line, and begin editing.
+
+   Readline remembers the last incremental search string.  If two ‘C-r’s
 are typed without any intervening characters defining a new search
-string, any remembered search string is used.
+string, Readline uses any remembered search string.
 
    Non-incremental searches read the entire search string before
-starting to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
+starting to search for matching history entries.  The search string may
+be typed by the user or be part of the contents of the current line.
 
 \1f
 File: readline.info,  Node: Readline Init File,  Next: Bindable Readline Commands,  Prev: Readline Interaction,  Up: Command Line Editing
@@ -310,24 +323,22 @@ File: readline.info,  Node: Readline Init File,  Next: Bindable Readline Command
 Although the Readline library comes with a set of Emacs-like keybindings
 installed by default, it is possible to use a different set of
 keybindings.  Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in their home
+putting commands in an “inputrc” file, conventionally in their home
 directory.  The name of this file is taken from the value of the
-environment variable 'INPUTRC'.  If that variable is unset, the default
-is '~/.inputrc'.  If that file does not exist or cannot be read, the
-ultimate default is '/etc/inputrc'.
+environment variable ‘INPUTRC’.  If that variable is unset, the default
+is ‘~/.inputrc’.  If that file does not exist or cannot be read,
+Readline looks for ‘/etc/inputrc’.
 
-   When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
+   When a program that uses the Readline library starts up, Readline
+reads the init file and sets any variables and key bindings it contains.
 
-   In addition, the 'C-x C-r' command re-reads this init file, thus
+   In addition, the ‘C-x C-r’ command re-reads this init file, thus
 incorporating any changes that you might have made to it.
 
 * Menu:
 
 * Readline Init File Syntax::  Syntax for the commands in the inputrc file.
-
 * Conditional Init Constructs::        Conditional key bindings in the inputrc file.
-
 * Sample Init File::           An example inputrc file.
 
 \1f
@@ -337,20 +348,20 @@ File: readline.info,  Node: Readline Init File Syntax,  Next: Conditional Init C
 -------------------------------
 
 There are only a few basic constructs allowed in the Readline init file.
-Blank lines are ignored.  Lines beginning with a '#' are comments.
-Lines beginning with a '$' indicate conditional constructs (*note
+Blank lines are ignored.  Lines beginning with a ‘#’ are comments.
+Lines beginning with a ‘$’ indicate conditional constructs (*note
 Conditional Init Constructs::).  Other lines denote variable settings
 and key bindings.
 
 Variable Settings
      You can modify the run-time behavior of Readline by altering the
-     values of variables in Readline using the 'set' command within the
+     values of variables in Readline using the ‘set’ command within the
      init file.  The syntax is simple:
 
           set VARIABLE VALUE
 
      Here, for example, is how to change from the default Emacs-like key
-     binding to use 'vi' line editing commands:
+     binding to use ‘vi’ line editing commands:
 
           set editing-mode vi
 
@@ -364,10 +375,10 @@ Variable Settings
      A great deal of run-time behavior is changeable with the following
      variables.
 
-     'active-region-start-color'
+     ‘active-region-start-color’
           A string variable that controls the text color and background
           when displaying the text in the active region (see the
-          description of 'enable-active-region' below).  This string
+          description of ‘enable-active-region’ below).  This string
           must not take up any physical character positions on the
           display, so it should consist only of terminal escape
           sequences.  It is output to the terminal before displaying the
@@ -375,11 +386,11 @@ Variable Settings
           default value whenever the terminal type changes.  The default
           value is the string that puts the terminal in standout mode,
           as obtained from the terminal's terminfo description.  A
-          sample value might be '\e[01;33m'.
+          sample value might be ‘\e[01;33m’.
 
-     'active-region-end-color'
+     ‘active-region-end-color’
           A string variable that "undoes" the effects of
-          'active-region-start-color' and restores "normal" terminal
+          ‘active-region-start-color’ and restores "normal" terminal
           display appearance after displaying text in the active region.
           This string must not take up any physical character positions
           on the display, so it should consist only of terminal escape
@@ -388,333 +399,365 @@ Variable Settings
           default value whenever the terminal type changes.  The default
           value is the string that restores the terminal from standout
           mode, as obtained from the terminal's terminfo description.  A
-          sample value might be '\e[0m'.
+          sample value might be ‘\e[0m’.
 
-     'bell-style'
+     ‘bell-style’
           Controls what happens when Readline wants to ring the terminal
-          bell.  If set to 'none', Readline never rings the bell.  If
-          set to 'visible', Readline uses a visible bell if one is
-          available.  If set to 'audible' (the default), Readline
+          bell.  If set to ‘none’, Readline never rings the bell.  If
+          set to ‘visible’, Readline uses a visible bell if one is
+          available.  If set to ‘audible’ (the default), Readline
           attempts to ring the terminal's bell.
 
-     'bind-tty-special-chars'
-          If set to 'on' (the default), Readline attempts to bind the
-          control characters treated specially by the kernel's terminal
-          driver to their Readline equivalents.
+     ‘bind-tty-special-chars’
+          If set to ‘on’ (the default), Readline attempts to bind the
+          control characters that are treated specially by the kernel's
+          terminal driver to their Readline equivalents.  These override
+          the default Readline bindings described here.  Type ‘stty -a’
+          at a Bash prompt to see your current terminal settings,
+          including the special control characters (usually ‘cchars’).
 
-     'blink-matching-paren'
-          If set to 'on', Readline attempts to briefly move the cursor
+     ‘blink-matching-paren’
+          If set to ‘on’, Readline attempts to briefly move the cursor
           to an opening parenthesis when a closing parenthesis is
-          inserted.  The default is 'off'.
+          inserted.  The default is ‘off’.
 
-     'colored-completion-prefix'
-          If set to 'on', when listing completions, Readline displays
+     ‘colored-completion-prefix’
+          If set to ‘on’, when listing completions, Readline displays
           the common prefix of the set of possible completions using a
           different color.  The color definitions are taken from the
-          value of the 'LS_COLORS' environment variable.  If there is a
-          color definition in 'LS_COLORS' for the custom suffix
-          'readline-colored-completion-prefix', Readline uses this color
+          value of the ‘LS_COLORS’ environment variable.  If there is a
+          color definition in ‘LS_COLORS’ for the custom suffix
+          ‘readline-colored-completion-prefix’, Readline uses this color
           for the common prefix instead of its default.  The default is
-          'off'.
+          ‘off’.
 
-     'colored-stats'
-          If set to 'on', Readline displays possible completions using
+     ‘colored-stats’
+          If set to ‘on’, Readline displays possible completions using
           different colors to indicate their file type.  The color
-          definitions are taken from the value of the 'LS_COLORS'
-          environment variable.  The default is 'off'.
+          definitions are taken from the value of the ‘LS_COLORS’
+          environment variable.  The default is ‘off’.
 
-     'comment-begin'
-          The string to insert at the beginning of the line when the
-          'insert-comment' command is executed.  The default value is
-          '"#"'.
+     ‘comment-begin’
+          The string to insert at the beginning of the line by the
+          ‘insert-comment’ command.  The default value is ‘"#"’.
 
-     'completion-display-width'
+     ‘completion-display-width’
           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.
+          value of 0 causes matches to be displayed one per line.  The
+          default value is -1.
 
-     'completion-ignore-case'
-          If set to 'on', Readline performs filename matching and
+     ‘completion-ignore-case’
+          If set to ‘on’, Readline performs filename matching and
           completion in a case-insensitive fashion.  The default value
-          is 'off'.
+          is ‘off’.
 
-     'completion-map-case'
-          If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
-          Readline treats hyphens ('-') and underscores ('_') as
+     ‘completion-map-case’
+          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.  The default value is 'off'.
-
-     'completion-prefix-display-length'
-          The length in characters of the common prefix of a list of
-          possible completions that is displayed without modification.
-          When set to a value greater than zero, common prefixes longer
-          than this value are replaced with an ellipsis when displaying
-          possible completions.
-
-     'completion-query-items'
+          and completion.  The default value is ‘off’.
+
+     ‘completion-prefix-display-length’
+          The maximum length in characters of the common prefix of a
+          list of possible completions that is displayed without
+          modification.  When set to a value greater than zero, Readline
+          replaces common prefixes longer than this value with an
+          ellipsis when displaying possible completions.  If a
+          completion begins with a period, and Readline is completing
+          filenames, it uses three underscores instead of an ellipsis.
+
+     ‘completion-query-items’
           The number of possible completions that determines when the
           user is asked whether the list of possibilities should be
           displayed.  If the number of possible completions is greater
-          than or equal to this value, Readline will ask whether or not
-          the user wishes to view them; otherwise, they are simply
-          listed.  This variable must be set to an integer value greater
-          than or equal to zero.  A zero value means Readline should
-          never ask; negative values are treated as zero.  The default
-          limit is '100'.
-
-     'convert-meta'
-          If set to 'on', Readline will convert characters with the
-          eighth bit set to an ASCII key sequence by stripping the
-          eighth bit and prefixing an <ESC> character, converting them
-          to a meta-prefixed key sequence.  The default value is 'on',
-          but will be set to 'off' if the locale is one that contains
-          eight-bit characters.  This variable is dependent on the
-          'LC_CTYPE' locale category, and may change if the locale is
-          changed.
-
-     'disable-completion'
-          If set to 'On', Readline will inhibit word completion.
-          Completion characters will be inserted into the line as if
-          they had been mapped to 'self-insert'.  The default is 'off'.
-
-     'echo-control-characters'
-          When set to 'on', on operating systems that indicate they
+          than or equal to this value, Readline asks whether or not the
+          user wishes to view them; otherwise, Readline simply lists the
+          completions.  This variable must be set to an integer value
+          greater than or equal to zero.  A zero value means Readline
+          should never ask; negative values are treated as zero.  The
+          default limit is ‘100’.
+
+     ‘convert-meta’
+          If set to ‘on’, Readline converts characters it reads that
+          have the eighth bit set to an ASCII key sequence by clearing
+          the eighth bit and prefixing an <ESC> character, converting
+          them to a meta-prefixed key sequence.  The default value is
+          ‘on’, but Readline sets it to ‘off’ if the locale contains
+          characters whose encodings may include bytes with the eighth
+          bit set.  This variable is dependent on the ‘LC_CTYPE’ locale
+          category, and may change if the locale changes.  This variable
+          also affects key bindings; see the description of
+          ‘force-meta-prefix’ below.
+
+     ‘disable-completion’
+          If set to ‘On’, Readline inhibits word completion.  Completion
+          characters are inserted into the line as if they had been
+          mapped to ‘self-insert’.  The default is ‘off’.
+
+     ‘echo-control-characters’
+          When set to ‘on’, on operating systems that indicate they
           support it, Readline echoes a character corresponding to a
-          signal generated from the keyboard.  The default is 'on'.
+          signal generated from the keyboard.  The default is ‘on’.
 
-     'editing-mode'
-          The 'editing-mode' variable controls which default set of key
-          bindings is used.  By default, Readline starts up in Emacs
-          editing mode, where the keystrokes are most similar to Emacs.
-          This variable can be set to either 'emacs' or 'vi'.
+     ‘editing-mode’
+          The ‘editing-mode’ variable controls the default set of key
+          bindings.  By default, Readline starts up in emacs editing
+          mode, where the keystrokes are most similar to Emacs.  This
+          variable can be set to either ‘emacs’ or ‘vi’.
 
-     'emacs-mode-string'
+     ‘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
+          control- prefixes and backslash escape sequences is available.
+          The ‘\1’ and ‘\2’ escapes 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-active-region'
-          The "point" is the current cursor position, and "mark" refers
-          to a saved cursor position (*note Commands For Moving::).  The
-          text between the point and mark is referred to as the
-          "region".  When this variable is set to 'On', Readline allows
-          certain commands to designate the region as "active".  When
-          the region is active, Readline highlights the text in the
-          region using the value of the 'active-region-start-color',
-          which defaults to the string that enables the terminal's
-          standout mode.  The active region shows the text inserted by
-          bracketed-paste and any matching text found by incremental and
-          non-incremental history searches.  The default is 'On'.
-
-     'enable-bracketed-paste'
-          When set to 'On', Readline configures the terminal to insert
+          control sequence into the mode string.  The default is ‘@’.
+
+     ‘enable-active-region’
+          “point” is the current cursor position, and “mark” refers to a
+          saved cursor position (*note Commands For Moving::).  The text
+          between the point and mark is referred to as the “region”.
+          When this variable is set to ‘On’, Readline allows certain
+          commands to designate the region as “active”.  When the region
+          is active, Readline highlights the text in the region using
+          the value of the ‘active-region-start-color’, which defaults
+          to the string that enables the terminal's standout mode.  The
+          active region shows the text inserted by bracketed-paste and
+          any matching text found by incremental and non-incremental
+          history searches.  The default is ‘On’.
+
+     ‘enable-bracketed-paste’
+          When set to ‘On’, Readline configures the terminal to insert
           each paste into the editing buffer as a single string of
           characters, instead of treating each character as if it had
           been read from the keyboard.  This is called putting the
-          terminal into "bracketed paste mode"; it prevents Readline
+          terminal into “bracketed paste mode”; it prevents Readline
           from executing any editing commands bound to key sequences
-          appearing in the pasted text.  The default is 'On'.
+          appearing in the pasted text.  The default is ‘On’.
 
-     'enable-keypad'
-          When set to 'on', Readline will try to enable the application
+     ‘enable-keypad’
+          When set to ‘on’, Readline tries to enable the application
           keypad when it is called.  Some systems need this to enable
-          the arrow keys.  The default is 'off'.
-
-     'enable-meta-key'
-          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.  The default is 'on'.
-
-     'expand-tilde'
-          If set to 'on', tilde expansion is performed when Readline
-          attempts word completion.  The default is 'off'.
-
-     'history-preserve-point'
-          If set to 'on', the history code attempts to place the point
+          the arrow keys.  The default is ‘off’.
+
+     ‘enable-meta-key’
+          When set to ‘on’, Readline tries 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;
+          this variable checks for the terminal capability that
+          indicates the terminal can enable and disable a mode that sets
+          the eighth bit of a character (0200) if the Meta key is held
+          down when the character is typed (a meta character).  The
+          default is ‘on’.
+
+     ‘expand-tilde’
+          If set to ‘on’, Readline attempts tilde expansion when it
+          attempts word completion.  The default is ‘off’.
+
+     ‘force-meta-prefix’
+          If set to ‘on’, Readline modifies its behavior when binding
+          key sequences containing ‘\M-’ or ‘Meta-’ (see ‘Key Bindings’
+          in *note Readline Init File Syntax::) by converting a key
+          sequence of the form ‘\M-’C or ‘Meta-’C to the two-character
+          sequence ‘ESC’ C (adding the meta prefix).  If
+          ‘force-meta-prefix’ is set to ‘off’ (the default), Readline
+          uses the value of the ‘convert-meta’ variable to determine
+          whether to perform this conversion: if ‘convert-meta’ is ‘on’,
+          Readline performs the conversion described above; if it is
+          ‘off’, Readline converts C to a meta character by setting the
+          eighth bit (0200).  The default is ‘off’.
+
+     ‘history-preserve-point’
+          If set to ‘on’, the history code attempts to place the point
           (the current cursor position) at the same location on each
-          history line retrieved with 'previous-history' or
-          'next-history'.  The default is 'off'.
+          history line retrieved with ‘previous-history’ or
+          ‘next-history’.  The default is ‘off’.
 
-     'history-size'
+     ‘history-size’
           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 number of history entries is not limited.  If an
-          attempt is made to set HISTORY-SIZE to a non-numeric value,
-          the maximum number of history entries will be set to 500.
-
-     'horizontal-scroll-mode'
-          This variable can be set to either 'on' or 'off'.  Setting it
-          to 'on' means that the text of the lines being edited will
-          scroll horizontally on a single screen line when they are
-          longer than the width of the screen, instead of wrapping onto
-          a new screen line.  This variable is automatically set to 'on'
-          for terminals of height 1.  By default, this variable is set
-          to 'off'.
-
-     'input-meta'
-          If set to 'on', Readline will enable eight-bit input (it will
-          not clear the eighth bit in the characters it reads),
+          default, the number of history entries is not limited.  If you
+          try to set HISTORY-SIZE to a non-numeric value, the maximum
+          number of history entries will be set to 500.
+
+     ‘horizontal-scroll-mode’
+          Setting this variable to ‘on’ means that the text of the lines
+          being edited will scroll horizontally on a single screen line
+          when the lines are longer than the width of the screen,
+          instead of wrapping onto a new screen line.  This variable is
+          automatically set to ‘on’ for terminals of height 1.  By
+          default, this variable is set to ‘off’.
+
+     ‘input-meta’
+          If set to ‘on’, Readline enables eight-bit input (that is, it
+          does not clear the eighth bit in the characters it reads),
           regardless of what the terminal claims it can support.  The
-          default value is 'off', but Readline will set it to 'on' if
-          the locale contains eight-bit characters.  The name
-          'meta-flag' is a synonym for this variable.  This variable is
-          dependent on the 'LC_CTYPE' locale category, and may change if
-          the locale is changed.
-
-     'isearch-terminators'
+          default value is ‘off’, but Readline sets it to ‘on’ if the
+          locale contains characters whose encodings may include bytes
+          with the eighth bit set.  This variable is dependent on the
+          ‘LC_CTYPE’ locale category, and its value may change if the
+          locale changes.  The name ‘meta-flag’ is a synonym for
+          ‘input-meta’.
+
+     ‘isearch-terminators’
           The string of characters that should terminate an incremental
           search without subsequently executing the character as a
           command (*note Searching::).  If this variable has not been
-          given a value, the characters <ESC> and 'C-J' will terminate
-          an incremental search.
+          given a value, the characters <ESC> and ‘C-j’ terminate an
+          incremental search.
 
-     'keymap'
+     ‘keymap’
           Sets Readline's idea of the current keymap for key binding
-          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'.  Applications may add
-          additional names.  The default value is 'emacs'.  The value of
-          the 'editing-mode' variable also affects the default keymap.
-
-     'keyseq-timeout'
+          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’.  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
           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.  Readline uses this value
-          to determine whether or not input is available on the current
-          input source ('rl_instream' by default).  The value is
+          additional input to complete a longer key sequence).  If
+          Readline doesn't receive any input within the timeout, it uses
+          the shorter but complete key sequence.  Readline uses this
+          value to determine whether or not input is available on the
+          current input source (‘rl_instream’ by default).  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.  The default
-          value is '500'.
-
-     'mark-directories'
-          If set to 'on', completed directory names have a slash
-          appended.  The default is 'on'.
-
-     'mark-modified-lines'
-          This variable, when set to 'on', causes Readline to display an
-          asterisk ('*') at the start of history lines which have been
-          modified.  This variable is 'off' by default.
-
-     'mark-symlinked-directories'
-          If set to 'on', completed names which are symbolic links to
-          directories have a slash appended (subject to the value of
-          'mark-directories').  The default is 'off'.
-
-     'match-hidden-files'
-          This variable, when set to 'on', causes Readline to match
-          files whose names begin with a '.' (hidden files) when
-          performing filename completion.  If set to 'off', the leading
-          '.' must be supplied by the user in the filename to be
-          completed.  This variable is 'on' by default.
-
-     'menu-complete-display-prefix'
-          If set to 'on', menu completion displays the common prefix of
+          non-numeric value, Readline waits until another key is pressed
+          to decide which key sequence to complete.  The default value
+          is ‘500’.
+
+     ‘mark-directories’
+          If set to ‘on’, completed directory names have a slash
+          appended.  The default is ‘on’.
+
+     ‘mark-modified-lines’
+          When this variable is set to ‘on’, Readline displays an
+          asterisk (‘*’) at the start of history lines which have been
+          modified.  This variable is ‘off’ by default.
+
+     ‘mark-symlinked-directories’
+          If set to ‘on’, completed names which are symbolic links to
+          directories have a slash appendedsubject to the value of
+          ‘mark-directories’.  The default is ‘off’.
+
+     ‘match-hidden-files’
+          This variable, when set to ‘on’, forces Readline to match
+          files whose names begin with a ‘.’ (hidden files) when
+          performing filename completion.  If set to ‘off’, the user
+          must include the leading ‘.’ in the filename to be completed.
+          This variable is ‘on’ by default.
+
+     ‘menu-complete-display-prefix’
+          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.  The default is 'off'.
-
-     'output-meta'
-          If set to 'on', Readline will display characters with the
-          eighth bit set directly rather than as a meta-prefixed escape
-          sequence.  The default is 'off', but Readline will set it to
-          'on' if the locale contains eight-bit characters.  This
-          variable is dependent on the 'LC_CTYPE' locale category, and
-          may change if the locale is changed.
-
-     'page-completions'
-          If set to 'on', Readline uses an internal 'more'-like pager to
-          display a screenful of possible completions at a time.  This
-          variable is 'on' by default.
-
-     'print-completions-horizontally'
-          If set to 'on', Readline will display completions with matches
+          cycling through the list.  The default is ‘off’.
+
+     ‘output-meta’
+          If set to ‘on’, Readline displays characters with the eighth
+          bit set directly rather than as a meta-prefixed escape
+          sequence.  The default is ‘off’, but Readline sets it to ‘on’
+          if the locale contains characters whose encodings may include
+          bytes with the eighth bit set.  This variable is dependent on
+          the ‘LC_CTYPE’ locale category, and its value may change if
+          the locale changes.
+
+     ‘page-completions’
+          If set to ‘on’, Readline uses an internal pager resembling
+          more(1) to display a screenful of possible completions at a
+          time.  This variable is ‘on’ by default.
+
+     ‘prefer-visible-bell’
+          See ‘bell-style’.
+
+     ‘print-completions-horizontally’
+          If set to ‘on’, Readline displays completions with matches
           sorted horizontally in alphabetical order, rather than down
-          the screen.  The default is 'off'.
+          the screen.  The default is ‘off’.
 
-     'revert-all-at-newline'
-          If set to 'on', Readline will undo all changes to history
-          lines before returning when 'accept-line' is executed.  By
+     ‘revert-all-at-newline’
+          If set to ‘on’, Readline will undo all changes to history
+          lines before returning when executing ‘accept-line’.  By
           default, history lines may be modified and retain individual
-          undo lists across calls to 'readline()'.  The default is
-          'off'.
+          undo lists across calls to ‘readline()’.  The default is
+          ‘off’.
 
-     'show-all-if-ambiguous'
+     ‘search-ignore-case’
+          If set to ‘on’, Readline performs incremental and
+          non-incremental history list searches in a case-insensitive
+          fashion.  The default value is ‘off’.
+
+     ‘show-all-if-ambiguous’
           This alters the default behavior of the completion functions.
-          If set to 'on', words which have more than one possible
+          If set to ‘on’, words which have more than one possible
           completion cause the matches to be listed immediately instead
-          of ringing the bell.  The default value is 'off'.
+          of ringing the bell.  The default value is ‘off’.
 
-     'show-all-if-unmodified'
+     ‘show-all-if-unmodified’
           This alters the default behavior of the completion functions
           in a fashion similar to SHOW-ALL-IF-AMBIGUOUS.  If set to
-          'on', words which have more than one possible completion
+          ‘on’, words which have more than one possible completion
           without any possible partial completion (the possible
           completions don't share a common prefix) cause the matches to
           be listed immediately instead of ringing the bell.  The
-          default value is 'off'.
+          default value is ‘off’.
 
-     'show-mode-in-prompt'
-          If set to 'on', add a string to the beginning of the prompt
+     ‘show-mode-in-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 (e.g.,
-          EMACS-MODE-STRING).  The default value is 'off'.
+          EMACS-MODE-STRING).  The default value is ‘off’.
 
-     'skip-completed-text'
-          If set to 'on', this alters the default completion behavior
+     ‘skip-completed-text’
+          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.  For instance, if this is enabled, attempting
-          completion when the cursor is after the 'e' in 'Makefile' will
-          result in 'Makefile' rather than 'Makefilefile', assuming
-          there is a single possible completion.  The default value is
-          'off'.
+          completion when the cursor is after the first ‘e’ in
+          ‘Makefile’ will result in ‘Makefile’ rather than
+          ‘Makefilefile’, assuming there is a single possible
+          completion.  The default value is ‘off’.
 
-     'vi-cmd-mode-string'
+     ‘vi-cmd-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
+          of meta- and control- prefixes and backslash escape sequences
+          is available.  The ‘\1’ and ‘\2’ escapes 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)'.
+          default is ‘(cmd)’.
 
-     'vi-ins-mode-string'
+     ‘vi-ins-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
+          of meta- and control- prefixes and backslash escape sequences
+          is available.  The ‘\1’ and ‘\2’ escapes 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)'.
+          default is ‘(ins)’.
 
-     'visible-stats'
-          If set to 'on', a character denoting a file's type is appended
+     ‘visible-stats’
+          If set to ‘on’, a character denoting a file's type is appended
           to the filename when listing possible completions.  The
-          default is 'off'.
+          default is ‘off’.
 
 Key Bindings
      The syntax for controlling key bindings in the init file is simple.
@@ -731,7 +774,9 @@ Key Bindings
      different ways, depending on what you find most comfortable.
 
      In addition to command names, Readline allows keys to be bound to a
-     string that is inserted when the key is pressed (a MACRO).
+     string that is inserted when the key is pressed (a MACRO).  The
+     difference between a macro and a command is that a macro is
+     enclosed in single or double quotes.
 
      KEYNAME: FUNCTION-NAME or MACRO
           KEYNAME is the name of a key spelled out in English.  For
@@ -740,81 +785,84 @@ Key Bindings
                Meta-Rubout: backward-kill-word
                Control-o: "> output"
 
-          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
+          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
-          '> output' into the line).
+          ‘> output’ into the line).
 
-          A number of symbolic character names are recognized while
-          processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
-          NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
+          This key binding syntax recognizes a number of symbolic
+          character names: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN,
+          RUBOUT (a destructive backspace), SPACE, SPC, and TAB.
 
      "KEYSEQ": FUNCTION-NAME or MACRO
           KEYSEQ differs from KEYNAME above in that strings denoting an
           entire key sequence can be specified, by placing the key
           sequence in double quotes.  Some GNU Emacs style key escapes
-          can be used, as in the following example, but the special
-          character names are not recognized.
+          can be used, as in the following example, but none of the
+          special character names are recognized.
 
                "\C-u": universal-argument
                "\C-x\C-r": re-read-init-file
                "\e[11~": "Function Key 1"
 
-          In the above example, 'C-u' is again bound to the function
-          'universal-argument' (just as it was in the first example),
-          ''C-x' 'C-r'' is bound to the function 're-read-init-file',
-          and '<ESC> <[> <1> <1> <~>' is bound to insert the text
-          'Function Key 1'.
+          In the above example, ‘C-u’ is again bound to the function
+          ‘universal-argument’ (just as it was in the first example),
+          ‘‘C-x’ ‘C-r’’ is bound to the function ‘re-read-init-file’,
+          and ‘<ESC> <[> <1> <1> <~>’ is bound to insert the text
+          ‘Function Key 1’.
 
      The following GNU Emacs style escape sequences are available when
      specifying key sequences:
 
-     '\C-'
-          control prefix
-     '\M-'
-          meta prefix
-     '\e'
-          an escape character
-     '\\'
-          backslash
-     '\"'
-          <">, a double quotation mark
-     '\''
-          <'>, a single quote or apostrophe
+     ‘\C-’
+          A control prefix.
+     ‘\M-’
+          Adding the meta prefix or converting the following character
+          to a meta character, as described above under
+          ‘force-meta-prefix’ (see ‘Variable Settings’ in *note Readline
+          Init File Syntax::).
+     ‘\e’
+          An escape character.
+     ‘\\’
+          Backslash.
+     ‘\"’
+          <">, a double quotation mark.
+     ‘\'’
+          <'>, a single quote or apostrophe.
 
      In addition to the GNU Emacs style escape sequences, a second set
      of backslash escapes is available:
 
-     '\a'
+     ‘\a’
           alert (bell)
-     '\b'
+     ‘\b’
           backspace
-     '\d'
+     ‘\d’
           delete
-     '\f'
+     ‘\f’
           form feed
-     '\n'
+     ‘\n’
           newline
-     '\r'
+     ‘\r’
           carriage return
-     '\t'
+     ‘\t’
           horizontal tab
-     '\v'
+     ‘\v’
           vertical tab
-     '\NNN'
-          the eight-bit character whose value is the octal value NNN
-          (one to three digits)
-     '\xHH'
-          the eight-bit character whose value is the hexadecimal value
-          HH (one or two hex digits)
+     ‘\NNN’
+          The eight-bit character whose value is the octal value NNN
+          (one to three digits).
+     ‘\xHH’
+          The eight-bit character whose value is the hexadecimal value
+          HH (one or two hex digits).
 
      When entering the text of a macro, single or double quotes must be
      used to indicate a macro definition.  Unquoted text is assumed to
-     be a function name.  In the macro body, the backslash escapes
-     described above are expanded.  Backslash will quote any other
-     character in the macro text, including '"' and '''.  For example,
-     the following binding will make ''C-x' \' insert a single '\' into
+     be a function name.  The backslash escapes described above are
+     expanded in the macro body.  Backslash will quote any other
+     character in the macro text, including ‘"’ and ‘'’.  For example,
+     the following binding will make ‘‘C-x’ \’ insert a single ‘\’ into
      the line:
           "\C-x\\": "\\"
 
@@ -827,47 +875,48 @@ File: readline.info,  Node: Conditional Init Constructs,  Next: Sample Init File
 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.
+four parser directives available.
 
-'$if'
-     The '$if' construct allows bindings to be made based on the editing
+‘$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, 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
-          whether Readline is in 'emacs' or 'vi' mode.  This may be used
-          in conjunction with the 'set keymap' command, for instance, to
-          set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
-          only if Readline is starting out in 'emacs' mode.
+     ‘mode’
+          The ‘mode=’ form of the ‘$if’ directive is used to test
+          whether Readline is in ‘emacs’ or ‘vi’ mode.  This may be used
+          in conjunction with the ‘set keymap’ command, for instance, to
+          set bindings in the ‘emacs-standard’ and ‘emacs-ctlx’ keymaps
+          only if Readline is starting out in ‘emacs’ mode.
 
-     'term'
-          The 'term=' form may be used to include terminal-specific key
+     ‘term’
+          The ‘term=’ form may be used to include terminal-specific key
           bindings, perhaps to bind the key sequences output by the
           terminal's function keys.  The word on the right side of the
-          '=' is tested against both the full name of the terminal and
-          the portion of the terminal name before the first '-'.  This
-          allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
-
-     'version'
-          The 'version' test may be used to perform comparisons against
-          specific Readline versions.  The 'version' expands to the
+          ‘=’ is tested against both the full name of the terminal and
+          the portion of the terminal name before the first ‘-’.  This
+          allows ‘xterm’ to match both ‘xterm’ and ‘xterm-256color’, 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
+          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
+          and an optional minor version (e.g., ‘7.1’).  If the minor
+          version is omitted, it defaults to ‘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'
+     ‘application’
           The APPLICATION construct is used to include
           application-specific settings.  Each program using the
           Readline library sets the APPLICATION NAME, and you can test
@@ -880,32 +929,32 @@ four parser directives used.
                "\C-xq": "\eb\"\ef\""
                $endif
 
-     'variable'
+     ‘variable’
           The VARIABLE construct provides simple equality tests for
           Readline variables and values.  The permitted comparison
-          operators are '=', '==', and '!='.  The variable name must be
+          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
+          side by whitespace.  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:
+          ‘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.
-
-'$else'
-     Commands in this branch of the '$if' directive are executed if the
+‘$else’
+     Commands in this branch of the ‘$if’ directive are executed if the
      test fails.
 
-'$include'
+‘$endif’
+     This command, as seen in the previous example, terminates an ‘$if’
+     command.
+
+‘$include’
      This directive takes a single filename as an argument and reads
-     commands and bindings from that file.  For example, the following
-     directive reads from '/etc/inputrc':
+     commands and key bindings from that file.  For example, the
+     following directive reads from ‘/etc/inputrc’:
           $include /etc/inputrc
 
 \1f
@@ -917,7 +966,7 @@ File: readline.info,  Node: Sample Init File,  Prev: Conditional Init Constructs
 Here is an example of an INPUTRC file.  This illustrates key binding,
 variable assignment, and conditional syntax.
 
-     # This file controls the behaviour of line input editing for
+     # This file controls the behavior of line input editing for
      # programs that use the GNU Readline library.  Existing
      # programs include FTP, Bash, and GDB.
      #
@@ -1038,10 +1087,14 @@ This section describes Readline commands that may be bound to key
 sequences.  Command names without an accompanying key sequence are
 unbound by default.
 
-   In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the 'set-mark'
+   In the following descriptions, “point” refers to the current cursor
+position, and “mark” refers to a cursor position saved by the ‘set-mark’
 command.  The text between the point and mark is referred to as the
-"region".
+“region”.  Readline has the concept of an _active region_: when the
+region is active, Readline redisplay highlights the region using the
+value of the ‘active-region-start-color’ variable.  The
+‘enable-active-region’ variable turns this on and off.  Several commands
+set the region to active; those are noted below.
 
 \1f
 File: readline.info,  Node: Commands For Moving,  Next: Commands For History,  Up: Bindable Readline Commands
@@ -1049,50 +1102,55 @@ File: readline.info,  Node: Commands For Moving,  Next: Commands For History,  U
 1.4.1 Commands For Moving
 -------------------------
 
-'beginning-of-line (C-a)'
-     Move to the start of the current line.
+‘beginning-of-line (C-a)’
+     Move to the start of the current line.  This may also be bound to
+     the Home key on some keyboards.
 
-'end-of-line (C-e)'
-     Move to the end of the line.
+‘end-of-line (C-e)’
+     Move to the end of the line.  This may also be bound to the End key
+     on some keyboards.
 
-'forward-char (C-f)'
-     Move forward a character.
+‘forward-char (C-f)’
+     Move forward a character.  This may also be bound to the right
+     arrow key on some keyboards.
 
-'backward-char (C-b)'
-     Move back a character.
+‘backward-char (C-b)’
+     Move back a character.  This may also be bound to the left arrow
+     key on some keyboards.
 
-'forward-word (M-f)'
+‘forward-word (M-f)’
      Move forward to the end of the next word.  Words are composed of
      letters and digits.
 
-'backward-word (M-b)'
+‘backward-word (M-b)’
      Move back to the start of the current or previous word.  Words are
      composed of letters and digits.
 
-'previous-screen-line ()'
+‘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 ()'
+‘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-display (M-C-l)'
+‘clear-display (M-C-l)’
      Clear the screen and, if possible, the terminal's scrollback
      buffer, then redraw the current line, leaving the current line at
      the top of the screen.
 
-'clear-screen (C-l)'
+‘clear-screen (C-l)’
      Clear the screen, then redraw the current line, leaving the current
-     line at the top of the screen.
+     line at the top of the screen.  If given a numeric argument, this
+     refreshes the current line without clearing the screen.
 
-'redraw-current-line ()'
+‘redraw-current-line ()’
      Refresh the current line.  By default, this is unbound.
 
 \1f
@@ -1101,103 +1159,108 @@ File: readline.info,  Node: Commands For History,  Next: Commands For Text,  Pre
 1.4.2 Commands For Manipulating The History
 -------------------------------------------
 
-'accept-line (Newline or Return)'
+‘accept-line (Newline or Return)’
      Accept the line regardless of where the cursor is.  If this line is
-     non-empty, it may be added to the history list for future recall
-     with 'add_history()'.  If this line is a modified history line, the
-     history line is restored to its original state.
+     non-empty, you can add it to the history list using
+     ‘add_history()’.  If this line is a modified history line, then
+     restore the history line to its original state.
 
-'previous-history (C-p)'
+‘previous-history (C-p)’
      Move 'back' through the history list, fetching the previous
-     command.
+     command.  This may also be bound to the up arrow key on some
+     keyboards.
 
-'next-history (C-n)'
+‘next-history (C-n)’
      Move 'forward' through the history list, fetching the next command.
+     This may also be bound to the down arrow key on some keyboards.
 
-'beginning-of-history (M-<)'
+‘beginning-of-history (M-<)’
      Move to the first line in the history.
 
-'end-of-history (M->)'
+‘end-of-history (M->)’
      Move to the end of the input history, i.e., the line currently
      being entered.
 
-'reverse-search-history (C-r)'
+‘reverse-search-history (C-r)’
      Search backward starting at the current line and moving 'up'
      through the history as necessary.  This is an incremental search.
      This command sets the region to the matched text and activates the
-     mark.
+     region.
 
-'forward-search-history (C-s)'
+‘forward-search-history (C-s)’
      Search forward starting at the current line and moving 'down'
      through the history as necessary.  This is an incremental search.
      This command sets the region to the matched text and activates the
-     mark.
+     region.
 
-'non-incremental-reverse-search-history (M-p)'
+‘non-incremental-reverse-search-history (M-p)’
      Search backward starting at the current line and moving 'up'
      through the history as necessary using a non-incremental search for
      a string supplied by the user.  The search string may match
      anywhere in a history line.
 
-'non-incremental-forward-search-history (M-n)'
+‘non-incremental-forward-search-history (M-n)’
      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.
 
-'history-search-forward ()'
-     Search forward through the history for the string of characters
+‘history-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 must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
+     non-incremental search.  By default, this command is unbound, but
+     may be bound to the Page Down key on some keyboards.
 
-'history-search-backward ()'
-     Search backward through the history for the string of characters
+‘history-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 must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
+     non-incremental search.  By default, this command is unbound, but
+     may be bound to the Page Up key on some keyboards.
 
-'history-substring-search-forward ()'
-     Search forward through the history for the string of characters
+‘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
      non-incremental search.  By default, this command is unbound.
 
-'history-substring-search-backward ()'
-     Search backward through the history for the string of characters
+‘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.
 
-'yank-nth-arg (M-C-y)'
+‘yank-nth-arg (M-C-y)’
      Insert the first argument to the previous command (usually the
      second word on the previous line) at point.  With an argument N,
      insert the Nth word from the previous command (the words in the
      previous command begin with word 0).  A negative argument inserts
      the Nth word from the end of the previous command.  Once the
-     argument N is computed, the argument is extracted as if the '!N'
-     history expansion had been specified.
+     argument N is computed, this uses the history expansion facilities
+     to extract the Nth word, as if the ‘!N’ history expansion had been
+     specified.
 
-'yank-last-arg (M-. or M-_)'
+‘yank-last-arg (M-. or M-_)’
      Insert last argument to the previous command (the last word of the
      previous history entry).  With a numeric argument, behave exactly
-     like 'yank-nth-arg'.  Successive calls to 'yank-last-arg' move back
+     like ‘yank-nth-arg’.  Successive calls to ‘yank-last-arg’ move back
      through the history list, inserting the last word (or the word
      specified by the argument to the first call) of each line in turn.
      Any numeric argument supplied to these successive calls determines
      the direction to move through the history.  A negative argument
-     switches the direction through the history (back or forward).  The
-     history expansion facilities are used to extract the last argument,
-     as if the '!$' history expansion had been specified.
+     switches the direction through the history (back or forward).  This
+     uses the history expansion facilities to extract the last word, as
+     if the ‘!$’ history expansion had been specified.
 
-'operate-and-get-next (C-o)'
+‘operate-and-get-next (C-o)’
      Accept the current line for return to the calling application as if
      a newline had been entered, and fetch the next line 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.
 
-'fetch-history ()'
+‘fetch-history ()’
      With a numeric argument, fetch that entry from the history list and
      make it the current line.  Without an argument, move back to the
      first entry in the history list.
@@ -1208,86 +1271,87 @@ File: readline.info,  Node: Commands For Text,  Next: Commands For Killing,  Pre
 1.4.3 Commands For Changing Text
 --------------------------------
 
-'end-of-file (usually C-d)'
+‘end-of-file (usually C-d)’
      The character indicating end-of-file as set, for example, by
-     'stty'.  If this character is read when there are no characters on
+     ‘stty’.  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.
 
-'delete-char (C-d)'
+‘delete-char (C-d)’
      Delete the character at point.  If this function is bound to the
-     same character as the tty EOF character, as 'C-d' commonly is, see
-     above for the effects.
+     same character as the tty EOF character, as ‘C-d’ commonly is, see
+     above for the effects.  This may also be bound to the Delete key on
+     some keyboards.
 
-'backward-delete-char (Rubout)'
+‘backward-delete-char (Rubout)’
      Delete the character behind the cursor.  A numeric argument means
-     to kill the characters instead of deleting them.
+     to kill the characters, saving them on the kill ring, instead of
+     deleting them.
 
-'forward-backward-delete-char ()'
+‘forward-backward-delete-char ()’
      Delete the character under the cursor, unless the cursor is at the
      end of the line, in which case the character behind the cursor is
      deleted.  By default, this is not bound to a key.
 
-'quoted-insert (C-q or C-v)'
+‘quoted-insert (C-q or C-v)’
      Add the next character typed to the line verbatim.  This is how to
-     insert key sequences like 'C-q', for example.
+     insert key sequences like ‘C-q’, for example.
 
-'tab-insert (M-<TAB>)'
+‘tab-insert (M-<TAB>)’
      Insert a tab character.
 
-'self-insert (a, b, A, 1, !, ...)'
-     Insert yourself.
+‘self-insert (a, b, A, 1, !, ...)’
+     Insert the character typed.
 
-'bracketed-paste-begin ()'
+‘bracketed-paste-begin ()’
      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 'self-insert' instead of executing any editing
+     was bound to ‘self-insert’ instead of executing any editing
      commands.
 
      Bracketed paste sets the region (the characters between point and
-     the mark) to the inserted text.  It uses the concept of an _active
-     mark_: when the mark is active, Readline redisplay uses the
-     terminal's standout mode to denote the region.
+     the mark) to the inserted text.  It sets the _active region_.
 
-'transpose-chars (C-t)'
+‘transpose-chars (C-t)’
      Drag the character before the cursor forward over the character at
      the cursor, moving the cursor forward as well.  If the insertion
      point is at the end of the line, then this transposes the last two
      characters of the line.  Negative arguments have no effect.
 
-'transpose-words (M-t)'
+‘transpose-words (M-t)’
      Drag the word before point past the word after point, moving point
      past that word as well.  If the insertion point is at the end of
      the line, this transposes the last two words on the line.
 
-'upcase-word (M-u)'
+‘upcase-word (M-u)’
      Uppercase the current (or following) word.  With a negative
      argument, uppercase the previous word, but do not move the cursor.
 
-'downcase-word (M-l)'
+‘downcase-word (M-l)’
      Lowercase the current (or following) word.  With a negative
      argument, lowercase the previous word, but do not move the cursor.
 
-'capitalize-word (M-c)'
+‘capitalize-word (M-c)’
      Capitalize the current (or following) word.  With a negative
      argument, capitalize the previous word, but do not move the cursor.
 
-'overwrite-mode ()'
+‘overwrite-mode ()’
      Toggle overwrite mode.  With an explicit positive numeric argument,
      switches to overwrite mode.  With an explicit non-positive numeric
      argument, switches to insert mode.  This command affects only
-     'emacs' mode; 'vi' mode does overwrite differently.  Each call to
-     'readline()' starts in insert mode.
+     ‘emacs’ mode; ‘vi’ mode does overwrite differently.  Each call to
+     ‘readline()’ starts in insert mode.
 
-     In overwrite mode, characters bound to 'self-insert' replace the
+     In overwrite mode, characters bound to ‘self-insert’ replace the
      text at point rather than pushing the text to the right.
-     Characters bound to 'backward-delete-char' replace the character
+     Characters bound to ‘backward-delete-char’ replace the character
      before point with a space.
 
-     By default, this command is unbound.
+     By default, this command is unbound, but may be bound to the Insert
+     key on some keyboards.
 
 \1f
 File: readline.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Prev: Commands For Text,  Up: Bindable Readline Commands
@@ -1295,76 +1359,69 @@ File: readline.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Pre
 1.4.4 Killing And Yanking
 -------------------------
 
-'kill-line (C-k)'
-     Kill the text from point to the end of the line.  With a negative
-     numeric argument, kill backward from the cursor to the beginning of
-     the current line.
+‘kill-line (C-k)’
+     Kill the text from point to the end of the current line.  With a
+     negative numeric argument, kill backward from the cursor to the
+     beginning of the line.
 
-'backward-kill-line (C-x Rubout)'
+‘backward-kill-line (C-x Rubout)’
      Kill backward from the cursor to the beginning of the current line.
      With a negative numeric argument, kill forward from the cursor to
-     the end of the current line.
+     the end of the line.
 
-'unix-line-discard (C-u)'
+‘unix-line-discard (C-u)’
      Kill backward from the cursor to the beginning of the current line.
 
-'kill-whole-line ()'
+‘kill-whole-line ()’
      Kill all characters on the current line, no matter where point is.
      By default, this is unbound.
 
-'kill-word (M-d)'
+‘kill-word (M-d)’
      Kill from point to the end of the current word, or if between
      words, to the end of the next word.  Word boundaries are the same
-     as 'forward-word'.
+     as ‘forward-word’.
 
-'backward-kill-word (M-<DEL>)'
+‘backward-kill-word (M-<DEL>)’
      Kill the word behind point.  Word boundaries are the same as
-     'backward-word'.
-
-'shell-transpose-words (M-C-t)'
-     Drag the word before point past the word after point, moving point
-     past that word as well.  If the insertion point is at the end of
-     the line, this transposes the last two words on the line.  Word
-     boundaries are the same as 'shell-forward-word' and
-     'shell-backward-word'.
+     ‘backward-word’.
 
-'unix-word-rubout (C-w)'
-     Kill the word behind point, using white space as a word boundary.
-     The killed text is saved on the kill-ring.
+‘unix-word-rubout (C-w)’
+     Kill the word behind point, using white space as a word boundary,
+     saving the killed text on the kill-ring.
 
-'unix-filename-rubout ()'
+‘unix-filename-rubout ()’
      Kill the word behind point, using white space and the slash
-     character as the word boundaries.  The killed text is saved on the
+     character as the word boundaries, saving the killed text on the
      kill-ring.
 
-'delete-horizontal-space ()'
+‘delete-horizontal-space ()’
      Delete all spaces and tabs around point.  By default, this is
      unbound.
 
-'kill-region ()'
+‘kill-region ()’
      Kill the text in the current region.  By default, this command is
      unbound.
 
-'copy-region-as-kill ()'
+‘copy-region-as-kill ()’
      Copy the text in the region to the kill buffer, so it can be yanked
      right away.  By default, this command is unbound.
 
-'copy-backward-word ()'
+‘copy-backward-word ()’
      Copy the word before point to the kill buffer.  The word boundaries
-     are the same as 'backward-word'.  By default, this command is
+     are the same as ‘backward-word’.  By default, this command is
      unbound.
 
-'copy-forward-word ()'
+‘copy-forward-word ()’
      Copy the word following point to the kill buffer.  The word
-     boundaries are the same as 'forward-word'.  By default, this
+     boundaries are the same as ‘forward-word’.  By default, this
      command is unbound.
 
-'yank (C-y)'
+‘yank (C-y)’
      Yank the top of the kill ring into the buffer at point.
 
-'yank-pop (M-y)'
+‘yank-pop (M-y)’
      Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'yank' or 'yank-pop'.
+     if the prior command is ‘yank’ or ‘yank-pop’.
 
 \1f
 File: readline.info,  Node: Numeric Arguments,  Next: Commands For Completion,  Prev: Commands For Killing,  Up: Bindable Readline Commands
@@ -1372,15 +1429,15 @@ File: readline.info,  Node: Numeric Arguments,  Next: Commands For Completion,
 1.4.5 Specifying Numeric Arguments
 ----------------------------------
 
-'digit-argument (M-0, M-1, ... M--)'
+‘digit-argument (M-0, M-1, ... M--)’
      Add this digit to the argument already accumulating, or start a new
-     argument.  'M--' starts a negative argument.
+     argument.  ‘M--’ starts a negative argument.
 
-'universal-argument ()'
+‘universal-argument ()’
      This is another way to specify an argument.  If this command is
      followed by one or more digits, optionally with a leading minus
      sign, those digits define the argument.  If the command is followed
-     by digits, executing 'universal-argument' again ends the numeric
+     by digits, executing ‘universal-argument’ again ends the numeric
      argument, but is otherwise ignored.  As a special case, if this
      command is immediately followed by a character that is neither a
      digit nor minus sign, the argument count for the next command is
@@ -1395,43 +1452,66 @@ File: readline.info,  Node: Commands For Completion,  Next: Keyboard Macros,  Pr
 1.4.6 Letting Readline Type For You
 -----------------------------------
 
-'complete (<TAB>)'
+‘complete (<TAB>)’
      Attempt to perform completion on the text before point.  The actual
      completion performed is application-specific.  The default is
      filename completion.
 
-'possible-completions (M-?)'
+‘possible-completions (M-?)’
      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 'completion-display-width', the value
-     of the environment variable 'COLUMNS', or the screen width, in that
+     for display to the value of ‘completion-display-width’, the value
+     of the environment variable ‘COLUMNS’, or the screen width, in that
      order.
 
-'insert-completions (M-*)'
+‘insert-completions (M-*)’
      Insert all completions of the text before point that would have
-     been generated by 'possible-completions'.
+     been generated by ‘possible-completions’, separated by a space.
 
-'menu-complete ()'
-     Similar to 'complete', but replaces the word to be completed with a
-     single match from the list of possible completions.  Repeated
-     execution of 'menu-complete' steps through the list of possible
+‘menu-complete ()’
+     Similar to ‘complete’, but replaces the word to be completed with a
+     single match from the list of possible completions.  Repeatedly
+     executing ‘menu-complete’ steps through the list of possible
      completions, inserting each match in turn.  At the end of the list
-     of completions, the bell is rung (subject to the setting of
-     'bell-style') and the original text is restored.  An argument of N
-     moves N positions forward in the list of matches; a negative
-     argument may be used to move backward through the list.  This
-     command is intended to be bound to <TAB>, but is unbound by
-     default.
-
-'menu-complete-backward ()'
-     Identical to 'menu-complete', but moves backward through the list
-     of possible completions, as if 'menu-complete' had been given a
-     negative argument.
-
-'delete-char-or-list ()'
+     of completions, ‘menu-complete’ rings the bell (subject to the
+     setting of ‘bell-style’) and restores the original text.  An
+     argument of N moves N positions forward in the list of matches; a
+     negative argument moves backward through the list.  This command is
+     intended to be bound to <TAB>, but is unbound by default.
+
+‘menu-complete-backward ()’
+     Identical to ‘menu-complete’, but moves backward through the list
+     of possible completions, as if ‘menu-complete’ had been given a
+     negative argument.  This command is unbound by default.
+
+‘export-completions ()’
+     Perform completion on the word before point as described above and
+     write the list of possible completions to Readline's output stream
+     using the following format, writing information on separate lines:
+
+        • the number of matches N;
+        • the word being completed;
+        • S:E, where S and E are the start and end offsets of the word
+          in the Readline line buffer; then
+        • each match, one per line
+
+     If there are no matches, the first line will be "0", and this
+     command does not print any output after the S:E.  If there is only
+     a single match, this prints a single line containing it.  If there
+     is more than one match, this prints the common prefix of the
+     matches, which may be empty, on the first line after the S:E, then
+     the matches on subsequent lines.  In this case, N will include the
+     first line with the common prefix.
+
+     The user or application should be able to accommodate the
+     possibility of a blank line.  The intent is that the user or
+     application reads N lines after the line containing S:E to obtain
+     the match list.  This command is unbound by default.
+
+‘delete-char-or-list ()’
      Deletes the character under the cursor if not at the beginning or
-     end of the line (like 'delete-char').  If at the end of the line,
-     behaves identically to 'possible-completions'.  This command is
+     end of the line (like ‘delete-char’).  At the end of the line, it
+     behaves identically to ‘possible-completions’.  This command is
      unbound by default.
 
 \1f
@@ -1440,18 +1520,18 @@ File: readline.info,  Node: Keyboard Macros,  Next: Miscellaneous Commands,  Pre
 1.4.7 Keyboard Macros
 ---------------------
 
-'start-kbd-macro (C-x ()'
+‘start-kbd-macro (C-x ()’
      Begin saving the characters typed into the current keyboard macro.
 
-'end-kbd-macro (C-x ))'
+‘end-kbd-macro (C-x ))’
      Stop saving the characters typed into the current keyboard macro
      and save the definition.
 
-'call-last-kbd-macro (C-x e)'
+‘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.
 
-'print-last-kbd-macro ()'
+‘print-last-kbd-macro ()’
      Print the last keyboard macro defined in a format suitable for the
      INPUTRC file.
 
@@ -1461,94 +1541,100 @@ File: readline.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up:
 1.4.8 Some Miscellaneous Commands
 ---------------------------------
 
-'re-read-init-file (C-x C-r)'
+‘re-read-init-file (C-x C-r)’
      Read in the contents of the INPUTRC file, and incorporate any
      bindings or variable assignments found there.
 
-'abort (C-g)'
+‘abort (C-g)’
      Abort the current editing command and ring the terminal's bell
-     (subject to the setting of 'bell-style').
+     (subject to the setting of ‘bell-style’).
 
-'do-lowercase-version (M-A, M-B, M-X, ...)'
+‘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
-     meta key.  Typing '<ESC> f' is equivalent to typing 'M-f'.
+‘prefix-meta (<ESC>)’
+     Metafy the next character typed.  Typing ‘<ESC> f’ is equivalent to
+     typing ‘M-f’.
 
-'undo (C-_ or C-x C-u)'
+‘undo (C-_ or C-x C-u)’
      Incremental undo, separately remembered for each line.
 
-'revert-line (M-r)'
+‘revert-line (M-r)’
      Undo all changes made to this line.  This is like executing the
-     'undo' command enough times to get back to the beginning.
+     ‘undo’ command enough times to get back to the initial state.
 
-'tilde-expand (M-~)'
+‘tilde-expand (M-~)’
      Perform tilde expansion on the current word.
 
-'set-mark (C-@)'
-     Set the mark to the point.  If a numeric argument is supplied, the
-     mark is set to that position.
+‘set-mark (C-@)’
+     Set the mark to the point.  If a numeric argument is supplied, set
+     the mark to that position.
 
-'exchange-point-and-mark (C-x C-x)'
-     Swap the point with the mark.  The current cursor position is set
-     to the saved position, and the old cursor position is saved as the
-     mark.
+‘exchange-point-and-mark (C-x C-x)’
+     Swap the point with the mark.  Set the current cursor position to
+     the saved position, then set the mark to the old cursor position.
 
-'character-search (C-])'
-     A character is read and point is moved to the next occurrence of
-     that character.  A negative argument searches for previous
-     occurrences.
+‘character-search (C-])’
+     Read a character and move point to the next occurrence of that
+     character.  A negative argument searches for previous occurrences.
 
-'character-search-backward (M-C-])'
-     A character is read and point is moved to the previous occurrence
-     of that character.  A negative argument searches for subsequent
+‘character-search-backward (M-C-])’
+     Read a character and move point to the previous occurrence of that
+     character.  A negative argument searches for subsequent
      occurrences.
 
-'skip-csi-sequence ()'
+‘skip-csi-sequence ()’
      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 bound to "\e[", keys producing such sequences will have
-     no effect unless explicitly bound to a Readline command, instead of
+     those defined for keys like Home and End.  CSI sequences begin with
+     a Control Sequence Indicator (CSI), usually ‘ESC [’.  If this
+     sequence is bound to "\e[", keys producing CSI sequences have no
+     effect unless explicitly bound to a Readline command, instead of
      inserting stray characters into the editing buffer.  This is
-     unbound by default, but usually bound to ESC-[.
+     unbound by default, but usually bound to ‘ESC [’.
 
-'insert-comment (M-#)'
-     Without a numeric argument, the value of the 'comment-begin'
-     variable is inserted at the beginning of the current line.  If a
-     numeric argument is supplied, this command acts as a toggle: if the
+‘insert-comment (M-#)’
+     Without a numeric argument, insert the value of the ‘comment-begin’
+     variable at the beginning of the current line.  If a numeric
+     argument is supplied, this command acts as a toggle: if the
      characters at the beginning of the line do not match the value of
-     'comment-begin', the value is inserted, otherwise the characters in
-     'comment-begin' are deleted from the beginning of the line.  In
-     either case, the line is accepted as if a newline had been typed.
+     ‘comment-begin’, insert the value; otherwise delete the characters
+     in ‘comment-begin’ from the beginning of the line.  In either case,
+     the line is accepted as if a newline had been typed.
 
-'dump-functions ()'
+‘dump-functions ()’
      Print all of the functions and their key bindings to the Readline
      output stream.  If a numeric argument is supplied, the output is
      formatted in such a way that it can be made part of an INPUTRC
      file.  This command is unbound by default.
 
-'dump-variables ()'
+‘dump-variables ()’
      Print all of the settable variables and their values to the
      Readline output stream.  If a numeric argument is supplied, the
      output is formatted in such a way that it can be made part of an
      INPUTRC file.  This command is unbound by default.
 
-'dump-macros ()'
+‘dump-macros ()’
      Print all of the Readline key sequences bound to macros and the
-     strings they output.  If a numeric argument is supplied, the output
-     is formatted in such a way that it can be made part of an INPUTRC
-     file.  This command is unbound by default.
+     strings they output to the Readline output stream.  If a numeric
+     argument is supplied, the output is formatted in such a way that it
+     can be made part of an INPUTRC file.  This command is unbound by
+     default.
+
+‘execute-named-command (M-x)’
+     Read a bindable Readline command name from the input and execute
+     the function to which it's bound, as if the key sequence to which
+     it was bound appeared in the input.  If this function is supplied
+     with a numeric argument, it passes that argument to the function it
+     executes.
 
-'emacs-editing-mode (C-e)'
-     When in 'vi' command mode, this causes a switch to 'emacs' editing
+‘emacs-editing-mode (C-e)’
+     When in ‘vi’ command mode, this causes a switch to ‘emacs’ editing
      mode.
 
-'vi-editing-mode (M-C-j)'
-     When in 'emacs' editing mode, this causes a switch to 'vi' editing
+‘vi-editing-mode (M-C-j)’
+     When in ‘emacs’ editing mode, this causes a switch to ‘vi’ editing
      mode.
 
 \1f
@@ -1557,26 +1643,27 @@ File: readline.info,  Node: Readline vi Mode,  Prev: Bindable Readline Commands,
 1.5 Readline vi Mode
 ====================
 
-While the Readline library does not have a full set of 'vi' editing
+While the Readline library does not have a full set of ‘vi’ editing
 functions, it does contain enough to allow simple editing of the line.
-The Readline 'vi' mode behaves as specified in the POSIX standard.
+The Readline ‘vi’ mode behaves as specified in the ‘sh’ description in
+the POSIX standard.
 
-   In order to switch interactively between 'emacs' and 'vi' editing
-modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
-mode and to vi-editing-mode in 'emacs' mode).  The Readline default is
-'emacs' mode.
+   In order to switch interactively between ‘emacs’ and ‘vi’ editing
+modes, use the command ‘M-C-j’ (bound to emacs-editing-mode when in ‘vi’
+mode and to vi-editing-mode in ‘emacs’ mode).  The Readline default is
+‘emacs’ mode.
 
-   When you enter a line in 'vi' mode, you are already placed in
-'insertion' mode, as if you had typed an 'i'.  Pressing <ESC> switches
+   When you enter a line in ‘vi’ mode, you are already placed in
+'insertion' mode, as if you had typed an ‘i’.  Pressing <ESC> switches
 you into 'command' mode, where you can edit the text of the line with
-the standard 'vi' movement keys, move to previous history lines with 'k'
-and subsequent lines with 'j', and so forth.
+the standard ‘vi’ movement keys, move to previous history lines with ‘k’
+and subsequent lines with ‘j’, and so forth.
 
    This document describes the GNU Readline Library, a utility for
 aiding in the consistency of user interface across discrete programs
 that need to provide a command line interface.
 
-   Copyright (C) 1988-2022 Free Software Foundation, Inc.
+   Copyright (C) 1988-2025 Free Software Foundation, Inc.
 
    Permission is granted to make and distribute verbatim copies of this
 manual provided the copyright notice and this permission notice pare
@@ -1623,37 +1710,41 @@ File: readline.info,  Node: Basic Behavior,  Next: Custom Functions,  Up: Progra
 2.1 Basic Behavior
 ==================
 
-Many programs provide a command line interface, such as 'mail', 'ftp',
-and 'sh'.  For such programs, the default behaviour of Readline is
+Many programs provide a command line interface, such as ‘mail’, ‘ftp’,
+and ‘sh’.  For such programs, the default behavior of Readline is
 sufficient.  This section describes how to use Readline in the simplest
-way possible, perhaps to replace calls in your code to 'gets()' or
-'fgets()'.
-
-   The function 'readline()' prints a prompt PROMPT and then reads and
-returns a single line of text from the user.  If PROMPT is 'NULL' or the
-empty string, no prompt is displayed.  The line 'readline' returns is
-allocated with 'malloc()'; the caller should 'free()' the line when it
-has finished with it.  The declaration for 'readline' in ANSI C is
+way possible, perhaps to replace calls in your code to ‘fgets()’.
+
+   The function ‘readline()’ prints a prompt PROMPT and then reads and
+returns a single line of text from the user.  Since it's possible to
+enter characters into the line while quoting them to disable any
+Readline editing function they might normally have, this line may
+include embedded newlines and other special characters.  If PROMPT is
+‘NULL’ or the empty string, ‘readline()’ does not display a prompt.  The
+line ‘readline()’ returns is allocated with ‘malloc()’; the caller
+should ‘free()’ the line when it has finished with it.  The declaration
+for ‘readline’ in ANSI C is
 
      char *readline (const char *PROMPT);
 
 So, one might say
      char *line = readline ("Enter a line: ");
 in order to read a line of text from the user.  The line returned has
-the final newline removed, so only the text remains.
+the final newline removed, so only the text remains.  This means that
+lines consisting of a newline return the empty string.
 
-   If 'readline' encounters an 'EOF' while reading the line, and the
-line is empty at that point, then '(char *)NULL' is returned.
+   If Readline encounters an ‘EOF’ while reading the line, and the line
+is empty at that point, then ‘readline()’ returns ‘(char *)NULL’.
 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
+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.
+for example), you must call ‘add_history()’ to save the line away in a
+“history” list of such lines.
 
      add_history (line);
 
@@ -1661,7 +1752,7 @@ For full details on the GNU History Library, see the associated manual.
 
    It is preferable to avoid saving empty lines on the history list,
 since users rarely have a burning need to reuse a blank line.  Here is a
-function which usefully replaces the standard 'gets()' library function,
+function which usefully replaces the standard ‘gets()’ library function,
 and has the advantage of no static buffer to overflow:
 
      /* A static variable for holding the line. */
@@ -1691,24 +1782,24 @@ and has the advantage of no static buffer to overflow:
        return (line_read);
      }
 
-   This function gives the user the default behaviour of <TAB>
-completion: completion on file names.  If you do not want Readline to
-complete on filenames, you can change the binding of the <TAB> key with
-'rl_bind_key()'.
+   This function gives the user the default behavior of <TAB>
+completion: filename completion.  If you do not want Readline to
+complete filenames, you can change the binding of the <TAB> key with
+‘rl_bind_key()’.
 
      int rl_bind_key (int KEY, rl_command_func_t *FUNCTION);
 
-   'rl_bind_key()' takes two arguments: KEY is the character that you
+   ‘rl_bind_key()’ takes two arguments: KEY is the character that you
 want to bind, and FUNCTION is the address of the function to call when
-KEY is pressed.  Binding <TAB> to 'rl_insert()' makes <TAB> insert
-itself.  'rl_bind_key()' returns non-zero if KEY is not a valid ASCII
+KEY is pressed.  Binding <TAB> to ‘rl_insert()’ makes <TAB> insert
+itself.  ‘rl_bind_key()’ returns non-zero if KEY is not a valid ASCII
 character code (between 0 and 255).
 
    Thus, to disable the default <TAB> behavior, the following suffices:
      rl_bind_key ('\t', rl_insert);
 
    This code should be executed once at the start of your program; you
-might write a function called 'initialize_readline()' which performs
+might write a function called ‘initialize_readline()’ which performs
 this and other desired initializations, such as installing custom
 completers (*note Custom Completers::).
 
@@ -1721,23 +1812,23 @@ File: readline.info,  Node: Custom Functions,  Next: Readline Variables,  Prev:
 Readline provides many functions for manipulating the text of the line,
 but it isn't possible to anticipate the needs of all programs.  This
 section describes the various functions and variables defined within the
-Readline library which allow a user program to add customized
-functionality to Readline.
+Readline library which allow a program to add customized functionality
+to Readline.
 
    Before declaring any functions that customize Readline's behavior, or
 using any functionality Readline provides in other code, an application
-writer should include the file '<readline/readline.h>' in any file that
-uses Readline's features.  Since some of the definitions in 'readline.h'
-use the 'stdio' library, the file '<stdio.h>' should be included before
-'readline.h'.
+writer should include the file ‘<readline/readline.h>’ in any file that
+uses Readline's features.  Since some of the definitions in ‘readline.h’
+use the ‘stdio’ library, the program should include the file ‘<stdio.h>’
+before ‘readline.h’.
 
-   'readline.h' defines a C preprocessor variable that should be treated
-as an integer, 'RL_READLINE_VERSION', which may be used to conditionally
+   ‘readline.h’ defines a C preprocessor variable that should be treated
+as an integer, ‘RL_READLINE_VERSION’, which may be used to conditionally
 compile application code depending on the installed Readline version.
 The value is a hexadecimal encoding of the major and minor version
 numbers of the library, of the form 0xMMMM.  MM is the two-digit major
 version number; MM is the two-digit minor version number.  For Readline
-4.2, for example, the value of 'RL_READLINE_VERSION' would be '0x0402'.
+4.2, for example, the value of ‘RL_READLINE_VERSION’ would be ‘0x0402’.
 
 * Menu:
 
@@ -1758,51 +1849,55 @@ write code describing pointers to C functions with appropriately
 prototyped arguments and return values.
 
    For instance, say we want to declare a variable FUNC as a pointer to
-a function which takes two 'int' arguments and returns an 'int' (this is
+a function which takes two ‘int’ arguments and returns an ‘int’ (this is
 the type of all of the Readline bindable functions).  Instead of the
 classic C declaration
 
-   'int (*func)();'
+   ‘int (*func)();’
 
 or the ANSI-C style declaration
 
-   'int (*func)(int, int);'
+   ‘int (*func)(int, int);’
 
 we may write
 
-   'rl_command_func_t *func;'
+   ‘rl_command_func_t *func;’
 
    The full list of function pointer types available is
 
-'typedef int rl_command_func_t (int, int);'
+‘typedef int rl_command_func_t (int, int);’
+
+‘typedef char *rl_compentry_func_t (const char *, int);’
+
+‘typedef char **rl_completion_func_t (const char *, int, int);’
 
-'typedef char *rl_compentry_func_t (const char *, int);'
+‘typedef char *rl_quote_func_t (char *, int, char *);’
 
-'typedef char **rl_completion_func_t (const char *, int, int);'
+‘typedef char *rl_dequote_func_t (char *, int);’
 
-'typedef char *rl_quote_func_t (char *, int, char *);'
+‘typedef int rl_compignore_func_t (char **);’
 
-'typedef char *rl_dequote_func_t (char *, int);'
+‘typedef void rl_compdisp_func_t (char **, int, int);’
 
-'typedef int rl_compignore_func_t (char **);'
+‘typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);’
 
-'typedef void rl_compdisp_func_t (char **, int, int);'
+‘typedef int rl_hook_func_t (void);’
 
-'typedef int rl_hook_func_t (void);'
+‘typedef int rl_getc_func_t (FILE *);’
 
-'typedef int rl_getc_func_t (FILE *);'
+‘typedef int rl_linebuf_func_t (char *, int);’
 
-'typedef int rl_linebuf_func_t (char *, int);'
+‘typedef int rl_intfunc_t (int);’
+‘#define rl_ivoidfunc_t rl_hook_func_t’
+‘typedef int rl_icpfunc_t (char *);’
+‘typedef int rl_icppfunc_t (char **);’
 
-'typedef int rl_intfunc_t (int);'
-'#define rl_ivoidfunc_t rl_hook_func_t'
-'typedef int rl_icpfunc_t (char *);'
-'typedef int rl_icppfunc_t (char **);'
+‘typedef void rl_voidfunc_t (void);’
+‘typedef void rl_vintfunc_t (int);’
+‘typedef void rl_vcpfunc_t (char *);’
+‘typedef void rl_vcppfunc_t (char **);’
 
-'typedef void rl_voidfunc_t (void);'
-'typedef void rl_vintfunc_t (int);'
-'typedef void rl_vcpfunc_t (char *);'
-'typedef void rl_vcppfunc_t (char **);'
+The ‘rltypedefs.h’ file has more documentation for these types.
 
 \1f
 File: readline.info,  Node: Function Writing,  Prev: Readline Typedefs,  Up: Custom Functions
@@ -1814,7 +1909,7 @@ In order to write new functions for Readline, you need to know the
 calling conventions for keyboard-invoked functions, and the names of the
 variables that describe the current state of the line read so far.
 
-   The calling sequence for a command 'foo' looks like
+   The calling sequence for a command ‘foo’ looks like
 
      int foo (int count, int key)
 
@@ -1831,9 +1926,8 @@ negative and positive arguments.  At the very least, it should be aware
 that it can be passed a negative argument.
 
    A command function should return 0 if its action completes
-successfully, and a value greater than zero if some error occurs.  This
-is the convention obeyed by all of the builtin Readline bindable command
-functions.
+successfully, and a value greater than zero if some error occurs.  All
+of the builtin Readline bindable command functions obey this convention.
 
 \1f
 File: readline.info,  Node: Readline Variables,  Next: Readline Convenience Functions,  Prev: Custom Functions,  Up: Programming with GNU Readline
@@ -1846,37 +1940,39 @@ These variables are available to function writers.
  -- Variable: char * rl_line_buffer
      This is the line gathered so far.  You are welcome to modify the
      contents of the line, but see *note Allowing Undoing::.  The
-     function 'rl_extend_line_buffer' is available to increase the
-     memory allocated to 'rl_line_buffer'.
+     function ‘rl_extend_line_buffer’ will increase the memory allocated
+     to ‘rl_line_buffer’.
 
  -- Variable: int rl_point
-     The offset of the current cursor position in 'rl_line_buffer' (the
+     The offset of the current cursor position in ‘rl_line_buffer’ (the
      _point_).
 
  -- Variable: int rl_end
-     The number of characters present in 'rl_line_buffer'.  When
-     'rl_point' is at the end of the line, 'rl_point' and 'rl_end' are
+     The number of characters present in ‘rl_line_buffer’.  When
+     ‘rl_point’ is at the end of the line, ‘rl_point’ and ‘rl_end’ are
      equal.
 
  -- Variable: int rl_mark
      The MARK (saved position) in the current line.  If set, the mark
-     and point define a _region_.
+     and point define a _region_.  Some Readline commands set the mark
+     as part of operating; users can also set the mark explicitly.
 
  -- Variable: int rl_done
      Setting this to a non-zero value causes Readline to return the
      current line immediately.  Readline will set this variable when it
-     has read a key sequence bound to 'accept-line' and is about to
+     has read a key sequence bound to ‘accept-line’ and is about to
      return the line to the caller.
 
  -- Variable: int rl_eof_found
      Readline will set this variable when it has read an EOF character
-     (e.g., the stty 'EOF' character) on an empty line or encountered a
-     read error and is about to return a NULL line to the caller.
+     (e.g., the stty ‘EOF’ character) on an empty line or has
+     encountered a read error or EOF and is about to return a NULL line
+     to the caller.
 
  -- Variable: int rl_num_chars_to_read
-     Setting this to a positive value before calling 'readline()' causes
+     Setting this to a positive value before calling ‘readline()’ causes
      Readline to return after accepting that many characters, rather
-     than reading up to a character bound to 'accept-line'.
+     than reading up to a character bound to ‘accept-line’.
 
  -- Variable: int rl_pending_input
      Setting this to a value makes it the next keystroke read.  This is
@@ -1891,14 +1987,16 @@ These variables are available to function writers.
  -- Variable: int rl_erase_empty_line
      Setting this to a non-zero value causes Readline to completely
      erase the current line, including any prompt, any time a newline is
-     typed as the only character on an otherwise-empty line.  The cursor
-     is moved to the beginning of the newly-blank line.
+     typed as the only character on an otherwise-empty line.  This moves
+     the cursor to the beginning of the newly-blank line.
 
  -- Variable: char * rl_prompt
      The prompt Readline uses.  This is set from the argument to
-     'readline()', and should not be assigned to directly.  The
-     'rl_set_prompt()' function (*note Redisplay::) may be used to
-     modify the prompt string after calling 'readline()'.
+     ‘readline()’, and should not be assigned to directly.  The
+     ‘rl_set_prompt()’ function (*note Redisplay::) may be used to
+     modify the prompt string after calling ‘readline()’.  Readline
+     performs some prompt expansions and analyzes the prompt for line
+     breaks, so ‘rl_set_prompt()’ is preferred.
 
  -- Variable: char * rl_display_prompt
      The string displayed as the prompt.  This is usually identical to
@@ -1907,21 +2005,22 @@ These variables are available to function writers.
 
  -- Variable: int rl_already_prompted
      If an application wishes to display the prompt itself, rather than
-     have Readline do it the first time 'readline()' is called, it
+     have Readline do it the first time ‘readline()’ is called, it
      should set this variable to a non-zero value after displaying the
      prompt.  The prompt must also be passed as the argument to
-     'readline()' so the redisplay functions can update the display
+     ‘readline()’ so the redisplay functions can update the display
      properly.  The calling application is responsible for managing the
      value; Readline never sets it.
 
  -- Variable: const char * rl_library_version
-     The version number of this revision of the library.
+     The version number of this revision of the Readline library, as a
+     string (e.g., "4.2").
 
  -- Variable: int rl_readline_version
      An integer encoding the current version of the library.  The
      encoding is of the form 0xMMMM, where MM is the two-digit major
      version number, and MM is the two-digit minor version number.  For
-     example, for Readline-4.2, 'rl_readline_version' would have the
+     example, for Readline-4.2, ‘rl_readline_version’ would have the
      value 0x0402.
 
  -- Variable: int rl_gnu_readline_p
@@ -1930,8 +2029,10 @@ These variables are available to function writers.
 
  -- Variable: const char * rl_terminal_name
      The terminal type, used for initialization.  If not set by the
-     application, Readline sets this to the value of the 'TERM'
-     environment variable the first time it is called.
+     application, Readline sets this to the value of the ‘TERM’
+     environment variable the first time it is called.  Readline uses
+     this to look up the terminal capabilities it needs in the terminfo
+     database.
 
  -- Variable: const char * rl_readline_name
      This variable is set to a unique name by each application using
@@ -1939,30 +2040,30 @@ These variables are available to function writers.
      (*note Conditional Init Constructs::).
 
  -- Variable: FILE * rl_instream
-     The stdio stream from which Readline reads input.  If 'NULL',
+     The stdio stream from which Readline reads input.  If ‘NULL’,
      Readline defaults to STDIN.
 
  -- Variable: FILE * rl_outstream
-     The stdio stream to which Readline performs output.  If 'NULL',
+     The stdio stream to which Readline performs output.  If ‘NULL’,
      Readline defaults to STDOUT.
 
  -- Variable: int rl_prefer_env_winsize
-     If non-zero, Readline gives values found in the 'LINES' and
-     'COLUMNS' environment variables greater precedence than values
+     If non-zero, Readline gives values found in the ‘LINES’ and
+     ‘COLUMNS’ environment variables greater precedence than values
      fetched from the kernel when computing the screen dimensions.
 
  -- Variable: rl_command_func_t * rl_last_func
-     The address of the last command function Readline executed.  May be
-     used to test whether or not a function is being executed twice in
-     succession, for example.
+     The address of the last command function Readline executed.  This
+     may be used to test whether or not a function is being executed
+     twice in succession, for example.
 
  -- Variable: rl_hook_func_t * rl_startup_hook
      If non-zero, this is the address of a function to call just before
-     'readline' prints the first prompt.
+     Readline prints the first prompt.
 
  -- Variable: rl_hook_func_t * rl_pre_input_hook
      If non-zero, this is the address of a function to call after the
-     first prompt has been printed and just before 'readline' starts
+     first prompt has been printed and just before Readline starts
      reading input characters.
 
  -- Variable: rl_hook_func_t * rl_event_hook
@@ -1973,14 +2074,14 @@ These variables are available to function writers.
  -- Variable: rl_getc_func_t * rl_getc_function
      If non-zero, Readline will call indirectly through this pointer to
      get a character from the input stream.  By default, it is set to
-     'rl_getc', the default Readline character input function (*note
-     Character Input::).  In general, an application that sets
-     RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
-     well.
+     ‘rl_getc’, the Readline character input function (*note Character
+     Input::).  In general, an application that sets RL_GETC_FUNCTION
+     should consider setting RL_INPUT_AVAILABLE_HOOK as well.
 
  -- Variable: rl_hook_func_t * rl_signal_event_hook
      If non-zero, this is the address of a function to call if a read
-     system call is interrupted when Readline is reading terminal input.
+     system call is interrupted by a signal when Readline is reading
+     terminal input.
 
  -- Variable: rl_hook_func_t * rl_timeout_event_hook
      If non-zero, this is the address of a function to call if Readline
@@ -1989,42 +2090,51 @@ These variables are available to function writers.
  -- Variable: rl_hook_func_t * rl_input_available_hook
      If non-zero, Readline will use this function's return value when it
      needs to determine whether or not there is available input on the
-     current input source.  The default hook checks 'rl_instream'; if an
+     current input source.  The default hook checks ‘rl_instream’; if an
      application is using a different input source, it should set the
      hook appropriately.  Readline queries for available input when
      implementing intra-key-sequence timeouts during input and
-     incremental searches.  This may use an application-specific timeout
-     before returning a value; Readline uses the value passed to
-     'rl_set_keyboard_input_timeout()' or the value of the user-settable
-     KEYSEQ-TIMEOUT variable.  This is designed for use by applications
-     using Readline's callback interface (*note Alternate Interface::),
-     which may not use the traditional 'read(2)' and file descriptor
-     interface, or other applications using a different input mechanism.
-     If an application uses an input mechanism or hook that can
-     potentially exceed the value of KEYSEQ-TIMEOUT, it should increase
-     the timeout or set this hook appropriately even when not using the
-     callback interface.  In general, an application that sets
-     RL_GETC_FUNCTION should consider setting RL_INPUT_AVAILABLE_HOOK as
-     well.
+     incremental searches.  This function must return zero if there is
+     no input available, and non-zero if input is available.  This may
+     use an application-specific timeout before returning a value;
+     Readline uses the value passed to ‘rl_set_keyboard_input_timeout()’
+     or the value of the user-settable KEYSEQ-TIMEOUT variable.  This is
+     designed for use by applications using Readline's callback
+     interface (*note Alternate Interface::), which may not use the
+     traditional ‘read(2)’ and file descriptor interface, or other
+     applications using a different input mechanism.  If an application
+     uses an input mechanism or hook that can potentially exceed the
+     value of KEYSEQ-TIMEOUT, it should increase the timeout or set this
+     hook appropriately even when not using the callback interface.  In
+     general, an application that sets RL_GETC_FUNCTION should consider
+     setting RL_INPUT_AVAILABLE_HOOK as well.
 
  -- Variable: rl_voidfunc_t * rl_redisplay_function
-     If non-zero, Readline will call indirectly through this pointer to
-     update the display with the current contents of the editing buffer.
-     By default, it is set to 'rl_redisplay', the default Readline
+     Readline will call indirectly through this pointer to update the
+     display with the current contents of the editing buffer.  By
+     default, it is set to ‘rl_redisplay’, the default Readline
      redisplay function (*note Redisplay::).
 
  -- Variable: rl_vintfunc_t * rl_prep_term_function
      If non-zero, Readline will call indirectly through this pointer to
      initialize the terminal.  The function takes a single argument, an
-     'int' flag that says whether or not to use eight-bit characters.
-     By default, this is set to 'rl_prep_terminal' (*note Terminal
+     ‘int’ flag that says whether or not to use eight-bit characters.
+     By default, this is set to ‘rl_prep_terminal’ (*note Terminal
      Management::).
 
  -- Variable: rl_voidfunc_t * rl_deprep_term_function
      If non-zero, Readline will call indirectly through this pointer to
      reset the terminal.  This function should undo the effects of
-     'rl_prep_term_function'.  By default, this is set to
-     'rl_deprep_terminal' (*note Terminal Management::).
+     ‘rl_prep_term_function’.  By default, this is set to
+     ‘rl_deprep_terminal’ (*note Terminal Management::).
+
+ -- Variable: void rl_macro_display_hook
+     If set, this points to a function that ‘rl_macro_dumper’ will call
+     to display a key sequence bound to a macro.  It is called with the
+     key sequence, the "untranslated" macro value (i.e., with backslash
+     escapes included, as when passed to ‘rl_macro_bind’), the
+     ‘readable’ argument passed to ‘rl_macro_dumper’, and any prefix to
+     display before the key sequence.
 
  -- Variable: Keymap rl_executing_keymap
      This variable is set to the keymap (*note Keymaps::) in which the
@@ -2050,96 +2160,98 @@ These variables are available to function writers.
 
  -- Variable: int rl_readline_state
      A variable with bit values that encapsulate the current Readline
-     state.  A bit is set with the 'RL_SETSTATE' macro, and unset with
-     the 'RL_UNSETSTATE' macro.  Use the 'RL_ISSTATE' macro to test
+     state.  A bit is set with the ‘RL_SETSTATE’ macro, and unset with
+     the ‘RL_UNSETSTATE’ macro.  Use the ‘RL_ISSTATE’ macro to test
      whether a particular state bit is set.  Current state bits include:
 
-     'RL_STATE_NONE'
+     ‘RL_STATE_NONE’
           Readline has not yet been called, nor has it begun to
           initialize.
-     'RL_STATE_INITIALIZING'
+     ‘RL_STATE_INITIALIZING’
           Readline is initializing its internal data structures.
-     'RL_STATE_INITIALIZED'
+     ‘RL_STATE_INITIALIZED’
           Readline has completed its initialization.
-     'RL_STATE_TERMPREPPED'
+     ‘RL_STATE_TERMPREPPED’
           Readline has modified the terminal modes to do its own input
           and redisplay.
-     'RL_STATE_READCMD'
+     ‘RL_STATE_READCMD’
           Readline is reading a command from the keyboard.
-     'RL_STATE_METANEXT'
+     ‘RL_STATE_METANEXT’
           Readline is reading more input after reading the meta-prefix
           character.
-     'RL_STATE_DISPATCHING'
+     ‘RL_STATE_DISPATCHING’
           Readline is dispatching to a command.
-     'RL_STATE_MOREINPUT'
+     ‘RL_STATE_MOREINPUT’
           Readline is reading more input while executing an editing
           command.
-     'RL_STATE_ISEARCH'
+     ‘RL_STATE_ISEARCH’
           Readline is performing an incremental history search.
-     'RL_STATE_NSEARCH'
+     ‘RL_STATE_NSEARCH’
           Readline is performing a non-incremental history search.
-     'RL_STATE_SEARCH'
+     ‘RL_STATE_SEARCH’
           Readline is searching backward or forward through the history
           for a string.
-     'RL_STATE_NUMERICARG'
+     ‘RL_STATE_NUMERICARG’
           Readline is reading a numeric argument.
-     'RL_STATE_MACROINPUT'
+     ‘RL_STATE_MACROINPUT’
           Readline is currently getting its input from a
           previously-defined keyboard macro.
-     'RL_STATE_MACRODEF'
+     ‘RL_STATE_MACRODEF’
           Readline is currently reading characters defining a keyboard
           macro.
-     'RL_STATE_OVERWRITE'
+     ‘RL_STATE_OVERWRITE’
           Readline is in overwrite mode.
-     'RL_STATE_COMPLETING'
+     ‘RL_STATE_COMPLETING’
           Readline is performing word completion.
-     'RL_STATE_SIGHANDLER'
-          Readline is currently executing the readline signal handler.
-     'RL_STATE_UNDOING'
+     ‘RL_STATE_SIGHANDLER’
+          Readline is currently executing the Readline signal handler.
+     ‘RL_STATE_UNDOING’
           Readline is performing an undo.
-     'RL_STATE_INPUTPENDING'
+     ‘RL_STATE_INPUTPENDING’
           Readline has input pending due to a call to
-          'rl_execute_next()'.
-     'RL_STATE_TTYCSAVED'
+          ‘rl_execute_next()’.
+     ‘RL_STATE_TTYCSAVED’
           Readline has saved the values of the terminal's special
           characters.
-     'RL_STATE_CALLBACK'
+     ‘RL_STATE_CALLBACK’
           Readline is currently using the alternate (callback) interface
           (*note Alternate Interface::).
-     'RL_STATE_VIMOTION'
+     ‘RL_STATE_VIMOTION’
           Readline is reading the argument to a vi-mode "motion"
           command.
-     'RL_STATE_MULTIKEY'
+     ‘RL_STATE_MULTIKEY’
           Readline is reading a multiple-keystroke command.
-     'RL_STATE_VICMDONCE'
+     ‘RL_STATE_VICMDONCE’
           Readline has entered vi command (movement) mode at least one
-          time during the current call to 'readline()'.
-     'RL_STATE_DONE'
-          Readline has read a key sequence bound to 'accept-line' and is
+          time during the current call to ‘readline()’.
+     ‘RL_STATE_DONE’
+          Readline has read a key sequence bound to ‘accept-line’ and is
           about to return the line to the caller.
-     'RL_STATE_TIMEOUT'
+     ‘RL_STATE_TIMEOUT’
           Readline has timed out (it did not receive a line or specified
           number of characters before the timeout duration specified by
-          'rl_set_timeout' elapsed) and is returning that status to the
+          ‘rl_set_timeout’ elapsed) and is returning that status to the
           caller.
-     'RL_STATE_EOF'
-          Readline has read an EOF character (e.g., the stty 'EOF'
-          character) or encountered a read error and is about to return
-          a NULL line to the caller.
+     ‘RL_STATE_EOF’
+          Readline has read an EOF character (e.g., the stty ‘EOF’
+          character) or encountered a read error or EOF and is about to
+          return a NULL line to the caller.
 
  -- Variable: int rl_explicit_arg
      Set to a non-zero value if an explicit numeric argument was
-     specified by the user.  Only valid in a bindable command function.
+     specified by the user.  It is only valid in a bindable command
+     function.
 
  -- Variable: int rl_numeric_arg
      Set to the value of any numeric argument explicitly specified by
-     the user before executing the current Readline function.  Only
-     valid in a bindable command function.
+     the user before executing the current Readline function.  It is
+     only valid in a bindable command function.
 
  -- Variable: int rl_editing_mode
      Set to a value denoting Readline's current editing mode.  A value
      of 1 means Readline is currently in emacs mode; 0 means that vi
-     mode is active.
+     mode is active.  This determines the current keymap and key
+     bindings.
 
 \1f
 File: readline.info,  Node: Readline Convenience Functions,  Next: Readline Signal Handling,  Prev: Readline Variables,  Up: Programming with GNU Readline
@@ -2156,7 +2268,7 @@ File: readline.info,  Node: Readline Convenience Functions,  Next: Readline Sign
                                                key sequences.
 * Allowing Undoing::   How to make your functions undoable.
 * Redisplay::          Functions to control line display.
-* Modifying Text::     Functions to modify 'rl_line_buffer'.
+* Modifying Text::     Functions to modify ‘rl_line_buffer’.
 * Character Input::    Functions to read keyboard input.
 * Terminal Management::        Functions to manage terminal settings.
 * Utility Functions::  Generally useful functions and hooks.
@@ -2171,23 +2283,24 @@ File: readline.info,  Node: Function Naming,  Next: Keymaps,  Up: Readline Conve
 2.4.1 Naming a Function
 -----------------------
 
-The user can dynamically change the bindings of keys while using
-Readline.  This is done by representing the function with a descriptive
-name.  The user is able to type the descriptive name when referring to
-the function.  Thus, in an init file, one might find
+Readline has a descriptive string name for every function a user can
+bind to a key sequence, so users can dynamically change the bindings
+associated with key sequences while using Readline, using the
+descriptive name when referring to the function.  Thus, in an init file,
+one might find
 
      Meta-Rubout:      backward-kill-word
 
    This binds the keystroke <Meta-Rubout> to the function
-_descriptively_ named 'backward-kill-word'.  You, as the programmer,
+_descriptively_ named ‘backward-kill-word’.  As the programmer, you
 should bind the functions you write to descriptive names as well.
 Readline provides a function for doing that:
 
  -- Function: int rl_add_defun (const char *name, rl_command_func_t
           *function, int key)
      Add NAME to the list of named functions.  Make FUNCTION be the
-     function that gets called.  If KEY is not -1, then bind it to
-     FUNCTION using 'rl_bind_key()'.
+     function that gets called by key sequences that bind to NAME.  If
+     KEY is not -1, then bind it to FUNCTION using ‘rl_bind_key()’.
 
    Using this function alone is sufficient for most applications.  It is
 the recommended way to add a few functions to the default functions that
@@ -2201,15 +2314,15 @@ File: readline.info,  Node: Keymaps,  Next: Binding Keys,  Prev: Function Naming
 2.4.2 Selecting a Keymap
 ------------------------
 
-Key bindings take place on a "keymap".  The keymap is the association
+Key bindings take place on a “keymap”.  The keymap is the association
 between the keys that the user types and the functions that get run.
 You can make your own keymaps, copy existing keymaps, and tell Readline
 which keymap to use.
 
  -- Function: Keymap rl_make_bare_keymap (void)
      Returns a new, empty keymap.  The space for the keymap is allocated
-     with 'malloc()'; the caller should free it by calling
-     'rl_free_keymap()' when done.
+     with ‘malloc()’; the caller should free it by calling
+     ‘rl_free_keymap()’ when done.
 
  -- Function: Keymap rl_copy_keymap (Keymap map)
      Return a new keymap which is a copy of MAP.
@@ -2226,14 +2339,15 @@ which keymap to use.
 
  -- Function: void rl_free_keymap (Keymap keymap)
      Free all storage associated with KEYMAP.  This calls
-     'rl_discard_keymap' to free subordindate keymaps and macros.
+     ‘rl_discard_keymap’ to free subordinate 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.
+change which keymap is active.  This is one way to switch editing modes,
+for example.
 
  -- Function: Keymap rl_get_keymap (void)
      Returns the currently active keymap.
@@ -2243,17 +2357,17 @@ change which keymap is active.
 
  -- Function: Keymap rl_get_keymap_by_name (const char *name)
      Return the keymap matching NAME.  NAME is one which would be
-     supplied in a 'set keymap' inputrc line (*note Readline Init
+     supplied in a ‘set keymap’ inputrc line (*note Readline Init
      File::).
 
  -- Function: char * rl_get_keymap_name (Keymap keymap)
      Return the name matching KEYMAP.  NAME is one which would be
-     supplied in a 'set keymap' inputrc line (*note Readline Init
+     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
+     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
@@ -2272,18 +2386,18 @@ File: readline.info,  Node: Binding Keys,  Next: Associating Function Names and
 2.4.3 Binding Keys
 ------------------
 
-Key sequences are associate with functions through the keymap.  Readline
-has several internal keymaps: 'emacs_standard_keymap',
-'emacs_meta_keymap', 'emacs_ctlx_keymap', 'vi_movement_keymap', and
-'vi_insertion_keymap'.  'emacs_standard_keymap' is the default, and the
+Key sequences are associated with functions through the keymap.
+Readline has several internal keymaps: ‘emacs_standard_keymap’,
+‘emacs_meta_keymap’, ‘emacs_ctlx_keymap’, ‘vi_movement_keymap’, and
+‘vi_insertion_keymap’.  ‘emacs_standard_keymap’ is the default, and the
 examples in this manual assume that.
 
-   Since 'readline()' installs a set of default key bindings the first
+   Since ‘readline()’ installs a set of default key bindings the first
 time it is called, there is always the danger that a custom binding
-installed before the first call to 'readline()' will be overridden.  An
-alternate mechanism is to install custom key bindings in an
-initialization function assigned to the 'rl_startup_hook' variable
-(*note Readline Variables::).
+installed before the first call to ‘readline()’ will be overridden.  An
+alternate mechanism that can avoid this is to install custom key
+bindings in an initialization function assigned to the ‘rl_startup_hook’
+variable (*note Readline Variables::).
 
    These functions manage key bindings.
 
@@ -2308,12 +2422,13 @@ initialization function assigned to the 'rl_startup_hook' variable
      non-zero in the case of an invalid KEY or if KEY is already bound.
 
  -- Function: int rl_unbind_key (int key)
-     Bind KEY to the null function in the currently active keymap.
-     Returns non-zero in case of error.
+     Bind KEY to the null function in the currently active keymap.  This
+     is not the same as binding it to ‘self-insert’.  Returns non-zero
+     in case of error.
 
  -- Function: int rl_unbind_key_in_map (int key, Keymap map)
-     Bind KEY to the null function in MAP.  Returns non-zero in case of
-     error.
+     Bind KEY to the null function in MAP.  This is not the same as
+     binding it to ‘self-insert’.  Returns non-zero in case of error.
 
  -- Function: int rl_unbind_function_in_map (rl_command_func_t
           *function, Keymap map)
@@ -2333,13 +2448,13 @@ initialization function assigned to the 'rl_startup_hook' variable
  -- Function: int rl_bind_keyseq_in_map (const char *keyseq,
           rl_command_func_t *function, Keymap map)
      Bind the key sequence represented by the string KEYSEQ to the
-     function FUNCTION.  This makes new keymaps as necessary.  Initial
-     bindings are performed in MAP.  The return value is non-zero if
-     KEYSEQ is invalid.
+     function FUNCTION in MAP.  This makes new keymaps as necessary.
+     Initial bindings are performed in MAP.  The return value is
+     non-zero if KEYSEQ is invalid.
 
  -- Function: int rl_set_key (const char *keyseq, rl_command_func_t
           *function, Keymap map)
-     Equivalent to 'rl_bind_keyseq_in_map'.
+     Equivalent to ‘rl_bind_keyseq_in_map’.
 
  -- Function: int rl_bind_keyseq_if_unbound (const char *keyseq,
           rl_command_func_t *function)
@@ -2357,12 +2472,13 @@ initialization function assigned to the 'rl_startup_hook' variable
           *data, Keymap map)
      Bind the key sequence represented by the string KEYSEQ to the
      arbitrary pointer DATA.  TYPE says what kind of data is pointed to
-     by DATA; this can be a function ('ISFUNC'), a macro ('ISMACR'), or
-     a keymap ('ISKMAP').  This makes new keymaps as necessary.  The
-     initial keymap in which to do bindings is MAP.
+     by DATA; this can be a function (‘ISFUNC’), a macro (‘ISMACR’), or
+     a keymap (‘ISKMAP’).  This makes new keymaps as necessary.  The
+     initial keymap in which to do bindings is MAP.  Returns non-zero in
+     the case of an invalid KEYSEQ, zero otherwise.
 
  -- Function: int rl_parse_and_bind (char *line)
-     Parse LINE as if it had been read from the 'inputrc' file and
+     Parse LINE as if it had been read from the ‘inputrc’ file and
      perform any key bindings and variable assignments found (*note
      Readline Init File::).
 
@@ -2381,21 +2497,22 @@ and the functions invoked by a particular key sequence.  You may also
 associate a new function name with an arbitrary function.
 
  -- Function: rl_command_func_t * rl_named_function (const char *name)
-     Return the function with name NAME.
+     Return the function with name NAME.  NAME is a descriptive name
+     users might use in a key binding.
 
  -- Function: rl_command_func_t * rl_function_of_keyseq (const char
           *keyseq, Keymap map, int *type)
      Return the function invoked by KEYSEQ in keymap MAP.  If MAP is
-     'NULL', the current keymap is used.  If TYPE is not 'NULL', the
-     type of the object is returned in the 'int' variable it points to
-     (one of 'ISFUNC', 'ISKMAP', or 'ISMACR').  It takes a "translated"
+     ‘NULL’, this uses the current keymap.  If TYPE is not ‘NULL’, this
+     returns the type of the object in the ‘int’ variable it points to
+     (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
+     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.
 
@@ -2404,7 +2521,7 @@ associate a new function name with an arbitrary function.
      If there is a numeric argument at the beginning of KEYSEQ, possibly
      including digits, return the index of the first character in KEYSEQ
      following the numeric argument.  This can be used to skip over the
-     numeric argument (which is available as 'rl_numeric_arg' while
+     numeric argument (which is available as ‘rl_numeric_arg’) while
      traversing the key sequence that invoked the current command.
 
  -- Function: char ** rl_invoking_keyseqs (rl_command_func_t *function)
@@ -2416,26 +2533,35 @@ associate a new function name with an arbitrary function.
      Return an array of strings representing the key sequences used to
      invoke FUNCTION in the keymap MAP.
 
+ -- Function: void rl_print_keybinding (const char *name, Keymap map,
+          int readable)
+     Print key sequences bound to Readline function name NAME in keymap
+     MAP.  If MAP is NULL, this uses the current keymap.  If READABLE is
+     non-zero, the list is formatted in such a way that it can be made
+     part of an ‘inputrc’ file and re-read to recreate the key binding.
+
  -- Function: void rl_function_dumper (int readable)
      Print the Readline function names and the key sequences currently
-     bound to them to 'rl_outstream'.  If READABLE is non-zero, the list
-     is formatted in such a way that it can be made part of an 'inputrc'
+     bound to them to ‘rl_outstream’.  If READABLE is non-zero, the list
+     is formatted in such a way that it can be made part of an ‘inputrc’
      file and re-read.
 
  -- Function: void rl_list_funmap_names (void)
      Print the names of all bindable Readline functions to
-     'rl_outstream'.
+     ‘rl_outstream’.
 
  -- Function: const char ** rl_funmap_names (void)
      Return a NULL terminated array of known function names.  The array
      is sorted.  The array itself is allocated, but not the strings
      inside.  You should free the array, but not the pointers, using
-     'free' or 'rl_free' when you are done.
+     ‘free’ or ‘rl_free’ when you are done.
 
  -- Function: int rl_add_funmap_entry (const char *name,
           rl_command_func_t *function)
      Add NAME to the list of bindable Readline command names, and make
-     FUNCTION the function to be called when NAME is invoked.
+     FUNCTION the function to be called when NAME is invoked.  This
+     returns the index of the newly-added NAME in the array of function
+     names.
 
 \1f
 File: readline.info,  Node: Allowing Undoing,  Next: Redisplay,  Prev: Associating Function Names and Bindings,  Up: Readline Convenience Functions
@@ -2444,37 +2570,38 @@ File: readline.info,  Node: Allowing Undoing,  Next: Redisplay,  Prev: Associati
 ----------------------
 
 Supporting the undo command is a painless thing, and makes your
-functions much more useful.  It is certainly easy to try something if
+functions much more useful.  It is certainly easier to try something if
 you know you can undo it.
 
    If your function simply inserts text once, or deletes text once, and
-uses 'rl_insert_text()' or 'rl_delete_text()' to do it, then undoing is
-already done for you automatically.
+uses ‘rl_insert_text()’ or ‘rl_delete_text()’ to do it, then Readline
+does the undoing for you automatically.
 
    If you do multiple insertions or multiple deletions, or any
 combination of these operations, you should group them together into one
-operation.  This is done with 'rl_begin_undo_group()' and
-'rl_end_undo_group()'.
+operation.  This is done with ‘rl_begin_undo_group()’ and
+‘rl_end_undo_group()’.
 
-   The types of events that can be undone are:
+   The types of events Readline can undo are:
 
      enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
 
-   Notice that 'UNDO_DELETE' means to insert some text, and
-'UNDO_INSERT' means to delete some text.  That is, the undo code tells
-what to undo, not how to undo it.  'UNDO_BEGIN' and 'UNDO_END' are tags
-added by 'rl_begin_undo_group()' and 'rl_end_undo_group()'.
+   Notice that ‘UNDO_DELETE’ means to insert some text, and
+‘UNDO_INSERT’ means to delete some text.  That is, the undo code tells
+what to undo, not how to undo it.  ‘UNDO_BEGIN’ and ‘UNDO_END’ are tags
+added by ‘rl_begin_undo_group()’ and ‘rl_end_undo_group()’; they are how
+Readline delimits groups of commands that should be undone together.
 
  -- Function: int rl_begin_undo_group (void)
      Begins saving undo information in a group construct.  The undo
-     information usually comes from calls to 'rl_insert_text()' and
-     'rl_delete_text()', but could be the result of calls to
-     'rl_add_undo()'.
+     information usually comes from calls to ‘rl_insert_text()’ and
+     ‘rl_delete_text()’, but could be the result of calls to
+     ‘rl_add_undo()’.
 
  -- Function: int rl_end_undo_group (void)
-     Closes the current undo group started with 'rl_begin_undo_group
-     ()'.  There should be one call to 'rl_end_undo_group()' for each
-     call to 'rl_begin_undo_group()'.
+     Closes the current undo group started with ‘rl_begin_undo_group()’.
+     There should be one call to ‘rl_end_undo_group()’ for each call to
+     ‘rl_begin_undo_group()’.
 
  -- Function: void rl_add_undo (enum undo_code what, int start, int end,
           char *text)
@@ -2485,13 +2612,14 @@ added by 'rl_begin_undo_group()' and 'rl_end_undo_group()'.
      Free the existing undo list.
 
  -- Function: int rl_do_undo (void)
-     Undo the first thing on the undo list.  Returns '0' if there was
+     Undo the first thing on the undo list.  Returns ‘0’ if there was
      nothing to undo, non-zero if something was undone.
 
    Finally, if you neither insert nor delete text, but directly modify
-the existing text (e.g., change its case), call 'rl_modifying()' once,
+the existing text (e.g., change its case), call ‘rl_modifying()’ once,
 just before you modify the text.  You must supply the indices of the
-text range that you are going to modify.
+text range that you are going to modify.  Readline will create an undo
+group for you.
 
  -- Function: int rl_modifying (int start, int end)
      Tell Readline to save the text between START and END as a single
@@ -2506,7 +2634,7 @@ File: readline.info,  Node: Redisplay,  Next: Modifying Text,  Prev: Allowing Un
 
  -- Function: void rl_redisplay (void)
      Change what's displayed on the screen to reflect the current
-     contents of 'rl_line_buffer'.
+     contents of ‘rl_line_buffer’.
 
  -- Function: int rl_forced_update_display (void)
      Force the line to be updated and redisplayed, whether or not
@@ -2535,52 +2663,54 @@ File: readline.info,  Node: Redisplay,  Next: Modifying Text,  Prev: Allowing Un
      Move the cursor to the start of the next screen line.
 
  -- Function: int rl_show_char (int c)
-     Display character C on 'rl_outstream'.  If Readline has not been
+     Display character C on ‘rl_outstream’.  If Readline has not been
      set to display meta characters directly, this will convert meta
      characters to a meta-prefixed key sequence.  This is intended for
      use by applications which wish to do their own redisplay.
 
  -- Function: int rl_message (const char *, ...)
-     The arguments are a format string as would be supplied to 'printf',
-     possibly containing conversion specifications such as '%d', and any
+     The arguments are a format string as would be supplied to ‘printf’,
+     possibly containing conversion specifications such as ‘%d’, and any
      additional arguments necessary to satisfy the conversion
-     specifications.  The resulting string is displayed in the "echo
-     area".  The echo area is also used to display numeric arguments and
-     search strings.  You should call 'rl_save_prompt' to save the
+     specifications.  The resulting string is displayed in the echo
+     area.  The echo area is also used to display numeric arguments and
+     search strings.  You should call ‘rl_save_prompt’ to save the
      prompt information before calling this function.
 
  -- Function: int rl_clear_message (void)
      Clear the message in the echo area.  If the prompt was saved with a
-     call to 'rl_save_prompt' before the last call to 'rl_message', call
-     'rl_restore_prompt' before calling this function.
+     call to ‘rl_save_prompt’ before the last call to ‘rl_message’, you
+     must call ‘rl_restore_prompt’ before calling this function.
 
  -- Function: void rl_save_prompt (void)
      Save the local Readline prompt display state in preparation for
-     displaying a new message in the message area with 'rl_message()'.
+     displaying a new message in the message area with ‘rl_message()’.
 
  -- Function: void rl_restore_prompt (void)
      Restore the local Readline prompt display state saved by the most
-     recent call to 'rl_save_prompt'.  if 'rl_save_prompt' was called to
-     save the prompt before a call to 'rl_message', this function should
-     be called before the corresponding call to 'rl_clear_message'.
+     recent call to ‘rl_save_prompt’.  If you called ‘rl_save_prompt’ to
+     save the prompt before a call to ‘rl_message’, you should call this
+     function before the corresponding call to ‘rl_clear_message’.
 
  -- Function: int rl_expand_prompt (char *prompt)
      Expand any special character sequences in PROMPT and set up the
      local Readline prompt redisplay variables.  This function is called
-     by 'readline()'.  It may also be called to expand the primary
-     prompt if the 'rl_on_new_line_with_prompt()' function or
-     'rl_already_prompted' variable is used.  It returns the number of
-     visible characters on the last line of the (possibly multi-line)
+     by ‘readline()’.  It may also be called to expand the primary
+     prompt if the application uses the ‘rl_on_new_line_with_prompt()’
+     function or ‘rl_already_prompted’ variable.  It returns the number
+     of visible characters on the last line of the (possibly multi-line)
      prompt.  Applications may indicate that the prompt contains
      characters that take up no physical screen space when displayed by
      bracketing a sequence of such characters with the special markers
-     'RL_PROMPT_START_IGNORE' and 'RL_PROMPT_END_IGNORE' (declared in
-     'readline.h' as '\001' and '\002', respectively).  This may be used
-     to embed terminal-specific escape sequences in prompts.
+     ‘RL_PROMPT_START_IGNORE’ and ‘RL_PROMPT_END_IGNORE’ (declared in
+     ‘readline.h’ as ‘\001’ and ‘\002’, respectively).  This may be used
+     to embed terminal-specific escape sequences in prompts.  If you
+     don't use these indicators, redisplay will likely produce screen
+     contents that don't match the line buffer.
 
  -- Function: int rl_set_prompt (const char *prompt)
      Make Readline use PROMPT for subsequent redisplay.  This calls
-     'rl_expand_prompt()' to expand the prompt and sets 'rl_prompt' to
+     ‘rl_expand_prompt()’ to expand the prompt and sets ‘rl_prompt’ to
      the result.
 
 \1f
@@ -2604,14 +2734,19 @@ File: readline.info,  Node: Modifying Text,  Next: Character Input,  Prev: Redis
  -- Function: int rl_kill_text (int start, int end)
      Copy the text between START and END in the current line to the kill
      ring, appending or prepending to the last kill if the last command
-     was a kill command.  The text is deleted.  If START is less than
-     END, the text is appended, otherwise prepended.  If the last
-     command was not a kill, a new kill ring slot is used.
+     was a kill command.  This deletes the text from the line.  If START
+     is less than END, the text is appended, otherwise it is prepended.
+     If the last command was not a kill, this uses a new kill ring slot.
+
+ -- Function: void rl_replace_line (const char *text, int clear_undo)
+     Replace the contents of ‘rl_line_buffer’ with TEXT.  This preserves
+     the point and mark, if possible.  If CLEAR_UNDO is non-zero, this
+     clears the undo list associated with the current line.
 
  -- Function: int rl_push_macro_input (char *macro)
-     Cause MACRO to be inserted into the line, as if it had been invoked
-     by a key bound to a macro.  Not especially useful; use
-     'rl_insert_text()' instead.
+     Insert MACRO into the line, as if it had been invoked by a key
+     bound to a macro.  Not especially useful; use ‘rl_insert_text()’
+     instead.
 
 \1f
 File: readline.info,  Node: Character Input,  Next: Terminal Management,  Prev: Modifying Text,  Up: Readline Convenience Functions
@@ -2623,9 +2758,9 @@ File: readline.info,  Node: Character Input,  Next: Terminal Management,  Prev:
      Return the next character available from Readline's current input
      stream.  This handles input inserted into the input stream via
      RL_PENDING_INPUT (*note Readline Variables::) and
-     'rl_stuff_char()', macros, and characters read from the keyboard.
+     ‘rl_stuff_char()’, macros, and characters read from the keyboard.
      While waiting for input, this function will call any function
-     assigned to the 'rl_event_hook' variable.
+     assigned to the ‘rl_event_hook’ variable.
 
  -- Function: int rl_getc (FILE *stream)
      Return the next character available from STREAM, which is assumed
@@ -2634,35 +2769,35 @@ File: readline.info,  Node: Character Input,  Next: Terminal Management,  Prev:
  -- Function: int rl_stuff_char (int c)
      Insert C into the Readline input stream.  It will be "read" before
      Readline attempts to read characters from the terminal with
-     'rl_read_key()'.  Up to 512 characters may be pushed back.
-     'rl_stuff_char' returns 1 if the character was successfully
+     ‘rl_read_key()’.  Applications can push back up to 512 characters.
+     ‘rl_stuff_char’ returns 1 if the character was successfully
      inserted; 0 otherwise.
 
  -- Function: int rl_execute_next (int c)
-     Make C be the next command to be executed when 'rl_read_key()' is
+     Make C be the next command to be executed when ‘rl_read_key()’ is
      called.  This sets RL_PENDING_INPUT.
 
  -- Function: int rl_clear_pending_input (void)
      Unset RL_PENDING_INPUT, effectively negating the effect of any
-     previous call to 'rl_execute_next()'.  This works only if the
-     pending input has not already been read with 'rl_read_key()'.
+     previous call to ‘rl_execute_next()’.  This works only if the
+     pending input has not already been read with ‘rl_read_key()’.
 
  -- Function: int rl_set_keyboard_input_timeout (int u)
-     While waiting for keyboard input in 'rl_read_key()', Readline will
+     While waiting for keyboard input in ‘rl_read_key()’, Readline will
      wait for U microseconds for input before calling any function
-     assigned to 'rl_event_hook'.  U must be greater than or equal to
+     assigned to ‘rl_event_hook’.  U must be greater than or equal to
      zero (a zero-length timeout is equivalent to a poll).  The default
      waiting period is one-tenth of a second.  Returns the old timeout
      value.
 
  -- Function: int rl_set_timeout (unsigned int secs, unsigned int usecs)
-     Set a timeout for subsequent calls to 'readline()'.  If Readline
+     Set a timeout for subsequent calls to ‘readline()’.  If Readline
      does not read a complete line, or the number of characters
-     specified by 'rl_num_chars_to_read', before the duration specified
+     specified by ‘rl_num_chars_to_read’, before the duration specified
      by SECS (in seconds) and USECS (microseconds), it returns and sets
-     'RL_STATE_TIMEOUT' in 'rl_readline_state'.  Passing 0 for 'secs'
-     and 'usecs' cancels any previously set timeout; the convenience
-     macro 'rl_clear_timeout()' is shorthand for this.  Returns 0 if the
+     ‘RL_STATE_TIMEOUT’ in ‘rl_readline_state’.  Passing 0 for ‘secs’
+     and ‘usecs’ cancels any previously set timeout; the convenience
+     macro ‘rl_clear_timeout()’ is shorthand for this.  Returns 0 if the
      timeout is set successfully.
 
  -- Function: int rl_timeout_remaining (unsigned int *secs, unsigned int
@@ -2673,7 +2808,7 @@ File: readline.info,  Node: Character Input,  Next: Terminal Management,  Prev:
      value is -1 on error or when there is no timeout set, 0 when the
      timeout has expired (leaving *SECS and *USECS unchanged), and 1 if
      the timeout has not expired.  If either of SECS and USECS is
-     'NULL', the return value indicates whether the timeout has expired.
+     ‘NULL’, the return value indicates whether the timeout has expired.
 
 \1f
 File: readline.info,  Node: Terminal Management,  Next: Utility Functions,  Prev: Character Input,  Up: Readline Convenience Functions
@@ -2682,24 +2817,24 @@ File: readline.info,  Node: Terminal Management,  Next: Utility Functions,  Prev
 -------------------------
 
  -- Function: void rl_prep_terminal (int meta_flag)
-     Modify the terminal settings for Readline's use, so 'readline()'
-     can read a single character at a time from the keyboard.  The
-     META_FLAG argument should be non-zero if Readline should read
-     eight-bit input.
+     Modify the terminal settings for Readline's use, so ‘readline()’
+     can read a single character at a time from the keyboard and perform
+     redisplay.  The META_FLAG argument should be non-zero if Readline
+     should read eight-bit input.
 
  -- Function: void rl_deprep_terminal (void)
-     Undo the effects of 'rl_prep_terminal()', leaving the terminal in
+     Undo the effects of ‘rl_prep_terminal()’, leaving the terminal in
      the state in which it was before the most recent call to
-     'rl_prep_terminal()'.
+     ‘rl_prep_terminal()’.
 
  -- Function: void rl_tty_set_default_bindings (Keymap kmap)
      Read the operating system's terminal editing characters (as would
-     be displayed by 'stty') to their Readline equivalents.  The
+     be displayed by ‘stty’) to their Readline equivalents.  The
      bindings are performed in KMAP.
 
  -- Function: void rl_tty_unset_default_bindings (Keymap kmap)
-     Reset the bindings manipulated by 'rl_tty_set_default_bindings' so
-     that the terminal editing characters are bound to 'rl_insert'.  The
+     Reset the bindings manipulated by ‘rl_tty_set_default_bindings’ so
+     that the terminal editing characters are bound to ‘rl_insert’.  The
      bindings are performed in KMAP.
 
  -- Function: int rl_tty_set_echoing (int value)
@@ -2711,9 +2846,9 @@ File: readline.info,  Node: Terminal Management,  Next: Utility Functions,  Prev
 
  -- Function: int rl_reset_terminal (const char *terminal_name)
      Reinitialize Readline's idea of the terminal settings using
-     TERMINAL_NAME as the terminal type (e.g., 'vt100').  If
-     TERMINAL_NAME is 'NULL', the value of the 'TERM' environment
-     variable is used.
+     TERMINAL_NAME as the terminal type (e.g., ‘xterm’).  If
+     TERMINAL_NAME is ‘NULL’, Readline uses the value of the ‘TERM’
+     environment variable.
 
 \1f
 File: readline.info,  Node: Utility Functions,  Next: Miscellaneous Functions,  Prev: Terminal Management,  Up: Readline Convenience Functions
@@ -2723,35 +2858,30 @@ File: readline.info,  Node: Utility Functions,  Next: Miscellaneous Functions,
 
  -- Function: int rl_save_state (struct readline_state *sp)
      Save a snapshot of Readline's internal state to SP.  The contents
-     of the READLINE_STATE structure are documented in 'readline.h'.
+     of the READLINE_STATE structure are documented in ‘readline.h’.
      The caller is responsible for allocating the structure.
 
  -- Function: int rl_restore_state (struct readline_state *sp)
      Restore Readline's internal state to that stored in SP, which must
-     have been saved by a call to 'rl_save_state'.  The contents of the
-     READLINE_STATE structure are documented in 'readline.h'.  The
+     have been saved by a call to ‘rl_save_state’.  The contents of the
+     READLINE_STATE structure are documented in ‘readline.h’.  The
      caller is responsible for freeing the structure.
 
  -- Function: void rl_free (void *mem)
      Deallocate the memory pointed to by MEM.  MEM must have been
-     allocated by 'malloc'.
-
- -- Function: void rl_replace_line (const char *text, int clear_undo)
-     Replace the contents of 'rl_line_buffer' with TEXT.  The point and
-     mark are preserved, if possible.  If CLEAR_UNDO is non-zero, the
-     undo list associated with the current line is cleared.
+     allocated by ‘malloc’.
 
  -- Function: void rl_extend_line_buffer (int len)
-     Ensure that 'rl_line_buffer' has enough space to hold LEN
-     characters, possibly reallocating it if necessary.
+     Ensure that ‘rl_line_buffer’ has enough space to hold LEN
+     characters, reallocating it if necessary.
 
  -- Function: int rl_initialize (void)
      Initialize or re-initialize Readline's internal state.  It's not
-     strictly necessary to call this; 'readline()' calls it before
+     strictly necessary to call this; ‘readline()’ calls it before
      reading any input.
 
  -- Function: int rl_ding (void)
-     Ring the terminal bell, obeying the setting of 'bell-style'.
+     Ring the terminal bell, obeying the setting of ‘bell-style’.
 
  -- Function: int rl_alphabetic (int c)
      Return 1 if C is an alphabetic character.
@@ -2759,18 +2889,18 @@ File: readline.info,  Node: Utility Functions,  Next: Miscellaneous Functions,
  -- Function: void rl_display_match_list (char **matches, int len, int
           max)
      A convenience function for displaying a list of strings in columnar
-     format on Readline's output stream.  'matches' is the list of
+     format on Readline's output stream.  ‘matches’ is the list of
      strings, in argv format, such as a list of completion matches.
-     'len' is the number of strings in 'matches', and 'max' is the
-     length of the longest string in 'matches'.  This function uses the
-     setting of 'print-completions-horizontally' to select how the
+     ‘len’ is the number of strings in ‘matches’, and ‘max’ is the
+     length of the longest string in ‘matches’.  This function uses the
+     setting of ‘print-completions-horizontally’ to select how the
      matches are displayed (*note Readline Init File Syntax::).  When
      displaying completions, this function sets the number of columns
-     used for display to the value of 'completion-display-width', the
-     value of the environment variable 'COLUMNS', or the screen width,
+     used for display to the value of ‘completion-display-width’, the
+     value of the environment variable ‘COLUMNS’, or the screen width,
      in that order.
 
-   The following are implemented as macros, defined in 'chardefs.h'.
+   The following are implemented as macros, defined in ‘chardefs.h’.
 Applications should refrain from using them.
 
  -- Function: int _rl_uppercase_p (int c)
@@ -2804,34 +2934,37 @@ File: readline.info,  Node: Miscellaneous Functions,  Next: Alternate Interface,
      Bind the key sequence KEYSEQ to invoke the macro MACRO.  The
      binding is performed in MAP.  When KEYSEQ is invoked, the MACRO
      will be inserted into the line.  This function is deprecated; use
-     'rl_generic_bind()' instead.
+     ‘rl_generic_bind’ instead.
 
  -- Function: void rl_macro_dumper (int readable)
      Print the key sequences bound to macros and their values, using the
-     current keymap, to 'rl_outstream'.  If READABLE is non-zero, the
-     list is formatted in such a way that it can be made part of an
-     'inputrc' file and re-read.
+     current keymap, to ‘rl_outstream’.  If the application has assigned
+     a value to ‘rl_macro_display_hook’, ‘rl_macro_dumper’ calls it
+     instead of printing anything.  If READABLE is greater than zero,
+     the list is formatted in such a way that it can be made part of an
+     ‘inputrc’ file and re-read.
 
  -- Function: int rl_variable_bind (const char *variable, const char
           *value)
      Make the Readline variable VARIABLE have VALUE.  This behaves as if
-     the Readline command 'set VARIABLE VALUE' had been executed in an
-     'inputrc' file (*note Readline Init File Syntax::).
+     the Readline command ‘set VARIABLE VALUE’ had been executed in an
+     ‘inputrc’ file (*note Readline Init File Syntax::) or by
+     ‘rl_parse_and_bind’.
 
  -- Function: char * rl_variable_value (const char *variable)
      Return a string representing the value of the Readline variable
-     VARIABLE.  For boolean variables, this string is either 'on' or
-     'off'.
+     VARIABLE.  For boolean variables, this string is either ‘on’ or
+     ‘off’.
 
  -- Function: void rl_variable_dumper (int readable)
      Print the Readline variable names and their current values to
-     'rl_outstream'.  If READABLE is non-zero, the list is formatted in
-     such a way that it can be made part of an 'inputrc' file and
+     ‘rl_outstream’.  If READABLE is non-zero, the list is formatted in
+     such a way that it can be made part of an ‘inputrc’ file and
      re-read.
 
  -- Function: int rl_set_paren_blink_timeout (int u)
      Set the time interval (in microseconds) that Readline waits when
-     showing a balancing character when 'blink-matching-paren' has been
+     showing a balancing character when ‘blink-matching-paren’ has been
      enabled.
 
  -- Function: char * rl_get_termcap (const char *cap)
@@ -2839,24 +2972,29 @@ File: readline.info,  Node: Miscellaneous Functions,  Next: Alternate Interface,
      fetches the termcap entry for the current terminal name and uses
      those capabilities to move around the screen line and perform other
      terminal-specific operations, like erasing a line.  Readline does
-     not use all of a terminal's capabilities, and this function will
-     return values for only those capabilities Readline uses.
+     not fetch or use all of a terminal's capabilities, and this
+     function will return values for only those capabilities Readline
+     fetches.
+
+ -- Function: void rl_reparse_colors (void)
+     Read or re-read color definitions from ‘LS_COLORS’.
 
  -- Function: void rl_clear_history (void)
      Clear the history list by deleting all of the entries, in the same
-     manner as the History library's 'clear_history()' function.  This
-     differs from 'clear_history' because it frees private data Readline
+     manner as the History library's ‘clear_history()’ function.  This
+     differs from ‘clear_history’ because it frees private data Readline
      saves in the history list.
 
  -- Function: void rl_activate_mark (void)
-     Enable an _active_ mark.  When this is enabled, the text between
-     point and mark (the REGION) is displayed in the terminal's standout
-     mode (a FACE).  This is called by various Readline functions that
-     set the mark and insert text, and is available for applications to
-     call.
+     Enable an _active_ region.  When this is enabled, the text between
+     point and mark (the REGION) is displayed using the color specified
+     by the value of the ‘active-region-start-color’ variable (a FACE).
+     The default face is the terminal's standout mode.  This is called
+     by various Readline functions that set the mark and insert text,
+     and is available for applications to call.
 
  -- Function: void rl_deactivate_mark (void)
-     Turn off the active mark.
+     Turn off the active region.
 
  -- Function: void rl_keep_mark_active (void)
      Indicate that the mark should remain active when the current
@@ -2874,34 +3012,36 @@ File: readline.info,  Node: Alternate Interface,  Next: A Readline Example,  Pre
 2.4.12 Alternate Interface
 --------------------------
 
-An alternate interface is available to plain 'readline()'.  Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to 'select()' on
-various file descriptors.  To accommodate this need, Readline can also
-be invoked as a 'callback' function from an event loop.  There are
-functions available to make this easy.
+For applications that need more granular control than plain ‘readline()’
+provides, there is an alternate interface.  Some applications need to
+interleave keyboard I/O with file, device, or window system I/O,
+typically by using a main loop to ‘select()’ on various file
+descriptors.  To accommodate this use case, Readline can also be invoked
+as a 'callback' function from an event loop.  There are functions
+available to make this easy.
 
  -- Function: void rl_callback_handler_install (const char *prompt,
-          rl_vcpfunc_t *lhandler)
+          rl_vcpfunc_t *line_handler)
      Set up the terminal for Readline I/O and display the initial
-     expanded value of PROMPT.  Save the value of LHANDLER to use as a
-     handler function to call when a complete line of input has been
+     expanded value of PROMPT.  Save the value of LINE_HANDLER to use as
+     handler function to call when a complete line of input has been
      entered.  The handler function receives the text of the line as an
-     argument.  As with 'readline()', the handler function should 'free'
+     argument.  As with ‘readline()’, the handler function should ‘free’
      the line when it it finished with it.
 
  -- Function: void rl_callback_read_char (void)
      Whenever an application determines that keyboard input is
-     available, it should call 'rl_callback_read_char()', which will
+     available, it should call ‘rl_callback_read_char()’, which will
      read the next character from the current input source.  If that
-     character completes the line, 'rl_callback_read_char' will invoke
-     the LHANDLER function installed by 'rl_callback_handler_install' to
-     process the line.  Before calling the LHANDLER function, the
-     terminal settings are reset to the values they had before calling
-     'rl_callback_handler_install'.  If the LHANDLER function returns,
-     and the line handler remains installed, the terminal settings are
-     modified for Readline's use again.  'EOF' is indicated by calling
-     LHANDLER with a 'NULL' line.
+     character completes the line, ‘rl_callback_read_char’ will invoke
+     the LINE_HANDLER function installed by
+     ‘rl_callback_handler_install’ to process the line.  Before calling
+     the LINE_HANDLER function, Readline resets the terminal settings to
+     the values they had before calling ‘rl_callback_handler_install’.
+     If the LINE_HANDLER function returns, and the line handler remains
+     installed, Readline modifies the terminal settings for its use
+     again.  ‘EOF’ is indicated by calling LINE_HANDLER with a ‘NULL’
+     line.
 
  -- Function: void rl_callback_sigcleanup (void)
      Clean up any internal state the callback interface uses to maintain
@@ -2913,11 +3053,11 @@ functions available to make this easy.
  -- Function: void rl_callback_handler_remove (void)
      Restore the terminal to its initial state and remove the line
      handler.  You may call this function from within a callback as well
-     as independently.  If the LHANDLER installed by
-     'rl_callback_handler_install' does not exit the program, either
-     this function or the function referred to by the value of
-     'rl_deprep_term_function' should be called before the program exits
-     to reset the terminal settings.
+     as independently.  If the LINE_HANDLER installed by
+     ‘rl_callback_handler_install’ does not exit the program, your
+     program should call either this function or the function referred
+     to by the value of ‘rl_deprep_term_function’ before the program
+     exits to reset the terminal settings.
 
 \1f
 File: readline.info,  Node: A Readline Example,  Next: Alternate Interface Example,  Prev: Alternate Interface,  Up: Readline Convenience Functions
@@ -2927,8 +3067,8 @@ File: readline.info,  Node: A Readline Example,  Next: Alternate Interface Examp
 
 Here is a function which changes lowercase characters to their uppercase
 equivalents, and uppercase characters to lowercase.  If this function
-was bound to 'M-c', then typing 'M-c' would change the case of the
-character under point.  Typing 'M-1 0 M-c' would change the case of the
+was bound to ‘M-c’, then typing ‘M-c’ would change the case of the
+character under point.  Typing ‘M-1 0 M-c’ would change the case of the
 following 10 characters, leaving the cursor on the last character
 changed.
 
@@ -2937,23 +3077,15 @@ changed.
      invert_case_line (count, key)
           int count, key;
      {
-       register int start, end, i;
+       int start, end, i;
 
        start = rl_point;
 
        if (rl_point >= rl_end)
          return (0);
 
-       if (count < 0)
-         {
-           direction = -1;
-           count = -count;
-         }
-       else
-         direction = 1;
-
        /* Find the end of the range to modify. */
-       end = start + (count * direction);
+       end = start + count;
 
        /* Force it to be within range. */
        if (end > rl_end)
@@ -2964,6 +3096,11 @@ changed.
        if (start == end)
          return (0);
 
+       /* For positive arguments, put point after the last changed character. For
+          negative arguments, put point before the last changed character. */
+       rl_point = end;
+
+       /* Swap start and end if we are moving backwards */
        if (start > end)
          {
            int temp = start;
@@ -2982,8 +3119,7 @@ changed.
            else if (_rl_lowercase_p (rl_line_buffer[i]))
              rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
          }
-       /* Move point to on top of the last character changed. */
-       rl_point = (direction == 1) ? end - 1 : start;
+
        return (0);
      }
 
@@ -3002,7 +3138,6 @@ understands the EOF character or "exit" to exit the program.
      #include <stdlib.h>
      #include <string.h>
      #include <unistd.h>
-     #include <locale.h>
 
      /* Used for select(2) */
      #include <sys/types.h>
@@ -3010,12 +3145,19 @@ understands the EOF character or "exit" to exit the program.
 
      #include <signal.h>
 
+     #include <errno.h>
      #include <stdio.h>
 
+     #include <locale.h>
+
      /* Standard readline include files. */
      #include <readline/readline.h>
      #include <readline/history.h>
 
+     #if !defined (errno)
+     extern int errno;
+     #endif
+
      static void cb_linehandler (char *);
      static void sighandler (int);
 
@@ -3121,92 +3263,92 @@ or a network connection being broken.  There is a class of signals that
 can be sent to the process currently reading input from the keyboard.
 Since Readline changes the terminal attributes when it is called, it
 needs to perform special processing when such a signal is received in
-order to restore the terminal to a sane state, or provide application
-writers with functions to do so manually.
+order to restore the terminal to a sane state, or provide applications
+using Readline with functions to do so manually.
 
    Readline contains an internal signal handler that is installed for a
-number of signals ('SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM',
-'SIGTSTP', 'SIGTTIN', and 'SIGTTOU').  When one of these signals is
-received, the signal handler will reset the terminal attributes to those
-that were in effect before 'readline()' was called, reset the signal
-handling to what it was before 'readline()' was called, and resend the
-signal to the calling application.  If and when the calling
+number of signals (‘SIGINT’, ‘SIGQUIT’, ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’,
+‘SIGTSTP’, ‘SIGTTIN’, and ‘SIGTTOU’).  When Readline receives one of
+these signals, the signal handler will reset the terminal attributes to
+those that were in effect before ‘readline()’ was called, reset the
+signal handling to what it was before ‘readline()’ was called, and
+resend the signal to the calling application.  If and when the calling
 application's signal handler returns, Readline will reinitialize the
-terminal and continue to accept input.  When a 'SIGINT' is received, the
+terminal and continue to accept input.  When a ‘SIGINT’ is received, the
 Readline signal handler performs some additional work, which will cause
 any partially-entered line to be aborted (see the description of
-'rl_free_line_state()' below).
+‘rl_free_line_state()’ below).
 
-   There is an additional Readline signal handler, for 'SIGWINCH', which
+   There is an additional Readline signal handler, for ‘SIGWINCH’, which
 the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an 'xterm').  The Readline 'SIGWINCH' handler
+example, if a user resizes an ‘xterm’).  The Readline ‘SIGWINCH’ handler
 updates Readline's internal screen size information, and then calls any
-'SIGWINCH' signal handler the calling application has installed.
-Readline calls the application's 'SIGWINCH' signal handler without
+‘SIGWINCH’ signal handler the calling application has installed.
+Readline calls the application's ‘SIGWINCH’ signal handler without
 resetting the terminal to its original state.  If the application's
 signal handler does more than update its idea of the terminal size and
-return (for example, a 'longjmp' back to a main processing loop), it
-_must_ call 'rl_cleanup_after_signal()' (described below), to restore
+return (for example, a ‘longjmp’ back to a main processing loop), it
+_must_ call ‘rl_cleanup_after_signal()’ (described below), to restore
 the terminal state.
 
    When an application is using the callback interface (*note Alternate
 Interface::), Readline installs signal handlers only for the duration of
-the call to 'rl_callback_read_char'.  Applications using the callback
+the call to ‘rl_callback_read_char’.  Applications using the callback
 interface should be prepared to clean up Readline's state if they wish
 to handle the signal before the line handler completes and restores the
 terminal state.
 
    If an application using the callback interface wishes to have
 Readline install its signal handlers at the time the application calls
-'rl_callback_handler_install' and remove them only when a complete line
+‘rl_callback_handler_install’ and remove them only when a complete line
 of input has been read, it should set the
-'rl_persistent_signal_handlers' variable to a non-zero value.  This
+‘rl_persistent_signal_handlers’ variable to a non-zero value.  This
 allows an application to defer all of the handling of the signals
 Readline catches to Readline.  Applications should use this variable
 with care; it can result in Readline catching signals and not acting on
 them (or allowing the application to react to them) until the
-application calls 'rl_callback_read_char'.  This can result in an
+application calls ‘rl_callback_read_char’.  This can result in an
 application becoming less responsive to keyboard signals like SIGINT. If
 an application does not want or need to perform any signal handling, or
 does not need to do any processing between calls to
-'rl_callback_read_char', setting this variable may be desirable.
+‘rl_callback_read_char’, setting this variable may be appropriate.
 
    Readline provides two variables that allow application writers to
 control whether or not it will catch certain signals and act on them
 when they are received.  It is important that applications change the
-values of these variables only when calling 'readline()', not in a
+values of these variables only when calling ‘readline()’, not in a
 signal handler, so Readline's internal signal state is not corrupted.
 
  -- Variable: int rl_catch_signals
      If this variable is non-zero, Readline will install signal handlers
-     for 'SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP',
-     'SIGTTIN', and 'SIGTTOU'.
+     for ‘SIGINT’, ‘SIGQUIT’, ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’, ‘SIGTSTP’,
+     ‘SIGTTIN’, and ‘SIGTTOU’.
 
-     The default value of 'rl_catch_signals' is 1.
+     The default value of ‘rl_catch_signals’ is 1.
 
  -- Variable: int rl_catch_sigwinch
      If this variable is set to a non-zero value, Readline will install
-     a signal handler for 'SIGWINCH'.
+     a signal handler for ‘SIGWINCH’.
 
-     The default value of 'rl_catch_sigwinch' is 1.
+     The default value of ‘rl_catch_sigwinch’ is 1.
 
  -- Variable: int rl_persistent_signal_handlers
      If an application using the callback interface wishes Readline's
      signal handlers to be installed and active during the set of calls
-     to 'rl_callback_read_char' that constitutes an entire single line,
+     to ‘rl_callback_read_char’ that constitutes an entire single line,
      it should set this variable to a non-zero value.
 
-     The default value of 'rl_persistent_signal_handlers' is 0.
+     The default value of ‘rl_persistent_signal_handlers’ is 0.
 
  -- Variable: int rl_change_environment
      If this variable is set to a non-zero value, and Readline is
-     handling 'SIGWINCH', Readline will modify the LINES and COLUMNS
-     environment variables upon receipt of a 'SIGWINCH'
+     handling ‘SIGWINCH’, Readline will modify the LINES and COLUMNS
+     environment variables upon receipt of a ‘SIGWINCH’.
 
-     The default value of 'rl_change_environment' is 1.
+     The default value of ‘rl_change_environment’ is 1.
 
    If an application does not wish to have Readline catch any signals,
-or to handle signals other than those Readline catches ('SIGHUP', for
+or to handle signals other than those Readline catches (‘SIGHUP’, for
 example), Readline provides convenience functions to do the necessary
 terminal and internal state cleanup upon receipt of a signal.
 
@@ -3217,45 +3359,45 @@ terminal and internal state cleanup upon receipt of a signal.
 
  -- Function: void rl_cleanup_after_signal (void)
      This function will reset the state of the terminal to what it was
-     before 'readline()' was called, and remove the Readline signal
+     before ‘readline()’ was called, and remove the Readline signal
      handlers for all signals, depending on the values of
-     'rl_catch_signals' and 'rl_catch_sigwinch'.
+     ‘rl_catch_signals’ and ‘rl_catch_sigwinch’.
 
  -- Function: void rl_free_line_state (void)
      This will free any partial state associated with the current input
      line (undo information, any partial history entry, any
      partially-entered keyboard macro, and any partially-entered numeric
      argument).  This should be called before
-     'rl_cleanup_after_signal()'.  The Readline signal handler for
-     'SIGINT' calls this to abort the current input line.
+     ‘rl_cleanup_after_signal()’.  The Readline signal handler for
+     ‘SIGINT’ calls this to abort the current input line.
 
  -- Function: void rl_reset_after_signal (void)
      This will reinitialize the terminal and reinstall any Readline
-     signal handlers, depending on the values of 'rl_catch_signals' and
-     'rl_catch_sigwinch'.
+     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
+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
+‘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
+     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 it receives a 'SIGWINCH'.
+   If an application does not wish Readline to catch ‘SIGWINCH’, it may
+call ‘rl_resize_terminal()’ or ‘rl_set_screen_size()’ to force Readline
+to update its idea of the terminal size when it receives a ‘SIGWINCH’.
 
  -- Function: void rl_echo_signal_char (int sig)
      If an application wishes to install its own signal handlers, but
      still have Readline display characters that generate signals,
-     calling this function with SIG set to 'SIGINT', 'SIGQUIT', or
-     'SIGTSTP' will display the character generating that signal.
+     calling this function with SIG set to ‘SIGINT’, ‘SIGQUIT’, or
+     ‘SIGTSTP’ will display the character generating that signal.
 
  -- Function: void rl_resize_terminal (void)
      Update Readline's internal screen size by reading values from the
@@ -3264,12 +3406,12 @@ to update its idea of the terminal size when it receives a 'SIGWINCH'.
  -- Function: void rl_set_screen_size (int rows, int cols)
      Set Readline's idea of the terminal size to ROWS rows and COLS
      columns.  If either ROWS or COLUMNS is less than or equal to 0,
-     Readline's idea of that terminal dimension is unchanged.  This is
-     intended to tell Readline the physical dimensions of the terminal,
-     and is used internally to calculate the maximum number of
-     characters that may appear on a single line and on the screen.
+     Readline doesn't change that terminal dimension.  This is intended
+     to tell Readline the physical dimensions of the terminal, and is
+     used internally to calculate the maximum number of characters that
+     may appear on a single line and on the screen.
 
-   If an application does not want to install a 'SIGWINCH' handler, but
+   If an application does not want to install a ‘SIGWINCH’ handler, but
 is still interested in the screen dimensions, it may query Readline's
 idea of the screen size.
 
@@ -3285,14 +3427,14 @@ idea of the screen size.
 handlers.
 
  -- Function: int rl_set_signals (void)
-     Install Readline's signal handler for 'SIGINT', 'SIGQUIT',
-     'SIGTERM', 'SIGHUP', 'SIGALRM', 'SIGTSTP', 'SIGTTIN', 'SIGTTOU',
-     and 'SIGWINCH', depending on the values of 'rl_catch_signals' and
-     'rl_catch_sigwinch'.
+     Install Readline's signal handler for ‘SIGINT’, ‘SIGQUIT’,
+     ‘SIGTERM’, ‘SIGHUP’, ‘SIGALRM’, ‘SIGTSTP’, ‘SIGTTIN’, ‘SIGTTOU’,
+     and ‘SIGWINCH’, depending on the values of ‘rl_catch_signals’ and
+     ‘rl_catch_sigwinch’.
 
  -- Function: int rl_clear_signals (void)
      Remove all of the Readline signal handlers installed by
-     'rl_set_signals()'.
+     ‘rl_set_signals()’.
 
 \1f
 File: readline.info,  Node: Custom Completers,  Prev: Readline Signal Handling,  Up: Programming with GNU Readline
@@ -3330,49 +3472,50 @@ functions must do, and provides an example.
 
    There are three major functions used to perform completion:
 
-  1. The user-interface function 'rl_complete()'.  This function is
+  1. The user-interface function ‘rl_complete()’.  This function is
      called with the same arguments as other bindable Readline
      functions: COUNT and INVOKING_KEY.  It isolates the word to be
-     completed and calls 'rl_completion_matches()' to generate a list of
+     completed and calls ‘rl_completion_matches()’ to generate a list of
      possible completions.  It then either lists the possible
      completions, inserts the possible completions, or actually performs
      the completion, depending on which behavior is desired.
 
-  2. The internal function 'rl_completion_matches()' uses an
-     application-supplied "generator" function to generate the list of
+  2. The internal function ‘rl_completion_matches()’ uses an
+     application-supplied “generator” function to generate the list of
      possible matches, and then returns the array of these matches.  The
      caller should place the address of its generator function in
-     'rl_completion_entry_function'.
+     ‘rl_completion_entry_function’.
 
   3. The generator function is called repeatedly from
-     'rl_completion_matches()', returning a string each time.  The
+     ‘rl_completion_matches()’, returning a string each time.  The
      arguments to the generator function are TEXT and STATE.  TEXT is
      the partial word to be completed.  STATE is zero the first time the
      function is called, allowing the generator to perform any necessary
-     initialization, and a positive non-zero integer for each subsequent
-     call.  The generator function returns '(char *)NULL' to inform
-     'rl_completion_matches()' that there are no more possibilities
+     initialization, and a positive integer for each subsequent call.
+     The generator function returns ‘(char *)NULL’ to inform
+     ‘rl_completion_matches()’ that there are no more possibilities
      left.  Usually the generator function computes the list of possible
      completions when STATE is zero, and returns them one at a time on
      subsequent calls.  Each string the generator function returns as a
-     match must be allocated with 'malloc()'; Readline frees the strings
+     match must be allocated with ‘malloc()’; Readline frees the strings
      when it has finished with them.  Such a generator function is
-     referred to as an "application-specific completion function".
+     referred to as an “application-specific completion function”.
 
  -- Function: int rl_complete (int ignore, int invoking_key)
      Complete the word at or before point.  You have supplied the
      function that does the initial simple matching selection algorithm
-     (see 'rl_completion_matches()').  The default is to do filename
+     (see ‘rl_completion_matches()’).  The default is to do filename
      completion.
 
  -- Variable: rl_compentry_func_t * rl_completion_entry_function
      This is a pointer to the generator function for
-     'rl_completion_matches()'.  If the value of
-     'rl_completion_entry_function' is 'NULL' then the default filename
-     generator function, 'rl_filename_completion_function()', is used.
-     An "application-specific completion function" is a function whose
-     address is assigned to 'rl_completion_entry_function' and whose
-     return values are used to generate possible completions.
+     ‘rl_completion_matches()’.  If the value of
+     ‘rl_completion_entry_function’ is ‘NULL’ then Readline uses the
+     default filename generator function,
+     ‘rl_filename_completion_function()’.  An “application-specific
+     completion function” is a function whose address is assigned to
+     ‘rl_completion_entry_function’ and whose return values are used to
+     generate possible completions.
 
 \1f
 File: readline.info,  Node: Completion Functions,  Next: Completion Variables,  Prev: How Completing Works,  Up: Custom Completers
@@ -3385,50 +3528,50 @@ Readline.
 
  -- Function: int rl_complete_internal (int what_to_do)
      Complete the word at or before point.  WHAT_TO_DO says what to do
-     with the completion.  A value of '?' means list the possible
-     completions.  'TAB' means do standard completion.  '*' means insert
-     all of the possible completions.  '!' means to display all of the
+     with the completion.  A value of ‘?’ means list the possible
+     completions.  ‘TAB’ means do standard completion.  ‘*’ means insert
+     all of the possible completions.  ‘!’ means to display all of the
      possible completions, if there is more than one, as well as
-     performing partial completion.  '@' is similar to '!', but possible
-     completions are not listed if the possible completions share a
+     performing partial completion.  ‘@’ is similar to ‘!’, but does not
+     list possible completions if the possible completions share a
      common prefix.
 
  -- Function: int rl_complete (int ignore, int invoking_key)
      Complete the word at or before point.  You have supplied the
      function that does the initial simple matching selection algorithm
-     (see 'rl_completion_matches()' and 'rl_completion_entry_function').
+     (see ‘rl_completion_matches()’ and ‘rl_completion_entry_function’).
      The default is to do filename completion.  This calls
-     'rl_complete_internal()' with an argument depending on
+     ‘rl_complete_internal()’ with an argument depending on
      INVOKING_KEY.
 
  -- Function: int rl_possible_completions (int count, int invoking_key)
-     List the possible completions.  See description of 'rl_complete
-     ()'.  This calls 'rl_complete_internal()' with an argument of '?'.
+     List the possible completions.  See description of ‘rl_complete()’.
+     This calls ‘rl_complete_internal()’ with an argument of ‘?’.
 
  -- Function: int rl_insert_completions (int count, int invoking_key)
      Insert the list of possible completions into the line, deleting the
-     partially-completed word.  See description of 'rl_complete()'.
-     This calls 'rl_complete_internal()' with an argument of '*'.
+     partially-completed word.  See description of ‘rl_complete()’.
+     This calls ‘rl_complete_internal()’ with an argument of ‘*’.
 
  -- Function: int rl_completion_mode (rl_command_func_t *cfunc)
-     Returns the appropriate value to pass to 'rl_complete_internal()'
+     Returns the appropriate value to pass to ‘rl_complete_internal()’
      depending on whether CFUNC was called twice in succession and the
-     values of the 'show-all-if-ambiguous' and 'show-all-if-unmodified'
+     values of the ‘show-all-if-ambiguous’ and ‘show-all-if-unmodified’
      variables.  Application-specific completion functions may use this
-     function to present the same interface as 'rl_complete()'.
+     function to present the same interface as ‘rl_complete()’.
 
  -- Function: char ** rl_completion_matches (const char *text,
           rl_compentry_func_t *entry_func)
      Returns an array of strings which is a list of completions for
-     TEXT.  If there are no completions, returns 'NULL'.  The first
+     TEXT.  If there are no completions, returns ‘NULL’.  The first
      entry in the returned array is the substitution for TEXT.  The
      remaining entries are the possible completions.  The array is
-     terminated with a 'NULL' pointer.
+     terminated with a ‘NULL’ pointer.
 
-     ENTRY_FUNC is a function of two args, and returns a 'char *'.  The
+     ENTRY_FUNC is a function of two args, and returns a ‘char *’.  The
      first argument is TEXT.  The second is a state argument; it is zero
      on the first call, and non-zero on subsequent calls.  ENTRY_FUNC
-     returns a 'NULL' pointer to the caller when there are no more
+     returns a ‘NULL’ pointer to the caller when there are no more
      matches.
 
  -- Function: char * rl_filename_completion_function (const char *text,
@@ -3441,7 +3584,7 @@ Readline.
  -- Function: char * rl_username_completion_function (const char *text,
           int state)
      A completion generator for usernames.  TEXT contains a partial
-     username preceded by a random character (usually '~').  As with all
+     username preceded by a random character (usually ‘~’).  As with all
      completion generators, STATE is zero on the first call and non-zero
      for subsequent calls.
 
@@ -3452,75 +3595,77 @@ File: readline.info,  Node: Completion Variables,  Next: A Short Completion Exam
 --------------------------
 
  -- Variable: rl_compentry_func_t * rl_completion_entry_function
-     A pointer to the generator function for 'rl_completion_matches()'.
-     'NULL' means to use 'rl_filename_completion_function()', the
+     A pointer to the generator function for ‘rl_completion_matches()’.
+     ‘NULL’ means to use ‘rl_filename_completion_function()’, the
      default filename completer.
 
  -- Variable: rl_completion_func_t * rl_attempted_completion_function
      A pointer to an alternative function to create matches.  The
      function is called with TEXT, START, and END.  START and END are
-     indices in 'rl_line_buffer' defining the boundaries of TEXT, which
-     is a character string.  If this function exists and returns 'NULL',
-     or if this variable is set to 'NULL', then 'rl_complete()' will
-     call the value of 'rl_completion_entry_function' to generate
-     matches, otherwise the array of strings returned will be used.  If
-     this function sets the 'rl_attempted_completion_over' variable to a
-     non-zero value, Readline will not perform its default completion
-     even if this function returns no matches.
+     indices in ‘rl_line_buffer’ defining the boundaries of TEXT, which
+     is a character string.  If this function exists and returns ‘NULL’,
+     or if this variable is set to ‘NULL’, then ‘rl_complete()’ will
+     call the value of ‘rl_completion_entry_function’ to generate
+     matches, otherwise completion will use the array of strings this
+     function returns.  If this function sets the
+     ‘rl_attempted_completion_over’ variable to a non-zero value,
+     Readline will not perform its default completion even if this
+     function returns no matches.
 
  -- Variable: rl_quote_func_t * rl_filename_quoting_function
      A pointer to a function that will quote a filename in an
-     application-specific fashion.  This is called if filename
-     completion is being attempted and one of the characters in
-     'rl_filename_quote_characters' appears in a completed filename.
+     application-specific fashion.  Readline calls this function during
+     filename completion if one of the characters in
+     ‘rl_filename_quote_characters’ appears in a completed filename.
      The function is called with TEXT, MATCH_TYPE, and QUOTE_POINTER.
      The TEXT is the filename to be quoted.  The MATCH_TYPE is either
-     'SINGLE_MATCH', if there is only one completion match, or
-     'MULT_MATCH'.  Some functions use this to decide whether or not to
+     ‘SINGLE_MATCH’, if there is only one completion match, or
+     ‘MULT_MATCH’.  Some functions use this to decide whether or not to
      insert a closing quote character.  The QUOTE_POINTER is a pointer
      to any opening quote character the user typed.  Some functions
-     choose to reset this character.
+     choose to reset this character if they decide to quote the filename
+     in a different style.  It's preferable to preserve the user's
+     quoting as much as possible - it's less disruptive.
 
  -- Variable: rl_dequote_func_t * rl_filename_dequoting_function
      A pointer to a function that will remove application-specific
-     quoting characters from a filename before completion is attempted,
-     so those characters do not interfere with matching the text against
+     quoting characters from a filename before attempting completion, so
+     those characters do not interfere with matching the text against
      names in the filesystem.  It is called with TEXT, the text of the
      word to be dequoted, and QUOTE_CHAR, which is the quoting character
-     that delimits the filename (usually ''' or '"').  If QUOTE_CHAR is
-     zero, the filename was not in an embedded string.
+     that delimits the filename (usually ‘'’ or ‘"’).  If QUOTE_CHAR is
+     zero, the filename was not in a quoted string.
 
  -- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
      A pointer to a function to call that determines whether or not a
      specific character in the line buffer is quoted, according to
-     whatever quoting mechanism the program calling Readline uses.  The
-     function is called with two arguments: TEXT, the text of the line,
-     and INDEX, the index of the character in the line.  It is used to
-     decide whether a character found in
-     'rl_completer_word_break_characters' should be used to break words
-     for the completer.
+     whatever quoting mechanism the application uses.  The function is
+     called with two arguments: TEXT, the text of the line, and INDEX,
+     the index of the character in the line.  It is used to decide
+     whether a character found in ‘rl_completer_word_break_characters’
+     should be used to break words for the completer.
 
  -- Variable: rl_compignore_func_t * rl_ignore_some_completions_function
-     This function, if defined, is called by the completer when real
-     filename completion is done, after all the matching names have been
-     generated.  It is passed a 'NULL' terminated array of matches.  The
-     first element ('matches[0]') is the maximal substring common to all
-     matches.  This function can re-arrange the list of matches as
-     required, but each element deleted from the array must be freed.
+     Readline calls this function, if defined, when filename completion
+     is done, after all the matching names have been generated.  It is
+     passed a ‘NULL’ terminated array of matches.  The first element
+     (‘matches[0]’) is the maximal substring common to all matches.
+     This function can re-arrange the list of matches as required, but
+     must free each element it deletes from the array.
 
  -- Variable: rl_icppfunc_t * rl_directory_completion_hook
      This function, if defined, is allowed to modify the directory
-     portion of filenames Readline completes.  It could be used to
-     expand symbolic links or shell variables in pathnames.  It is
-     called with the address of a string (the current directory name) as
-     an argument, and may modify that string.  If the string is replaced
-     with a new string, the old value should be freed.  Any modified
-     directory name should have a trailing slash.  The modified value
-     will be used as part of the completion, replacing the directory
-     portion of the pathname the user typed.  At the least, even if no
-     other expansion is performed, this function should remove any quote
-     characters from the directory name, because its result will be
-     passed directly to 'opendir()'.
+     portion of filenames during completion.  It could be used to expand
+     symbolic links or shell variables in pathnames.  It is called with
+     the address of a string (the current directory name) as an
+     argument, and may modify that string.  If the function replaces the
+     string with a new string, it should free the old value.  Any
+     modified directory name should have a trailing slash.  The modified
+     value will be used as part of the completion, replacing the
+     directory portion of the pathname the user typed.  At the least,
+     even if no other expansion is performed, this function should
+     remove any quote characters from the directory name, because its
+     result will be passed directly to ‘opendir()’.
 
      The directory completion hook returns an integer that should be
      non-zero if the function modifies its directory argument.  The
@@ -3530,13 +3675,13 @@ File: readline.info,  Node: Completion Variables,  Next: A Short Completion Exam
      If non-zero, this is the address of a function to call when
      completing a directory name.  This function takes the address of
      the directory name to be modified as an argument.  Unlike
-     'rl_directory_completion_hook', it only modifies the directory name
-     used in 'opendir', not what is displayed when the possible
-     completions are printed or inserted.  It is called before
+     ‘rl_directory_completion_hook’, it only modifies the directory name
+     used in ‘opendir()’, not what Readline displays when it prints or
+     inserts the possible completions.  Readline calls this before
      rl_directory_completion_hook.  At the least, even if no other
      expansion is performed, this function should remove any quote
      characters from the directory name, because its result will be
-     passed directly to 'opendir()'.
+     passed directly to ‘opendir()’.
 
      The directory rewrite hook returns an integer that should be
      non-zero if the function modifies its directory argument.  The
@@ -3545,9 +3690,9 @@ File: readline.info,  Node: Completion Variables,  Next: A Short Completion Exam
  -- Variable: rl_icppfunc_t * rl_filename_stat_hook
      If non-zero, this is the address of a function for the completer to
      call before deciding which character to append to a completed name.
-     This function modifies its filename name argument, and the modified
-     value is passed to 'stat()' to determine the file's type and
-     characteristics.  This function does not need to remove quote
+     This function modifies its filename name argument, and Readline
+     passes the modified value to ‘stat()’ to determine the file's type
+     and characteristics.  This function does not need to remove quote
      characters from the filename.
 
      The stat hook returns an integer that should be non-zero if the
@@ -3555,66 +3700,88 @@ File: readline.info,  Node: Completion Variables,  Next: A Short Completion Exam
      modify the directory argument if it returns 0.
 
  -- Variable: rl_dequote_func_t * rl_filename_rewrite_hook
-     If non-zero, this is the address of a function called when reading
-     directory entries from the filesystem for completion and comparing
-     them to the partial word to be completed.  The function should
+     If non-zero, this is the address of a function for Readline to call
+     when reading directory entries from the filesystem for completion
+     and comparing them to the filename portion of the partial word
+     being completed.  It modifies the filesystem entries, as opposed to
+     ‘rl_completion_rewrite_hook’, which modifies the word being
+     completed.  The function takes two arguments: FNAME, the filename
+     to be converted, and FNLEN, its length in bytes.  It must either
+     return its first argument (if no conversion takes place) or the
+     converted filename in newly-allocated memory.  The function should
      perform any necessary application or system-specific conversion on
      the filename, such as converting between character sets or
      converting from a filesystem format to a character input format.
-     The function takes two arguments: FNAME, the filename to be
-     converted, and FNLEN, its length in bytes.  It must either return
-     its first argument (if no conversion takes place) or the converted
-     filename in newly-allocated memory.  The converted form is used to
-     compare against the word to be completed, and, if it matches, is
-     added to the list of matches.  Readline will free the allocated
-     string.
+     Readline compares the converted form against the word to be
+     completed, and, if it matches, adds it to the list of matches.
+     Readline will free the allocated string.
+
+ -- Variable: rl_dequote_func_t * rl_completion_rewrite_hook
+     If non-zero, this is the address of a function for Readline to call
+     before comparing the filename portion of a word to be completed
+     with directory entries from the filesystem.  It modifies the word
+     being completed, as opposed to ‘rl_filename_rewrite_hook’, which
+     modifies filesystem entries.  The function takes two arguments:
+     FNAME, the word to be converted, after any
+     ‘rl_filename_dequoting_function’ has been applied, and FNLEN, its
+     length in bytes.  It must either return its first argument (if no
+     conversion takes place) or the converted filename in
+     newly-allocated memory.  The function should perform any necessary
+     application or system-specific conversion on the filename, such as
+     converting between character sets or converting from a character
+     input format to some other format.  Readline compares the converted
+     form against directory entries, after their potential modification
+     by ‘rl_filename_rewrite_hook’, and adds any matches to the list of
+     matches.  Readline will free the allocated string.
 
  -- Variable: rl_compdisp_func_t * rl_completion_display_matches_hook
      If non-zero, then this is the address of a function to call when
      completing a word would normally display the list of possible
-     matches.  This function is called in lieu of Readline displaying
-     the list.  It takes three arguments: ('char **'MATCHES, 'int'
-     NUM_MATCHES, 'int' MAX_LENGTH) where MATCHES is the array of
+     matches.  Readline calls this function instead of displaying the
+     list itself.  It takes three arguments: (‘char **’MATCHES, ‘int’
+     NUM_MATCHES, ‘int’ MAX_LENGTH) where MATCHES is the array of
      matching strings, NUM_MATCHES is the number of strings in that
      array, and MAX_LENGTH is the length of the longest string in that
      array.  Readline provides a convenience function,
-     'rl_display_match_list', that takes care of doing the display to
+     ‘rl_display_match_list’, that takes care of doing the display to
      Readline's output stream.  You may call that function from this
      hook.
 
  -- Variable: const char * rl_basic_word_break_characters
      The basic list of characters that signal a break between words for
      the completer routine.  The default value of this variable is the
-     characters which break words for completion in Bash: '"
-     \t\n\"\\'`@$><=;|&{("'.
+     characters which break words for completion in Bash: "
+     \t\n\"\\'`@$><=;|&{(".
 
  -- Variable: const char * rl_basic_quote_characters
-     A list of quote characters which can cause a word break.
+     A list of quote characters which can cause a word break.  The
+     default value includes single and double quotes.
 
  -- Variable: const char * rl_completer_word_break_characters
      The list of characters that signal a break between words for
-     'rl_complete_internal()'.  The default list is the value of
-     'rl_basic_word_break_characters'.
+     ‘rl_complete_internal()’.  These characters determine how Readline
+     decides what to complete.  The default list is the value of
+     ‘rl_basic_word_break_characters’.
 
  -- Variable: rl_cpvfunc_t * rl_completion_word_break_hook
      If non-zero, this is the address of a function to call when
      Readline is deciding where to separate words for word completion.
      It should return a character string like
-     'rl_completer_word_break_characters' to be used to perform the
+     ‘rl_completer_word_break_characters’ to be used to perform the
      current completion.  The function may choose to set
-     'rl_completer_word_break_characters' itself.  If the function
-     returns 'NULL', 'rl_completer_word_break_characters' is used.
+     ‘rl_completer_word_break_characters’ itself.  If the function
+     returns ‘NULL’, Readline uses ‘rl_completer_word_break_characters’.
 
  -- Variable: const char * rl_completer_quote_characters
      A list of characters which can be used to quote a substring of the
      line.  Completion occurs on the entire substring, and within the
-     substring 'rl_completer_word_break_characters' are treated as any
+     substring, ‘rl_completer_word_break_characters’ are treated as any
      other character, unless they also appear within this list.
 
  -- Variable: const char * rl_filename_quote_characters
-     A list of characters that cause a filename to be quoted by the
-     completer when they appear in a completed filename.  The default is
-     the null string.
+     A list of characters that cause Readline to quote a filename when
+     they appear in a completed filename.  The default is the null
+     string.
 
  -- Variable: const char * rl_special_prefixes
      The list of characters that are word break characters, but should
@@ -3624,86 +3791,97 @@ File: readline.info,  Node: Completion Variables,  Next: A Short Completion Exam
      complete shell variables and hostnames.
 
  -- Variable: int rl_completion_query_items
-     Up to this many items will be displayed in response to a
-     possible-completions call.  After that, Readline asks the user for
+     This determines the maximum number of items that
+     possible-completions will display unconditionally.  If there are
+     more possible completions than this, Readline asks the user for
      confirmation before displaying them.  The default value is 100.  A
      negative value indicates that Readline should never ask for
      confirmation.
 
  -- Variable: int rl_completion_append_character
      When a single completion alternative matches at the end of the
-     command line, this character is appended to the inserted completion
-     text.  The default is a space character (' ').  Setting this to the
-     null character ('\0') prevents anything being appended
+     command line, Readline appends this character to the inserted
+     completion text.  The default is a space character (‘ ’).  Setting
+     this to the null character (‘\0’) prevents anything being appended
      automatically.  This can be changed in application-specific
      completion functions to provide the "most sensible word separator
      character" according to an application-specific command line syntax
-     specification.  It is set to the default before any
-     application-specific completion function is called, and may only be
-     changed within such a function.
+     specification.  It is set to the default before calling any
+     application-specific completion function, 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
-     matches at the end of the command line, as described above.  It is
-     set to 0 before any application-specific completion function is
-     called, and may only be changed within such a function.
-
- -- Variable: int rl_completion_quote_character
-     When Readline is completing quoted text, as delimited by one of the
-     characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
-     to the quoting character found.  This is set before any
-     application-specific completion function is called.
+     If non-zero, Readline will not append the
+     RL_COMPLETION_APPEND_CHARACTER to matches at the end of the command
+     line, as described above.  It is set to 0 before calling any
+     application-specific completion function, and may only be changed
+     within such a function.
 
  -- Variable: int rl_completion_suppress_quote
      If non-zero, Readline does not append a matching quote character
      when performing completion on a quoted string.  It is set to 0
-     before any application-specific completion function is called, and
+     before calling any application-specific completion function, and
      may only be changed within such a function.
 
  -- Variable: int rl_completion_found_quote
      When Readline is completing quoted text, it sets this variable to a
      non-zero value if the word being completed contains or is delimited
      by any quoting characters, including backslashes.  This is set
-     before any application-specific completion function is called.
+     before calling any application-specific completion function.
+
+ -- Variable: int rl_completion_quote_character
+     When Readline is completing quoted text, as delimited by one of the
+     characters in RL_COMPLETER_QUOTE_CHARACTERS, it sets this variable
+     to the quoting character it found.  This is set before calling any
+     application-specific completion function.
 
  -- Variable: int rl_completion_mark_symlink_dirs
-     If non-zero, a slash will be appended to completed filenames that
+     If non-zero, Readline appends a slash to completed filenames that
      are symbolic links to directory names, subject to the value of the
      user-settable MARK-DIRECTORIES variable.  This variable exists so
      that application-specific completion functions can override the
      user's global preference (set via the MARK-SYMLINKED-DIRECTORIES
      Readline variable) if appropriate.  This variable is set to the
-     user's preference before any application-specific completion
-     function is called, so unless that function modifies the value, the
-     user's preferences are honored.
+     user's preference before calling any application-specific
+     completion function, so unless that function modifies the value,
+     Readline will honor the user's preferences.
 
  -- Variable: int rl_ignore_completion_duplicates
-     If non-zero, then duplicates in the matches are removed.  The
-     default is 1.
+     If non-zero, then Readline removes duplicates in the set of
+     possible completions.  The default is 1.
 
  -- Variable: int rl_filename_completion_desired
-     Non-zero means that the results of the matches are to be treated as
-     filenames.  This is _always_ zero when completion is attempted, and
-     can only be changed within an application-specific completion
-     function.  If it is set to a non-zero value by such a function,
-     directory names have a slash appended and Readline attempts to
-     quote completed filenames if they contain any characters in
-     'rl_filename_quote_characters' and 'rl_filename_quoting_desired' is
+     A non-zero value means that Readline should treat the results of
+     the matches as filenames.  This is _always_ zero when completion is
+     attempted, and can only be changed within an application-specific
+     completion function.  If it is set to a non-zero value by such a
+     function, Readline appends a slash to directory names and attempts
+     to quote completed filenames if they contain any characters in
+     ‘rl_filename_quote_characters’ and ‘rl_filename_quoting_desired’ is
      set to a non-zero value.
 
  -- Variable: int rl_filename_quoting_desired
-     Non-zero means that the results of the matches are to be quoted
-     using double quotes (or an application-specific quoting mechanism)
-     if the completed filename contains any characters in
-     'rl_filename_quote_chars'.  This is _always_ non-zero when
+     A non-zero value means that Readline should quote the results of
+     the matches using double quotes (or an application-specific quoting
+     mechanism) if the completed filename contains any characters in
+     ‘rl_filename_quote_chars’.  This is _always_ non-zero when
      completion is attempted, and can only be changed within an
-     application-specific completion function.  The quoting is effected
+     application-specific completion function.  The quoting is performed
      via a call to the function pointed to by
-     'rl_filename_quoting_function'.
+     ‘rl_filename_quoting_function’.
+
+ -- Variable: int rl_full_quoting_desired
+     A non-zero value means that Readline should apply filename-style
+     quoting, including any application-specified quoting mechanism, to
+     all completion matches even if it is not otherwise treating the
+     matches as filenames.  This is _always_ zero when completion is
+     attempted, and can only be changed within an application-specific
+     completion function.  The quoting is performed via a call to the
+     function pointed to by ‘rl_filename_quoting_function’.
 
  -- Variable: int rl_attempted_completion_over
      If an application-specific completion function assigned to
-     'rl_attempted_completion_function' sets this variable to a non-zero
+     ‘rl_attempted_completion_function’ sets this variable to a non-zero
      value, Readline will not perform its default filename completion
      even if the application's completion function returns no matches.
      It should be set only by an application's completion function.
@@ -3713,27 +3891,27 @@ File: readline.info,  Node: Completion Variables,  Next: A Short Completion Exam
      the list of completions (which implies that it cannot remove any
      duplicate completions).  The default value is 1, which means that
      Readline will sort the completions and, depending on the value of
-     'rl_ignore_completion_duplicates', will attempt to remove duplicate
+     ‘rl_ignore_completion_duplicates’, will attempt to remove duplicate
      matches.
 
  -- Variable: int rl_completion_type
      Set to a character describing the type of completion Readline is
      currently attempting; see the description of
-     'rl_complete_internal()' (*note Completion Functions::) for the
+     ‘rl_complete_internal()’ (*note Completion Functions::) for the
      list of characters.  This is set to the appropriate value before
-     any application-specific completion function is called, allowing
-     such functions to present the same interface as 'rl_complete()'.
+     calling any application-specific completion function, so these
+     functions can present the same interface as ‘rl_complete()’.
 
  -- Variable: int rl_completion_invoking_key
      Set to the final character in the key sequence that invoked one of
-     the completion functions that call 'rl_complete_internal()'.  This
-     is set to the appropriate value before any application-specific
-     completion function is called.
+     the completion functions that call ‘rl_complete_internal()’.  This
+     is set to the appropriate value before calling any
+     application-specific completion function.
 
  -- Variable: int rl_inhibit_completion
-     If this variable is non-zero, completion is inhibited.  The
-     completion character will be inserted as any other bound to
-     'self-insert'.
+     If this variable is non-zero, Readline does not perform completion,
+     even if a key binding indicates it should.  The completion
+     character is inserted as if it were bound to ‘self-insert’.
 
 \1f
 File: readline.info,  Node: A Short Completion Example,  Prev: Completion Variables,  Up: Custom Completers
@@ -3742,9 +3920,9 @@ File: readline.info,  Node: A Short Completion Example,  Prev: Completion Variab
 --------------------------------
 
 Here is a small application demonstrating the use of the GNU Readline
-library.  It is called 'fileman', and the source code resides in
-'examples/fileman.c'.  This sample application provides completion of
-command names, line editing features, and access to the history list.
+library.  It is called ‘fileman’, and the source code resides in
+‘examples/fileman.c’.  This sample application provides command name
+completion, line editing features, and access to the history list.
 
      /* fileman.c -- A tiny application which demonstrates how to use the
         GNU Readline library.  This application interactively allows users
@@ -3822,8 +4000,8 @@ command names, line editing features, and access to the history list.
      };
 
      /* Forward declarations. */
-     char *stripwhite ();
-     COMMAND *find_command ();
+     char *stripwhite (char *);
+     COMMAND *find_command (char *);
 
      /* The name of this program, as taken from argv[0]. */
      char *progname;
@@ -3832,8 +4010,7 @@ command names, line editing features, and access to the history list.
      int done;
 
      char *
-     dupstr (s)
-          char *s;
+     dupstr (char *s)
      {
        char *r;
 
@@ -3842,9 +4019,8 @@ command names, line editing features, and access to the history list.
        return (r);
      }
 
-     main (argc, argv)
-          int argc;
-          char **argv;
+     int
+     main (int argc, char **argv)
      {
        char *line, *s;
 
@@ -3880,8 +4056,7 @@ command names, line editing features, and access to the history list.
 
      /* Execute a command line. */
      int
-     execute_line (line)
-          char *line;
+     execute_line (char *line)
      {
        register int i;
        COMMAND *command;
@@ -3920,8 +4095,7 @@ command names, line editing features, and access to the history list.
      /* Look up NAME as the name of a command, and return a pointer to that
         command.  Return a NULL pointer if NAME isn't a command name. */
      COMMAND *
-     find_command (name)
-          char *name;
+     find_command (char *name)
      {
        register int i;
 
@@ -3935,8 +4109,7 @@ command names, line editing features, and access to the history list.
      /* Strip whitespace from the start and end of STRING.  Return a pointer
         into STRING. */
      char *
-     stripwhite (string)
-          char *string;
+     stripwhite (char *string)
      {
        register char *s, *t;
 
@@ -3960,13 +4133,14 @@ command names, line editing features, and access to the history list.
      /*                                                                  */
      /* **************************************************************** */
 
-     char *command_generator PARAMS((const char *, int));
-     char **fileman_completion PARAMS((const char *, int, int));
+     char *command_generator (const char *, int);
+     char **fileman_completion (const char *, int, int);
 
      /* Tell the GNU Readline library how to complete.  We want to try to complete
         on command names if this is the first word in the line, or on filenames
         if not. */
-     initialize_readline ()
+     void
+     initialize_readline (void)
      {
        /* Allow conditional parsing of the ~/.inputrc file. */
        rl_readline_name = "FileMan";
@@ -3981,9 +4155,7 @@ command names, line editing features, and access to the history list.
         in case we want to do some simple parsing.  Return the array of matches,
         or NULL if there aren't any. */
      char **
-     fileman_completion (text, start, end)
-          const char *text;
-          int start, end;
+     fileman_completion (const char *text, int start, int end)
      {
        char **matches;
 
@@ -4002,9 +4174,7 @@ command names, line editing features, and access to the history list.
         to start from scratch; without any state (i.e. STATE == 0), then we
         start at the top of the list. */
      char *
-     command_generator (text, state)
-          const char *text;
-          int state;
+     command_generator (const char *text, int state)
      {
        static int list_index, len;
        char *name;
@@ -4042,40 +4212,40 @@ command names, line editing features, and access to the history list.
      static char syscom[1024];
 
      /* List the file(s) named in arg. */
-     com_list (arg)
-          char *arg;
+     int
+     com_list (char *arg)
      {
        if (!arg)
          arg = "";
 
-       sprintf (syscom, "ls -FClg %s", arg);
+       snprintf (syscom, sizeof (syscom), "ls -FClg %s", arg);
        return (system (syscom));
      }
 
-     com_view (arg)
-          char *arg;
+     int
+     com_view (char *arg)
      {
        if (!valid_argument ("view", arg))
          return 1;
 
      #if defined (__MSDOS__)
        /* more.com doesn't grok slashes in pathnames */
-       sprintf (syscom, "less %s", arg);
+       snprintf (syscom, sizeof (syscom), "less %s", arg);
      #else
-       sprintf (syscom, "more %s", arg);
+       snprintf (syscom, sizeof (syscom), "more %s", arg);
      #endif
        return (system (syscom));
      }
 
-     com_rename (arg)
-          char *arg;
+     int
+     com_rename (char *arg)
      {
        too_dangerous ("rename");
        return (1);
      }
 
-     com_stat (arg)
-          char *arg;
+     int
+     com_stat (char *arg)
      {
        struct stat finfo;
 
@@ -4102,8 +4272,8 @@ command names, line editing features, and access to the history list.
        return (0);
      }
 
-     com_delete (arg)
-          char *arg;
+     int
+     com_delete (char *arg)
      {
        too_dangerous ("delete");
        return (1);
@@ -4111,8 +4281,8 @@ command names, line editing features, and access to the history list.
 
      /* Print out help for ARG, or for all of the commands if ARG is
         not present. */
-     com_help (arg)
-          char *arg;
+     int
+     com_help (char *arg)
      {
        register int i;
        int printed = 0;
@@ -4150,8 +4320,8 @@ command names, line editing features, and access to the history list.
      }
 
      /* Change to the directory ARG. */
-     com_cd (arg)
-          char *arg;
+     int
+     com_cd (char *arg)
      {
        if (chdir (arg) == -1)
          {
@@ -4164,8 +4334,8 @@ command names, line editing features, and access to the history list.
      }
 
      /* Print out the current working directory. */
-     com_pwd (ignore)
-          char *ignore;
+     int
+     com_pwd (char *ignore)
      {
        char dir[1024], *s;
 
@@ -4181,16 +4351,16 @@ command names, line editing features, and access to the history list.
      }
 
      /* The user wishes to quit using this program.  Just set DONE non-zero. */
-     com_quit (arg)
-          char *arg;
+     int
+     com_quit (char *arg)
      {
        done = 1;
        return (0);
      }
 
      /* Function which tells you that you can't do this. */
-     too_dangerous (caller)
-          char *caller;
+     void
+     too_dangerous (char *caller)
      {
        fprintf (stderr,
                 "%s: Too dangerous for me to distribute.  Write it yourself.\n",
@@ -4200,8 +4370,7 @@ command names, line editing features, and access to the history list.
      /* Return non-zero if ARG is a valid argument for CALLER, else print
         an error message and return zero. */
      int
-     valid_argument (caller, arg)
-          char *caller, *arg;
+     valid_argument (char *caller, char *arg)
      {
        if (!arg || !*arg)
          {
@@ -4220,7 +4389,7 @@ Appendix A GNU Free Documentation License
 
                      Version 1.3, 3 November 2008
 
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
      <http://fsf.org/>
 
      Everyone is permitted to copy and distribute verbatim copies
@@ -4229,7 +4398,7 @@ Appendix A GNU Free Documentation License
   0. PREAMBLE
 
      The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
+     functional and useful document “free” in the sense of freedom: to
      assure everyone the effective freedom to copy and redistribute it,
      with or without modifying it, either commercially or
      noncommercially.  Secondarily, this License preserves for the
@@ -4717,7 +4886,7 @@ Concept Index
                                                                (line  6)
 * notation, readline:                    Readline Bare Essentials.
                                                                (line  6)
-* readline, function:                    Basic Behavior.       (line 12)
+* readline, function:                    Basic Behavior.       (line 11)
 * variables, readline:                   Readline Init File Syntax.
                                                                (line 34)
 * yanking text:                          Readline Killing Commands.
@@ -4732,12 +4901,12 @@ Function and Variable Index
 \0\b[index\0\b]
 * Menu:
 
-* _rl_digit_p:                           Utility Functions.   (line  64)
-* _rl_digit_value:                       Utility Functions.   (line  75)
-* _rl_lowercase_p:                       Utility Functions.   (line  61)
-* _rl_to_lower:                          Utility Functions.   (line  71)
-* _rl_to_upper:                          Utility Functions.   (line  67)
-* _rl_uppercase_p:                       Utility Functions.   (line  58)
+* _rl_digit_p:                           Utility Functions.   (line  59)
+* _rl_digit_value:                       Utility Functions.   (line  70)
+* _rl_lowercase_p:                       Utility Functions.   (line  56)
+* _rl_to_lower:                          Utility Functions.   (line  66)
+* _rl_to_upper:                          Utility Functions.   (line  62)
+* _rl_uppercase_p:                       Utility Functions.   (line  53)
 * abort (C-g):                           Miscellaneous Commands.
                                                               (line  10)
 * accept-line (Newline or Return):       Commands For History.
@@ -4746,213 +4915,221 @@ Function and Variable Index
                                                               (line  48)
 * active-region-start-color:             Readline Init File Syntax.
                                                               (line  35)
-* backward-char (C-b):                   Commands For Moving. (line  15)
-* backward-delete-char (Rubout):         Commands For Text.   (line  17)
+* backward-char (C-b):                   Commands For Moving. (line  18)
+* backward-delete-char (Rubout):         Commands For Text.   (line  18)
 * backward-kill-line (C-x Rubout):       Commands For Killing.
                                                               (line  11)
 * backward-kill-word (M-<DEL>):          Commands For Killing.
                                                               (line  28)
-* backward-word (M-b):                   Commands For Moving. (line  22)
+* backward-word (M-b):                   Commands For Moving. (line  26)
 * beginning-of-history (M-<):            Commands For History.
-                                                              (line  19)
+                                                              (line  21)
 * beginning-of-line (C-a):               Commands For Moving. (line   6)
 * bell-style:                            Readline Init File Syntax.
                                                               (line  61)
 * bind-tty-special-chars:                Readline Init File Syntax.
                                                               (line  68)
 * blink-matching-paren:                  Readline Init File Syntax.
-                                                              (line  73)
-* bracketed-paste-begin ():              Commands For Text.   (line  36)
+                                                              (line  76)
+* bracketed-paste-begin ():              Commands For Text.   (line  38)
 * call-last-kbd-macro (C-x e):           Keyboard Macros.     (line  13)
 * capitalize-word (M-c):                 Commands For Text.   (line  69)
 * character-search (C-]):                Miscellaneous Commands.
-                                                              (line  42)
+                                                              (line  41)
 * character-search-backward (M-C-]):     Miscellaneous Commands.
-                                                              (line  47)
-* clear-display (M-C-l):                 Commands For Moving. (line  40)
-* clear-screen (C-l):                    Commands For Moving. (line  45)
+                                                              (line  45)
+* clear-display (M-C-l):                 Commands For Moving. (line  44)
+* clear-screen (C-l):                    Commands For Moving. (line  49)
 * colored-completion-prefix:             Readline Init File Syntax.
-                                                              (line  78)
+                                                              (line  81)
 * colored-stats:                         Readline Init File Syntax.
-                                                              (line  88)
+                                                              (line  91)
 * comment-begin:                         Readline Init File Syntax.
-                                                              (line  94)
+                                                              (line  97)
 * complete (<TAB>):                      Commands For Completion.
                                                               (line   6)
 * completion-display-width:              Readline Init File Syntax.
-                                                              (line  99)
+                                                              (line 101)
 * completion-ignore-case:                Readline Init File Syntax.
-                                                              (line 106)
+                                                              (line 108)
 * completion-map-case:                   Readline Init File Syntax.
-                                                              (line 111)
+                                                              (line 113)
 * completion-prefix-display-length:      Readline Init File Syntax.
-                                                              (line 117)
+                                                              (line 119)
 * completion-query-items:                Readline Init File Syntax.
-                                                              (line 124)
+                                                              (line 128)
 * convert-meta:                          Readline Init File Syntax.
-                                                              (line 135)
+                                                              (line 139)
 * copy-backward-word ():                 Commands For Killing.
-                                                              (line  60)
+                                                              (line  53)
 * copy-forward-word ():                  Commands For Killing.
-                                                              (line  65)
+                                                              (line  58)
 * copy-region-as-kill ():                Commands For Killing.
-                                                              (line  56)
+                                                              (line  49)
 * delete-char (C-d):                     Commands For Text.   (line  12)
 * delete-char-or-list ():                Commands For Completion.
-                                                              (line  39)
+                                                              (line  62)
 * delete-horizontal-space ():            Commands For Killing.
-                                                              (line  48)
+                                                              (line  41)
 * digit-argument (M-0, M-1, ... M--):    Numeric Arguments.   (line   6)
 * disable-completion:                    Readline Init File Syntax.
-                                                              (line 145)
+                                                              (line 151)
 * do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
                                                               (line  14)
 * downcase-word (M-l):                   Commands For Text.   (line  65)
 * dump-functions ():                     Miscellaneous Commands.
-                                                              (line  70)
+                                                              (line  68)
 * dump-macros ():                        Miscellaneous Commands.
-                                                              (line  82)
+                                                              (line  80)
 * dump-variables ():                     Miscellaneous Commands.
-                                                              (line  76)
+                                                              (line  74)
 * echo-control-characters:               Readline Init File Syntax.
-                                                              (line 150)
+                                                              (line 156)
 * editing-mode:                          Readline Init File Syntax.
-                                                              (line 155)
+                                                              (line 161)
 * emacs-editing-mode (C-e):              Miscellaneous Commands.
-                                                              (line  88)
+                                                              (line  94)
 * emacs-mode-string:                     Readline Init File Syntax.
-                                                              (line 161)
-* enable-active-region:                  Readline Init File Syntax.
-                                                              (line 171)
+                                                              (line 167)
+* enable-active-region The:              Readline Init File Syntax.
+                                                              (line 177)
 * enable-bracketed-paste:                Readline Init File Syntax.
-                                                              (line 184)
+                                                              (line 190)
 * enable-keypad:                         Readline Init File Syntax.
-                                                              (line 193)
+                                                              (line 199)
+* enable-meta-key:                       Readline Init File Syntax.
+                                                              (line 204)
 * end-kbd-macro (C-x )):                 Keyboard Macros.     (line   9)
 * end-of-file (usually C-d):             Commands For Text.   (line   6)
 * end-of-history (M->):                  Commands For History.
-                                                              (line  22)
-* end-of-line (C-e):                     Commands For Moving. (line   9)
+                                                              (line  24)
+* end-of-line (C-e):                     Commands For Moving. (line  10)
 * exchange-point-and-mark (C-x C-x):     Miscellaneous Commands.
                                                               (line  37)
+* execute-named-command (M-x):           Miscellaneous Commands.
+                                                              (line  87)
 * expand-tilde:                          Readline Init File Syntax.
-                                                              (line 204)
+                                                              (line 214)
+* export-completions ():                 Commands For Completion.
+                                                              (line  38)
 * fetch-history ():                      Commands For History.
-                                                              (line 102)
-* forward-backward-delete-char ():       Commands For Text.   (line  21)
-* forward-char (C-f):                    Commands For Moving. (line  12)
+                                                              (line 107)
+* force-meta-prefix:                     Readline Init File Syntax.
+                                                              (line 218)
+* forward-backward-delete-char ():       Commands For Text.   (line  23)
+* forward-char (C-f):                    Commands For Moving. (line  14)
 * forward-search-history (C-s):          Commands For History.
-                                                              (line  32)
-* forward-word (M-f):                    Commands For Moving. (line  18)
+                                                              (line  34)
+* forward-word (M-f):                    Commands For Moving. (line  22)
 * history-preserve-point:                Readline Init File Syntax.
-                                                              (line 208)
+                                                              (line 231)
 * history-search-backward ():            Commands For History.
-                                                              (line  56)
+                                                              (line  52)
 * history-search-forward ():             Commands For History.
-                                                              (line  50)
+                                                              (line  59)
 * history-size:                          Readline Init File Syntax.
-                                                              (line 214)
+                                                              (line 237)
 * history-substring-search-backward ():  Commands For History.
-                                                              (line  68)
+                                                              (line  66)
 * history-substring-search-forward ():   Commands For History.
-                                                              (line  62)
+                                                              (line  72)
 * horizontal-scroll-mode:                Readline Init File Syntax.
-                                                              (line 223)
+                                                              (line 246)
 * input-meta:                            Readline Init File Syntax.
-                                                              (line 232)
+                                                              (line 254)
 * insert-comment (M-#):                  Miscellaneous Commands.
-                                                              (line  61)
+                                                              (line  59)
 * insert-completions (M-*):              Commands For Completion.
                                                               (line  18)
 * isearch-terminators:                   Readline Init File Syntax.
-                                                              (line 242)
+                                                              (line 265)
 * keymap:                                Readline Init File Syntax.
-                                                              (line 249)
+                                                              (line 272)
 * kill-line (C-k):                       Commands For Killing.
                                                               (line   6)
 * kill-region ():                        Commands For Killing.
-                                                              (line  52)
+                                                              (line  45)
 * kill-whole-line ():                    Commands For Killing.
                                                               (line  19)
 * kill-word (M-d):                       Commands For Killing.
                                                               (line  23)
 * mark-modified-lines:                   Readline Init File Syntax.
-                                                              (line 279)
+                                                              (line 302)
 * mark-symlinked-directories:            Readline Init File Syntax.
-                                                              (line 284)
+                                                              (line 307)
 * match-hidden-files:                    Readline Init File Syntax.
-                                                              (line 289)
+                                                              (line 312)
 * menu-complete ():                      Commands For Completion.
                                                               (line  22)
 * menu-complete-backward ():             Commands For Completion.
-                                                              (line  34)
+                                                              (line  33)
 * menu-complete-display-prefix:          Readline Init File Syntax.
-                                                              (line 296)
+                                                              (line 319)
 * meta-flag:                             Readline Init File Syntax.
-                                                              (line 232)
+                                                              (line 254)
 * next-history (C-n):                    Commands For History.
-                                                              (line  16)
-* next-screen-line ():                   Commands For Moving. (line  33)
+                                                              (line  17)
+* next-screen-line ():                   Commands For Moving. (line  37)
 * non-incremental-forward-search-history (M-n): Commands For History.
-                                                              (line  44)
+                                                              (line  46)
 * non-incremental-reverse-search-history (M-p): Commands For History.
-                                                              (line  38)
+                                                              (line  40)
 * operate-and-get-next (C-o):            Commands For History.
-                                                              (line  95)
+                                                              (line 100)
 * output-meta:                           Readline Init File Syntax.
-                                                              (line 301)
+                                                              (line 324)
 * overwrite-mode ():                     Commands For Text.   (line  73)
 * page-completions:                      Readline Init File Syntax.
-                                                              (line 309)
+                                                              (line 333)
 * possible-completions (M-?):            Commands For Completion.
                                                               (line  11)
 * prefix-meta (<ESC>):                   Miscellaneous Commands.
                                                               (line  19)
 * previous-history (C-p):                Commands For History.
                                                               (line  12)
-* previous-screen-line ():               Commands For Moving. (line  26)
+* previous-screen-line ():               Commands For Moving. (line  30)
 * print-last-kbd-macro ():               Keyboard Macros.     (line  17)
-* quoted-insert (C-q or C-v):            Commands For Text.   (line  26)
+* quoted-insert (C-q or C-v):            Commands For Text.   (line  28)
 * re-read-init-file (C-x C-r):           Miscellaneous Commands.
                                                               (line   6)
-* readline:                              Basic Behavior.      (line  12)
-* redraw-current-line ():                Commands For Moving. (line  49)
+* readline:                              Basic Behavior.      (line  11)
+* redraw-current-line ():                Commands For Moving. (line  54)
 * reverse-search-history (C-r):          Commands For History.
-                                                              (line  26)
+                                                              (line  28)
 * revert-all-at-newline:                 Readline Init File Syntax.
-                                                              (line 319)
+                                                              (line 346)
 * revert-line (M-r):                     Miscellaneous Commands.
                                                               (line  26)
 * rl_activate_mark:                      Miscellaneous Functions.
-                                                              (line  55)
-* rl_add_defun:                          Function Naming.     (line  18)
-* rl_add_funmap_entry:                   Associating Function Names and Bindings.
                                                               (line  62)
-* rl_add_undo:                           Allowing Undoing.    (line  39)
-* rl_alphabetic:                         Utility Functions.   (line  38)
-* rl_already_prompted:                   Readline Variables.  (line  70)
+* rl_add_defun:                          Function Naming.     (line  19)
+* rl_add_funmap_entry:                   Associating Function Names and Bindings.
+                                                              (line  70)
+* rl_add_undo:                           Allowing Undoing.    (line  40)
+* rl_alphabetic:                         Utility Functions.   (line  33)
+* rl_already_prompted:                   Readline Variables.  (line  74)
 * rl_attempted_completion_function:      Completion Variables.
                                                               (line  11)
 * rl_attempted_completion_over:          Completion Variables.
-                                                              (line 256)
+                                                              (line 291)
 * rl_basic_quote_characters:             Completion Variables.
-                                                              (line 143)
+                                                              (line 165)
 * rl_basic_word_break_characters:        Completion Variables.
-                                                              (line 137)
-* rl_begin_undo_group:                   Allowing Undoing.    (line  28)
-* rl_binding_keymap:                     Readline Variables.  (line 195)
+                                                              (line 159)
+* rl_begin_undo_group:                   Allowing Undoing.    (line  29)
 * rl_bind_key:                           Binding Keys.        (line  21)
-* rl_bind_keyseq:                        Binding Keys.        (line  57)
-* rl_bind_keyseq_if_unbound:             Binding Keys.        (line  75)
-* rl_bind_keyseq_if_unbound_in_map:      Binding Keys.        (line  81)
-* rl_bind_keyseq_in_map:                 Binding Keys.        (line  64)
 * rl_bind_key_if_unbound:                Binding Keys.        (line  30)
 * rl_bind_key_if_unbound_in_map:         Binding Keys.        (line  36)
 * rl_bind_key_in_map:                    Binding Keys.        (line  25)
-* rl_callback_handler_install:           Alternate Interface. (line  13)
-* rl_callback_handler_remove:            Alternate Interface. (line  42)
-* rl_callback_read_char:                 Alternate Interface. (line  22)
-* rl_callback_sigcleanup:                Alternate Interface. (line  35)
+* rl_bind_keyseq:                        Binding Keys.        (line  58)
+* rl_bind_keyseq_if_unbound:             Binding Keys.        (line  76)
+* rl_bind_keyseq_if_unbound_in_map:      Binding Keys.        (line  82)
+* rl_bind_keyseq_in_map:                 Binding Keys.        (line  65)
+* rl_binding_keymap:                     Readline Variables.  (line 211)
+* rl_callback_handler_install:           Alternate Interface. (line  14)
+* rl_callback_handler_remove:            Alternate Interface. (line  44)
+* rl_callback_read_char:                 Alternate Interface. (line  23)
+* rl_callback_sigcleanup:                Alternate Interface. (line  37)
 * rl_catch_signals:                      Readline Signal Handling.
                                                               (line  69)
 * rl_catch_sigwinch:                     Readline Signal Handling.
@@ -4960,13 +5137,13 @@ Function and Variable Index
 * rl_change_environment:                 Readline Signal Handling.
                                                               (line  90)
 * rl_char_is_quoted_p:                   Completion Variables.
-                                                              (line  45)
+                                                              (line  48)
 * rl_check_signals:                      Readline Signal Handling.
                                                               (line 133)
 * rl_cleanup_after_signal:               Readline Signal Handling.
                                                               (line 107)
 * rl_clear_history:                      Miscellaneous Functions.
-                                                              (line  49)
+                                                              (line  56)
 * rl_clear_message:                      Redisplay.           (line  51)
 * rl_clear_pending_input:                Character Input.     (line  29)
 * rl_clear_signals:                      Readline Signal Handling.
@@ -4976,164 +5153,169 @@ Function and Variable Index
                                                               (line  46)
 * rl_complete <1>:                       Completion Functions.
                                                               (line  19)
-* rl_completer_quote_characters:         Completion Variables.
-                                                              (line 160)
-* rl_completer_word_break_characters:    Completion Variables.
-                                                              (line 146)
 * rl_complete_internal:                  Completion Functions.
                                                               (line   9)
+* rl_completer_quote_characters:         Completion Variables.
+                                                              (line 184)
+* rl_completer_word_break_characters:    Completion Variables.
+                                                              (line 169)
 * rl_completion_append_character:        Completion Variables.
-                                                              (line 185)
+                                                              (line 210)
 * rl_completion_display_matches_hook:    Completion Variables.
-                                                              (line 124)
+                                                              (line 146)
 * rl_completion_entry_function:          How Completing Works.
                                                               (line  52)
 * rl_completion_entry_function <1>:      Completion Variables.
                                                               (line   6)
 * rl_completion_found_quote:             Completion Variables.
-                                                              (line 215)
+                                                              (line 235)
 * rl_completion_invoking_key:            Completion Variables.
-                                                              (line 279)
+                                                              (line 314)
 * rl_completion_mark_symlink_dirs:       Completion Variables.
-                                                              (line 221)
+                                                              (line 247)
 * rl_completion_matches:                 Completion Functions.
                                                               (line  43)
 * rl_completion_mode:                    Completion Functions.
                                                               (line  36)
 * rl_completion_query_items:             Completion Variables.
-                                                              (line 178)
+                                                              (line 202)
 * rl_completion_quote_character:         Completion Variables.
-                                                              (line 203)
+                                                              (line 241)
+* rl_completion_rewrite_hook:            Completion Variables.
+                                                              (line 128)
 * rl_completion_suppress_append:         Completion Variables.
-                                                              (line 197)
+                                                              (line 222)
 * rl_completion_suppress_quote:          Completion Variables.
-                                                              (line 209)
+                                                              (line 229)
 * rl_completion_type:                    Completion Variables.
-                                                              (line 271)
+                                                              (line 306)
 * rl_completion_word_break_hook:         Completion Variables.
-                                                              (line 151)
+                                                              (line 175)
 * rl_copy_keymap:                        Keymaps.             (line  16)
 * rl_copy_text:                          Modifying Text.      (line  14)
 * rl_crlf:                               Redisplay.           (line  33)
 * rl_deactivate_mark:                    Miscellaneous Functions.
-                                                              (line  62)
+                                                              (line  70)
 * rl_delete_text:                        Modifying Text.      (line  10)
+* rl_deprep_term_function:               Readline Variables.  (line 193)
 * rl_deprep_terminal:                    Terminal Management. (line  12)
-* rl_deprep_term_function:               Readline Variables.  (line 185)
-* rl_ding:                               Utility Functions.   (line  35)
+* rl_ding:                               Utility Functions.   (line  30)
 * rl_directory_completion_hook:          Completion Variables.
-                                                              (line  63)
+                                                              (line  65)
 * rl_directory_rewrite_hook;:            Completion Variables.
-                                                              (line  81)
+                                                              (line  83)
 * rl_discard_keymap:                     Keymaps.             (line  25)
-* rl_dispatching:                        Readline Variables.  (line  47)
-* rl_display_match_list:                 Utility Functions.   (line  41)
-* rl_display_prompt:                     Readline Variables.  (line  65)
-* rl_done:                               Readline Variables.  (line  27)
-* rl_do_undo:                            Allowing Undoing.    (line  47)
+* rl_dispatching:                        Readline Variables.  (line  49)
+* rl_display_match_list:                 Utility Functions.   (line  36)
+* rl_display_prompt:                     Readline Variables.  (line  69)
+* rl_do_undo:                            Allowing Undoing.    (line  48)
+* rl_done:                               Readline Variables.  (line  28)
 * rl_echo_signal_char:                   Readline Signal Handling.
                                                               (line 143)
-* rl_editing_mode:                       Readline Variables.  (line 301)
+* rl_editing_mode:                       Readline Variables.  (line 318)
 * rl_empty_keymap:                       Keymaps.             (line  33)
 * rl_end:                                Readline Variables.  (line  18)
-* rl_end_undo_group:                     Allowing Undoing.    (line  34)
-* rl_eof_found:                          Readline Variables.  (line  33)
-* rl_erase_empty_line:                   Readline Variables.  (line  53)
-* rl_event_hook:                         Readline Variables.  (line 130)
+* rl_end_undo_group:                     Allowing Undoing.    (line  35)
+* rl_eof_found:                          Readline Variables.  (line  34)
+* rl_erase_empty_line:                   Readline Variables.  (line  55)
+* rl_event_hook:                         Readline Variables.  (line 137)
 * rl_execute_next:                       Character Input.     (line  25)
-* rl_executing_key:                      Readline Variables.  (line 202)
-* rl_executing_keymap:                   Readline Variables.  (line 191)
-* rl_executing_keyseq:                   Readline Variables.  (line 206)
-* rl_executing_macro:                    Readline Variables.  (line 199)
+* rl_executing_key:                      Readline Variables.  (line 218)
+* rl_executing_keymap:                   Readline Variables.  (line 207)
+* rl_executing_keyseq:                   Readline Variables.  (line 222)
+* rl_executing_macro:                    Readline Variables.  (line 215)
 * rl_expand_prompt:                      Redisplay.           (line  66)
-* rl_explicit_arg:                       Readline Variables.  (line 292)
-* rl_extend_line_buffer:                 Utility Functions.   (line  26)
+* rl_explicit_arg:                       Readline Variables.  (line 308)
+* rl_extend_line_buffer:                 Utility Functions.   (line  21)
 * rl_filename_completion_desired:        Completion Variables.
-                                                              (line 236)
+                                                              (line 262)
 * rl_filename_completion_function:       Completion Functions.
                                                               (line  57)
 * rl_filename_dequoting_function:        Completion Variables.
-                                                              (line  36)
+                                                              (line  39)
 * rl_filename_quote_characters:          Completion Variables.
-                                                              (line 166)
+                                                              (line 190)
 * rl_filename_quoting_desired:           Completion Variables.
-                                                              (line 246)
+                                                              (line 272)
 * rl_filename_quoting_function:          Completion Variables.
-                                                              (line  23)
+                                                              (line  24)
 * rl_filename_rewrite_hook:              Completion Variables.
-                                                              (line 109)
+                                                              (line 111)
 * rl_filename_stat_hook:                 Completion Variables.
-                                                              (line  97)
+                                                              (line  99)
 * rl_forced_update_display:              Redisplay.           (line  10)
 * rl_free:                               Utility Functions.   (line  17)
 * rl_free_keymap:                        Keymaps.             (line  29)
 * rl_free_line_state:                    Readline Signal Handling.
                                                               (line 113)
-* rl_free_undo_list:                     Allowing Undoing.    (line  44)
+* rl_free_undo_list:                     Allowing Undoing.    (line  45)
+* rl_full_quoting_desired:               Completion Variables.
+                                                              (line 282)
 * rl_function_dumper:                    Associating Function Names and Bindings.
-                                                              (line  46)
+                                                              (line  54)
 * rl_function_of_keyseq:                 Associating Function Names and Bindings.
-                                                              (line  13)
+                                                              (line  14)
 * rl_function_of_keyseq_len:             Associating Function Names and Bindings.
-                                                              (line  22)
+                                                              (line  23)
 * rl_funmap_names:                       Associating Function Names and Bindings.
-                                                              (line  56)
-* rl_generic_bind:                       Binding Keys.        (line  87)
-* rl_getc:                               Character Input.     (line  14)
-* rl_getc_function:                      Readline Variables.  (line 135)
-* rl_get_keymap:                         Keymaps.             (line  40)
-* rl_get_keymap_by_name:                 Keymaps.             (line  46)
-* rl_get_keymap_name:                    Keymaps.             (line  51)
+                                                              (line  64)
+* rl_generic_bind:                       Binding Keys.        (line  88)
+* rl_get_keymap:                         Keymaps.             (line  41)
+* rl_get_keymap_by_name:                 Keymaps.             (line  47)
+* rl_get_keymap_name:                    Keymaps.             (line  52)
 * rl_get_screen_size:                    Readline Signal Handling.
                                                               (line 165)
 * rl_get_termcap:                        Miscellaneous Functions.
-                                                              (line  41)
-* rl_gnu_readline_p:                     Readline Variables.  (line  89)
+                                                              (line  44)
+* rl_getc:                               Character Input.     (line  14)
+* rl_getc_function:                      Readline Variables.  (line 142)
+* rl_gnu_readline_p:                     Readline Variables.  (line  94)
 * rl_ignore_completion_duplicates:       Completion Variables.
-                                                              (line 232)
+                                                              (line 258)
 * rl_ignore_some_completions_function:   Completion Variables.
-                                                              (line  55)
+                                                              (line  57)
 * rl_inhibit_completion:                 Completion Variables.
-                                                              (line 285)
-* rl_initialize:                         Utility Functions.   (line  30)
-* rl_input_available_hook:               Readline Variables.  (line 151)
+                                                              (line 320)
+* rl_initialize:                         Utility Functions.   (line  25)
+* rl_input_available_hook:               Readline Variables.  (line 158)
 * rl_insert_completions:                 Completion Functions.
                                                               (line  31)
 * rl_insert_text:                        Modifying Text.      (line   6)
-* rl_instream:                           Readline Variables.  (line 103)
+* rl_instream:                           Readline Variables.  (line 110)
 * rl_invoking_keyseqs:                   Associating Function Names and Bindings.
-                                                              (line  37)
+                                                              (line  38)
 * rl_invoking_keyseqs_in_map:            Associating Function Names and Bindings.
-                                                              (line  41)
+                                                              (line  42)
 * rl_keep_mark_active:                   Miscellaneous Functions.
-                                                              (line  65)
-* rl_key_sequence_length:                Readline Variables.  (line 210)
+                                                              (line  73)
+* rl_key_sequence_length:                Readline Variables.  (line 226)
 * rl_kill_text:                          Modifying Text.      (line  18)
-* rl_last_func:                          Readline Variables.  (line 116)
-* rl_library_version:                    Readline Variables.  (line  79)
+* rl_last_func:                          Readline Variables.  (line 123)
+* rl_library_version:                    Readline Variables.  (line  83)
 * rl_line_buffer:                        Readline Variables.  (line   8)
 * rl_list_funmap_names:                  Associating Function Names and Bindings.
-                                                              (line  52)
+                                                              (line  60)
 * rl_macro_bind:                         Miscellaneous Functions.
                                                               (line   6)
+* rl_macro_display_hook:                 Readline Variables.  (line 199)
 * rl_macro_dumper:                       Miscellaneous Functions.
                                                               (line  13)
 * rl_make_bare_keymap:                   Keymaps.             (line  11)
 * rl_make_keymap:                        Keymaps.             (line  19)
 * rl_mark:                               Readline Variables.  (line  23)
 * rl_mark_active_p:                      Miscellaneous Functions.
-                                                              (line  71)
+                                                              (line  79)
 * rl_message:                            Redisplay.           (line  42)
-* rl_modifying:                          Allowing Undoing.    (line  56)
+* rl_modifying:                          Allowing Undoing.    (line  58)
 * rl_named_function:                     Associating Function Names and Bindings.
                                                               (line  10)
-* rl_numeric_arg:                        Readline Variables.  (line 296)
-* rl_num_chars_to_read:                  Readline Variables.  (line  38)
+* rl_num_chars_to_read:                  Readline Variables.  (line  40)
+* rl_numeric_arg:                        Readline Variables.  (line 313)
 * rl_on_new_line:                        Redisplay.           (line  14)
 * rl_on_new_line_with_prompt:            Redisplay.           (line  18)
-* rl_outstream:                          Readline Variables.  (line 107)
-* rl_parse_and_bind:                     Binding Keys.        (line  95)
-* rl_pending_input:                      Readline Variables.  (line  43)
+* rl_outstream:                          Readline Variables.  (line 114)
+* rl_parse_and_bind:                     Binding Keys.        (line  97)
+* rl_pending_input:                      Readline Variables.  (line  45)
 * rl_pending_signal:                     Readline Signal Handling.
                                                               (line 102)
 * rl_persistent_signal_handlers:         Readline Signal Handling.
@@ -5141,20 +5323,24 @@ Function and Variable Index
 * rl_point:                              Readline Variables.  (line  14)
 * rl_possible_completions:               Completion Functions.
                                                               (line  27)
-* rl_prefer_env_winsize:                 Readline Variables.  (line 111)
+* rl_pre_input_hook:                     Readline Variables.  (line 132)
+* rl_prefer_env_winsize:                 Readline Variables.  (line 118)
+* rl_prep_term_function:                 Readline Variables.  (line 186)
 * rl_prep_terminal:                      Terminal Management. (line   6)
-* rl_prep_term_function:                 Readline Variables.  (line 178)
-* rl_pre_input_hook:                     Readline Variables.  (line 125)
-* rl_prompt:                             Readline Variables.  (line  59)
-* rl_push_macro_input:                   Modifying Text.      (line  25)
-* rl_readline_name:                      Readline Variables.  (line  98)
-* rl_readline_state:                     Readline Variables.  (line 213)
-* rl_readline_version:                   Readline Variables.  (line  82)
-* rl_read_init_file:                     Binding Keys.        (line 100)
+* rl_print_keybinding:                   Associating Function Names and Bindings.
+                                                              (line  47)
+* rl_prompt:                             Readline Variables.  (line  61)
+* rl_push_macro_input:                   Modifying Text.      (line  30)
+* rl_read_init_file:                     Binding Keys.        (line 102)
 * rl_read_key:                           Character Input.     (line   6)
+* rl_readline_name:                      Readline Variables.  (line 105)
+* rl_readline_state:                     Readline Variables.  (line 229)
+* rl_readline_version:                   Readline Variables.  (line  87)
 * rl_redisplay:                          Redisplay.           (line   6)
-* rl_redisplay_function:                 Readline Variables.  (line 172)
-* rl_replace_line:                       Utility Functions.   (line  21)
+* rl_redisplay_function:                 Readline Variables.  (line 180)
+* rl_reparse_colors:                     Miscellaneous Functions.
+                                                              (line  53)
+* rl_replace_line:                       Modifying Text.      (line  25)
 * rl_reset_after_signal:                 Readline Signal Handling.
                                                               (line 121)
 * rl_reset_line_state:                   Redisplay.           (line  29)
@@ -5167,63 +5353,63 @@ Function and Variable Index
 * 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_key:                            Binding Keys.        (line  72)
 * rl_set_keyboard_input_timeout:         Character Input.     (line  34)
-* rl_set_keymap:                         Keymaps.             (line  43)
-* rl_set_keymap_name:                    Keymaps.             (line  56)
+* rl_set_keymap:                         Keymaps.             (line  44)
+* rl_set_keymap_name:                    Keymaps.             (line  57)
 * rl_set_paren_blink_timeout:            Miscellaneous Functions.
-                                                              (line  36)
-* rl_set_prompt:                         Redisplay.           (line  80)
+                                                              (line  39)
+* rl_set_prompt:                         Redisplay.           (line  82)
 * rl_set_screen_size:                    Readline Signal Handling.
                                                               (line 153)
 * rl_set_signals:                        Readline Signal Handling.
                                                               (line 176)
 * rl_set_timeout:                        Character Input.     (line  42)
 * rl_show_char:                          Redisplay.           (line  36)
-* rl_signal_event_hook:                  Readline Variables.  (line 143)
+* rl_signal_event_hook:                  Readline Variables.  (line 149)
 * rl_sort_completion_matches:            Completion Variables.
-                                                              (line 263)
+                                                              (line 298)
 * rl_special_prefixes:                   Completion Variables.
-                                                              (line 171)
-* rl_startup_hook:                       Readline Variables.  (line 121)
+                                                              (line 195)
+* rl_startup_hook:                       Readline Variables.  (line 128)
 * rl_stuff_char:                         Character Input.     (line  18)
-* rl_terminal_name:                      Readline Variables.  (line  93)
-* rl_timeout_event_hook:                 Readline Variables.  (line 147)
+* rl_terminal_name:                      Readline Variables.  (line  98)
+* rl_timeout_event_hook:                 Readline Variables.  (line 154)
 * rl_timeout_remaining:                  Character Input.     (line  52)
 * rl_trim_arg_from_keyseq:               Associating Function Names and Bindings.
-                                                              (line  29)
+                                                              (line  30)
 * rl_tty_set_default_bindings:           Terminal Management. (line  17)
 * rl_tty_set_echoing:                    Terminal Management. (line  27)
 * rl_tty_unset_default_bindings:         Terminal Management. (line  22)
-* rl_unbind_command_in_map:              Binding Keys.        (line  53)
-* rl_unbind_function_in_map:             Binding Keys.        (line  49)
+* rl_unbind_command_in_map:              Binding Keys.        (line  54)
+* rl_unbind_function_in_map:             Binding Keys.        (line  50)
 * rl_unbind_key:                         Binding Keys.        (line  41)
-* rl_unbind_key_in_map:                  Binding Keys.        (line  45)
+* rl_unbind_key_in_map:                  Binding Keys.        (line  46)
 * rl_username_completion_function:       Completion Functions.
                                                               (line  64)
 * rl_variable_bind:                      Miscellaneous Functions.
-                                                              (line  19)
+                                                              (line  21)
 * rl_variable_dumper:                    Miscellaneous Functions.
-                                                              (line  30)
+                                                              (line  33)
 * rl_variable_value:                     Miscellaneous Functions.
-                                                              (line  25)
-* self-insert (a, b, A, 1, !, ...):      Commands For Text.   (line  33)
+                                                              (line  28)
+* search-ignore-case:                    Readline Init File Syntax.
+                                                              (line 353)
+* self-insert (a, b, A, 1, !, ...):      Commands For Text.   (line  35)
 * set-mark (C-@):                        Miscellaneous Commands.
                                                               (line  33)
-* shell-transpose-words (M-C-t):         Commands For Killing.
-                                                              (line  32)
 * show-all-if-ambiguous:                 Readline Init File Syntax.
-                                                              (line 326)
+                                                              (line 358)
 * show-all-if-unmodified:                Readline Init File Syntax.
-                                                              (line 332)
+                                                              (line 364)
 * show-mode-in-prompt:                   Readline Init File Syntax.
-                                                              (line 341)
+                                                              (line 373)
 * skip-completed-text:                   Readline Init File Syntax.
-                                                              (line 347)
+                                                              (line 379)
 * skip-csi-sequence ():                  Miscellaneous Commands.
-                                                              (line  52)
+                                                              (line  50)
 * start-kbd-macro (C-x ():               Keyboard Macros.     (line   6)
-* tab-insert (M-<TAB>):                  Commands For Text.   (line  30)
+* tab-insert (M-<TAB>):                  Commands For Text.   (line  32)
 * tilde-expand (M-~):                    Miscellaneous Commands.
                                                               (line  30)
 * transpose-chars (C-t):                 Commands For Text.   (line  50)
@@ -5232,85 +5418,85 @@ Function and Variable Index
                                                               (line  23)
 * universal-argument ():                 Numeric Arguments.   (line  10)
 * unix-filename-rubout ():               Commands For Killing.
-                                                              (line  43)
+                                                              (line  36)
 * unix-line-discard (C-u):               Commands For Killing.
                                                               (line  16)
 * unix-word-rubout (C-w):                Commands For Killing.
-                                                              (line  39)
+                                                              (line  32)
 * upcase-word (M-u):                     Commands For Text.   (line  61)
 * vi-cmd-mode-string:                    Readline Init File Syntax.
-                                                              (line 360)
+                                                              (line 392)
 * vi-editing-mode (M-C-j):               Miscellaneous Commands.
-                                                              (line  92)
+                                                              (line  98)
 * vi-ins-mode-string:                    Readline Init File Syntax.
-                                                              (line 371)
+                                                              (line 403)
 * visible-stats:                         Readline Init File Syntax.
-                                                              (line 382)
+                                                              (line 414)
 * yank (C-y):                            Commands For Killing.
-                                                              (line  70)
+                                                              (line  63)
 * yank-last-arg (M-. or M-_):            Commands For History.
-                                                              (line  83)
+                                                              (line  88)
 * yank-nth-arg (M-C-y):                  Commands For History.
-                                                              (line  74)
+                                                              (line  78)
 * yank-pop (M-y):                        Commands For Killing.
-                                                              (line  73)
+                                                              (line  66)
 
 
 \1f
 Tag Table:
-Node: Top\7f866
-Node: Command Line Editing\7f1591
-Node: Introduction and Notation\7f2243
-Node: Readline Interaction\7f3867
-Node: Readline Bare Essentials\7f5059
-Node: Readline Movement Commands\7f6849
-Node: Readline Killing Commands\7f7810
-Node: Readline Arguments\7f9732
-Node: Searching\7f10777
-Node: Readline Init File\7f12930
-Node: Readline Init File Syntax\7f14086
-Node: Conditional Init Constructs\7f37389
-Node: Sample Init File\7f41586
-Node: Bindable Readline Commands\7f44711
-Node: Commands For Moving\7f45766
-Node: Commands For History\7f47525
-Node: Commands For Text\7f52489
-Node: Commands For Killing\7f56192
-Node: Numeric Arguments\7f58906
-Node: Commands For Completion\7f60046
-Node: Keyboard Macros\7f62015
-Node: Miscellaneous Commands\7f62704
-Node: Readline vi Mode\7f66632
-Node: Programming with GNU Readline\7f68449
-Node: Basic Behavior\7f69435
-Node: Custom Functions\7f73118
-Node: Readline Typedefs\7f74601
-Node: Function Writing\7f76235
-Node: Readline Variables\7f77549
-Node: Readline Convenience Functions\7f91224
-Node: Function Naming\7f92296
-Node: Keymaps\7f93558
-Node: Binding Keys\7f96637
-Node: Associating Function Names and Bindings\7f101185
-Node: Allowing Undoing\7f104415
-Node: Redisplay\7f106965
-Node: Modifying Text\7f111024
-Node: Character Input\7f112271
-Node: Terminal Management\7f115352
-Node: Utility Functions\7f117175
-Node: Miscellaneous Functions\7f120503
-Node: Alternate Interface\7f123922
-Node: A Readline Example\7f126664
-Node: Alternate Interface Example\7f128603
-Node: Readline Signal Handling\7f132135
-Node: Custom Completers\7f141388
-Node: How Completing Works\7f142108
-Node: Completion Functions\7f145415
-Node: Completion Variables\7f148989
-Node: A Short Completion Example\7f164795
-Node: GNU Free Documentation License\7f177632
-Node: Concept Index\7f202806
-Node: Function and Variable Index\7f204327
+Node: Top\7f864
+Node: Command Line Editing\7f1589
+Node: Introduction and Notation\7f2241
+Node: Readline Interaction\7f4597
+Node: Readline Bare Essentials\7f5789
+Node: Readline Movement Commands\7f7601
+Node: Readline Killing Commands\7f8601
+Node: Readline Arguments\7f10628
+Node: Searching\7f11689
+Node: Readline Init File\7f13902
+Node: Readline Init File Syntax\7f15099
+Node: Conditional Init Constructs\7f41573
+Node: Sample Init File\7f45962
+Node: Bindable Readline Commands\7f49086
+Node: Commands For Moving\7f50470
+Node: Commands For History\7f52637
+Node: Commands For Text\7f57979
+Node: Commands For Killing\7f61824
+Node: Numeric Arguments\7f64280
+Node: Commands For Completion\7f65436
+Node: Keyboard Macros\7f68719
+Node: Miscellaneous Commands\7f69424
+Node: Readline vi Mode\7f73755
+Node: Programming with GNU Readline\7f75652
+Node: Basic Behavior\7f76638
+Node: Custom Functions\7f80699
+Node: Readline Typedefs\7f82221
+Node: Function Writing\7f84107
+Node: Readline Variables\7f85413
+Node: Readline Convenience Functions\7f100367
+Node: Function Naming\7f101443
+Node: Keymaps\7f102774
+Node: Binding Keys\7f105935
+Node: Associating Function Names and Bindings\7f110760
+Node: Allowing Undoing\7f114590
+Node: Redisplay\7f117340
+Node: Modifying Text\7f121642
+Node: Character Input\7f123181
+Node: Terminal Management\7f126338
+Node: Utility Functions\7f128225
+Node: Miscellaneous Functions\7f131335
+Node: Alternate Interface\7f135225
+Node: A Readline Example\7f138120
+Node: Alternate Interface Example\7f140038
+Node: Readline Signal Handling\7f143657
+Node: Custom Completers\7f153207
+Node: How Completing Works\7f153927
+Node: Completion Functions\7f157303
+Node: Completion Variables\7f160970
+Node: A Short Completion Example\7f179288
+Node: GNU Free Documentation License\7f191957
+Node: Concept Index\7f217134
+Node: Function and Variable Index\7f218655
 \1f
 End Tag Table
 
index b0925cda941bcf54ff30f85d2a43fe25bcb6ccb2..60f31b571693e5aefa5852903d066d13405271f2 100644 (file)
Binary files a/doc/readline.pdf and b/doc/readline.pdf differ
index 011e8cbb898d8f35b4edc9556612d440a2ef21e2..a984b5a9dbe67f70cb2e39f4f83af13af0301a21 100644 (file)
@@ -1,18 +1,18 @@
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 2022.1 (TeX Live 2022)  Copyright 2022 Radical Eye Software
+%%Creator: dvips(k) 2024.1 (TeX Live 2024)  Copyright 2024 Radical Eye Software
 %%Title: readline.dvi
-%%CreationDate: Tue Sep 20 14:17:05 2022
-%%Pages: 86
+%%CreationDate: Wed Jun 25 20:09:16 2025
+%%Pages: 89
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
-%%+ CMSLTT10 CMTI10 CMSL10 CMSS10 CMTT9 CMR9 CMMI9
+%%+ CMSLTT10 CMSL10 CMTI10 CMSS10 CMTT9 CMR9 CMMI9
 %%DocumentPaperSizes: Letter
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2022.09.20:1017
+%DVIPSSource:  TeX output 2025.03.31:1028
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -361,6 +361,7 @@ dup 54 /six put
 dup 55 /seven put
 dup 56 /eight put
 dup 57 /nine put
+dup 84 /T put
 dup 97 /a put
 dup 98 /b put
 dup 99 /c put
@@ -614,226 +615,231 @@ E5B530D6C6977137319321BFDB6A526B7AEA07EB6548F6FACAD54C426D3E5207
 C1CEE50DA12BF2F08521A17641A2F5541EC84195149392FB34E900EE8C130A72
 A06E8D5C1C3012486BCBE6F82A8570054C243ADAB55F1BD0A2AC1D73029F6E0A
 91230FC5BD62E7C8179271886FE2A3D0A4D55D26A953064E16B99189D714CE51
-6C1ED25B47BBBF5494E1C788038B82BFD0D6CE9DB60E49EAF500DF9ED431BE3B
-5C5E93A14078C7962DCCF2A34966BC16EC17989C10D2C74FE0DC9306CEB61DF8
-A42FB761999A3EB75E31431F568CDEB0A3CC8C5FB6B76B8768086F20D284D302
-A144E5CDDB303676D612FE7D749FAF7E0EEBA5D5FF48E3CBBE5046131A8A00DB
-21F4A2C8788781CC2D3ED96148B7C77CAA7278CC32284B2BC83BBF542172F186
-677F635F73216E1D41D2CA802498C469234B79AF35BE521DF9E633293B1BAFDD
-3A0B043626E3CB0EE9072FE09F90B8ABAB28F60C42CD3F2323B7BA4E4F9FF6C9
-BEB3D0E12B74799E2321A65B88840470446AFB66E7B9FD92638947923F8942B8
-B9182715510969377DE1362216F2EF6B96D4622ABE65EBBC5F7FC397B50DF682
-07EEB73A649383B86EB255B9145916EE2E8C326052ECDE0EB367DCB62F7F88B3
-6F9F23853CF377EDF5F4B1F0A6DF99EF29F21452D2628A40F589BBA831118DA9
-DDF19BB85E5AF7D79F5DB4015D90F3AF189E7D5E9E3585B9D444218B889366E5
-7B4B8EB34F4106ED4E54EF08F08581EB40A5B49E214A86251FEB131BCB071406
-B322E962F9B14AEBD38747B44F976B30B184AD7667EB5AE3EBA6744D6C8422D8
-F4CB40C3216799F46067651DD21F6F763A59E93B9A67484E6CF9EEE3913B6687
-BFE8E68087D287651AA7666BA83B0D271A422E3F0FE0C2942AFA64F71B8237F5
-31C7F7D6E5D4903D3CA32C77781BD8C959FD6DD1BE80C113B59B39F1941E8770
-BF7F8B7139ADF77E2CCADFD99E2A87A5C10802D2D6CE3D9A3830378BE37D8903
-B87B38EF25C49FE93C797FEF7114D4BE3A58555F701CE4D8BC2605CEA9725E08
-B2460459E5A4CE44793FDF3C212A6B5909B49A4ECA55F53AA3B9AF63A2DDD339
-9023D61FF6C29721EF2B49C89320372059FA33F25CF6BC7F64E3B4EC7D7527F9
-62A8FE056259BFC788F24506F8F6E9777B693AA26F646A22F3ABA85A6FEE1B41
-373D90C3CB55A474A2E5EF80A129F5628CD064B590DEEE7935DE9AF5D68C622C
-814452DB304B52DEF5C9490B1366BA1834AC5B27DFF17CAA5722CF783AC8283D
-B84A3DD19587B204EF584499E78DB2222DCCD50847959B4820CCDC092F88693E
-50B9DA33FFEE72C235520F58332A3725BF62BEB005D36FD3CD1B2310B2982A34
-A095ACF013BB5C340A21B4537A7BDCD5161377A4818CC44D8A15BE7CACC03D33
-11CDF7811E0CF02F6F3213D3B598713F2EDE54E6857A526879C920D085A01997
-8DA06915850E5402A4444AABCB08881EDCA2DD068E1455BF9A155C54EF315FAA
-279D726F57FC86300BC4D9DFCD4D44EDFDDD4B00DE34948028C7A9255B931CC2
-77A0FF40F7ABEC709B67C6EADAD9D24B014DEB4C342E5F37E1CA26A1999CFDAF
-50D8E76F1715FA8EF095B88D9A8DF4325572B26753F763F264DA8887E4E5845E
-2A01F86149EBDD9CFC21CF2852CE95386DBB1E4DAA2113AA1E0C53746A3AA5F5
-78570500FB89E376549E282E2AE990E72C0E77F701FCC977868ED3FBB7C9CCCF
-CD28795A80AE8787EF1D0C374297819A324504623E12688B08E4782B18F05C75
-2E2CD594D0E6C10B002AD61CE491D4B95244E83DB861E36D293C0F556B295FBB
-8F045711CD606D024F0F03603629F3BD495183E821D0A1ACD83F3376B62D278A
-FFD084EF020A119836EB60D0F8A059BAD8D8CCE26A37182E7C89CFC2AB80C724
-275E921332ACC5A6991B36A2C7828B632DDDAF04780086F84E1A122461719992
-061E3F597C8E6DD8ECE708251DE0DED5DAF913AD4130ED89DD271B17C556F466
-A2587876F7954A9888751460B468313DDD88F267BE6C5FEA492A6CF1365AB8B0
-D8E872A625799B9BE1859AEFAD98B6F41AE33D0CC069BD36333819995FD9B510
-715BC8AC70443A107EB2E34809771DF24D3AC09D47768D3202D809B023FABA7D
-C6B8CACBEEC4B47082177995C3C00D08446DA56D527D8857E5D3342EC3C42DFA
-7E35C992B8C2A50E7374FE57092086613D5A3B4567A9DA3758F48E6817CA3C2D
-BC552BF4A17E92DFB106E74A2C53DBEA13481DFB9EB64422F5CE073512B67018
-46E902A52D5AC8A943C93B1921ACBA76D6DD2DE9077C280E1E6E43ABB9DD11AF
-E065D8EB102BB53A37F6B491EE341CC8D4D3AE311F122A28F7FC5481CC80E119
-EC3E67AEAC772AB31D41151AD51B88122325456163D1E84EFBC5CB9A55BC4C15
-7A2D56ABC55E61A49311ECB2C3267F7EAA3C284A0135985EB5E2D4113BDB8433
-123A4A4109F6926D9C38D502B5659AF97969C3160BA5E6E32B95AD5D6855D307
-89BDDE727683B2F05D6D9E74813CAF8038C03C574183CA79025D33FEBD68811E
-1A3B42236EE1CF60614237538CB2C9567612DE1DAB1C864828B9604A5D4A52DF
-D5012F80352DB0AF93758E8DD4ACEC077160D74FC723F6878B2556690E9ACC91
-5B552329E06B87A06E733270BE98C16A30CAE3A798CA80E7A9C3B8733A9428DE
-0F4DAFA656E6D01470FA746BB58E686846C29933F9A48932E6AD3A20C7A0FA91
-AA45745AF05ABC50D77498AF81E72D0DBF7D6FAF97E5538673C57A6EE39776EE
-06BFD30F67A57AC796036A5394DC9A8C75556144497637C28F3C56DBFB21595A
-D2A46D6C4A0B63508A238B97ACB24499AB5540851B86E273B7B2DED24B458DB1
-5280B3F9040C08672F7DFDC4B69C54B92EE3555902BF55D64CFC95A9DD143C18
-FEEDB1BEA96762AECDA9DEE705AF2DD54C619328B9A26D019984DEC1EE34F30E
-CA4EBD5A4AB2C8547C0EB264D47943AF93E281A9E346B6346B809363CD7D67D9
-9A8D6A2B1C109C8F226BE11C405F18E0197A47E44B57C1CBC8CAB957A2F60771
-CF8DAD0E361FF6891CACF5672997B0357F9A5D16D424F2B32A0256210106B3B8
-160B3CF0FB7D28A84FA861B0210F383466B6E69DA79B59D95AA05D608DAE9D56
-7A05E3CBBDFA558C8F3A5D5AD9F70AD60FF059AD26041DE8819EDB2746DAB76A
-6600D7C708F08D266FE22609BA7462A9378E691E175230E4D4CF6F1FB40BBCE0
-31E34EE09023FB7BEB557267986637DD5D9C70E38C14E485BB6CDFE0826F9DFF
-F5094AABB6719C11474BD877358C603FE16B3A26B8C3CA026E6B29B1868F2AD6
-2960CF99DE7E16B18D3480F52585F39D0B45574D4A0008BCD49C3F2B27930B25
-3117251BB7116A23C586F7B0706F7F2BB00611C4FA705CC11783E6A1D868E1E4
-5685B46356200BACD8C9851AC613169CDF40BBF1B400E21137D00EBA1E782E97
-BD6972E405ECD84202049433393B3C283D44AF4C3BDB3D1B700F43AB576B4C7A
-195500FEE676D1DE97C32859987267428884E4E58C2D8FB367810741B0FB7D37
-4F185ECAE1AF834069503E8014FA13225152CBEDD5A1CB8895DE03E1B1704892
-23D2C13F5EE53AD95EBE5C0AE07FE2DD36209897001FF645DB1276FDA49951B2
-D319D63FB045B477BE528C3667F0CCB6853E0D31C77ACFBED46251BFD60C1321
-D0FD450193208958E91C05E9518F3E2FB9D4B6AFD5084ED2C13DC3E59F85C853
-10AB3B7706863D6056954E6E89A23D22FF9D3A868C7A47FAA92C95A5BCAAD7DA
-0D145FDAEC7EF719C077D8FFB191CFE21E87736A98965A4A4AB2447B607D02AE
-8995550F0BCEFA8BAB7A197C053F69BBA12CB7C01976219DFC6D2A49D415EFFA
-66F17762549A09F43FFEC19B4A6CEE65A6903702F1750B263C342E5CD8D26F9B
-363D9AF452BBB2B0D5551D412872AC8F781630B293FA0B96FF49893200BDC53E
-32CAEA43D4AC2D01FB9212277ADB59C864CED023A8C30665A2BFD059A1031D86
-6410CF5A2716F0927A8F9213C73681278B8EC121E0AC73D46A704D6B28D7B003
-FD075F4455CABF65FE19A91768983B2B3FCD40AA0194EDEF3C94C06D2787F469
-BB045AF387183D001E980E05859D316821023CBC205C505B11DA011D784B7F3A
-C47E20AD8F87E499D7D77EF84C75093BC67969E7CA8714F55D7945F799D6A640
-E6F00FCFE28DE659F36F947324DFF4E79AEFB61EF14ACB3FC078873A17FCB5E1
-D3C40C11B5A4327CF96E07F5CA9D62127553EE94BF3C148D9EB83353E9DBFDFD
-FF9FACBDC8AED20340D2FCA6F3866DF72EE9CC880E4069DAAA2BA5A845DE7FB6
-CF7E686BC5CE9A4B6D37890D902CB7641033A7C1B7F974828F4FC8AF251F7985
-E576958972852E144094C10EDA802DEE259F7437CD26A1C9094F87ED0697D713
-94BF9E15347EF558B9D40243DDD348C7FDC96A1FB6D362BD9D955BAE3F6A2353
-84D89A27BB4DABE3CB58A9334971E39215DE41B4DA77FFD32B088EDE2E23A26B
-59273A7DC587D70CCDF43BC64BC3CB11B6EF90042B8193C0C4E66D9C7BC7F459
-F8FFA1D733503659A2C2BA42C0A1E262D15E97A55E97D746455266507B4B2913
-EAB47632D372206F3F1CA23939A281F2CDF5E2DFF06B94560879BE2080E2CBE7
-DC93A7869391B1F44A4466B38B2A4A8A8F8774D76B8F2449435B525F2651791D
-890D1078533B845F34713FC87A34153D1175B40B7A46F2C228C6405E4652E635
-D9DC320111AB934184B34B30A946D74D30894AA99769BCD213FA3494F8C998D9
-BE4501663B8CA4441C8A7A0314BE23D451D19E1ED15831DBB29180E023A989ED
-4A4C4C92C65637A9DEB914179A4D3735CABEC726E9F431367994E32CA1C83541
-ECCB0D463DB8A0316213A3356D7C654F9F5A4C57260485D0FE8ACFB6FA759A74
-BC1C53F32A147A9F0B2264AA8CAC642D6D932E462D76F113ED2BE639DC67F8E9
-7CEDAC5FC2ED44E4AF3ABB083F3D103378B784E9B0D88DDC98160629B0731AFD
-1502AA443FFF69071A8C6E6EA0A309893DF57E550C270B7BA271234BC69DB3DE
-7D7A87D9A8450596960F05942E390BD546A9C10501057B96009548EAA8FA3DD9
-DE5BACF5AEDAEABC2998F34BB48497E022CF71C4260537F19A7D38679558E405
-EEB015B7BDB6092553644D28857CF4FA28E18040C3E6B8DB88289CFB10FD86E1
-99D4DAF86714EFA28E61FBB3010CCFB8EFD7C9B6E2B759F276616DDA9F90335A
-388DDAC61C577A057434F28CCFB339902BE256D21F4D52DCD450AA5B747D7471
-8098E4B634907BE1DAAA43FFAB7E4AA8705E76E9ED086CAF7D73375E7EC6626C
-FCAE8CE2AB754C256B795BE48428076BF67D614F3FB28AF32DFCD73F17B13E2B
-B127E86C5726769BA5A5D2045B839E4FB5D382E93851E839D2C0FF5824B72C84
-D1C96EE48AFC44DBE54E1844BF709BD50C0E1D456EF920662D905C823C912A13
-018EC340C0F4B508F7D8AEAF895AC0CEE8B15A2620DEAF8B4CDCCDCBF40D626E
-43CB4C280366C106F7951D505973018D307D9858D32E7360183E68C226060B32
-A342BF4CFFDE1AD9B5111CB80734C1E625343148FF2870D1D87DC70E9264E9E9
-BA20D962DA30CB7A2755B510F86899FE1430E46E76672E30A1CED0AAAD9E983D
-4E3911BB537D48A168F7B3BD46592FD4B07B9CE043BE9DE2148BE10BF8C30C68
-76B76138AB34805C6D8B6454E3D5A830407A51B9E1A71DB17668E7A94BB150E7
-BEAC13AE7363DEE94E696FEC3627958DC530490FEE0DBDA1ADA7F00848D3C3EA
-683757DCB8AFEEA2C95B7B27D8EEC5956AF8E26BC8CFF14DD8A2E6A638C5D6CF
-E128C7F8BB3A3F27EC922041E857CB68CA824DE6DBC56F68CBD131AAEBD6B0BF
-4189A1AFA1108BC42C2697B3C24AD8587EFF5C8B46A995CD881ED98523FC98CA
-6A123D37FC9D79F0E9A6E6D9E783D8826A0A07A9EFCD563286710FA3CA4EF170
-1B42B440BEF8ABA94FCCF86F0BA118F36F80F6BFFEA5D13CE0FF328CF428D437
-EA9076A01A151C0D6CA5A7B8410815A88DD92BBD2A27EF160F39CAA7E0A27549
-EE8E1B301374028A8C30504461A0CE8CF9D1AF3BC27182E4FCADBE153FC3BDCE
-04B9EF6B6C383FCEEA6DD9D51CFC360A9DDA8F18F28175B3AC453E4387D9CF90
-28B44827AEB043F2971C0E6C852882734C9B790DF14ADD37A55E807068431ACE
-0BC67F4D03FBB3C611004D0C1E1B9D5CA572191A13820DE990F029E1EC07866B
-9307D5B77304C9AA9D987D8E2CB1C302F4EBE5AE1A18EBE36901C6D94A3B4D48
-F31301459C87955B6C24F48A98BE883BFBF526DB1DBFAD1D6B23F29E6C32B3C0
-CC56550FB658455B8E3F2A76BCF1EBC9F6AAA1200C428465A22FC1C748CA45D2
-7427F87D506B90D3C676AD753DDAE196464C9672614D1FC43F0DB91DD9A00B4E
-9D8E31DFADEF3AB6518EA1C7BD9BE20AC8C66D0B1CE9737C338E02794640F7F4
-F1F2E04CA39971AEBC9FB699ECA8F07569C8AD9833E69DD9EBAF42376BEA1961
-9D3312A8620A66BC68607C0B7D723DEF61764B7CA43EBA27ABA5B0F518F40B01
-E713AED7BA6E23BA5D866E10638DA78B9BFA68757921C9E766603F884C18E76F
-848CE800A1A1E6FADA9E1BC717AF098446AF80924915D0AB86F4A3615D4FD49A
-A5A844530155E047DF9A6F878677C12391DC8FEE91C90709E3D06F31D10952A6
-5B0D30556D0AA5F59DA5637BB280842DF8720816D67F465B48A063BD606B536D
-760A402075ABBD70940DFB7EDA04B55B5E36D2B512A6D01E7E97FC90D708EAB6
-0F9A77ADCAD63063C5837DDDF800A4D407601B15895E83B58359821426E93994
-019B73A5FD9661550718CC3B2F79E9A6A0E7C4984EC1426C0B8EB86DDEAB3FCD
-D1B467FF32005EDABE59166D2E0564CCD1AF482301D2BFAF138F88E2FEC6AC7F
-060555D402304EDECAD793EF9F779F6AC52B1AF86D714F5CDF3C574592E8C742
-23204EC2C4C226968B8633554349A2C0A987E2812B8CA402A0A1BC7A16D452A5
-76083FA380D36F227828DF913C468AC69C435B2341A590AEE61A44B1A00D5409
-B836D6BD6670D5C02A614241941EFF04BB09366E4CCE644F8A3D2CAD5BF9E445
-BA296EF46392ECA30976FC566CCD4354D124DA25D9708578214DA5582122D8F6
-8EACCEA4CA8F63F15CAB59FDF29AEA5B4480023D6A61878B43B0F9CF1F4C6792
-C9B0726B1D5162E665CE4F89BD724CA7B957DDF865F6833BDA3736310595F2A8
-58182EFCF9911455FC934CEBD36C3D6E258D948AB4E28D225BAE6C73D7F96E9B
-EE7BB7FB24CFE23558DB7050113CF8FAAF62E6DF1B05064FA99C2016537F4A60
-0C80147EBBB95DBFD8A03B125C464E5917AE0F11D293CB75C8FF18322D788FF9
-61593E2CF4FFBDD2A1169A37CD3483C3125A9669231592B85D80FFC5FAABBB79
-3E7F46EA5B3F67B0B5802642CC139D752C8A9FC6687CD6380192BBE2864AD792
-F84A826F9052A4970DE4725B125874C162F00453A685A329867D237E3FF253B4
-0B05384E0452602C3F021E47F5B2D680A5D120B7A7F4E261B1598DA4B55B3AA3
-BE47D2C7FB46780153B3A7E124BEEBF25BA598021BF943DDDC3CAC5CC661FCD7
-F78EAB069BDD1531684BADB59CB3DAA544A7F38429104399FFD147B2973E02BA
-5D7C964A69650D9C5B1C3806A9B0F33478B9B2D8CB730D4E28BDF9C35A0E015E
-AEE3110714E6E09D51A47EBE4DD5C1A4A7E608B0C5233B85426B1696C88E4A1C
-56210C41D7B778DFDAC0708EEEA185E37CEFDE917728E9E2BC9ACE85CEBFF12F
-702AE7B7D0288FD933ADDC3AC849D7352613C41BA4A7988A08D24DDF178E3C48
-1C7D348E7F5D67A764FDFBF5FB9A20195F4C806ACB59A47F334CE16B5CE3B8AC
-FC951D49170D29B662A7A6EBEC46EBA01C96E85F8A4559CBC60D675EB6E1D7B3
-84C917104B318B9AD8CBAF12CFA478590690265DDB43198C7B7C1C6D5A23DB30
-11C1D6AE610ABB2985CB9D00B91860963C316BC83B9F2747AA99CF8EC08CF47C
-D599CCA471FBD4C2059F8EF134050CC6247E9E56FD480E9B93DC083B0F16D673
-7E0A1096C30E9B8B0501BB25516B18471413428F50217BC2EDFD22EC1135D121
-DA739DCD4AB3AFDE2AB9407887D1F23CC5778C90D5C32BAA41A094968BB78F81
-FE42DB18820C03641895AF1D998B2A0C5C1543FDF91D6562A7D63C136C47AD42
-C1B04F7A70393CE6D13D313B63967BBA42F356AFDC81851BA94ACEA54ECAF0AD
-8B6D4BC392CD8B4C71CBCD1B31A4FFC431970C88ED7D003EA9964F8829FA69C8
-D7BB49B7AE6571ACC901BAECF22D72CF86CE1AC1D831FC5FB5E6FBAF959CDC2D
-900A773752D320C730E4A8D8612CDABAB22B6FE49DCA590A05861E2421541766
-3230671D0722C743024A8D143E3CA1DC3658F10B9779F4BB5859BBA03E03EA43
-68F9B65C04CD618BF61F0110EFF9DAC63DD889230010AFB6EADC13371A34D3A7
-CF3879D64242EB295ACFE2A2A7AA7D5919EBA50C38462BD9AC72160A24CAAA4D
-F467AF4A4102D2C291E4B80543BC7D72AAF725BE15A1CD8499ECF99B73105E15
-53F2E4FCBFE1200A418A2207BF2F9D9BCDDDB62500F8394AA90E615D06A805EF
-BA1006E2C3638FF8AF1D67D3A02F3E5185394D4D83A8E0502759A14F38DB9523
-1059BF230DFA29CF3020F2380406A8DBCABC40B50833E5E5253B524E2A4DE292
-49117835FBA70CC6B1A7E662B1FF2A5C96AA9CBCBBA454A623CBD4FB0FE35578
-3DC8B468AB579AA8D154035EB6F30F961412B5AFE7074F18AB9019AD2E600DCE
-5C8376340B88DDFADCB4B1C46D4F63BBFA3631E11BA5DF550A4381B3DD1F1D11
-F47DF28562E706A080E38B2E61E03603694816D50D9AE19079228882B70AB605
-D5D4836F29B382A61683318A3442770BB18BC376EBC07BBDE01ECA8677702913
-2688777C8CB4E87B6692E5E86A54A220F927C3CBF885A78960D307B572F57650
-8D817DFB1124BDF3803A828D64EEE5EDC69D3568EF04D2D8C0285568817FA562
-08FDB68E1C0B822668CB706C3700BF0C30D72D048B943D50B00889A33003B446
-DD7F3E4B35F257B0537E91ED175FB3A32895457989C018A71A1023E096B539FF
-1B09C66F77EF13F874F16E6F7D5BFD6EFF37202730AE5231A29B4F91B868C93B
-CB3D9F38159EB9CCA2E1B3CBF296E27005DF9884F71C733BD4EE3F144D37E20A
-65262030DA75AF8151F141693F97E380C5733B92A5615351E506925301308872
-09EAC5535D6185652AED2621F4E0D3224128620FB6D9D0B99C3D31B3E20F980A
-A43A22BDCF8A2779BE4744B76E908354589E1D69A7691884319FDF889A288E89
-696E5FEFA1350410F0411CC4B1FA2E4A767A662606978716754FD44FD7161DD6
-7CAEA2734F499316BAF6E665DD6C85980CEC818542DC7460B336097E25C47AAB
-F26FC408465B034EC7173FC10CC7FCE36A9D74786BF2007D0EA403D3F8E90FB9
-852B4D1400ED16A4B945C3426617EF47A8118551D0CF6B5E95C525FB8A896FF7
-FD7FABA141B597D27499B7D7D97712248CF0DF7976BED02A5D564D59B23F4B18
-9F13FB0DC17334A496FE3C2C84F4CFEEC9F89B14A7482AB324DFB201B6B72295
-98EFBE2C8A5A58FB4EEF33F4888773533A9D5D73732662192B72A1D5102E2F5E
-247C9282EAF1705B5E96C9EDC36111AD5FC2E1FCC606DB766775AF00834B2631
-AB76888E6FF3CD6BA444C804770463EF3F5014DB69D860EE563CBA238F8DC2ED
-3B5948A27A0D02033850B4B49E15EFD202B0B3ECE75C407F0843FD84D070344E
-01D1462A8F7CD73954D75D7CFE22A8F4B69185A3B3081C1D113D9B2FDA91AB0A
-5D3FADD335B480F61C6A5C25496F3FAD35449A156A23CCC9C3D5BFF5F1C1D243
-607E05B2F81999337A57A673026E7716ABD0395134BE23DC11484F898D9DC7E9
-68CBA68E60DD836462767ADBCAB8F3353778FA7B976E01458064B51B5D2F2B53
-4E26AA1EB608D072089F858B1C7A7E1C217C8872E44CC5AABC5DE83E10C3986F
-E5A484B2EF6D8B05F70C499BAF6054C05C10C1D45C8FEF8D493968F065EC4161
-B8B04F8588F208C4902D37520724B2CB0299D8120D11B836F8B301229BC57CE8
-3DE15D7DD8D829BA7A7F3E39885771A4469E5E4390A60C295926AB828CD91058
-93832AC0A6BDC8A6B7
+6C1ED25B47BBBF5494E1C788038B82BFD0D6CFABD31E031B0E89A86A7FCE15DC
+EBF89A9CB702B4200FC4E3230E9EFF203361CFCB76FE1878EC5F060F9B419C1B
+7A995DEE4EB8B2ACC2214FCC5F0EC7ACBA26EDB3C06F7FA3976B02C9943A4B8F
+4E93F0DBA201BD8DD41F05517436F9E4BD559D318C4B42BB7B3E50187696738A
+438F514945AB3AEC4834E7780A2FECBA98DB87334AC11E72968E9646705B0B32
+962CEF559615B3CFCE15FC611D0008D349299ADE9338AA641800202F9E61063F
+5C75E8A8D2A11C46C9CEC1F81403ABB69E9DED0B0F2CE1E0947E9768C632988D
+520FB70326196BE3680D21F92889B889CF6F0ACBCC10F2D2F2CA50CFC7F71AD3
+7C2C43F7DD797EA44C602210BD5A379FA36E436AD501A25CF3A28F425A827A76
+2FCD4209893E9C48E8C1FC5EE04EC1B80E3C2316677D54493657C4F4DE07DF1B
+C231921E94A90C4B6C064A73E47FE160FFCF9CA9DF8C195418B78DC2B2B67352
+1E0CA7E7E68F21FB9EC4642EA6E7AEE8DEEFC5CA0DE9942D3786912755856A44
+CF4B0A08E4194DBE4E45C2FAD9C9710A25D46ED40F494696553150C81BAD25C6
+473F20A66A8186E449B5962A62FD1140097C1F5ECD7C688A70D8FE3B09A2EF6B
+7A6CA06D74B4C6981E7F9A306033B93407F8770FED2E1245C8844F4AAE0E7BDD
+85890F581D681A4346CBB2D455FC11303699AFF4DC543A1C3E82C2A929873BCA
+991125189D71EF5B85B26A8BA06C03800FDF06B37E9C021FDAFE3A13A9B2335A
+21AC4EE580A496B1EE810547262A766803BECC49BB3F7847FEDDB3B66F695553
+B3B79C2AC434D602DCEC4E8BB9F570E771C67FE32D7C5EF3CD5D16E898CDB057
+05D999E9F465A01953565C7B08934EE20DA86B801186315B894723028E05295B
+F92439A9007126E865B0ACB4DC2E2F45B5A15F56E5FCDDD61206C134FEEBBB55
+3CE3874702EE51D1E32E8814F75B66134125A966B6957629A29C05126BBE8DD3
+E6A3328D8C5D78C6EBC3F7CAD003D419C4BA429A80B0A62131020E7113C5E0B6
+A2762FD041C5DDFEA829AAB91329EA218E908DC362FFA1FDB4AB1E28BBC21A82
+68BD1579E1561B54AC912A1850F6AD268F72AAA9882D639354C14E9A1DE379BB
+5F836198672676795FB5C9587AA479FFEDE2C7105F60211409D7DAB7E8AE5F11
+7156516457D86E0E4C62BFF030176277AA7D706CC894CCC8F847B9FD54A13459
+9F519D35C719EB07CBA5963E6D2DB49E9D7904D64C917CFD091B6ECDF9918D86
+C0850A737413FB2BD5B5C29082C48B0633A5DDF28258C1F288DBBB6E0AC3C1F3
+E62CA587052CA04BC81F791FA3BE95F0700D546197CDDCBE0E1E7C31B1E3CF65
+74636CF038D418478F930503538524282FF8984A7C35E22068C503A364BD6616
+55B9BED36C0D728C79A7D92DE7022E37D8964948EBA56AAC380250C6B11F9E1D
+24EC3DD93CB4C09BDEAF7E9CA1CB4318839D2112D5D20120BBBCAB46D7599C70
+E05FD890026E75AB76807C56A3D7420DA2B8037027F0B56BE252E2BDF88F9EB6
+16910EFA200BCA52BE6B9406CE8D30F51DF38DB372411F68150BAB0D5B5D634D
+4D311EEFAD8222B18B63D494778456364DCC36231E820A9B0FC59C39E173D0AB
+3810C11B16A47A77634E599C0E4CD454CB736C1577C2A6C9537186FE3080213F
+4358FA1FBE0D02E96B6CD4DF0A9359DE73F14BE05FFB4636F51FA9063A250AC8
+1A6EF7AE5A224EFC3C8EF672F4ABEE860FF4CF11C49B69F9E357DD6E8F1F8C4B
+E6F68965AB6AB3A6A9DD1878C86B6118E3EAB82ED0E4AB1BA98282269C01C790
+EF92B48474CC4E2F35BD2BB8EEF2A8BF1DD136E2084248698285B210FA3348B9
+F273CCA07CCFAA52B93DF9AA0197A30ACD045ADDE553CC204C39E6B424BC7FAC
+948BC52A3A0F5DD1F6C5D51AB84E809A899C709F106DE3AE22843B192F5E7675
+A6961ADB9BCB58695D4C5400D23E1F1E476BD2B24F9F0213DDDBF6F1B5B485F0
+AF0C82B64329FFDF4A108CE45B274F9AF149DFE987DAAEC62DA159A9568AC82E
+40D115213545D7EB212C676FDD6E136CC9B69AF8BFB3B6C193F8F555CB8F58C0
+39C438669554A229B686DFF12770B6037EA2D03FAC4FECC5F7C8D3FAA599F6C8
+49385F88DCF20753363A6210FC0758128AE263E4258A5FAAD81AB2E064368E9A
+C01FFADC01CE37A6BF968DCC6914718AD0B1819E139ACA1A4B9EEE57AA6376E0
+90527C700F67A3BCD8B3D0DC246FDED06E5AF06C3D56DEB493032AE9E05288A4
+14D606E8EC03F50CB47345EA3AF400F776C31B9114613A13B965D2D602AAEDF7
+0092A0C866B90029B4EC9CD639522BF8E5FB4531330EBFDB83E7D2B24C5DD7DA
+6516363E1337E3997F86CA85722F9082C9240659113B22886DF2FEA5B831D43F
+16A19A94A6A3E1C490B7D98CD12504E00C0A69DE900C9602730FF1B08016D760
+5DFBEB93EAA27F14CAF56249E3A8EE27F8800B6C0B596366BD47F1223850AA5C
+7CB0E862170846A3C0542269F53EF1797893E73D5795C772CF6C2092226F73DD
+5E3462CF3791B3C2A8349A5CE4FEA0E4D63583F039CC2DA114FCBA79671A8772
+2307DD44593575E7D5D453205676379736330819ABFD69F92D5413BD96AECFA5
+42CC41CCFB8A0519E3BA49FA181B83C7ED6D05DA11E23D63D03663D8A28B5A3B
+D2BA082672A56A9FF2D3AA9B13956AE707300218932B473C75FCC7CC2C6EE593
+9AE32BA23456D679B52938D31138BC5769C9B72B1386D84A4B34F46433CAC90E
+0BB0133EDD3C7B4B31831FE61506FAF4A1EEAE32C17E800F4EBE3B0783E68B2A
+FC48B5BBEF6921DC82ADF29645432FE2B61B7281B55FAF6D2C4E6142CE37511F
+C822F1B986644101E6033C4D76128E2ABB5846A94C3F20FE5721EFD8E28D7D9F
+46C1A2F1F20900EA5065666B2A8D1A310ACBFB0319D94635E4ED5D711DF4D746
+C4924DB269469644F0FCB7B4AE63707DC35B2B5980AB7335EEE256BB25BAEE68
+DDE0F4389CB3F51218932332CE872D1E31D9D57639444DD56B53C116D57AE44F
+43CB5A8CEA86064EBE70C67FFA8BD1F7D0DD4ED3F6130A27F44BA86ABF96245A
+8154F25CFB46BE37407162B3BA84016B543E207DC7F00FAF9DEA61C8F43409F7
+C58573646A916900AE32C787EECF842A21177EE126CF5EBC3F1DB3B6A1EFF132
+A041AE404974C8B3365825003BAFDA9E58A3BC8B5777B84D158B579098D96E2C
+56D9721F24886CD4EF6CA0FB92180C6F8DF7F93895186F338319648B5272AE90
+F6BA474CF484CEFC76B4D34073E9757142E81198684EF73D6AD66914313C2B94
+29956A4AB10DE1EA676E2D51F2893881F53AB6908F0F1A343E9064C28ED086C0
+FFF7964C20F82235E279C9A9C2636C4E719DE02DAE6DC834FF2524D85E044604
+6CD17BDC6AF9A85DB4331450950D39B5A6DD450E8534445904A738DAA18B1ED2
+F8E2DA1EB7427993F8F52DC137CBA0AE6D468579E06CCBDFED72781BD4F04973
+AD3B197EB19D5AE5A3EEC05A39576398ADE63EBA5D791FB978FB3D95375FA630
+A9C1A779C2390D0A9FB8D0B82AC5F58E3B9666AA4AA1043A2BF92E591F10231A
+6D6D29F594EDF1915F0523DDB54E438A112FF494C75446E77275C73D2ADDBA8A
+764AB2D3C9152A8E3975D3114E32D1EF3D7987DCA543945960BA1FEFCF9FA663
+B5754771FC881B054EDB6064DD6C5AEAD699CFE97D41F9C5DCED967A06C5CD16
+4480DCDD039A1FD503E1259002A13F117BEFAB4E9176803683612F505F56065A
+54FECD9E14CBB337648036CFD0CDCD8E3F44C16507FC64A75B40695920431C0A
+867F2B053F2392E46D0A140ED318CA638D887AC72FE0707314A6B6B27D7351A2
+C1FA20D330926AB6B5A2B22B960857B32E59C9929F19EF9272966B590579EB89
+AA725F84757CA11233A368C6C008CD41DA5048BE6614887BC08B94009BCF4708
+B8F43A532BC31B2439ECBFCE32981D856230254DED062A47220366FA2E3A18A1
+65C13866512952605E2A75430F9B81CC4001B1B2EBFF23304023DF63EEFCEEF3
+0FCF13BD1EF8F3163CF98D624C2CF3A1FC68787EA1CBE4C90DE785EC5A36FA2E
+4884F0F507F6E5FF01DEB3DD62134CFDF798DAFE507B72E76E601BE90E179777
+1EB092EBBE51A793C815A9E9497EF68516E09ACBE94C4D9855AB6B4DC3A89DB7
+87C68419C491E78926D8F4EA68B402D613BD5305121DDE0F39135E53137D0328
+03655B13A61E593973F2F5104C9BE1214D9757F1E0E06E9AD91D32AD11FC03FE
+4501486A6EBEA13F0BDE1A96AA7C29C14B5504022E31A6667C6D497EB09A9630
+A0065C73F0D58F0D6C7BA257699A232D06E5B30936F15FAB4065636D47266EF0
+0EB5D9ED5D6135DCDCAE56406BB76034C80309E712E5D153B9A8CF5A930417BE
+305E472545E06BB377D99316FE6381B15A4A0264B2F0007FC5662290986CEFFD
+3D6DDAA1B4092AEFF567410DFAE78CE84B7976ED53E8F627DC379263780164C5
+A1F030379C6FFA37260436458FE67A07FFE492E51C8B887331A889668BED04A1
+221F2CAFCF2C36EC632C6CB08E3D54D10AE79ADED2F3AD9BABBE03051868D832
+13E48204403C315F20D3A69EDAE58A497DCC91FAC1AC37A810BE6A709C7A169C
+B50EBE936CBD9994ADE5110513AEFF586DB21B980027363F86233F659E40E191
+41E5797F84DDF5AD5BE4EFBCBEC76318AACB8AEE5B7A1C477E8B1F09E476682F
+356D5E1974837B4D05F3AB9FE13CC77E11AA5CF3301FE23E272FD43D9092421D
+9FF00D5CC9C85A2A129ACD5474A52CB848AEACEC9FAD1B72FFE722E17B32C561
+AEAD79F4878A3A3A907D4687B167513B029973AF8E76E1C321423596A749D87A
+CF1557D978ABB7A21647AF85E983BCBF573B8E6602F32B23F174852E4E11613D
+35D0652888FB4F4936BF6FAEA43166758B9060C1849E16DE5FD3597D76CC3430
+D2FC7BF579A538D83E52DE9D9D4EB88D5F9BA57E3227665750F831E54144A73E
+A91EFE52B16DE2D8679C5BE332E9D8D20C6A0B62FF6898CFA6D553B0273869FB
+2EFA3474EB88B7B1D731CD9F2FED700CE240AF757A17E181193DAF8A05006BF9
+14F5CE48907DABD5226932DB9AAE21047A737338FB3CEE9F499E338CAAADF490
+1B9AD4B4AC8F01EAF249E2D00B9FBCF1D4E141D8613957F26EC53D39CB4211EE
+BEFB842F2C6D1CD05A55CC0CF08A6AD977CF4C477C9A21DF2D86AE78BAF04EDA
+6F132923A29822986A1C68A2D396FF312D4F70B9DE50303A9B1DFB532DC330EB
+84C12F96DBE1A790C3A499EE738ABCA2205D5BF03BDDD9298E4741A57AC86E9B
+81847AEC4D6B6B2FAD501453CB0CD79B448CE42EABAE26CC94EE3FCDFCFA84B1
+63C81EB6124C8E847F4A8A3B37BE1524418D18F970179E758296EBEFDF6BE72B
+B9BD84771199CB163783E3580AD6943F91AC5F3822A16E1D495AAAACFBA1E436
+5EC08CD521596C706CE7D1136224688BC5BB109154A78C0396EA010B6827328C
+153504926AA52FEC6F684105F459862E7DDDACEA2F4FCDFDEEDE74F077299545
+B6C7E5BA9FE3F55DD9A2DBCFC092AAAB81CAEA5D6C6ABE667AD5052F9EC5B021
+CF164CB3397C539C91F3FD1AFB8E976D161CADEC402B77BE69D008A2C126E98B
+10AC8D7814D1495F4900A6F96D4A390AED7A453D0A031FEF9FD44CAC2FBD25CB
+C2F740E3671F30928BCD9B574F1B4387E41C51B50D38D6B39F3C0B387B74D18A
+AAF3E14CAEACF98AC83EE560EB65B51FEB90F487F3B42C2F2D8341B9493EE0CB
+C712877C4381634F610ACCB0F12229541A0902AAC38012A35A0D46DF8ECD7CEC
+BE5326DDCDF6382C43B08C569E326D2EAEC5D3579A09DD98CF344F70299873E3
+693017848878E250D844CD759BA8492DF7109BE0F1764A0C11EF72A64BE353AF
+058FFD4B738E2F56C48F5EF4DC935262D1C30CB2C9FCB0690900ED333F530EF1
+117A0065CC87EFB75994D2A52848630F9B809C71C946EB77EDF17D1C3352544B
+781BDA5CE3B951B00E7FEB4572AFBEF56F259B5B8BD2FFD8F645B0F4DBC60B79
+35F867C7C75F8113A72D96D144947BBCD7219CC4B8A5D4BEB119EFF6AF6C0E79
+982836B969ED562FCCC833442E447DBAAD1F507291CE09F5073D3E6A5E485F32
+A01F8487932A162C699B706EB439AB6105A4B270FFD580F203B277CD2A96750F
+F5129201F8673B57E0F64346574827B1A96FAE97A18AAA5AEE5A2A17C7CC7ABD
+33DE297B18374134672947FBE770D2E0EACF065BBEAD4A9C8E5BCA380365FC3E
+1B28526DDE6E70598F9B2B5A4CD3C7B3165CF1D3F8919B9939F98A7DC1CA3EC1
+322782A4A68A2C7F5371E97E5D8A091E71BE54E37E90FA02DA599A1F42B8FF3C
+DB6A3F26F2ADDCE5C70C376B1BB4D62F4087BB4B573E612239CD67654F0B753F
+B2DE3C9578CB618727E4F1C34124BE86FBFA1AA14508BFBA93DF1DB3956833A7
+734B997CA9CE44BEC6A4FF9E6D4BA6F85907013C3666129655AA54C7136BB403
+9EC7452CB6B0129547CE1A11D344DE05502B4AE58E7D255A41500045B4E8111A
+6116B899C4C69118A06F4AC6D819088D50C6C5823DF9225C1EAD06568170AEA6
+CBCD5BD77B328D1D1187D9726E4EE5CD1E24214C01E87D8BAFD3A869E3A8E8C9
+EF9080678B740EBCB649CD3BE25D624CB61595C6570CE1C58B0F9FB28A3F8A80
+114932D85162C10DC19F5A964EE38BCF49BF76C752C6A62EA227DBD6139431C1
+218CF49884B47271DFA6A8868DCA70C98E5068D4CF47BC98FE627A89875DBB93
+664887D1A2329332D6DFDD03A08591599C74A4673641B23260E82ECFEEDDF129
+2BC29BAAF0E11FCEF4DB2F577A214CDACE15D99C4790B47BF42F60D53A6C2EB0
+393A82D0F40CB2AB5999373B816AC43F2DD75D9A23A54768C6FD9C1BE3FE834A
+3412C3E8DA389992F0D608624CBDFE533616329BC1F83F4AB9E4495A52B3A6A5
+CA400197E003CF1FE9242447CFCBC85E128224966482B3FD5FC8A46DC37114CE
+DE5E4FD0B5F1265A3884AF083922C490B3F00ABF1E7F2985C05F1C023BEC3CE2
+BC3E02750BA9A5686944CD08CF32D0ABB37E882ABE579B32DFEABD76946211DD
+0113B49B8C3CF494B2A34FF1E267F5AE95E35379329665C6D4E69F0096C07BBE
+EC5AEC2BBAEBE174F2F5F1BDE92E0E573B4EBD2627EAF77B9F2592BF374E3ECA
+98FC0541A4B608CF2B60EFEBCF9905274D7000889FC4854032F89D970FAA56E5
+0F0814A0F165EF3D441DA13412B2B7C3F6A5CFD71D3290810EDCFA1DC6F6128E
+ECA561A89E4CFC448DB195DC67E5C4FEE96C8D4DF87F56860B2BF511CF16A81A
+86CF4FD58FA15DE127003CDC98D60FA2526FE6B19C2B3A942F6AEA8BAC163D6A
+2F4077633E55E7835B3F243321CBE7D54AAB6510F4F5DAD47F4C08C89D530A4C
+208F1903721CEEA92AED07A2943395F092B2307C6543F15F070D776E5A51A693
+42029EDDFFA3A758B620A7D8038D79FF6584655BB33168A78A70F051333E389F
+3F3B739D941FC6AF5A5DF5F95A76FB21D6F8C415D4B5A449079E9FDBF158523A
+4FD60F4A12976872F5393A0FAE984B071D5C2DCF85AF530820B7D60B34C5A416
+B37353F6F6106BE4C0EBCD6F3F1082E2E2118384C504DB8AC14D42C78CFC4FDC
+6F0ED07729789760F061BF6066D9A88FAE6A8B0BEABC39B31E2D566D89BEA2D3
+07965B48FE774D35EFB7F7903BFCDCA5929C8AFCA1DF612681BF917519B83CEA
+20120F249FAC32132BEBE9FB89A70F5E9EDD4E2A01A5DEFA3C815F4EF44DD5BA
+5E8D84CE5054DAB66874BD67598214066B89CC52BC795964D20C76343A5A0D2C
+A6044CF00392FF2CB07BADF65126D444B3505661CA9E519C6105711007F73F45
+6415D72F3896E090E339FE5C2B36F0EE59AE224746F3F7BE85935B7FFE957B93
+0DC6FA7B70E7A6723C015F58D49AE0317B3CB70E5831969AEC18F08724CBA213
+2049A2D72D2F0BB9018BC9A5E732D92929E466683D1DA2DD80683B5B1B60B134
+AF26B3B9078106D3B3BB6B2FE5966C224CD5CF9D1BAFFCAD0B4AFBBF88D08CE0
+1C59112E61875F9CD4C8CDC57A0BBC9081B8DC747944395CBCC7D5D8E03A069F
+4D50D46AC6F98C3773872C3A9212BEEF715466395D45E1A135E448BAB6F027BE
+02DC41F323519251D7D3DCBA6C92531ED68B09E5AD04E9C4D658751B9DCB7CB7
+713788FE3701589F5E4D6B5ADBE9C5032A6D6E1EA1EB1943367CC7365E7AFEFB
+34C30F7F77B0D8E0C8EFEECDA5137EF51E50F0150EF243362DE3724052466537
+1064FAFC473ED29949351A94891B392FB5231A401F51EE19A006E6A3102C7771
+94EAE7C1FBC46A2D851D8089A5DF7BF3E848331292F87E0D31EEF9F6B017AB3F
+7C800A15CBA34DF50BAFAFEA5DCB51B82ACAC2598293EC06774B7B506BF3A266
+DFFAB2F5FC0D193F766E3AF47515643E1A53612997253B4740A9E15B1B9DB88E
+7074E9C2A06420449456EF2EE9960071A735463D769A1529DA8FE6400A113B2C
+011B98B86BF78D202BE34BDE99459602C2724758ED8EDCF869892B13FB673E51
+F3479C0926075E9523899A6A9274E034063CE15BE966F3E688612BFF1A69BD8E
+137328BEDE5587D611C890968614A23D536D0C8BB6C7A7B675A9713520E34C23
+728ED3B261E47A91E5EA33991B1A04DD6F7B87DE1D47A2D2096E3FB4DD6310CD
+106F8702C8A84CD16C2A9EAEBE38F67A5028874EBC19AF2094BEC68FDC25E68C
+9E2EF7770EBD6C69D2C1A452EC4EC0F49F346CCD9B4023332181505F194E1F13
+33C063F714895D1EDA793AB71D0D566BF3527A65630B0E8F2353FBBB2676F6FA
+C0F372E90FDD6E480386BDABB2145DB695BE5769E2A3CC667FBA352C9278B035
+20CF30BD1D84AE91BC84942821B4035FB4B7377B1B4B71D4AD9A00903100F160
+F6647C7F74D79C5A8175758F61A296E1B1A68CFF11CD1C0D79AF89198FA9F29E
+CE0D4FB0962550238976852BBA20AAEB7C1A0B12C5D83D157D176D78A1DC8A56
+47B07ABD669D59A7C53EF95B888B1982C405FDB4E0AB18F33DFBB128F01F89D8
+D0B76A5E8C5171654C7401941D003317F5C256156E482C3ADEE87D61E02F45CF
+BB98D291292FB3BBDD811062372E20C3ECF00136A85A14C5790289021012EAA1
+ED7BF6BA71D177CFCDA1BB22E2E6EBFD768F6AA641C8B1356CDBD7C2AE8F21F2
+9DBCD546341F860CC9E36FF51AB09472A25C87ABEA9744F1BBD80BEB8F45906F
+62AFAEFEA8E3E3FE6EB1A3A98A30996A6B65F240B2ADB7C95DFA477B37B48D64
+D24C109664E2E630A2FA577054F07C70698A4FA02A77FAC43D63A45CB60AB620
+244453807B6390DA4DD2F3E3D47A691545BC208C2836AB794C059ECCEC7F2A9B
+D04A21562F025AC6948005DCA269F2C926C540B7E252AA7F7C707B8293866468
+E51F5213ADED3680D08627E7201B6076CB971BFA7B7B4098AF63AC2A84800089
+B04FAF2088200AF13EE125E79AF702341AAE559D60B7C4A04E6670BC98BD77C4
+2D64EDFE41A627152A7DD2003505DE4C76D7B8C81A3026E997E813DFF174DE46
+3D25BD6E0B16AA31925ADD94C833D97840E6769F89A78C17ACEE219A53E43178
+C0DE73E2E788ABEE172D57263E82F3D410B0C8379CFCB8C8B9221112FD0105D7
+1BDF413E9BFDCD9663D25EFABC209F08D3CF23F02E5A5A59DEC8CA302DC74EC2
+EB8E0BFCEF3ED01F780BC0014EADB19082BE83A0950764B2FBE500ADD51CADFE
+1CE5841B7B50ADF05395066BEC82ADD6BC011F6A6307212D32B34E6B18C777B8
+0E69B1E080A0CD32BEC890506FFB3EC595E5CA6998459702E6D63583D2C19BD5
+014BB715322469B59BC9CB4401B99D3CBB92E68702A96130575FEFADF62F4D5A
+D8C72A46DDAD10095F11559DC2A57A959BD8FF401A02178431C47EF1A7AB7C01
+ABFE023D54E3AB9B5F70337A4EDE49966F112015149114134BFB10D16E065F61
+F5392B90D1FD76B52A5B5B6A285DA39E233BD42A5513E9B7A5E598CCA1722533
+99E56D52B3954F0F377CB7732285239E91E97CD4B28E3C5836FC9514F50E859B
+E72325E42531B8751ED54E39FD40054C8CE0264F469D1B37C74FEA9CC89B6D0A
+1AEEBE18F040F59A076C2884CADB8A6D51CD184583A257A5E86A17AB9760D621
+9CFEA0B0F38A8FB1BF339187ED5E3048CD9E2BF3AB681954CC9C479F8F304C36
+5EE4E9281B615D749784EA16A04CF83AFFCB2B1F90BEF2C4
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -887,9 +893,10 @@ dup 67 /C put
 dup 68 /D put
 dup 69 /E put
 dup 72 /H put
-dup 74 /J put
 dup 76 /L put
 dup 77 /M put
+dup 83 /S put
+dup 91 /bracketleft put
 dup 92 /backslash put
 dup 95 /underscore put
 dup 97 /a put
@@ -1107,182 +1114,189 @@ BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9
 50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
 C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
 328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
-50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693CB8D1F4
-7E3376495E6CDA3BD280DEA744D382D720935D605E1E2464A31B86E831A1DB1B
-BA9185DC43D32993D3B5900F9D5B45EE9D2C607172A670530780EEA08AECBBF7
-5F59F645CF7A86ED8CFFAAAE50BEC460C07B11BEAB82765FD18D152AD476B7B6
-2D08A8C7B5D8F7B6400C8435E6F08CCDE4234D981D056E7F1B361F478759FFEA
-468FDA9D4EE5B8BF0B83506B39C1FD36B16D14D5005202EEA3D9BF656BA60548
-A94BAE6159A75BAA549ECB9D5272C475CFF6BC373C60723049295392D4BCA477
-3FF6270B7658362D0014743F1686ECB611912E6B82670BCBA93832C4EC9CDD22
-BB2FD9FF321840A882A1E2BE9B354E69C9F4C6210564C02DBD96D4BC181B4876
-49818380D9DD9424E30DA3E8E3BE7682CE0CDF6CB3F7554ACDAE1812AD3B8AAF
-F0990BA00B058A1C5CC83A60491B7875821799B231BD9BF1D568ACFAE9E5FE2A
-7558D3820A67A6158EA037FDBE8A6EADD8C934380101327B8F1736D996F9699D
-D64AF938C999C6C93C9DDC7A8F4497FE81DBB787F24EA08ACF82B3C7620088E1
-8002FC529C8FAF40A519878DCB79EB5C7C34DD5D6F911D9DA790DAB33E7A8968
-A266E95AA808AEC8FD854D1326778821DAAD03ADC0863C83E5D0FE70ABB35619
-AB31554DED6142E2E1E26481377AE95C9F32D0EA3DE07F78C6A30FEB98B15F69
-296FC94E6DAB5829F1B59672C6A87EE4E2CD3F0D9894D6DC8D7A514B6BABF018
-B199CC3A4478821649A7389ED46DBB9AFB7D4FF7696F8DB586830D7F74F0FABD
-4BB32F787DFF04CE1E7349704FB5D3154D1BE3CEA0B476C2B787C6E534061EA3
-E28F7D8F65EB1FBD8177AA013A6FFC03BAE514112214F67C7957583FA78FA805
-29C0AD1C6FF9750CA24D3505C889502833CB71EEAC21B8F2F4D3415372E0FD82
-33A937D50F4BC55D381E2E2C831D2CBE4F960978BF7041FBB69C6C9C9246F8DF
-FA2D5C5875200AE8F9BE1C44F839F446C23E630B74B823FFFC88DC30B931769A
-3D5D444376B7138972BE07E5D8215B79288401B0E9E76831250304635714B64B
-2BAFC31E2583F26B15B38400125BE793931E7887175D98A1CE1505AD21BD08BA
-16BFACB350DB1BB37E647D7A00A48130CA4F7B6FC5CA17FBA73F7737366E906B
-AA3335A2E51D65DFC79B1D87F109E9CF3F420408BFFC2C399CA6844A3C5D50C2
-2B3673FD3A796F654D2624FE5B1E02C1720B91A00B4998F825D9C1EB29885A11
-D100A98620A7C186BFAEEC214F0E63A21A28E076D0CFC7DF62A016A21AF198C7
-28E5C374A93D0683E91F06858358E1AEFCCAAAF2CDBC382B1C999D489D06AB82
-60D4C548B9AA7B011F0382324737A74EF18AE7D5402DB1B8FB15AC162E6E1D2D
-371BB20E1F78C962F032B7647A301F771D496B14B11DD63965897BEA60DF1B75
-EAED63791A62BA912A8ED5EFD66340D07FD2DD8A9EAA1A98957F8D4B9F0C7142
-024FF2918E971B73F5BECDC098C7D011335077F059697C9429CA2E13B03886CA
-5D07C7178C2368B4DBA1BE17A074A1565A9DFDEB90F96163829C4F2BE8D537D4
-606E7CF1BB667190AEE95B4D68422B7EB84B054D41F6677D840ADA7BED269A8E
-8ECEFA88484CDFD6F999D9F51F4431057929706105172AE2635764B326446A07
-1BCB5A2277441E0C0C8A6CEDD2D886D794D3495F7CE828E1E9F65C3CB47C2634
-1E3BA769EA7DD098296E5CC981916608DC33279BDF53510C8BBA06A0A0E9203C
-EA569B24DB5EC1DA6254156276944ECB2338CC5679558DFF053863B3E6FDCC2C
-FAA0D336E9ECA4236917455D8DFA46EAE6ABE8C942E087ADD33E3CE49C2A8C5E
-9E4BF0A357D1B9DAD6B2C01D64D65A99EC728DADC5DA83FC279CD60A08971941
-638CE3A7E1A298FB9832804EB4752758EE1ED81FA96B60A6AA1004D79AEE456F
-C3AF0687AD5AA5062DF7F0C8FE7AB78DC6122BD2894DBC59B4126A0D85F34C8D
-A748048087E7D9E12CF55AA2786E595EF5BEEABD86563204CFD5B1FCE181B2D0
-5410E3836E394D0843984362F65D4A55D26C805E15EBF488AEACA766DB081C3E
-51267E8BC8B7E4373183CC054B68A4839F842DB22341130D4A1D312DB573060A
-7E73FCF514617C3D486651D2C8075E02331EFF65A2CE8B9AB7E35CD969550C2A
-89DCE554802F08D5C6163A09E669B7F5C6754138D778CBC5458F40B4B51C9A93
-5DD23BEDF12182BD5F1E42B2BFE76F421FD8128DA78F195038907F9EB52268A8
-324B1A134148226CD0B235B8A6DBAA8508A7209720E892B910056D55AD5797D4
-26ADBC7FC9E6A41F2EFA145DE8707D8AB76970B46D2F2CA4CE11DFB46B9D156A
-E75210C6F9A2B31DFFB3670CA8E52F322AAD31EB71D3E0C99CA791797650E5F5
-FE5EDC86B5B19433B9363A388FBD4C8ECDBDD8281A81AC935371FEAA2B841C98
-3E54FCA6C6445C89374981ADF8A974F5D5CACE8E158AAE572AFB2D282E73B1F6
-C7150271CDE9FA5E5BB94244F04B0CB671EB2391BB35EC2FFBFC522237F54168
-2A4AD8B48C84C4FEAA2602AF9483A1A07570F8E84434F1FD3942A13D3A30C1CA
-BD7901D49659C85ABFC78124215386C475AA0E229E98A9A2A47E32B46F09AAAD
-6C8F0D5FE2E4D4D4BB3B3C3B23EDDAED65004BD410BA829EFFC414DE349F8852
-75D4C9567FC887F173EA3E5AB863903C728D65DEAF592F400C803317FF9859E3
-1BCB658A0458AA355CE3671C35047760ECFE8AC3A01C3B975F01A02CA21E4CF6
-697A9B828DF3FD28BDD625D8502133E85586A0F66386AD428C1E65AF78A65106
-188721680B04E7EB756C564859E4F8E16B9DE6B7231F8F8AEC8064CDD8C923AF
-7B0888ACFC86AD6E03D83A37C52DFD5BAC714A09727B53ABA05461DA406D894B
-81B4B43D3F737939EBB7CEF3C4CA965705411B1EFA1FB6385A6556913A6D32F0
-3CDFDC04F88F214763B7E989D288C6B8861504CF5E8A6C67D16FAEE5E6962F6E
-0935372016194115F205519805A8FE8EE76676EA3CC75CEF7C7326810BD3BE34
-2EC114C3BD2508ABA9206401315D75C4AB6401E9AF3AABA580E47776C6A7D7AA
-B576D209AF4EF84F37608B2CE84D98008988331C5DEA082E8523E06A7BB59004
-CB8C7F4F39B4E83C926CC519163C17FE4CF47F1B66CB444842F494B5C8C1A386
-2DD05BED6BF59227A5757410F63CD8BB77AD0AB848E4B8FC85186E222208740C
-09B0E47BCCBAC26EDCB9029727EB96521F17A7B32E719001E59C483237D8B9BD
-6695799A0C3B80ED9C7D64DC153CBBCEFC22B4B25524BF5B301431F192BC6933
-A6DA377691670958B04AA1F7491379CB60C87F3110CF2BEDE95D6611C2A9604E
-083B721D51F513E47499871C0E3E504E8EE620CD2E0F450E3035CBCA94242BCB
-E42CB0E8408A3CCC5575C261F2325EAA2B06D91A65AEC162268D751CBBE9D5DB
-469592065418BAFB50E658E286933DC0EDFB9E9F7D82AF9851E71AE9DC4A9DD0
-8E01F2533F5C8F83DE9C0D0A49DFC375BA4F32C2BCA5774B702066CAE2647B9F
-AB7541FEC25269D28A7AB4F1F60F3EEEB5D2EE23408BCC84AE471EB6540A5438
-DA807B936F6C27FDC536D2D8471EBE9967B9133A1A5641BE80E64632E61E5E8A
-7700465D087E89BFD1C6197B8BA8A41CF2159A0817B5F95351E02E654CAA7978
-1FA6571CE47EDE08B7E66A2D0C8EB88AD6E4F287B9809EE5485A94EFFE85A73C
-454BF8BAB70BA2000F2B56BB3E0255892C3E4480C147CA11D4C3AB71744BC536
-CD21B6DC302B5895BCA9E72285744E93E85D33A86688758A060304E3EF024281
-590A765C943980884EAC5298497E7D2460C55EE1BD234C407FC63B9B3029C018
-6C86BBBCA5BDCD4300359A40D1281A0211B09B2DF2941EA893F5DB95BDFDD018
-6D674A37A25F63722AD62597314CABEC1F3A2460F51E00451D3095DAE1071ABB
-17A8DB8BA0E224D420D4A0EFF9EA17FFC7801D36BABADACC27A0AF1879C56628
-573059FD22294243357928DB4A835F02B3807067DC963CDE81CF4F69669421B4
-88A159B3502CA9619F5B30CD992F3F94EF3868CC695F52C5E0619E88A750D6F4
-90DF0CD32D6642A3D19549C733B89391041D0FC126AADC04D882188D9769CAB5
-21BCEB131BC5283CE6E9E6F650246B1D59A7A559EB45AADD9A669FC39EDE6CAD
-FCA20CFE0922C8730D56962F4AD00DDDEE28B1A7C2FA02CC7C59932AC31BD59F
-E0C837740EA82EE6C804114DE18CA35D8EBDE3F0C16565C2F51A14083F5CDDED
-C5B7796F9E6717A6A3E963F3DCF7E76DD7F896716193C975F4EA5CC73F6E8C95
-C987260A3653AA099EAE36068B7FD793154050D9868D9D30F4E4603AEF7B591E
-DFD9F478EB30D16AD0496965F5702DCA4BF33541778EA2FAB83C25313F8E694B
-43FAD86D47D5E84B51309B3E7991B29E9922E80A34AA1A5B895765ACE2329F92
-8A04E9A68A0D9C008EA9E52A114B3F09144C30A00A6E010BEDECB7B955AD1B06
-467F156EF79E4AEE257AC357EE49724730D9DE4942E84ECBBFEC6CC7C85CA2B4
-3BAE1CBA5ECFEACAA7ADFA4508F1DB7E6C37405439138ED4BF236C1589A319CD
-3A5DD32D848C22F07732BCE84FD15F86AF8373AAC85252A8F8EB7F3915B52558
-EF02270FFE20521F0347386B3A253A69D9510900F7052A95DE26B29D48D662A9
-20A437B9944E0AB22AB623E7C766A752D89A57AE7BA6A64FD96FA05A5FDE6C8E
-C6084C44FF6732B5B95A844FFBE2BBB234A3A247D4D89B0FECCA87C986912A90
-4791231605EE8EFAA7BC7F2FA5551991706DD4A677639A69EC231CEE3B0B05DE
-AD7C4A221B7B74349DEF428680366F1947D0103D5E4D72AF8579FF824DF89949
-6904BD33856ED29B9AB43113DB038902A9DFB2DF3036B99E5508156522E76539
-440A83884F8C08F8D8449DE3EBF2E6A775090536040BCB299FDCB7E9AB6AE453
-3AD36E109C46221C82265DFA576029157FB1EB3236F1A84FCA1B9B68EA2AE583
-6BCFC2D127B1A169A7392AC1AC251A14C32D643D21C5756BB6E39AD478160069
-A11B985D9F69B800D339BB0242A9A7199E996B02467F6A1F220A8FC245BF2F45
-5AED4D104C5513D3206D57C6DCD93B9428F82CD9938EF6468A165B5A53CF556A
-68E702C0A9796DDFC79DFAEB0ED0267BD57D099D407AF32F8F84EECC9C84C57E
-C34339DD87991056EA0246914D3E2096517B7C0CD1F674CEE593B92129F0BEBC
-2ED3DBAF4AA2EC0217DDA3A7265148B433CDBFF63A68C4A33BA2780E99BF8744
-D3ECA386BA3872EDA1B99A6191EAA8FE477301A84DDFF5BCA00551286CF62477
-10EDF4D58FB980707E202C9C337663C9B16F9283D36D540C75DDCFBD525473BB
-027BBA7FD75E952C2ED012B5455FFE95DA7E04C20F8A7D5C11813646516968E4
-36259B6A91966E87664978BEA76C2B2E093B2A65591D0EF3D501D91FE135C2BE
-E97A446B0586BE37201363A10C2F73026DDF0F0B6FCB331272BE349027410D4D
-958EC50B66EB7A45A1E818B67ED9A5DCC638D66164772ECEE06A80765C0B259D
-1B01A13FA9208182644F5853A8B8C3EBFF7F25C575761E9A49C5275E66B16FC6
-625D7E73A657F9B23EF1CECED93FEE2DC83EEF7D695D76D19BA87F83642F6676
-C460692CD64AA6FB768DA6008FC1C79E22055261A9A62DD1950F4899A7F6A2E9
-21D800038C30183019E084C951394B9F6AA87646410623B996B310E86858BE3E
-8C6DA85FEA3D6BCF62D2C3B154104E7CB5FDD42B54F52F8DBBC12087570F4C6E
-8173A04835CEA36D2280C5C42B880A498E30C7A77940F28397DD279907693979
-077CA5D28515A04B4EFAC1F0C948D69FF108320BF3B5C3C7D642AA0122A49ABA
-735B8D950535460E0B2C17475404D8E85DDA4BB68E888250500363648828A193
-AEBA46DF8C644FF81A998C5A7E4F9F9435C4F202C3DAF498484A012D4088C4D3
-AA9E813A9161BE6F9844167AEB52F29013BFFF51928E5DB7B48BD20D86F317AD
-63EDEC755F5A85B2B07C5B0E0A1B7A006D547744462AB0DDDFA9BC20C95DC57A
-61D44CB4A45558C68E36DD3F680605C9987B6B6959DE24DD65C874E46D5AE7B0
-C54608ACA7D5C7A88FFA06D9F6366E623F036EAF7A9914B0B549747AD58CC031
-97036EA1D54D01A736BD6CD796600E5884E90DB6BC5E2CECD68B995D06B26FC5
-2B6EBCE4279DA0E33317071FA1801279FB48563890C888BF6F2C1057F9728A95
-59D07684FD8997DC446EB635E9A5171C14E2A357C00C30886EF1DFFD229A82B6
-42912D02E3AF236F5C773456BDE13F60E8C674B21BD59D4E6444371E28956C23
-FCB55999382C3347777CA0CE8BC002CB3DAABC58D52FE542A115FDD96D19061E
-1A1DDD098498C9A8E713AFCAF355D2765DAE775FE6F9EA4DE42A066DEE306432
-065E7DC31F144697EBD270671A77E6096C0E191C96449F7E94419C752B920EC3
-034686DABF9FE674DB5E0744D44A82DE6B3933193F2E91D7A74BD17CA9FCA7AE
-CF9E5650355DA885806A24A9993F3041038DBB0DA23D74F12B86A329DFAB87CE
-C06B3F1C7A0D84DEBB870E64E15E251253E82ACEE05186D3ACC88E838F276B99
-0729AC02CE325EDFA5BC3F5DA079E55CA302824AD2DA70964AEE86504BBADCAC
-44B9244CC456CBEA44517185285515DF5AE0BDD7D98AC8928EAACE6AAE7D93AC
-E256992BD972DD6E33EF98DE9D9EB30B6D0569DB0B0BB23A1D0F9A6AC788F6AF
-AF81260D25B767AF16D5F060960E11146384A241CC05185408FE265CFA941DA6
-86AC510021788D2767FF5B384A17E60EF2A664207D6344302CA491D7D292D7C5
-A6DF93AF2ACDAC6970A16A5D3C78991931163509561A0CF10E7375F7E91F331F
-B84E8405E9A1881DD4103B575E80F36F7203522282CB5E899DDC42C781963830
-BA1051F49DAF440F28847188237492149C74E4A99C3323635BC051B8000986D4
-1629B1B7038C98D182481E182D4CA4F1554902D6D88ADEE755E9155861C0D772
-CB414808198E4686B722786911914585F81D84501B40684E279C5E6B0B0C2FCA
-F3538806C4A410EA894CEC8218DE6D2489C6239BA36233871B0F449B4AE9DDC7
-F00502EC6E7247BA3A829795C9351B50D312455F1486DECC64D2F159B0003FED
-E201B29443F8127878BDD436CF7873F22B3FD597EB81F1D630811BE93A51D340
-FAB3D607EFF2A65A74E78C792896CCEA1C2F1C36D43F1950453C79A9F0767B08
-DA6247B44B703157FDDE2F431089FAA9AF23C786737E921D76BAA2D68C3BC8DB
-DED8E756624970C823E97C598DEC658E28AE00CB901213CBA0110E625AF40618
-D9EA9369F124D089C2CAC832A145474AE476AD16BA5BA3FD9C28122229C3380F
-AFA46693D5E9A6254C055DAF47FE051751FE7F9284EF39A36C5D25FE6FACB838
-17F86520B8F143F8A7DE0615FFE77078603F5CD60DD0DDA9B84F44CA3BDBF2EA
-10F6CF79CA3E66EEF95C8E8DF98951933358360BE4A9CA23EDB5F5CD794974F7
-1A6708F418D34E6BE5BE645C266229A960C947877EA14415CEA2B238C8191387
-100FC1D6A879B129AD2CF7D50EA7FB9E8BF2C80E6609809A0E8CE2A70F2DC54F
-3F958E45E63AAF577AC7023F097A77C8412A48A3E608B36F96C39AD6067C60D1
-CC7A2E00BEAA799FD75F1F694928003FEB29A8E6EE075C57C789781D3E983115
-68AC3B16695D5FF9E2416277288367B040DC47D40D5EE565ED73DC18D23B8EC4
-DEC6790571546F0ABCD004B3A6C2360D7BECAD494888E737FD41C0FF1D277891
-7DAC83316800F786A16959022C9729ABA334E45E077A69D02EA82FA23086DDC5
-BD96F41FE176A7F491EB87181FE64F647980DBA6F210F3260CEAB4E076918F99
-D8246512F1BAD74D3C15EC69ED19346B60E59D8A9DC26D00B47741F103DCAE31
-A2CB69D1BF659C091044AE0E2796F13C9FB5CEDC3527F90D035EF785A0655296
-0C979C70AF9637D7C6E3DDAB3A9E17594FAC3DEA75
+50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36E3D4BFE89
+EA9151128893D08EEB495E3BFB9FDFE176817158868C28E471DE8A603B1C326A
+DD5E583885C494586217E38734C9166D1C6792904CCF4D90B6068A5235A9B8EA
+8537D75596F8551E87FFAFD948F6C5937A557163E9208FCA594AE4A8B09196D0
+D34C41EFF62EF84AF7702B7BE20742536EAED1E84533AC03251BBB97104BDB89
+7FFCB60E0BA994E77AB8565456F7A1A78C455C560DD52DE1C0C4AA269A99055C
+449318C2D9E1516360976AC9F397BFF8BA60CC6EF5BCAF22714CD44A04CE292B
+B1790C8D2181B1BA8C3E5CCF9CD1F41E67DB703E07F145C3C03880B88508AD6F
+98350765543BF98A6654A9E7CCC0A8F5D4DE2B5FB279B1CE895FB5E8D4A524F3
+EB2957168A57C2CC42612BFF5077F7BE0A085790C3E4A811461906D11240AEB1
+4DCFE203F3A7DBB81AF6ED9D592DDBB0421B542763E15C6330243E84B2C1A883
+B5F1D9B3C944CC875F71BC6CEBEFE88625A283349BC9A000A27D21DA187C34F5
+A172011DE22076893C3180AB6F73C138B571558DA02F9805E5CA8DD7BEC4B688
+818D1432CB7CFC5DA10B7854D5E66FF1F467C08795E67F166EE0323CA9B4E4AB
+C8FBEAFAEC0617E1EFF064B4F6C8276D9B9C318A590B1168AAB43249ADF44A2A
+135F24D931C4AD6AFD61E6EB083C531F3A259B819A43EC662BA16C881EBD5878
+A8B7D9C6E17C773CB7DF3500F26BACE35474D82CDED33574EDE3564B68360508
+1627DDCDCA31F72D9DDAC4203BA4C5AD459BD2B16CBEA1850E90C7648F48316E
+832078A8E4308715374BCFE000A0ABE41BABF6AAB417FAFE546AB11409A15C57
+B4935C834F272846FE93FD8AC9506FD3007746738D75EC93187B443E61832243
+6208249EC4F8C2ABA6D41B5A3FA2C9F35786800694A9C000AD97BB1C874C8661
+9B977588A5C233664C061F169FE9AC6579670C90DA4D606BF5B1B98E14B1CCE4
+3D3036F87778DA8864DF6F17A0F90BB687DB1E10E95B95FFE086DBCB95B90C6B
+EFAC61453A611E474693EA00219670EDDCAA7F52FA41BC05CB3BA2190153A91F
+7FA13B0519BCF5DA1F7928AFC32BA91D79AC02E3DBA3C220BA0F323DB6E7069C
+282091BBDD25E93A324D3587C8E0DD516E88A1DD5D690382BBF1B92C091275E8
+ADDFCEE798A2DAE549FE01454DD9B24DEA444A5BA1A889A8CBD93D04F5FCC896
+EBDBC5712EA43049829A31A2B0D03E4D83260B350F89A7F3C505AEF37F9AF745
+61741A8158F9D28C2C0F3A74006A8819947016C307B4F6CE6387ABCCA2D0ED16
+7059798EEAA62ED336CE8A08782D88C85415181E19B187C1621A9FE8F4BF2BC6
+63BC50D249580DDE8BFA1CC5E1F003B30FD323F536A836A92304F7812080B30B
+D64036CC285DBF1797211E99211D9372CCD56C4EBEA86DFF83984E65B641224F
+2B39A7EE18E22992D6E4E6BFF82C7F4633B9EAB9C2E2F1CCA68B8A6CE9ABFCEB
+4C5110F692BE72491B0DE7C86D12C9F01E33F34A8D685357FAC45C6C868BBAE1
+B4C716B0D7CD2FF33160A055F1ACB92698272397DB7C109A5B805E8201D434DF
+EC475FD7079AF8A80A8CDAAE8ED187E8A96D31DBEAE586453F16158DF3279EE0
+3F1AE8A9380FDB7CB58B065270177EBC42EC9655653FD95AC5876682B203C552
+79B6772741D26DFFF1207CCEB0EACF359DB57BFDCC03C90FD7D0C7A16E93F0D0
+44721348B49AAD73E5807B1F0756BA88EA8746A4C462BF42C11F264340DB6EAA
+C3D696257FEEBFAB6BD6F5142ACF87478477BB442E40324952C96FA267418A3E
+343211FAFF11731C9D91568BD453CC8DC124A122774D3F130732904754E4D974
+3117FC9F7009BF39D978B80FE4FC0F83C3C912EA04411D7E38EBFABC0B2EE54B
+9B73C71EFED84D4807C6B9597C7552A4C51662702376539FD2DB342B16912BF7
+04CF667C4B7D10A12937EA90F0824C7FDAD269D4DD3558EC693BF966EDC46DD9
+807A472EC2DF825494184BB301C713297DCD99F00082D8C8BC591AB0E262499B
+CFD7CAEC4F5C0E66623DF34A8E010FAC67495CBCD5E232A82D00E06A6AD4D22C
+63B7741C7AB8072BCF7D1BB321C42DC7EA4B2D3D66A81EAD5AC4BB999B3260D3
+BA5408308F83BEF0B315CF82DD572830EFBB99F401AE1C455703062C86E0AB2E
+72C8428BE5749708F9B7A90A0142D5A00E7843A2540A487AF2F92067A2028523
+72495AE9DA195F71039ADC259156A1C02F168C545E2C6037ED48D6E6914644CC
+9D67FD98B64D3571637DB06C39B713F18D0188F507159E75449BADC6FA154DA5
+CDC9A798FE4C35D239C64F45A3B2E2651433D9560314AC5D824383CD2A97BD7C
+E3FFA236E2E426113C82B5B96DBD68FB00EB240569314AC1752BB4BC4A31DBC4
+59CDF304C68B52FFBC3921C7C5CF8A5CEBF0170728D16F4479ADF1198B0DE38E
+1BFD2BDA81D150A0E723EF134C46FAE63136E07BF32A88A28E5DC5D87C95D0E4
+6126AE7309416FA301F5DC646A991682688FC48363CC37180BD264846159D76B
+B8DC18452051AB66524389E71CF057938B9D72C8B4D38F9C88D686AD172839D1
+4568FEC6D53DF6851F4259A63EAB6060F37CA8DFEE702E0FFFAF00EB5FA1C0E4
+91EAF459EDF15624FB10DE0B08A9518CB5E577CDCF0098A614479D7C23F3388D
+772D9C6404CA5FE0DC070F0A4D1F8159F5ECA87345904A424753A0E2B312EF5E
+0C1AE96901E4D0FF07B2C783CEB5EB0DF943A0D07583DD340A7A127760EEF183
+DBE42139CD06F3239B032ADD576DCF58981686F890F114E8E9C0A21F5CD209EE
+3B783113F12C9D8BB8F2880E7F3E871D66D40597E4F2F6CEFA94E26DBFF33393
+C5D8C609126630B414360BE4153F60AAD06B49FD2F8208ECCD183B5A1FE181BD
+7813C4A7158900F209F16A7065A79DA5B8EAABD077D2BFD1CD89F66918B643B0
+8B0EB1E29D37166865CB845CFC65455547DC7EEDD9C004ABC2F77B58413E6CCC
+B294951843D736EC393794352A4EBB806233A525CF54448C0CDA87008CD0F797
+A94C8BA6E49B9242964748F8B0F067BD0AE85F105F6E0AE7DF5603B55769DC0A
+9C9F38081A66FD65E792C2CDD78D6FB9BD88863F3248B6D9CA960242D7578EBB
+44BE624F8013449354E6EF74FD1FF127030A19790786A7A2197AFD72C198938D
+B4A83BFBEE36110E06E56D3FF6111A50CA3CD0F22F1D9F85B1A7446CBD236C1C
+2D9586F9A243507893784B63DFB5A08DC76363A818C3A6BB11240477ACFC9B9D
+7BF816EBDC04C04B57858265174F633DDF075B7BD7B95C5EBE29A3A055ACB11F
+EE0CADCBD9ABEF8D4B4D53FA8C0B157F2CBD73E729770C17E944B1FE9ABE2F37
+BEA7DCAF855102DF5D3794FB80C70FE81C1D20C81D7ACFA4A4FCFAA79A5ED441
+20F7A581E09E751DACA4BD728B11CF5D824D9B579487C6508FD19495C71D098D
+F237B1C0753C572543E35CB83F27948861675E76F959A3653E8559FD35900824
+5FCE5A139D309F73E14A2867E31C01A7E3FFA4E4F5914EA8B0D98900C6CE43ED
+9B0017347FB4A49908651597E632264504B7CC8D1A70E52739BE0EEBF78105DF
+1F33B7D36F8530C96D14923E011284E8FA15CF5BB646BEEC5F3915018B75B9CA
+D1692652DA60A87E601C990EAF73F40210DF1C7E17C156BBF628AB35B21944CF
+864F516D924AEB6E71C6F437BEDABFDA726B6BFDD356B5255D91C4F27A824B70
+396FD65CF250B973BF6CB8854FD80D1DE4706D1AD7B94933DDF1C22B9B5A59AD
+8F4CD19C3A1DBB73168882CBF40214C7E961DBA21E9972A6279D6D6D55FF0EC9
+BF7AB97EE96CE8938C4F4C872E2DBAF1F976D11B1A564094DC47840BF10BD010
+3A2C90FAB609124555B676E62E4F3CB785C02A75261DAA6843444248BCA31E4B
+3E542244225930DA80C8870BE5B36B77E07837CCE4049C3EE1AE9514C18890CF
+000F74D010BB4A0412C6A93C36A2460ACC5DF495C329860467DF9AF18C06208B
+6C4B3001B86B66386196CEABAF917F2A76718FB6940156669C1852A7F89053E9
+95937F161E4995AFDF1116811101E94E01D433B4EA8BE109454A7AFB34C84C40
+D2AC397AC5C1A239E476B7261B5573D5D6569F583557EBFD31793EC79621BF93
+5367E88A92E0123FB96BD6B914FFB12C70FFED1806861575A8953CE3DC00EDD0
+8706F5F2F313DB010CFE5695D89A8484E66BAC92B87F141798F65542F1296CA3
+E2E095C1E850664DD5D8846E90E82414647AD40E19B73380A2A21D4E648E866D
+E10A01E3887F015AE6EC9BB617866CBC1DE054579A1D9935D5862C9B7C79A0EA
+2A29850C27BF7826F851912EFE8F46ACD5E93B756C471E4B46509A33654EDC66
+10DEB14B9DD4A8338F8847FC4ED5F4A13015CB0CFAC335D34013C0D880619BB8
+6A532ECFDE8CACD53D9690F5B05D928E0AF889046F5634CB6AA7ACCEFC081A7D
+5E9FC3D7031021645069A8E3D8FB66B0D0A0A670C0D58AA078D463CF0A78C93E
+B47EDDF102EBBA8824A5D2ECF27EB25E692D9C986140D59817B86EFC7A2E2036
+0151BE67AF7D147BC85A9482D7805385B2585BDEF9F06FA58059FA6144BE6DC7
+DE7E5CAA6815C4110C42EE38DE63109D8BAED6B2585E8901F287C69D330FDCF1
+AE32F2854FCF36EF307641AD50FBC201E10152F843D246F4FE4578A7BA57B133
+3A51DFA3E2F7CFD63D802FE2EE7ACE96BE39CAEF3471F3B46ED5FA585DF83255
+E85E1A67B32541C1C9AD01AEB95DDC7D6F3A0B648222858700286E20D756BF06
+A42300C656827B3B49A5F458EFBA3767D9F4D438C955845992E9EA8C65F6E19F
+D655EDE99A3FC00647F070289F5BD4347FD2540B7A7F8B890DAC21501521DA56
+E8B851A66A8534E70E58356C5DD30315B7EE4A7539077F955C3A63C2D2E4486A
+9B9C54E5E3B3C10014A799ED8C5B7DE131F9DC627E5D0AC1EC806D245E0723F0
+775C00A754DEA8EE8AE04812C8D748658EB6F17288723DB1B67B26523BC0550B
+29D0C9C87E23E81D48813E87E18161F0EC9EEB4294B5A2F9860B20D5218A3072
+0125605994A2756E82C6C17E6443C464EEF1ED955AFFA8AF1A5849EA87E0802A
+A919382CCEB38D94AA048C5DED9C18F9C39E65E967144BDF08529A80334D8FC5
+956224CE3F0B086A90FFCBD6AC0435BF99A4B6F3BEFBE2612B21B964710FAC5B
+45DEF75A910C4BEECD2AF2762AAB6ED45649CF13F2B49D1B3C30958A6243163D
+9478B0BEFA84F76D1DE2DADAC93384FC82988D855E680806A45766A1D0591B13
+4095B9AD1FBE57605DB58913147F89101A796051D093755A943C5C6A25D3EFC7
+BB4BB963A32944F6CB2130FF822AFDE61D0BE7A1953C6D2E19E294469109ADCF
+689A49BE518EADD17430421AABC8CED0BE9CA8FE38568A414B4FDBAFACD52031
+7F4C80A4D703222A12F6C61A0384B1F5AD1F6B4EC3039A0D7D743AF67AF74B4C
+36D9FC6C7C14E634DF6BEE8028F91AE06BAA9BD3C7976310978417C5E2C69174
+395C0861DF8876E5EFAD9D9434C8EFEC82F557EF04E07FB56D5FA0664D875721
+73616429E847B7A1847B3B77812CAF658B3286F2D417C5AA6BAFC97E21B71D5D
+D0F84F481D7BDC33EE3C4233A8D3E29CA167C890AE25B999EE664964E9DCA0D0
+AA6A8B18593BF9A286684615F5AAABF0BBE0FDDA69D4A3E132FA9AEEF9D42A74
+0DF62A9AA45258B87D743473D8D6EE9B17232F6EEF68A1032826F92531DCBAFC
+FBFF054C1045BAE801DB3611D79415166549227A5116075BABF8BFE66B3DFEB5
+66AEE1BEDA70C4BA5A3B47DC633FF164AE128FDE527C4DEAE3567599DE3270A3
+BECCBB875493A4ECB2A2655BFCE9E4A7DC369907BA9C9420FA544B1A7D79FD72
+2AB9532081C784ACF47A40B72A0344627DDD41ECA2A0A54BE9FD29E67A4BC833
+AD32D0B52DCFDB15F1369592504918DA2EACF50449A40E3431437E0DCADC2360
+BF51DCBA9DB1656E132C786CC9FAF1E2CD209F731C4C4BB7B03404630CDF1723
+831BFA439C5BEF4421404171D43BFE8C3DE1C79BA7DBCE60BE4FCBF3D1417C76
+221B26D0C1FA2F28DEE9BE1744123AC8C0F41502D909D7E88DCD4AB2010462EA
+4C1896F8B5BFF064B4C87A800F3C2E60BC602F89595973933F055342D7B3EDBE
+D4037472764B5F832699618C570F2A88A3A515DB98F1E1A5FA10B886AC6352BA
+63EAB27A6B8227A11E7ACD8B8524207109CE6CE34CA627BD1A32FE9B413C3D93
+B4CD73EC371FF391930FDD9E1D17AEE70ED206CD8C84FC46E8733BA8404CBF13
+24C0A24EFA8DBC1649962B68A15979A9C966ACD0CF205043537BDB1F6C4E0349
+DBBF5AD3A91893692C8D01CE52808C179D0F310499E74DDF26EE5D418383BFB7
+8E9D46CAE09C435BAE4DC88F9ED2FB143C56B9ED9E424744A7DF326F99962ECD
+5A705DA529300EF7A82EE3DFCABFBB333DCE4ADDC6E6797D76756022029497B0
+F4CB467A09819039B5673F1930BEE7B04E757BE1F65B71B76A7683F48E3E19B5
+644BEA529D57155240CD7A15F341BC3D3D1308B6BE74C7E4FB0C095506F60624
+219A6C9D12CE1D500997CBF497951762770F0E39D011A6057C9F4BB6E60957FC
+873D7374F39AE88D15F4276153A6C6D461FD594ED28EC6AE64C92A9C23EF8755
+92B6BE453BAEEEB0DEE4CCAA165CBD5D9DF90DD4B1C043F17A7B75744B2A9316
+4AEB0E6651BED4F508EEEF4582A181699E7B919DF5086E221CC7380373E2758F
+0598CDDC51D4582A0CD65B7579A895A905D031A242AFA79E3D958535B3B8CF5C
+7046D15A141BB721B0880CE45A38AA81232B02B3C8FD6B21230F5DE1CF9D4288
+AB46EE8A496F490A987EB574D7E9F28E9B81E0C60550DDCA84472461B0195797
+7D3222D2E8F0491CB49A2F74E828CCF30862892D1DFA4476236D8B2BE8DB01C6
+6F6CA104E7C08F616295ACCD98D55E0FFE3008681B7AA8491FBF849BA88D11E9
+2B2B781312D14C0A4238C6FC4835EA27AE1C74C91960D25DBDFABFB9AFDD6B02
+EFE91D6BF84B7BCC1E1E13FE87C469C4CFD4FB7ABEC0077FECAB3AAAD14F7BDC
+5215A8AC939AAF8E4F46760CF9765243D666A70E31C43FBD9EE0666150ABF57C
+E4D78280D09A0A78E8250E9CCD7A3B30CD53B5474DDC0157F373113C38ECD4F2
+7C3C0ABB9693EC2A98189A0C42FC4E0B467BDD16E9A85E0169E427BA171DFEFF
+5BDF05FAA0950039AA5253FE1248FDE0B428EB051391A2DD4926E02395041D65
+139EAF85DE8BA6A183D590591E6BD09CC20EB565471D90705E7E72D0B3F11A04
+B852305B77512605F38E98FAD41553FF40721D7E1D53DFC18B288459C06D1D49
+F97EC52E1FA643E104B57CEDCDA4838934B273FDB83C25FA9F026499D97FEC37
+3845AEA45169E6F0C58E6E387CAD71F5BBBA3614103F7F3BD60D369D239EA5B4
+07938C6C1D77FF76793A3D28AB9F198A51CC7BF3F54D32E6F54727005A944DBC
+BB6AA507E0F86D323340FEE4B33E14041C6FF96CD02C209E8F832FB27C10A308
+BCFE39A26C3025D57EEC03C96403E36199C1989F4D8AD1F99E48BAA89F3AA0CE
+BF83F94E04015091D35D9E1611FCB17D8A43BCD4967BBC433B373658607F56E0
+02E747A5063A3C54B88F13A49A118EEA93FF189FA6BF0526E00E69EF1ED1F828
+F2F4C44933808A14F75A1FD77231C598749F67167EF9B9E836DF1B3D8F786A0D
+D4B6179E7D1ECBDDA7E37187DEC15CC897C5C3FFC64C6BD5E6EF6E7607298F16
+BCE634CA30B38B3FB76EEAA3B46A02095FCAA2C95F5A908D411F51ECBDEC04D3
+D7170F53AEB40A4D9919C12959945CFCD2489CA242DF79DF769C7C5AA182451C
+6D370CCC253AADE12F69C7FC77A87414F0785074179ECF9089BBF77029A09407
+3B923CFF059B9678C984728315F8D647D19EA287EFDB94AC971E8411645FB0CB
+2B17BC1A08506327437F53E5C56E6C48D68060B06DE33B5A203F6EB0D826B520
+EC8CA6AAD05596E8A89636BA993821C8622C01C573A57AB1981E35EBDCB77738
+E4E491DAA77EBCBB91AE391111A91195E0CA67D18488824CFF782B54B16DE22F
+A7D98B5056FE85CD087CC548A33AEC386436490E6A4974CD99CF29F03C7407CB
+A46420DF915F895A4841E1C287138CED2E11DC7B3BD8037FC5780B2BF596F265
+C0D5B57EA254C2D8C7232C70AE03EF45CE4BE8F39FFAF4DBF1D43C73DC0080AF
+0672668EDAEE74A09B5971EF638253076617818C2D6014DA324579B55F8D9419
+80C45B4C39F99667B1C52DAF6129463B3667D25609B35E67642DCD295717722E
+4F504131195DB04B
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -3813,6 +3827,7 @@ dup 50 /two put
 dup 51 /three put
 dup 52 /four put
 dup 53 /five put
+dup 54 /six put
 dup 55 /seven put
 dup 56 /eight put
 dup 58 /colon put
@@ -4083,455 +4098,463 @@ CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
 57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
 788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
 A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
-C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56
-0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E
-2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D
-1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE
-3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA
-B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1
-3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0
-9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF
-FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B
-7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA
-B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A
-0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2
-F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E
-A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD
-5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C
-38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3
-C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A
-B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4
-16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278
-C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F
-16880A993EA9BF5FE7C0220D844C5920A2C334ED030FE2D062F8549508589F66
-66B2E4F66E249A01BE6CC56E73AB21117213B7502DAE7A2CDC2D8788C24F8F40
-74B96C17464510BE4F2543E536BB32E943522E9113DFBB56096A34BCF507E7A1
-B17451E6AF90ECD2A3E0234FF01F93BF0BF1300FAC48AFAA064419428256019A
-A55C94130C7A4AF9ED17AF615FFC9C10517B0D210C464C8C0E2B344B31D33886
-5264577F17CD7137CCED2612E1B01DBC93A98CDCC6C83A858307703AE11DF924
-BABC5FDE240C80CB0B4DE1672AD86C9BC4773E95182C70A6E809D336B71E25E5
-17C60BC4C8182FC222EFE5419EEAAB8CB1C04750631F7B4846D75651244286A3
-3F87AC81C3DE5937D4545937DF166D02B0505EEF1F744A2A955DBA5AE1FD8453
-8E3AC7E38B333C7A741A58472B543C870CD2885E812FC88DC0E3A56D3340144C
-B6EF013F04707315145E4B41142BB00A2BE5F6D17EDD30DFCBEA3F099010C431
-E2D5BD261DCE594B5E0FF7F1E836E88494B7489BABC9A230A7324E122F40DA62
-08922179B7EDF55176E4D11F985E6F3CE8B6695BBCCFF8AD96CCE92C0CE3E8D9
-C27F103747346DE482B3A922A19BFC5E18C3556B48BF53EDCE941744C43EF096
-E36866CF42D145087DE6A41F205D04A802E2E26EBA56BE4BE182B460E8A7DF98
-8C160EEF6FFA866EE54AA2541B1595F5B1D0104BCB313E5C886A0519311E2413
-CC40CF96EF3E05CCAF796A3FD36BEE034878238A40C77C6205904A9ABC8CCC9C
-7E1AA1FEAE4732BE0FCB9BFF9044486A232D39745885AF66470F281F7CD076F3
-B11CEB70BC1215D944D65357D0967F83E13EBBABB3576B89AB755A14A4A8D292
-5FAE31DDBE3999E4EAE54E5892C6087C4B6436DEE581FAFD1F33A8DB8000B5F0
-F644C655674DEF2BAB3105EA12B5550286FC001F5BA1A63F46E30A2EE663C24C
-F5390CF05D72727D7AF09433ED15A112E199447E0C516C8D2E535D38F5EFF96C
-763F51F7A8656D90DA6AD7199EC102AFC5D65DFC505E51E7EEA199D39C2CDF80
-B2CE3E35B688B79D566F1737C588D9CBBAD02F9782C7DB3439DD85BEAD21C70C
-5628EA55B38F9D2BEFA897974E09C2413E9C51A2400BB2364D650BF71637E7E2
-99DF9E4BC127FB7367DD9F74FEC16E339B19FB70A20A4A2E4874E110880294CA
-C90712CF08AD98C8532E3B730962F63C8F8D3DA209A0E23FA25DD02421B4D4B1
-DFAF5D3548FE36B0A1637ADE5CCD1672FBD40A3D1CDBB9499B4C660A27F619AB
-C06F37FD8EBE08C838060031735E43E74F649456956B785270C84C96EFA7C5FE
-2404D77480F5FEE892AF6534497C7AF401A5C9AD95B4B4D186076AB0A32315E4
-E6D7185675405E6E483571A3CBA6EF76403567F282B2AA8FFE99D988D612DEBF
-7ABD96797B6404CB5CD95D39464213DF90944C3ED33778F3EE4FCBB1A5F961E7
-9714553A81472BFF2052561C22720C0C8493D1B2FE75019255AA8014F437FFBF
-380BD498D02D7FA6904B4BC147C8D75C4863DCEAD5EA7E6FF41C609583BB7E99
-03ECAE65264FD63E13191FBC5B26E034651B737000E6B894C373B58DF4002F04
-E2F7ED898A9B029B671A19934263D92A0B8E3F7594FC90F62F937842E614689A
-238062D2BFB7C44482AF7C1556760125086F34A76C83B27717F322D190D30308
-EBD2A7BAC65B74105193942208DD78056DD569B2BA9FD4066A78DFB0316C1DDF
-C1B960A6AE6BFD9F7136870100916A9F8598C1647E1A9F86A26A83111433584C
-D0F4804BA5C3754AA9C93A9054C4591D38CC05AD1433EE5318458AEBD77ACA20
-5B1FC97F62B5A90E3B75C7A15FBF4EA4B0A8D1134E117D38C82781A68A3EE04B
-80DB2BE38196EFB1CFD47A5DC9874A15F21D156A23DAF2C7D31147D76599F8FD
-4A575532AD29F7203964BE4C153AC914516D33A54F97B9BA83562DB89D40DBF3
-4AA7BE547EEF84D1917B9620FCE9E5FC8771BA045C6BA72DC3CEA88BC85FCE2C
-BD04E17AE45A9D871930CC49F4F93447F43312888794162962428B915A6DF5EE
-0758D1D24AEB9792A9AED3489EA635140874BA43FD7FCD56103FECC4F4306C09
-8F06A031F5C639184AFB5C97A5ED69D6A974D6BA2144B4ADCE8F1285ECE7AA41
-BE46EB5473C5E6327ED45E1BD5D2721856E2751E85112A44A04F54556B41DBBC
-224A1C1C434FC53BFE371231544C64E64BEF27AC008BD468B51708C46ADA959D
-68C73A16515F09230DEAA0408245960D54D12C1E3AA868E5DDD8ABCAC5363927
-4C6EBFAE8F7B31C89BB7E1196C4C9FC9AF846006E838F7245B134766D83698D0
-85E95121BFAF5669E54B918FB792E8F7EAD1FD1EFAEB2AC98A1144F4A2081500
-2FE1E7CD3E1FFF00BD79CCEBC18EB0552EA5776E6A52E1AA30E3CA1FCBEF057D
-EFE38381A5E9A53B3ED386008C162188E393E81EEFCE3D59300CB1E5845150C9
-35D129A662146D504FC1DC23DB26E958D628DD312A2682654356C3F3221269FA
-A8725F1D52B5CFD7ED9FCBD8F4D2CF53CD7FF2BF435E75732BD9868155B6A9FD
-4511BEB18944423CAF5B2FE4EE6AB1CCE21927537FF3ACFE2D3344A471FEFB32
-D3E944E0DF6115BA76E5FD1C6141FE96C397B59F7D3270A605727DCAF2BC0D4A
-AE8D84FDEA284931A6DD9AFF9CA3AF16D21187533B45F77515F6FA432FCF53C7
-DCFE593148D2286D448A5922B774F0200EE756E982B3B4F8050D93E031488398
-8BF46569A6B233A0B2AC6DF78385C9A649DE07BE3CCF13DF7DDFE5F163D523AE
-46077B52147BC1C7BA80BA33607004F0B289CAB47DCADC7466F743973A546CEC
-939AB3A938BB362C529C4F71232FB9341EFF9A7CDDFB740BEB573F009E19E9AB
-79AFECE39A6D28F0A70937175399A045C2C1AB3DCA0ECB1F7167D07440F53910
-B8123E6C1E5EF4F5A1FDDF00D1AADBBA2182D35624A8170D346E40B117781931
-C79988553558F7696EFF44C0A4FBE8058D7A94F0E7C8C8B584E6790D59CDAEBA
-5B634EBB57DEF241E9823194818E6DE24985F2AE341E878C9665827155CC918D
-7C3CF4E508303382907BAE5DBFF39C75A49103AC5E604FF20C2649C30A70BC1A
-63B54D38C541D76E7616B6132C94D9366ABECB27D33CEE252FD573BE533721BB
-4311CB5557376E17EC4952692396BA291A5E593396441707B48037A84F515C13
-C58D372418B8DA762B731A8B15BA74837F2A6A1A1446289B247E7A6F05081B32
-E928FA2A972826D39C4A2CBB68274054BD284EC26411D07CE7BC2D06D64E2690
-C724C07CD5BC7F2DE4859F83F548DC0CCA56B9FE4E1DDC62E4B943B9F395508F
-F98E980279D2E7C13DE18A22A76CFF59814F2FFCE93978552A0F4E01D78B3C01
-B45A9CF8FDEB42A166A0E7678201526CF4773259EAED7B4099865DB5AB295C98
-FCBB1521D8624B87EE1CAC6B9B460E76D4B4E4D0A4BD69CA06A02D9AE0DC14D5
-55C47B7FA78A0BC299545C89FCD1A5449D45FAC62E38A42319DC318AC386563E
-4CFA1E3E137ABEF3EA7D9DCBC7BCE914902EC7D7B1AE6C9E19E739EBF1BCBDB9
-983829702832E22044F9A5B475718374F1A60FA48508D815F6810008C1299759
-EC776C0E70ACE3F719FE1E9DD554CABCE3937F54F38D5CC3C1392070A07964F4
-26B7CB30915F7586B31C04BAA3CA5EF956DA352C6A8A2A1356924727A8EB829A
-48C9A8894D29C2C196C0B731B6724BBBD84FBB94AC9B9DC80C435C5387D625AB
-6538076BECB3C21D19FAB3551075687E1C43CDD9BE49CC506D3423B5C2A6754D
-87CA10D3686A4FCA91AE60466045A328F996EDDD3918E2F56C029D1992A2A1A2
-78B2E95B99C822822F3630378ABECE2C2318010BDD2A492E112602BA2E092693
-54DBFD0367AF9552B11E043BB544644B079ACEA1BA6123CAB40F9E7B2ABF6969
-A8BFED3FA9C3CD76CE6DA595C63956DD27A87F256A7801330F603F21DC8195DE
-04BE9EA43F308B2888F5EC1D51DD43C6B44363FD277DB689FA2FED1D4B587210
-3F2B7305713987C9FB5B6992F23646F5AA9DFC71C0B3B411CBF369315255C1DC
-BE9357E76156A356902148517DC6EEE64AABAFBF106ECF4E55485756C801AD0E
-81961033CFA0B2DE0B96B88B38DB562AC046F65F058682E139C0F882CD795096
-9557336AC81FB537E37CDBBEC64975FF3BFA899236778283770D540257D3524F
-8B5ABC38B9DD4A240502ED8AF2A7496295A793CA1D6CBA7C2C50E60880B73E96
-84E0E5C85B07EDA8DD48A8249D6EE25273D3510333287C71DD0ED8032EE04848
-0410C1E0785B071430F4053AEB3042D5B9C3E34E4B854D42EE5044DE5941DFE1
-AB6DE585C02B5FEC52F0C565E6A5635C377AA57607723A9D246639CF06A2F4EC
-90CEE93C2EA2C419F3AD9CAFEAA6B2ED3F2D4F9F6330FAC9972903786AC09B7B
-DD51932A1378BED9BD5434078442B9C13CF156FCB4060CF81F98D5EB8011DDBC
-049806FAEC29F3841CF0BAD050713FF0CA75F4058F86C388E179710300A21312
-72915D0C9DAE32B1D6C092A9E5990178E8A11C6A2B525E0D9E006C135D1BF185
-FC7A58576F23CDE582A0512E54798B634B2E5A06F4A107D2685EC1578583515D
-19230589279FB9BA66E6DFE827387C5FB1E491CE19739A4532C5CBE869174A29
-F1E27164210F9D924B835E9CFD9356643C3DFEFDD21D733DEAADE25DDF15EF88
-17A9360BB2281613734FF66126A90DB9AE008F6DAFAF9DCA23A882A38A0F478A
-E6465F8391002417637A87303A9168632C68A031EE4DEAB32D7E6FCA721FA484
-3D01D2877B2CE55A8F3665388FD2791200FE69D692EE6C266DCD65014A9BB1E9
-27C1F5E6857D5923F56D3AA916E50802FFBD561FB9894C1A75022818A6CD8EC7
-06DA976DD2609CF7023B0D2258311F321E064D956CB8D55C1A4CEE12254DD6EC
-68680A52FCD777EF99456BA60807741E0845C47E4F8A93E11F4CDBA611DC4B50
-3B5F83C5475663090CF0450893E076132C6D25147C260D4D731A03C715BB80DF
-727864AEA432A5C95E688313C1C62C95E154E00E5F00713D2B27E2F64F7200F2
-C52B3C95376242DB2233B50B988214FD47A88F3C4F15001EBBF541BE75CDC0E0
-D4087F5DCF70B0814207C43690D2D9A2AF382423515B7277E4D3A990D4CD0F25
-9BDBB2350A8ECDE52D641B901E94E524E9FE6612037EB6EAD9C3A887B45F3B02
-2F60C45F88E147512CD1D4A967AD6FFE126F3C4E92FE3117E38FB2A662D90B1E
-12C80B32C9C547C7EB719063E25157F726885481D0B2EC9472A0108693BE337C
-2D7EFFD1285B4F507316529357529D3245AE2D18A4DDAE37225D682D8D20574B
-0DAA73817D1B70CD37B2501CFD087C0DBD704C544DEDFE282788DE15703E9D81
-F5A1AE011E6DDAE53728D2FAF938EAB8ACAC0D07F32CE8E8C8E8C0262A76D9DE
-B533DA266E44B2A36DB0E19710EC9B9E99E9C1DB500D0D8A293EEC71628E9842
-A8CA8C99F9CC5B6B26E4C96F7D840C84D827299489D0F9C7E952A91F78EDFFDB
-83554679AD863C2C64DC49A33E74AA4F58DDEBC9807A92372E227EC0CACCA61C
-629C34C083A21F278CBD8747BBD7D00AFC2BB546FEE02DE9892EF88FAC0EADD0
-4EE10387D6386E77C462864180AC2F655ACA5903C751F060835DBC1F72AACF0B
-F4F48B83FC85E9A3EC662222907A796938C8CBB946801696FFD8630E897170A4
-759BC269834173D8EBDC70CB16EC918CC68DBC61D8A53EC5F6F63732FD4D7EC6
-234CFC1408CEE045CD2739C71BBD175368731CDF9CC19DB87B7B974FEE39BC9A
-80948277A9676968840537A4DAA22EA9D970FC096ADB6172577DC54FD7B57BA8
-7925FADBA77E5707C51B8EC45FE227B13966B45C39DCF0F315EB7A6149134803
-E18FB6CB61F252E09A7720804C6941615CD2B01FC5F8B8E12D3DD1D4984D0E16
-0E4E3342253C6CCF6EF407DF245C19FB550CAABF4A4F6B0E251D2EF04F18BFAB
-A10FFF86ED39BDDC366595AA6D4B1DABA39FBAD8620E7638FBF54E34A26487D6
-2EA281D9D2251055C510A401023A14F3B97193C2B038FFD1C728AD75A186721D
-23CE5865389B0E47DB6F3DCA265B878950B567895A10EDB5A6B3F3FCD30FAB63
-C6D09D90D2FB1C05D8839D0B4EC950006F996447840C8DC888EA71794A23C27D
-D77453DD43121B9B78FE67913896A0B65033060072CBE1992DCA145C1C88A88B
-B516B239797B9B709045266E742BF9907803FD36953C9299BF788D3BF01E9134
-9FEAE5F30EE1A8E7449093FDB9992D74493DAB0BA265D3974992F5D4ED79D6BF
-99EAAA95DFC89ECB4799BAEFC10012A5610194CA9DDDCDB009BD6436BF30B1B4
-401B2E4B6FC0EDF60FB188878A822073165F0E0399ACBC7E72770F960AC46061
-F89852A0205A8A7813450A60A16014AD433C45388A3166C15D900597B37DB638
-9DB6D76BFC3395CE83ABE084B5DF3E616D5E13CA29C7BC6C19737C4CFA04B514
-7727C2383D4DC36CFF04142A1425D1A420DAD27EC6A779FE4FA9E8E44B0A71AA
-2DB0DD4C5A4AD2EA39F0FCDBC0CFA81644CD6F86683FDB5D97E7FB3B4C5C9BF0
-C3F0E49BB2031EFCC6770FF520FC24631DF7DB8D2B5A7E672F6352ED95C3EF41
-80B53CB4780B779A2C870E935E1F774C2B83299A9FDD5447EE674A157B7B51A9
-DB721193CA4545B4EF0D312DF015F1491AAF251B16872B689C2938053BD3843C
-9E4B4DA7B1A9ED3DE85A2D848C5DD26F4B3D6CD96835915EE86169803C6ABA5D
-BC878F9502190EED465E574E5730EDCCA3B4D5FE7B1BFE3F5AF5FBB466475A0D
-E6D2724FB9C11AC63B3424F422DFFD3B72A168522CD943D7EF214A36B19F3C1F
-8FCD50591ACD2E4525078561EA379982D47A010D6B7C325E8566BB370E6188F9
-40F7934B2DCA11D58A5EA2A42FA79F8F5A69E4C8313E2ED201C6AA5E7FD5BA87
-3F819A807799AC8084E2FAE69516236284A571A5A3CEB8CD0A73AB1D67EDE888
-1A69184D68842D02BACC239C898DC171A8EA05B8D2811A865BFE2AFB428AB6FD
-012B295903DE73A0D3A393E0D9D766FF470401C335AD8623A5EDB7B0F35332AF
-CAD6E222B741973EB894361A862317BE692CD4B855E4042F7228A83C14CA28DB
-926EC8CC9BFFE3BF98AE8923E6B6BCB248663774FC2DA52C5FDD448A5B85BD76
-6493998AE13C84B4D8C1CA3FF66982244E7197928E8CB91C71D60CCF1F6BFF74
-1FBE8FC9E0285ED3AB5610393B7D11301D8945C71B3AD01F1E7F97E9BB9D8737
-C4D113FF9B84E8D84CF3D04C01AD7E9F586FCF5B20FC9662A5D6440478134FAC
-BC580FF2FDBCF7A494AD744A9289B8358D2A14F6DC4ADC0A343D857D2EDB65F3
-4D97B49CC92601B90D63C5650F895A2485A18617B7BC02EA2A9FF1E0D777F393
-D7A6DD6AE36E73BFCB74560E398583E0B716650B24FF5F54AA73346A01D76967
-97E8E1C8B6DB6B4BCB511EFF3237A40960F3EE230EA142EAED3F73CD0B13F23D
-A1D51F490DB90D37ECCEE52B9EC135E26F36E509535752FF6F9135A1DAC1AC81
-3701EE34956ED7BAD6C8CF1D70B9CAEE2644F94B10935F9DD1B03C5D356AC0AD
-0B6F327DA139D31FF65498675D193540EAEFC3FB8A119ADC74536C152DA82D2C
-0B523263DDC88E048ACC64DB32B259989488476CB0D351243A09A2BA6697D0B0
-6C8D52A51C0F631E9EEFEF3A2042A2EEBE5046FB670C75B4157F7B5AB507FD34
-6F52BCBA13FCDF4C923DDF9908ABBB26521FE2A7F9A0BAEB7EF7E82830E596BD
-6CB249A0F61C0FAAECEEBCF556846411E352F468F7F6B404B3BD3B92712D362C
-4A84545661FEE4B5FA52A7A7C461B9F7ACC3E8321B30068F609DA42857078152
-1A00EC0B51CDC27C8B505B00E49BD1439EF1C861173182EA5BC4CBEE7CF73255
-57E6AD9AEE58B43D54F6E22DB3B8F5F9D58EEB756B672547B521CB7D82E78B26
-32C27B3F93E5122482F87852C2F357E666AEEDDC369BB5DEA3E02EF8CC69DC4E
-31F677ADE63DE168D6A500055E06FF746F5FE59864319FB3E49DE62F5E2D7005
-596F22D88796164AD412D3B254E8D5F7E7CAE3EF1D35D67733BA291BADDE92CF
-70BADEBB6169228447DB4A99473D865A7E105DC43421491AB8563C62C215EBF1
-564E27BB8C008B2617DB934E0665D7208C441321AB5EFE9FF1743C357A9C2E5C
-4AF4039F16367C6B9837A08924300E6ABD2AB033C146DE6B2821DD9172E5D7F1
-53785578BB227092E8ED1BBB8E0CB70C2E23E640AF20828C09FDC2421ADA6DC8
-2D117F0E3DF208E70F00C9C410E8F77FB1221D1C07F6C25C1930D0F2DC601025
-EE0B877941CC9F82621D4712CB9DE0BAFFCCA38DB1CE1896D6A5FB876CE944CE
-97A297BF3468B264B32B7C8BDF5777F197F64EE9BD2C6676BA50752CFB9F5051
-3C14D6D0658F7D4841B9F3C47B9522E1696F32838ADB3E877FDF5339F6721A8C
-7F39D070D9912AAE0A69B6E1E27F4727513D78AD9F1128079E3100D0B559B179
-FBF88885A0681A7847F26D70D8F7A3286E4958DD615CED53147A5A50D06D55F6
-45808222273C6F6A972D49873290654057517F1E067197C5A863324BAE696A25
-F250DC419B5428EA0655E118F77B1545494C94EFA32D34434C0916BD6C62F9C1
-2506EC7CEE3456B012DEF7C87D19DCD3F197047F3C57B2391A238839884A3F19
-CC0B1814255F4DD8977E61513F7FADF4BB98315C72F84B4792243022B827DDA7
-FEF9E1434C631FBBD0CE34CCCF4CFC655D0F9BF1E22B91FA21D95C6AD6B0C098
-E987D92C862954B2CFD8E8CC0132432A40ADC155F8A0F97FC03B38B9738B4317
-CBDBB8E7B4BB929F6D39338AA69A5A11BE27316BE370800C82706772CE33E367
-29A80B24D41F520D993098C4B04F0F62F9C74679BC076706F0969545AD65D6B0
-44900379A36E940359B6BCDD0F3F5FB0A8F30BD5456EED4DF5CE72F7A7B93858
-14BE51729E4F8AA97DD6D134279E88C3EF28D61D7937837DF831BC8A314F2D3C
-1353E96806AE841A57EFAD644C8D884758880415F91E7683A88CA150493EC28D
-6C7272E3465DFC48645B2F722ABFC1943CEA4B5ABCF8D76C3D032F1B3264E7E5
-06690EFDEBE83EBF967085035A199297BBF94EB3D884AD4C0DFB476B85E6BFBF
-F69BCB9E57ED6753285C36AB62CB8C98E676D4D23C44416DFDA957CB93EF7E78
-8379C6328FD6711EB9B45D10681B56591EA22DB43DDEAFA65FFCFDA65075C6F1
-FF96A492130ECBCF265425FABDE849C62767F6B36895CCB19CF177B8BA4C7163
-D9DF847A42072F60B3911D8DA23A30D63C7FEE986F939CB35F7C47298D6596F8
-9BD7354FC35915C0CA8CF2A60F2DE21F355C74E605DBECE35A70FA12BDD3D915
-729B3D75FC8CEB2BF67DAC531BFD24A2E975375F85D7AC7CACCFBC62FE51F11F
-F877377CAA80F8FD8DEB1B1FA7C1ABC73B88D4ADEF4D045708657864418FB434
-7DAEE52F2E2AD61680B4E5E229C12EEAFCEF8184B3B03D16BCCFF6E0EACDE3D8
-CDC8D9185DC2672784EABC5E55C8F45AE77BD18C9FDC3189D24E3C93CA20A916
-1750AFEEB67F95016FCEE6BF60016FE2097AB01CA18B0EE0CEB254976858635D
-13D51A80F202A59A66B54E81972AB98BF9BC188EB653F43FD0EE5E7740487B5A
-6102C31D939943905FCCB91C95F54E69CEBB4F4A66027B2D03AE23F09D91B676
-4EAF654BBCB61F084EB153BFB0839D882ECDA35D1AC2C1863A3C5F0523FFB7A1
-A707C2D48E8B2F421A192E898960D888212D488816628740CD9F9FB6EE1DC21B
-82725168913244FE38347B234317F127026147CDB4BBF8BA9274C987193DBA07
-0DE6596DE26FAB1618D77E552AC34F71D0B77AD262314963C69EC171C1EA0706
-905BD2BAE70C9806CC263DC44FEFD2E7742538B2C62D782D6FE9AFB6464BD9F7
-7C537D1CB46E93F998D0AC153BFF65D71F72DD0FBC30E427C94BEA08A51FEDD0
-E9BC9C656715B761EED9E0DF6F1430BBC2F5FD6F2D5A31FEA89F7D3B8ACB3524
-56D36998729CB9EB6C464A709387869BB5D9062A5798B9C3F6906CA8E9C1A53C
-BAB4CFB6D6CBAFB766754CA2D15E927872427EDD9E73BD16C3BF4DCC479B7550
-1623FB8E04B11986EF4A3916248BA3328BBC2DF30E994B20ACD597FF14B91032
-274884EFFF7E94BDE8963D41E9CE9F192C84AA7B2FD2F6242B9828F54759ADBA
-352CECEE86152B06D785DF2781CB339BB1B1571FB31D18C3CC831B15736FB91B
-3C95834BF98DC3B42C9D32804F0E1B0418C30E944E103B1B381FA9B54CC41994
-78B4BFFE0445D1499C19B4577513B2324B7A3A752047C36449C2EAB3506DD87A
-A5A7FAE639C0A70E71A32DB71FF4D8C741A8FCA4A26C886DBB89AB5ED74F7B53
-025F00F3E5832CAD54696CEA99BF7D37950143F74A1A31B139374778438D0DCB
-75D125317E14B837147FAE2B7DC6BBDE62AEA6D74C7D8B2EACDEFFB5A61763E8
-5CD01EAB644B4FE0CE573B681C201BE621EF353ACB26BBC14DB249CFB079F488
-1ADF1C4E19CF04159792E40A5E63EB9DCFECFF901DE04D02604C195C315AC187
-34DB4F6C850E9BD424D3971CC3091A41D5B8F5020B3C79E72B99A1CAE66C959F
-55E4C6C1C1C34DCEB68E8806967C638D01E8103A6E886609E5276FC013ADB053
-AE2806AFD0E6CDAFF0D97E75AFF72A027F2817FEB32964ACD45FEA9534996A50
-53ABD80249F5890C69BA0D650BB7F0AEC076CC809EDA4BCD8265F334DB581361
-329C2530144ED7073D99EE1959AB477C6149B3A6547F024AF983BE69BDB9BF4D
-827728F2423F648185B1FC0AC9C7ACC727AD43FDB6B0D433C8172EB74B8B8AB1
-8C0C2C0357458E197A842358705883EC22E7162967172C0519820D5994DF9D7F
-D50B52AAE696F603985E3504742D31C0B69D77552E9396F18C71DEDA17BFFE67
-E1415DD4BD373819A33CBE990992973DA11CEFBE7B81DC910273B315B82B8861
-63B2E66BFC29A213D5526427B723B4856DFCF3559FD701F77857812B0C6C0FDC
-4AFFAC54B1CDF29E882BC2E2E9BA0319BB084DA04A82539AEABE7FB793B7AB28
-E755B8B1CB2F0EA0329B29816B127EEAB2E16B99B9FB1BCDC5ED2A5322F3A271
-99A1981B3212711FE1DCB32D0638EF932D00B3C04F896BF7DC7F67EF8F3DB82B
-0536D186F24BF7ED544AE148F24F6CD5D81059F55AB8E24128F755991F89CBFE
-75DB53CAD6129E392EDF60FAB2C90396568683A0C996C46358975676C6A8E3CE
-131C90FA98570DB4E576B4F669CDE352F19DF7652C97F2357C4C8F0716E5C290
-1354DBE5105A874C105F541DBFD7E6A63B1231BDB998EDC392678D1EF93183FB
-0815568798BDF68665F37205546A6528225B3B91B3A80C0F433C8888B45BFF9E
-A972D7C29B2647DF29806C4113613512C117061E7DE70F763D097A7CF236F371
-4BB3BFDE60B73EC884BDAD2E7864F24BED01210DA9F229F7A87D3CC0B3AEF75D
-D8B763EF2B7591B8D2CC201A635C82B771BFDB42FA533E321B587735AECDB3DB
-071FAEBC9ECB06F06A0EB364ED723D12EB6E7BB479AB013624ABD11060CFFFF3
-5FE5CC50E86F9224466913EC8167158FDFD81438BC1522685CDE8A038F0C8A35
-8AA1FA8E38ACEB99E18B55075D594DF39FF874DE7E7E6C95C677F35B2DF0F203
-B78369144DD99484A35F26414874463458FE0F6D2C63481260398F5FD319DED2
-19C9DE91CE63155DF12CE842E67B8DF8E61149FC4563C4ADC280E564505F0F80
-2B6CD6BCDEC7AC194C372BE1A4FBB457739A8AFC4A7727E37E2D3E5AA30E7461
-FD43AA99CF8EC08CF47CD67B820899D75935C6DFD775619CA2D52E4FE3A5B0E5
-3D1231BC641544611EB461A1991FC02E040C574272D428419F6D0AEF4285DD7E
-4731CBF498243B66ED76F66CE3F33DC996BD10334741D351DE2294D268EF045E
-CB360B89A5E9690FF21C91E396E686C67B5570A1FE2182A5E78DA735C70162F8
-E978C1E449853FA9B6494F2C38F5FF2A27F8E9DA96EFC069145C844402B0223C
-CAC1AAF9E74C8576E524A2E5F072DA0297AF5AE4F1B0F1E3BF24989DD836C057
-D18E755B8296E8402CEDD8F34A258ACC0D34D341ECA9889F4B2A06FB778D591B
-157DDC8D7F54A289F918E980C367E46575F05CB8C847000C6CFCC939867C78AF
-8A0980B0352250C063F3960D06E88A86694879A6DB159C2C5CF831ABD393A174
-C9BAB470B7EF87F10A5C3EBA5716279D525D51323BA98E262B1EAEC96A61163A
-44F84EEBD3CDE74822FC6ED53FA7C30A4167B1BF8BB9D3347665A33DCA967641
-E4739C8A7ADC90369E7C236D812BD03144A282176D5E906B55D1274AD6B5ED2D
-CBC01CAC7B92D8D919D25D80F0E0CD744B33F303C43E0D9F1F0E778056C43E1B
-5A300D823B0070C69DDC9CEF534DA19FFEA924A6D20D50D3CEAB46949288EA59
-8428450CE0960400BA1EF843C4D538C6A2087D3E1DB7AD847898602ED66F9366
-3F8E07233BE8331D36C159E8602B8193A5534030BEB136E24B24886D063694C6
-4A86C6F0B74CBAD19B83C2637AE35A07221F79860B87754A8042CB7489B0648F
-50BD0B93ABE34188C91AE0846406F063DE6FC2FF17D3E39B758A9182F258E2F2
-8FAD163152FFDBBC23B122523A2BC4421B025B0D8E876F80F12977AD02F2C393
-F8DBA9B7DE3D98B21C2FD1BFC42AFB3A6B0C303E94EDEE21B704737CA349ED48
-8332A075AB14489FBA412E4950BAC4F79BA0DC7EB6AFD1D43311E04F7047C851
-02612F1BDF9549A1C5A4E096C7946749A9E6FD356FAEEEE03C196042B6689913
-2912AF6EAE06BDA5E9F7A85CC503E22008CDFDB0F51DAB9C7821BDB79D1E7477
-16E244E95AAA34AD1B2084506F7C22CE2EC64C2EA5E2E2424E265173B01CAC83
-5A14B1FA3CA554535FB71CFD640E6F04917771589AFD81CDF19B80F2338A462C
-A7931133B7609357EBBCD05DC82B6909139C5D9ECC63511CC7FF28601260C7E9
-B3253E2B8655135DF5AC5EA5F037233C61495895D1499C5A00B13A90B8B3A886
-42F3F12F7A902F5520AE4F8E5AD9380EB5063BB93D98476969FA47F2BF6EB1A3
-94D15CB620277C1D586661CE897F3526DC5B52C447FAEB44FD3377DCD023293C
-CD7A75809CE202165BBDD0311E1E793B9E44C747FBCF9AB319C9F3BCA0F65881
-D85A2549005C27CD2A477C5DEBE1BCA541DFD153BD6357215CB195A53CB1AA0A
-636FA25E28420EDCB036BDC3AE3D522E912C00EA6061E8EFC7176DB1D106BCC9
-F7420AA98E67899D2AB3B63A14B966D06BB785067DE6EDFAEA7567367DF1B9AB
-24C2194360006894B979EC31B09E92440945036AFB89155DA483FD44C1F9515B
-4B576CD51A079C22C668B72EA35E21930B701E7AEC08100BFCE2891AEC0CAFD4
-A71401645287CE15CE5C4A94409B207D1A8B13DC9D1CE2CF6E09696E7793BC1D
-8766A4FEFD11FB4A3B13B32A5E994D010370A0890D85A500FAB60F60D8EC607D
-CD3B7657B32A4B99C89BCDB0162BDAEE9CCEF0B52C54C8EB5CF320DCD9803405
-10B060667538413E9BB43F15C72510A68AB688C9512FE05E87AF5CD4C2717FBF
-F0B5E605CE4360D89C7BA422C2A867710CF0668BB684E83FCD47888C92216068
-B03655C718AB989492A6D432275B1F64005849A85ED0D167C121134A59996BB3
-8029B44938C401192B96DFECFC6C7EA90EEC009AE79F2D94926581B2073B81F1
-E995224D452AA32115134F7C8B0AFCBAFAD316F2DED91212E5E2715A9A0F59BA
-787C811A7CE37859B9BFD4B6648010C449AB624401ABBAD5D22623A05B127FD5
-F6C3FDE7966A3AFEB0BB98B38E8DAA05643EF7A9242F48837F2552AA6E449594
-9BE7E93EAA719FEB29077A5B86C14B5F47B1B86D9F1EE50A9BEF6F6FB2DCC4C7
-D3EDA4FA1744310A2C5BD39E8EFF9831D2E91698BCE0D2E9769525F934D7F08A
-FB4DF1732A46D4CD48BF73322E25BDDA632CBCD9F0571779CA52A60775ECAAF0
-04A6ED054E9527CC85F67D2C480D6BA074A3D73D5386C7D3B06AFA386C931512
-AA015585BFE18F6B5B79140570B655295A0C56F6D3FFB790185D4F1A10F0AD18
-C143DE30A7FAAF80239CAFA2DF1CEB743341B05E8FE1D90FE3C0F75398B6FB76
-28FDF55AF051AAD341AF59A6FDAE8B1BC878A52E5FC2B504D4C113979D7E7524
-F44C86A5C12F5546024D792A0E4FF98AC19EC3850D88DBE34B4C2BBBBDD77E62
-67219B59243B4DDDBB88AB7AFEEE234F08DCA63F51508BEB43BDC3B00A3A6F9A
-B4EB5EBB12D928D2E1901A0D9799F82676F6E158A6E521D11EADC606176809CB
-82687208E6F491C6B92901015A67A67508A68FD8F910A41FCE333AC61A17F772
-13FBB7DDCA5C17263946D38738E019B016BBC294F89083A2E8AA6A9433272CEA
-42C8A243DF05FE3AB837F0793AE36FB9B1378B7DF1D50CB48DAE3F9CECEFEE6B
-7E372802B2A19C7C1BBB14D3B061C5DC6FB29EAAC558386C58D87E1CBBA07AE8
-B66DE0AC1AAD4D714C00B528E0A10D54AD7D99A3F5459BCBD196C0A86DA69508
-C4C780D2000407BCF22ECA07C1FA37DA0E05CD0D1A78AA64AA9F4682F2F2F05F
-0D219E2D4A1B55D836B36397586C46E54F7E7B56B969EEF401B7BA9AB3B71491
-0B33E2694C3B10AE3702DFA3EBA9A42888E2FA495B521FB5B860EBECD878EE73
-720ACF8DB674DB5C4A3418E5C4B1B93E8BD5FD6FCB334BF3C93D6825201A02F8
-A8BD1F64CEF4D6E8BC96948226D8E0C34A7C65978BC66563B39BB41098EA4DBD
-DA6D7CB34A411B9A789775C2559A9F90B7F643551156FDA8B8C3B368E666A546
-0D9458F1BF0649BBAFCB8A2B0B35633A873D5F9B0E55A1A1EBA070DB4636B725
-BAD1250138E0A08B59DDC3BAC64DBA14313B8937275F8E8A506F6D6EA691FA5A
-D37453B2619C027CC5E6DEDF6C6EB248F182A7349A21CE744152BED4F91508AF
-AEC8563F1894734EC9BEEE05A1CA429BA1A134CFB7D7D533595CEBEA887EFE8E
-8D41BB1711FD033A6D6707CDCD2F1F3D02DDAAB98311AD5BA5DA9EDF971FBDD4
-BB4EF7EB3641CDEF6CC694948ADB8D94D39106C7D4E8E788627991A6AE33D7DA
-81FF3259C745D3C3F53FF8CC0FDE715D61801FE115F534FF3FB04CF5324979D7
-2AE393F01B9B84992F16390825059AE1560CA637AE72CA56D3CA686CE9514E1F
-CE1859CFCEABB3DF9FBD8F0E3A1E8B1ECF291081A63A86128BDF2DB251287810
-DEE008FD4F5ED49D0BAB3E7638B975CF6C8528B9B8BBF490F9632F83A060AF42
-1469997731E304C44B80503B391B9632C15D209556CD5FB94EC7CF4C98B51C7F
-284ABF771FB70ED5F1CCBF4AA789AA9CF8C9EAF42F9C9725D87820C10282679C
-DA104A08E1AE5F01DD4399211C62C5F3370C9D159923447D15C2056A0F840203
-62903BE8B5B1994C9D7C6052077E5446D54444628AE19229209F815677ECC5D6
-45E6E1CDC2FF1AC81EFB1D73ABAEEFE54E185E3A817C0506CD754393CAA3D30A
-B2F401490D83B72BD07B4BF1D1ACE8AE0AF145A3CEA0E05439EA8EDE1C4597AE
-B5E866BFC94E30C9E8D8884DC900862E23767B9F8781F5623B4F5F74592F11E2
-DD253253D176019798665BE833997D2ED432380DDB144EAB37C7756C6F729B0B
-D13D8D02951BF2C016DA02873E4B589EDA8021397BDE47000E0BBDD2AD8D5160
-C7E9F69831FAEF84C27C7342C8CE4092278F767ABD3C7220870D40EF9AC505AC
-FB5F3E1BD3F0905F71AE8751C4E6BE02B392874356C7F25B37B16D7E8848A9C5
-08FDC51948C71D3031BA695B44891D7C56F5A06113C1DF9E7A5B2306053AB76C
-18B3BFED61C8E196494FCB0408DCA9389D6DE9611CB19B793D286011E9AD6E78
-CFD74396029C4ABF7075143A71D14EF93B2053A0E8C8789E176D500DA7945DD4
-B7F805169681F4033DA8A2941F8BAB7E4A1A0971E017FECCD8738DA3186B0DB8
-8C63476272C63364DF6C3CA5D9847A6D81736F0BE388AF95A7F9B5663F55E3DF
-1C740E4358B349DE17A63CA2282B03065A66D9FE3D6BDCEF932193E5F2E2D150
-47984A57B31A7AEB54A101DF328A74040317529842B4A5A20E3448077C331626
-9A5EA78E5EBFB81778BD4C9B392186E3C811EE82CFDD6A57E050DA15478791A9
-65CAAEE28B55362594BB58EDC4D01FD54CA7EC5C4D2A3FBC6F399D5F35EC2256
-EA0B1472A99F3349DD62F3931F193C322608E6452472E00EC22BC13E2E17949F
-9F00E979D5D5E38CE6C6EB9CFD7B05E724CB49EFCBB211953A36EBB3A3E18498
-8CC2B96F8FDE18C678282C0A707ACF03CC41F735E5A4173B45A9312944D69B2D
-4D448C4914D987DE531C6D3EADE9C94F9E6F978AF50F6C25CF8586185FB7CAA8
-5C428C606709C5FA5ED63CE6C0456664A552BD6B6AC8A321A97807279CCDD27A
-EA484CFEAE6FC10413A373A9E041D3CC05B48BDDE5DC89F1B9D140F95C9370F7
-1126CAF6256DDC8081BB304F294398A5B5994800684B097444BB35D4D293E782
-F61C8EA1AB2886CB6911B260127D8A2D116C3AB62F07920E37E0405F516F47D4
-C4E865E9606301B86A9013E5244E1C145D515251089F62C780C17B1C2A605DA6
-4E8F113081631041C38512469AAFFBA750A16A4921C2B809CAFD80F17DEE5BBC
-6A00C67E59A4C3B1C34DA41EF7D4CC836CBA67ACD86822FBCD160ADC54D10A5C
-CD5A1C1D01AABBB900776AFF0BE76CCC484037C34D348A7BE0B15109BB114DD6
-F0EACCA18800AEA8692D875F761C574B90F586ECB60183D3DD81C3B1C0EF1822
-3FA0688E244FAD05F5AA4490DC6E0F515E174DFC2F26821E9C4B189830EE8D14
-56BD9EE6BE690E62E2688D180B231704148F643873BAEF2466099D01E98D0A22
-8CAD70DF0140C21585651CF257F62248FE2418DE3087907355F88886BE1DAD3F
-043C30DF1CAA28F327A71B8EDFB5470F64298B899596DD2236B23058E3339E8B
-82A8B27BD3ED46D1B5F2CBC333B4AB6C8314B26320134D8B8479F2824DD9AF44
-D5F10F431F64B832D1881F59E8832C8935765E9C1ED9768EB864E3847F4F4928
-71D2CBB138BCA7085D5E619C17BD6513F53293A9F419A74077EE0F97BDFFE479
-CD960D5603C2CF26A3B4B3A6372F954041FEB600A528FEC76BF86420CB8FE902
-C978E8D7A3D317683FAA98F299611F900FC0C38E267B9D2295AB317A0C65CDEE
-214DE4298121B7385D9AC35D23ED48BC980D8BDF0ED1B3DF469E74B2FEB07B5C
-F26F8C6A61D4B1EF1F95EC93F618CACF0674C625BD9E960299A92E12BA082080
-7DDB8D06817185AE7FB28174B530DD2EE84660606AABF27A171C33BD15173A09
-69DDAAAE380C89FBB4FDDF271D3FB5CD0A2D62A1F1BF8EEF00A9FE22FDEA08B5
-32E6995008D17A9B885BFCBB80E9AE1E3A4E75A8820AE2A7845D366F29CAE72A
-9D41A40B32DB7F477E218C646A28FFDA6E58EA290AF7E19DCB764FFFFF8248E5
-179AED3D8F1B91480B3729C79B3C96B3AEF105E11E370AC65F47F58917FC5EEF
-68C5F518D1079ED2182CA6B149F76312133A4BAABC1E1862CBAE7AF59AADF2C8
-FE748103948695737AD7BEBC52DF8C4BEE11C346D0E9B07338A1E82B86B8AF42
-88A49CA23BA88579F911319AA8B7DEA4CCA6387BA33B217D02D121FD38FBD51B
-C100B95B21D41606B40B9A11CC731F10A8F4B86C572FD9AADCAB4CAF8F27353A
-C05EE5A9F372B1FD74B71522A6F9248F838630A8DE2429CFC5B34161E83B0B38
-9713AFB911C246E5ECC6AB86CFC463B46D0358841EC85787E055ED7C5513B0E7
-960D05F0BDCD5DEF56CDB808B755396E2F16F43B6D58BD13DB0A6B9FCA646521
-5B114C3DE7253500A6D89A0DAC7F9EBD1E14D7EEBF8EAC1ADC5EA574781EC870
-7C820F1ACBA1986CC55F78DB10F9F76E9392FC9265F3B370988CC56BAA379B46
-E5DBF4FC5C1A5EBFC1DEE04AD79977B8B9213DB98649B6F9AC0F99F53A449CA9
-FA33BED4F5EDE8D1B53EEDCACB0A883976C98DD719BE5C2A0A948535BE0B324D
-4CD123FD9E346FB8E5C5AB593049CD5330D34DEB46C4AD0D21BF6E5D715B8A62
-40E0BDA591D2727E4245B29089FCE0A2238B7AB0798FED91B6F8CDD6C2FCA085
-3993743912D66BC8049C30643F9362D510575CE4926D53858A1BD2B8309CA46F
-F93B3941D0822B182AE4DCDAAEF090AB4DCDBF403E4BED69B62ED62530AC3A6C
-EDCCE216FFD057C8A388145720BED9D31A89D149E9A26AA4DDFE8EE93924FEB7
-97A0DCDEFC84F9266A86D2B88495F4A9B1D33248BB0861BC4D38825D1EE3C930
-11077737AC6E307B12ECEE27F82B554F40053CA24D2520DDAC7F547407A77196
-41E85341D1D1C10411003E66708BC4FF4F31AF6E689321788C59D63DF263FE23
-71FF6C27BA99A5D9C16E08CECE622CDB8517D14644BD03A5E7DFA8DF8AED725B
-F6AB8971EC1AD359AA0290B31A2DC818DD2BF80EDB07EB81F7787965ACBDEEFC
-05337DFFABD0786D1C71B192B04618A00E90E0BB3BB704D1AA86E1FE5AE09B9B
-256B82ABFCE181CC45745A0B2E51B1B780A91FB2387EFF75ACDAA8AC13B1F44B
-81AB96DF1D9CF587DC8B9F926D02F81C8BABA56DFC79E25883453E84E22CADAA
-ADB64593275CCFFF770B53ED4F4F1B0A76DF0D5AD96FEA25AC42B8C350061A2D
-1C97513C9F7F921ED913F321CFF95EF57FA1E19A9D3F3C927568888E1E7DFAA2
-D12525815F2C65B72737B4AD9BD64F922526C3527693B552ADFA10C281F99A79
-26513709301215BEEA51BAB631ADD6DB698BD96006913FBE8AAF394A051ABA45
-D4C7F093DAC9707CF64509D64A39EFA0207910A575932F928CE105E6A2745088
-4D23F6EBEBDD583037106433728693D9D24462F3E75DAB68059ABCB05B2B5633
-D46ECEB9E1A9CD67317F5D1197DED31050A102F739792CE307D6928681542F39
-954589A5187E9FF713B1D0A3E5515C5C0F935B7921E4B37E12F0638352EA1447
-7C5BB21D4CB3181B1C056A3B4D98396DF351BA384FF61A170C1FABB51B025E1A
-206FB57FCA26D929BB232A9CC3249C1A0400FC039D3EBB543812C5918D6219D0
-882DD96CFA770A03BE1D0494C090D5F5EECEB305435FFD740824EB85E59CCCB4
-AA411710DC67EA2489430D8C08423F00C499323ED1BAA4EB1B5089424F898D86
-BDF5CE56C028B107B8972433EDA77EE397A193B1793BE61F8DCC0273A0FCED9F
-8A98FE8D1A49469C3A4ADEF38888A1199DBAB63DE30E56B82E55C6B31D70FB4C
-5F9514DF02B648CD3FD6860E426DB1D853910F1F96EA328759229347ABF6C503
-A7B6A63D729001711890C1AC5997F2F352F3130C760F49D0510DEC22B51A7FB9
-F2A7EC4939171B82F24440AA058C5522681A0A97BDE06B15B88DB1F1246A095A
-E89230E74BB7B404806FD2FE9F698C167954184129B40CFCD711D69D7C1B4F8A
-7D2A8D496A7EA0FDA901AD9D79D067614D868290F804649280671903D1085A1C
-E2E3C0ECEC635D975D66CDC5312568AC5C85F87804BE7E60EF787F5B97DB71C9
-4DB5F1AB7069B1B411319D3D70E1554D56120E2E5C9D474DAA7C93D5371A9DF6
-10A823F3105FF629CB8A2D564545638B9203283F6D70E4CD
+C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505
+27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA
+1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7
+4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46
+F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F
+2FD466826D4E6175E9B3AF676603DD8C5F5B037022B38CB7DEA203B11D993027
+884012CDC35C4B36242F8D77D188AFE30F09D5D4B9E13A466FB208B9C3B3D269
+A12EBE66EF7F6ABFBFC024B72BC06828FA7AEF04633B1A7C93B778D17B0AA1C6
+721295869CDDB94DE898C26F40B1E3E93B68B06A63719C44432BDB45C3FDE04E
+7EE718BABB4A57C7709D3C41E6A3C997C0E7BFD60854EB52A73DAD8E02F6E43C
+4EC19A0D6311293BB240782BA1DBDDC0F65287E6061FD3333718D7CFCDAC4715
+589A5ECAD2762C643C0A7B2750C7038F6B8F275D9423DBE3F3A442F625747D58
+A26B03775F1EDB35BFAD9ED9C2C341F89804D41A9445EB2BDAFB2043F674EA73
+4962020D8641448B253F4C108BB1244279064765CA38869A7EB73377A168E596
+1B1E7F573D8C09649963F67CB13DA10D55938E6321008B54FAEEE7AF48EF153B
+520A8E750230D50631819EEECB35B69369C888AAB9103BF3A60A7CF6F357E20D
+EED0F3DD636D920AB08797A37577156E3C56B37604C8DB2744DBE77CCFFF9E9C
+150CB37173CC122C366366EDB5847053A74ACDE3AC86A253EF7BF3B90C59647C
+A265D5F3F9D60352A41DBE682C3091F64C3298369C71197245000C81B17A69BE
+E8F7AF9BEE7AD5DD407E9C262D52603B16C5B0A87BC7ED85E10FA988DB688A92
+470100856BE028C6A8ED4630A58A2C716E79E4AA1C59E99D1B38E65AA30B7BC3
+B4FC020B003DBCF97082521BCDDC572969864809C35F0C817B839CC44AADE6DF
+32EAF154D732FCE1D3397A6F40B0784CA30EDBA4FFC52AB385EA99E84060EE8A
+E94D43BF6CE43C9140AADF1DB4335DC5815F18DFE8D74D266F1D31A99865B233
+EB79DC69A1F60946E67300238B4EDC669BE369A26C4B1969EBEA2ED487D9A864
+972043DFB6E2D9C8C41FCF68538918E653351C87CB83A65571ABC8D40D5F4E3D
+52D09ADBDFA6391FC647A934784EEA0C4887D955B77BA4B0F2F6FF97B83343A8
+92266A5729F08C8BADDD647CB38A246330B44C809D263EDD2A7CC63B5B70F520
+61DD6BBF5B9EB427971B6DC92242018AC546542E49F3088E2E41AB81B2FF479F
+B4FDFFC81473C35CAAA5DA82088F2191103A5AD900E932945BBD14D2F2F5527F
+9418200879449AA859A9754CAD9EDF87DB3B3CC28EE10BE6610B78834D29628E
+0E8AB01AA7734FC22AB16365AB21D487412AF60E0C54B18B7D052CCE37667D0B
+D6C070914CF1D522123E9288D4ACB89ACE8CA541A4439278653B0DA04B2DB9CD
+59E964BEAAE74109B47B0F8F4DF4798125270FC1CEA674D566373409CB16766E
+CE23E1DD4D132CAEB590DE89001BB2008E75C2E7FC4D80566D9C912ACDB47A6C
+758AA0E2381823460A6B60AB67F4C9ADD38034D8F34EBA9F6CFC3781169F7301
+CF3C4BBF00AC325352490DA5E9EDA067E5CC402595E708DF189CCAC92D86370D
+5B58F2337CB6C552479B1E51C7BFF336C4DCCCABBC62C7D13B1E4E9719720302
+010956C520A7F73D4C3428AA078DC8AAB00146D59C041A70AB494452E69BCE93
+4FC0E5EE45B8586CB87E1F0CB447DD3A66792ADA50A6FA842125B699288E02F8
+8C4A7DE5762C0AF7F2A3781F73EF785037A4B6194FC7FA3371C8C6325F046069
+0B66D8BDE4516EF67E493A136F0E3964E4CC144B9C069FBDB4D26AE552A03F14
+9D89BE9574F5A7301DE22A0A6F24E231C57B9503A7BBF67DFB9B5AFA38B0132B
+3A32C7B1D38819E09EAC434EBC3CA1DDE3A41F0A8C788F0D1E3572D8E5C6D966
+478C522E18EBD2F0021AE13DDC40D378D9CBD0ED6BA7E7759B6C73AE59BFFED3
+0016CD48D74F17037CDFA5ADBD41A10AC97D20283B863A6EB616BCF796912E8F
+822040DEAF6F8195DE058F3FAE9DDA4237F99F750210DC8998AC0E556F165BE6
+1DC471610E9C75B41479B58011E7FFA927B9976CC897417FC260F4E87542DA5F
+9F33C126ACE7E1CDFE3FA21432A7D0BCF7BD5441C434296DDEF61EBCBBEF17DB
+9CED994238C395BF3528E6437C4E217B4BAC049BC3C7AB1ED5F8C72AD8DED033
+55D9659D16DFE9901520D00949545B444D8AA54B1800266A44AF137AE01EFD74
+8994A653E8668043F8279A423942A5F738827FB67665E694557012A7C545348F
+325F3E455317804F110BA28026D15411CD48CC9FED0E1D6D453CEF144563317D
+96FE06BC63C0F4441BFAC2160444078C9A2ED39DF9D177EFD9DAF9E5C1F42C81
+156A6FF8404CCB64CA6120644628C2EE7CF44332196AED0DDFA568EAF23D16A4
+8B5E335A3E0F3980CE8CADDADE7281B2A1C11117895A399D3BBE29036F1F76CD
+440B4CFBAB7901FA7027BFD2D7A74045EA1843CF6255346E60B6DEF6EAA5C228
+7BC0EC2EEFEA168EDA969C2F7DE8AC84DC85038CF61296E4C1EAF96CECB8F445
+8EFEE32F8812DE84389A164CB4DC953DEFC2204AA0F0E10432CB09DCCF5C28CC
+0857961882146706942098ED1EE76430FEDC26640DDCB96107925C40BA4E5524
+7E32E5CCC57383EDD9B991C64FED77D42AFB898CCF051B7100BC2D940F4171D9
+767ADECB58F81873EB98F3EA3C9D5D4269E2126A1EFFD05F020BF0C27F175DE9
+2A8AF0DFABC8C2F5F43DC2EEF39E793998D08445C044FABF7AFE1AB07CD7EDAA
+60D02C8E1C2DAB56438F1E8C3AC1F13C85932525DED921CA60F3DCF528A0CBDE
+C098F98D96ACC29A5BCFC99040F73253F7B4C8E511C95D4B67981C21BF687F1E
+923F97ECDCD654AA8C6B46A98B1E1AE51578D625BD1352D892C739E34E391414
+012C3693BA2F82BC2F99F6F88E057F03E35E511B81BE4EF4B3C04D01A3DAFAF2
+09FAD88CE2814E253058D22E418FE226133EAFB343C618E5D0602106237A9F56
+4A80D075F8D601F8DF2AABA5801E3FC87971E62DE87D28BA1144E5682C563872
+7628D27CAC66BD105E8446D22EE6F24CF031398E268CEAFCEEB17A4640836E53
+A028D5F2A1AD6307505E063790EDD07E0DE9A056ED5177A25EDD681CCDEFB3E4
+C0DF2C720390A047A95CE8F23BA97F2756443746B4008D8513595B5A7BFE2B47
+1E587BFFAD1D2EF282B44A0146A6896AFB7E512BEC548D612B6070CEEE95CDA7
+779C7A788F929AC1A8CF4B17B8D625A8F7F182A11C3D8FFD8C658CC538512856
+F322ADA05825004A3BA48208CE74E7F5513B3F0CFD191F759906A3619176E0C1
+B529B541CD162BAF117512827D74300A3C0714F650D4D05475B87CA30C20B4AA
+0E6383F1E474D53B8976953FB03F547EC6E2333E19E921A09FF157BB924B1701
+DDDD24C6141B4FDD565CB1DC59FB9EB89E06AE69B76740468CCD14527FA39712
+618892D891317E993DF0C43DABAEAFB9C4B524B778A799058D043D46F81B7616
+2C34F6C76216DBD451DE00C13FECCABCBBB78FE0054B8506AA3B21F54A4D733F
+2799D2032389B89CCBC591DCCF9C1E974C3C18274025D984E00852D3CB124E63
+186E4E2F93B117C44A819B44EB1A40FB3DEF219FADA70FC900CF6A3027DB9015
+E178E2EA706CF0E6278786D4DA944B3D039DA4AF931C32DD57B970CCCF655476
+4E8C3A5A947076BBEA7F199D5859C29ECE61392066252DF5FBA94C75395BD7E6
+871DF357AD403A2791A517B26B88D8E522E7A934C5E61A1C5B38CA5E920AC57E
+857C13D6498ACBCEB5FD77C6F6512D208B2193E0E5BD184C8B5F51D7F7BFBD6D
+FEF302A13225750D433A86210F4EC4DD258308AD645719C3CC8DDB140F8C1393
+C66B8774B8936CB09AAEC856DBD865033816D6BB0CB3B1104F6127DB2869517E
+7EB71F5918EA7270A2D037EAE4FC1D5A91FED030EDD6E42A335066806BFE6CCB
+370EDC372F8E488826E42C1370D4412173B32E0508B209D68817F50C0FAE098C
+52934DE551A32221EBD40CDB3A9F307B0EC48145CBF3B44BA9FDDD8C71A61045
+5CE53B6167F4C6774EE535FB4AEE3768FD096573108B748821DA236353A85B5E
+1BB86CD61CE50C7FFB6A5FB432CD25E45A75BA7115A80AA5463AFD450361CE22
+4A36305B867202E0C5AEC63DF8A3EDC5147FBEC15C6888C4F290153AFEB9CE94
+A93ED08BCD3BCAAD9980D7F16B757DE78ACDB28ACE64AC1959F0BCF4A5D254DE
+CFC1AE691FAF5516D1B52DC3A4A766D201F40C324CFFB95F1CC59F48D8A5A33E
+B6EB1A1FF7C1B4626919484D7803FFC09257E5BDBE89F2592D9A04B8894C008F
+E6A448A99D5F71949B4AFCD83F9949F1674E9069D28A1709C589E6C3C12DE33B
+EEA32E202B8DF4320B3D7DA16FE101224CA5D40020DF712E3A1DD8C7EF5D222A
+CFD1D9B8F9F35EF7E27BC81F5C5575D5D7BF3BC92EA36AC06BE8CC1F41ECED46
+F0D41FEB81158EDA8464D3950ADF9D3C7D9F6E6C0B56B0D3FE9DBCA67ECC3DEE
+A93649E6ACCF9169788427DCE8EC72EFC931B66B4B110900010673CD6F8A8AD6
+E22B4F2A1D859FF2B55B2E2E727AB10AF9CA3FADD60B6613B413CE5DC3811671
+E363DFE0B799D28EE23102465C508BBED55441D33262CCBF52B47181B6760558
+439BC87284B079D08C5C1703900C5F80CB4B767660B60014535B90F8145F7405
+23AC8CBABF042A6A150CF41BFFE5ECB0441F944737E25D68635134DF10E0C6D5
+CD215228388703BF1B1992DF5F2EABC775E40AA07B780E798EF412A965B821E8
+DC9471E8479D9A9D9AB02343209A70E969028E74E4E737CEDA8F07417660191D
+26EF1B9B3F8C9FE39E62BD85839380D43BF18939B28C0A8D519A7CFC7B15545B
+750B21774B1F0505F2492A8B1278C45C3CDA34D43010D36C90E45CF8E21848C2
+36AA3C655CF4F7D7166B262B091D0B6B84E3858E36D0D8F3C8D2C557AB55D04F
+7C9E34819284AC9D8CFF9874389400D8413F0F5E9EDD4E3818E6E7DED76DFED9
+84C038FD0868FBCAFC4DE9C341A96A783C1BDF9C3F57482BE93488717BD97A18
+0921B771F9F2A869666C69EE16F072E646C6A3D4CD7580DFA30176F5338E4127
+54E38969879ABFCEB5383B16A5DCE8691A73BE8C63D238BCEF334EA225B26FF1
+BE890EEDDC90D9CEFB20601D0DFE8222EA611F5D3E72A357154CA0DA2091C72D
+D0A73B120C84E9C11F9FCB6C8C97900330877D3F80D103F1F37FAFDBEFE8CDB9
+80235226C46F8E973AC7867284892BCBD22BCDEF6ECDFAC857511D26FE98C66E
+177E17C104A07760EF54ECE619B73AA5421089D26780B78AD3654742EC3FEA86
+D310C5ADAF4D7A5E1022245D9390E913179D2EC9D0D62565364C87572E48FDBC
+73930A3BA1A7806B7870F317B78BF67555F36F8636D654678A05006BF91FDBC5
+4E3A14E3252A980DF37882B2B50265827F1FF783C43762B34E788650860EB628
+5C1A836835262FAC702B736467EA82A378D8E463C3DA2E67BDFAFDEEDB18E820
+991E3E8D8D891F6ED057CA6F4DD881A35D4ACE747F9E8F07A4B3B963C3E0FBE9
+4B1C4A778B7DA050FE8513E568F06B2D42D0B3B4C63CC15D18D7099FDA35E0E6
+8734070BF82CE461093F59F08D172DE59EE4448071CC92AC45A17E2039D49C6B
+ACA5A3065BA970BDAEBFC938D07FC7C596425E04FE5784A41BF5A90B600AB689
+1A039C5FDDFF50B531E98E1832BB015118F4C9D0A93F32A83F5A248B16F3D553
+396222F5013820917AB79A91CC00878516EB1E80CBEEB1BC7FCF901E782D0F96
+60B2CDB57999721D60BB4216B1483BF8657FD7290F6931B38D9F72F0FDFEA1A2
+B834828740C278548DE4390EAA8A18FC2A73AB5C4C35848CA2424761C7D123CF
+9283C5F7F483204E2F54252943E538C59A496F56E2C4D158921A614B03132744
+EF1CA8FF611C4ACBC24A559139B40C9E3BD4B9E2A21A898FECC3DEDEB39A1AA6
+5636771D46B6A0AA66D132B480C407A7E735B651A1C66E9542064735D94F70E0
+E1E7C2373177B043E88715DB231ECEAADEE1828A2B4A106A05DA9B01D1ADEFB4
+7FA4BAA22728B86306284569465BF9432344C7C6BA17F2916232A07FB67AF788
+FDFF37ACDE12B7C5D7B6BCA11F964D42D7E31D26DEBED0278182CAAD15BAACFC
+FBC49B58B9ED365ADD30912E418057CE0A2799D2A0EDC9E080781E03E9FC7354
+BF6E99F98C49737B6D5F75996D964C8AAC3F1D1551DD70E1651A1DFD02C13F2E
+17CC19EDA2D46B085229B8DFD35EA2C8DEC555208E81F0A168834E61773E475E
+A36E2B36827C626871D48CA053B47F78162F06BEC6A0D728C8EEB75353C36CFE
+FECCF73761254F95B5C9CAF9D51C6F4BD80FB15459D15096C0BEF8DF178411A6
+EF194293D32117C41E8BA833ADB5419B955C47136367B8C7DDFB8968542003F3
+AF1185387916CD6444F5CDA08962112295815FE0970EA5958FB5E472FB2222EA
+1585375D76E4549E8D3EE110619E4198ED7FF4A7842D8B183670371FB333C97C
+397C06C20AE16D7C7ECBBF75028A089875EC2F43EE20C44470BA5BFECD08513F
+AFD05CAFD6A85A31F2A6071FC1BA10F75AB8B4C135525D2F7925C0FF34D42DD2
+60283163607CB57DDD32BE430440373DF180A3F94FC54DDC6FC459676B09F807
+6113E00272BC57B96B5B149C9496EF296CDF5159A3BEB492AA1965F583AE7EA8
+1FB3C63176522AE53D5D334E85EAE17A60A7792281157BE60C14510FE984DF43
+913282B40BF7FE4019611CC6C6580BAB49698FBBDCFE66AFC692C698EDED3D79
+E70AC5091B099405D0A0669BC368AF4C96E32DFAE1DB7F5369E3CE38CBFB5B86
+9DB92A490528E9EF1B187353BBF1E88B1BA6FAA9DBA84DEB266BE572F60A9754
+9897B4A01B908F13E1BC59374150A8D60B1E3EF2CCA84E01266BF1B7C392A626
+D841C8599269DF5D454F7BD0AB5543FBEDC6251C23B2567F289298A69F793D83
+721A30B78D5EB0551E5FEB9DFFFF0429390FB884D5599D8255A8294BCB09DC86
+BCA27F2DEA9CA58DDE1283525B8F29FCAA3950F8D5F998693FA3805C49DDF464
+7817F2F0F37064B88726250789B363AAB0CE53B32EFCF0F15AADD84C26127D3D
+B2307CE658DD4884C5B57721EAC0A0DCE270644A36A2E61C36A304C3855A7A4B
+7B5C938568A36C7170D7E566363F4C60EB7BBB1B867B7B8E0381AA46687B45F3
+3E8987686BFF9E5C691CC518281D1B2620EEFD7A7FAB092CC880A57EF1D31369
+F6396A0D9703FBDDA8E60C250095E5B7ECACC1CE20D50DA7F5A05F262E48E11B
+8977B40D3EB03050C5B0D47D2073FD2370A3E59B5D5BC0983B603F89533C7F1C
+F1A2DC75E140D449C63C28D42E1AC9F904538CCCD7FA92FBD6AD623B413D3D86
+E05CAD9BDD3DFC7CFC68C8B775EE8D312C96EBA4A7C3C21E322AE67E7B078DEF
+3592DEA9A4579E72D078265EFF81E0AFCECF28578C60C64A125EB4E6F546E1BF
+C0EBF94E2326B7B44391FBD477963BD43EB1537F3E0B6DEA6349D906731E93F6
+FBAF9B7628B14688AC8134274857EEE8F778FE54F21514413BD027E4516307D8
+2E0533280B68D96928D6E5BFECF2E6103B28F19299A91F83ED9865D15869EEB8
+584D6AC888FD02308B923A01C1325E0623465A92780015BD77EDFB96FCBEE527
+E93DE3131CFB94FCE07B5B843F16B24A73B71DE5564A687682311E1F884EACF4
+EBC38876695DC91E8F8C564C91D01FEAB15CC70C5EA2D7F89860068E8B180E13
+3092A8EF79050934F3828D10A28ACF3246FA1269EF780D25E7772A6142F5D16A
+110DC5C87FFC30C57CBF60E68E541F969497D87F96987727A29207DFD59183B3
+2B42AA8569FDA8B8AE227DD665E1E97585A4DF5F2C68DBE5302C20F25B54B0E3
+CB04DD959EC0727CAA404601BF0BDDEC40169382C3822EFDD88439823BE75BF3
+2EE872271550CFEF5E37A6398EED5729F766503F0301DCBC89AF21641BE38F37
+2F4C0C7C9515596E16583072AA3DCF843EB6C8878707C2A534911DE283E7AC3A
+663341F5AEA977765166E8EA729A1AFB651DDCE2ED995A89BB9B30AE83A92748
+E7262AC8F3CB47FEA898F3033578381214D1F0E407272285B96066BB23502315
+79E8E2118BA712696027AB9C7C0A3A4575D4C043BA3BA55E36D81D92E0B45541
+AA5192441A5E091C8C303A5CE6BF8135FE4D72687675ED6D4715B647BEBC934E
+4E9C9FBC32F5EEEBB63F20E9687C48EDAD3EA6493877935D47456E6484A2276D
+D7E5ED9E4BF3CF462937268E61623AA82E7460078EE57FB81329DDDF14E43E4B
+6EF073518BB2A74D395D4FCA17384B04733FBCA40EC77143C7D621B0495C5F5C
+D5DD79250E2AE4C860D2E0F96C57E0A97B7F15895282C5A47DE418257E379D85
+201577B5F862B1EACDD8CE3CBFB761F6FDDEF1C6375776604B86FE0147CCC04B
+A4EFA8C7649DB028B708C01494CF0FA886E8519B581F4644738177179AFF5D5B
+74B80DB79116F4A60139BD7D720D768770D5FD1CE84626D169FBB033527F92F8
+1DE84D3A52741091EFE416E616CBAB16E4164B466DE3004662828BACDFD872D5
+F509BC12511ABB28B88B2872E9F43068BF9FA36302E685EB0CA413B2AD3EB01F
+1EB4E23B823ED1B3C52C426442952357AA65247488026E7693AB8EF834306856
+F1124503EE25151EDFD832E50E320272616A936C33974F0312ACD160FACDD89A
+943A7A4B86E363E2119B933155B252EE6DE91DF5749764F76C6FBF2F7C3F6BF7
+5A149ED9C7083DB96ADBE069FCAF71FA4F8D4793954AC9E789AD9B2481C4C6C4
+6A41EF0728E814868142EEE4CB04F05D9B8D68E57D984EA0D8DAC5C7D27B8BFF
+A395784B953428E7A26F60661414FBB91B950DAB02B632D372FB8962C1642F91
+A7511867710CC803FC96E4063FB23B0C139D77636D458A26516CCDA31E49D81F
+AB530C694B849568C1A25E12F6B97E051402C1403730888B8802DFAA06A847C6
+945ED4B8724BA8FC090AC6B9ED21979CDF27E4CEEEEDC275A5DE955288FCE786
+E0D28741FB83F30EBEC22B696C28B1DE4BD480323B3C0858A156A19C8A404E56
+482C21FAD35AFE777E6484A2276DE5FAD8C9172073481EAB5035A7C73AD935AE
+094FC63974DC36C98229CF2736F122A799753961B40C355D5A1A9D26C915912D
+6EA7A5AEF50D1F14BFE49AAC9FD367DCDCAEBF0760C07FFEF893A08CD0B2C75A
+E85362010D931DFD4D6E98833E26F1BFA085E975DA40FAABD12BA601D9620AE8
+FF4E7D56091FE9D738FD3D1B40CE16E110FF9E247F5D44E45A9F67ED46D6BC97
+591A97A66B2E9B937B8533B276D514AD21A502C2CE2475E904910FC823CF0098
+6AE200E5CB51CCEAF6A3B3555CEC7E72C90E2CC671C051D2FC6370F8B204F9F8
+4E8A9FF8404192B840360688D90B7684E0B3EE2B1D4085E9AF6E4B562F5CC94A
+853CC5A2E3CFE1587A98CA67C381CF46987CAF37CC7390AFEB6F7F9E63A7D0D1
+B445EBC74C478C9DEABEA8900156C25DDCFEA84B0B0BB785D0A6F24E9F482D22
+30B92B4C86A2AC438C89F924AE80EC1D5F28D9CD934145AC919933DD998133D1
+3A64057A456DE084AAD122166EC4D99AB43D23735B55878D067A01B4784EFAC0
+3388D619358C5DE128FA5CBE7719C0EE00D8CE6BA961838B489D82406DEADEA7
+5AAA879CD224BD2B3BD42B3D519FB5AE649AB025801CA1AABFA7BCD97B3BCBCC
+F18DF402942B803FCE5BC77BFBD2876DD25CABC38436315BBA4B72F6F9E1512C
+E8111F9D1A57FE83C471E0270B17DBA5DDD54563328B77AC6A00D0BD10A2DF3F
+B26B98A50591EA0ADC7681EAF7885E5DFE8DE1F086DE6C278089884D8DAC5C75
+C21330EFEA2A2F84409B1DD1BF3D904EE2DD451BBD2EA6CB6868AB239B55DA7F
+59E9F2D47487728C3CE72106292B5712A814D11CEBE4F489D5DC812B7ADEB0E1
+99C040F70332DDEC4F14DB4C911AEB5213053CADDB4345EC1AA058D0735FD1CB
+66036B334CC6B28C436606A7CB6D9BAE111EE9A13226C9A9D38EC76F1FF7EA77
+813FE06C5551A9ADE94EF93E10B83CBEC05F8C18DB6B46408FD34DE31312B305
+027040C19921B382DF21F1C82A42A307FF02152287FA4D49A92FDCC7F8E91224
+500D4E89F4CD9B76E32CF4E4E630173272863AD846C11ECC1CCE87E7E845B583
+745E6B485DFCB4B8047C3C7A9E34687848D669EE0DF746E79FB16E49153A35D4
+77D18526A1227A91A9F5FC442790E6A0D1BDEBF80930B4893E5C966DF0DD9431
+154F3DF420626CB5A2711BF3552142A8F0C0AB1CD0E5CFA7F85BA2C7320D8DB7
+4F2F00744CBC92926AFD482A908154F282555A34169B9D000A3D41E2D63CFF1E
+68CDF42175E1B97B73C4CC539295B531FC4DBA01FAC90F87D2B271E95AD01817
+E3D7E9F4AC068E78B6C65F7DFA2ACC2416C5C91A74ED005E9A680DC3D5F57799
+03BB48D3FE3B0CF54CB0F9D08481C467949BC5A46EA9B028AA480C586C7894FB
+A1499E8F0A96493ECF1275DD0B4A80A23D6C11D15E1E085DE366121AE503E2A0
+B06F184DC80C3D41FD89FF2C6585364D9803D8225EDD6D88212E02807B154423
+6C42C380556B9545F0B3CC6945326E83D9790915FCD0CDE28E2A8F50BE9023C1
+82AFF8EB7DAE4849E428E2A55A6C4C88E01ABD286B4BBD5FA4FCD4E651713FE8
+09510CE23751B91A81C055F097AF936ECCAF15366CA610025C8503BFADFA38D8
+FA8B9B5831A6AC7F4333959528982792995C4184DB90C1536AAC0AA61C15F46F
+D36A7179DD8BDC35611D0C13DFEF2BA36574313E4F7502A12D2CD14FEB3AB42F
+4CC0ACC472A7BFB82A9DE77B5B5DE47C2C318E3BD15BAEAA5084F5A47BFCBB0A
+8ECFE645597DF43FD37AF7D439240354DA7DADD977B5383633BAACB90E73FB03
+DF6C58EC25D5A887E882315994E7704F25F26A091C1BEA72A4EAB6D4CAA13378
+810F57B7FBF6C849AFFD018A8DD429F437C856AE63161C286DCB8A0890C754B5
+2DF5ACC07888B836AA731AB1B774A537EE86036E71F2B1E923992BC395212874
+B8EF03DE1DAF80DE48314EFF19EC845D04A8D4F01C9C384CF2741DBCDC0B46EA
+D985104A94B323D3F067E10ECBD39D199846098FF2B2029E9081F0E5A7D8FCE7
+512B69B5C31C69C9A731986DA0B1828BCCCD17148DA19D7AAAD8F12A278AB897
+DD6E2C5C233959E322921D76D972093C9235A30863408FA5B390B9A4913DAB5D
+AB84F1D370B3611D00BA7AE997C967D40951616FDCC6F1139E7FD42B5EEB6E3A
+FD5879939837B67FE65A1EB3CEA381FDB132A281D474D78A290CFF972BEB7CB3
+282CDA6047AE3A12E9FFACFF8E7F621E939F1B18817D695D04CC63B880022CD9
+AE900F539A45CCE6EE8552BAE293717A666B3F886DDC483718032F2ADA08F8CB
+49142929720FC5142AF5CEAA1825B6356BA42F4B0F1F553D30D41CCC1C750789
+460587EA589A9CEB85A305543C943815A07680AF0C943F95393F5048B0431A37
+5238AD4BC7D6E5E0652ED9C0981AA035CC0CB72F164223729CD6549F274F6620
+FCC173A5383463B07CC84421890C0518371912A25EB93C29EEAEB6CEC65F3871
+B0468434BB0AE1C5545B1187FFE42209A64C8C289B4AE9E5B7E780F9B957CE43
+9DE2509F89EB6C31D38518C97B6CFE8397640D92289FB906D85BD4C180909698
+D450ACD02EB66C08077B84F54F83E1D710803DFFA745A853955DCEED63CED1E4
+24B333F33C5FBC3A62FD5A6B4565ECB973DA53FF4D90ACFC81464B5D1895AB52
+6D51A46754C18D09944AE5889219F87B338D846980F164FF401916EDAAF3AAD8
+D529092C6C02E01E84ABECEE2BA60A8EBAEA08072BF488CDC36EC52266A959BD
+B33E5227FF2AE9D67F86532F88DD6ABC20BD51321C007093BE2A8B70541A8D8E
+35F9DCDBFBE06BD2FB44BF08E9D95DF36DC056E8B78512FF084D9931CF33991A
+50D832F434DA67B8F61FDDF09DFC785EA49E8888C99E4F5D54FAA0B2C895CCE6
+FDC044C115ACD23F8BD84EC03C19041A0A5921B03B90A3BD4256B7E56091E322
+BD02645A686DAA78F8A71F8736385DD6A0D8779EBFB75B4FFDFE34B2B471F78D
+DCE9FEF170797EAFE64C607CDF5FF158677BF62956FAE25782C9FB79463CB66F
+6E4D516793FFF84313F0EBE63217B9823809F0C0F223856729AA9EAADCED083F
+55A2CB8C24B2E1E3972DAC8A6E7806B17DD250C6B97C6344F4A4A65CA8693AD0
+E06D6984B99D38DF9FF10F2BFC3D9455DFC7C1995D79B36654F7AE88B94EB881
+B63BE817158A7288212F7FB737B5090E03F216E2009FFE57F67FAE8D28A21449
+09928A2050F7E5244614CD91C79F93F5D95FD0A3130D4292EE2DB2D6F85EAF6F
+A19BD9E8732815A1B082E2F691E6288B3F2EADC062C31403C6B1076384595EE6
+E8B8E2294C39286CF689314C9388A7D547F8AD629E319FD27AC8ED5EFA8B72D8
+C1330B585F908C9D995939B85DCB2DAEB73E9834E89D40B41377C62D78E983C5
+AE72EE1B89BEAE181D23ACE6E92D955C7D483C2A338650684D9ED3FCAAD0D1C7
+E5C4B34854C4726734E7872C6E7D583F9CB415CEFCB12F8313B7B784E4F6C818
+BD28677C16F6F64797E00C7733B6C58302E73AE7B15D8F95431289ED3719A06A
+8A02EFBB2E2D673C3FC9B8E5FBFDBBF6BAFFE546C02CB5B6D5F0BE5B6B6DA10B
+EDAD55DE9976D34B91D348ACBED821A1B79D27D4B1B55A6B15D23C9ECFF7D11D
+F92E777B963CD47D03415AE05852CF0F88943A5D20C4D45B9CB6F942D99D519C
+C9A9C7E3B07979DD508E5C151687901E871517CADFC0B71A537815A1AB6F6C5A
+EE4A3188FA75FDB357559C2F9F77E1D6006B542E0346D61CDE15957DEF0D162F
+CB9F579D54D823E05BB8C56145FF46ABD2C0F243BACDB5F73AA6A939A2D431DD
+093B4B6CB1F9EDBFBFA779AA6EF3595E1CE7CDCEE753A4653783F50477B5AC0A
+55366860129F256034B518F3A5C48C966467FD4F4E2F3363B1AAE19D27276319
+98577BCB402B5C2F6C6CB4245159C9696D938BA38EBFDD76F670DC9F83BA8672
+2B1DACB69BF5C370BDC189C5D49BF1481BF9A18F1100DC157DF5C4E06FA96A02
+6BF8CC2D302292C77AB9626B18E4BF52ABEE0CA1C4BB1334CDBF7366D72FC83B
+A7D3F8F2E417294792309835D0D4BC24676558939B0BAACE303796DEB7842131
+B017B43D3FEC15ADDCAF053F0B73716EF8262FC3C655B1A957CC117727FF22C3
+CE6BA9FEB49E1CA7091BC9A2DFADC745E644C0F4E5D3B1DAD8CF3DC2BB4C7267
+13875288A2FC55DA62301FC451084CC9341E5C08AB271FA4622C98DADE631737
+BB46D6731A2B010CDD505F26896EB191F8E34F91D1A83E26197B535FCDB951EF
+BC02DBF2D0FADFCE5BB153F67204F79BFBC8A5C61575D1241DDDA5FDA97A75F7
+6C110CF61F1C6929DDF50A666ECADB37C0A4F4A444F6D62218A002A2F1D57EAB
+6FF91FBD4341D305E6B47E4B43AE9E085441AA17859AA43AAB51C32BCEA0321C
+CB78609CB377C53DCFB99145182EB17E55A2BD179F104C27D1C9CFB958080457
+5E0BB47FE6E86B676A6B6FAF18A0C0C3C39A533F570D8502811A606E566BE0D1
+6A24A12649A842C239C050B00F6E12CA60F0069E0B4DCFFB0BC63880D78C5C8F
+24ACF262A3FF84B534C5169054B90E8285376431CEAE202C9CEBF0A12D53C448
+F87C6E7C31CE71B3C1939037E8E2CF272F6C52FE3F0981390FA0F9291375720A
+4C0C55B065AF816610F9B2431666262BE27AB18FD1C4280C562CBE23D0744C89
+39729D2481ACE3D773F56AA6CBB41BCEFE83813B4A668082799CC47C667CA917
+300AFBE211CD281EEBE74E7A1D47BAC8E88447529CB137ED648CF3F67B2EF34E
+873B37CBD5840DAFA45E090694972FC7CBCC421C338104FD26660B509728C3F2
+1990E21A910244F2C6AE0AB116802DD3C899117F2D5261C813098BE9B29F3D36
+C8159BB5EE6C5B1EBB0C9BB4674B51FD18841C97CAFB705D6ED688700626A8CC
+E1BA105166421B51CBDC4CADB08638040D276DE3D0D12955FB4D37D03499F721
+7AB395A7DB8FEB2FE7DF87EFE458B6D4CA78AA8FD2381C08A1649ABC34AEF570
+5E23EB44246585B499A79B13A94F873AC2915B0B6C437DA474AAC43A68173C60
+998A4B977021720C27834570C10B3643333B3A8752D41F0CD644AB97B354D3AF
+F148FC818C8A9A8FDEE058A288B6B1C6FD91EDAEC908DD41182A148123FDD644
+BF1ED4AB0486C2D2B7BAF00863871493D78A3C092C5814435E5CD5507A853CF3
+5EA2688BB258CF46775A16074B535649C0B307A086E05016B5D50107D5EC855B
+1C8D4AC6B243736153223C9EA4AC700AB3C0D7FE3156978AD8D1B87561C9DEB9
+FC75DC928DE1A9645E3C08AA8703C35678B886A476E7638A1C9E2FAF251BEF61
+04D76978B921AAF101D0CA4F976B04FEC152DCA8EDA36EFB9464FE05C613E959
+E458381D04A84D3303CAF3B15C211A814990E1003FA9D69CA4151641689113E2
+232C4F5B602D4662635B91D70AF8DB6218F831F10681CD0CA6C20E1DE5277AD2
+F8D2226CF7694BE3A014555DD37049D7EDF4B3DFBFD35FB4A1E47229C2A03C23
+A7D86CEF4B51FF8BD093B04E0076E52C0D10C0C61C4AF9391026D75CE7A1E061
+D2E0A83E6703DC4E892A5F4C9C7AD37677BE2B2B2346AA50C2F51AEF2F7EAE65
+95DB3170F173DC14AD27F4562B3605C7DBD29BA9B4A8605C52F13F98AAE1A9D7
+8498A6B161600D82A8CEE326F26BB682FE26B3851C04569A3F43A08196B71524
+45C1BC1389BFF61A06A8EF9F6922F78F431D48942347E5B0E266F40B909B0A38
+8EEAFC0994DB4C1882D228B93263DE9049BE9FF7C8FD76BAB953D2DDE97EA12B
+49582D24360AF645285395708B060BBD026DEC910D127A9E9A607C998A4C1D77
+350142AA37E27621B6FA853D36F4BB5A910A9C4BF7AB68564BACEA384F8F1D3C
+E20A813552A43C1C808D1C33E17AE9565160895C349B0F6F270E6FD8A46ECD59
+1BB16DEDAA6188F99E2D2FDDECD31719F32EF723E754BFFDF7B7E821921BE5B4
+2FA8882A53F5F3A11D4533381F250C6D46A8C13DF6F417CCED5DE54A2AF7D8D9
+397CDDE67DB5ABBC2EBDCB41B129AFA137EC50623E8A382B7C07A5DB46687801
+3C808F9DCB26A112A5D7AF4F4112CA0619B812BEBD57CFB2D1980646D207F055
+540555E99666BEC665C65374F67D0D6ED07357C12B63C80A2643DA3D32E927A0
+1AD02B806D3F30B1554163F641678DCAAC40A1B0743FB194710FB8F3B9BC4495
+5857400A1C5BF8B49FEE35F4D3CDCC5AA8CC2252A9526342478D25BE086369DB
+D8FA9A0CFC2D8685896CF5EA97C1EBE34DD6E583C38C0B90FF492147E21EB6F6
+32D68C5A694035DE31BC911C75191DAE4E6EA5C2DE86028E507FC697FC6B28E6
+0AB57AE85476169D5EE04F234BC59D891422CC64642983C625575DFDFEF35CBF
+8DA5E815999C4BE060CC6C9EB49A24D5805D865F918745611A221DCBCCF993AC
+26C5741E28B9B2F2962813500B27CCFD1C64ABC42209A16A3B77245538E1E160
+C79A21A17DE831B49050AAF2D649A54C64427A36F553C7DD3D65EBA89CA9FA9C
+B3C5516CFB743E7045E320ECF7EFADEB309421039D350B5D0DF80D7E80727F0F
+20975ECC4DC1EDBA5E66D339BE957B40B2A4C63C41EF5603F8C767B3EECD0E0A
+732B877EA2DED6BC6F4270EFA61EF143655132C4682401433DCF9385D59FEDE5
+1D05FA41BCF6B182D037FF8498B7B41E64BF72FF427CEB175C0DC67D4F6910C9
+19E9FF9D5C8921841876C51E0E32A3DCDB6DDF0C38889DE018E62FFD68B9B007
+78842AF46D41DCA0206D3C8233CA653E73EA75D8459F9185B8F18897A6889AD2
+51F09AD4061F09AD5DC34C546E5E430C18FB159B7D6F7B29F42EDE943E6A9D37
+14D9D59AB02264502D9002D902654D7E0CE0931C599E53B24466886FFDAF7B48
+CDBD7325C6D2FAFD28A971EDD436A3AD11D3BF9AD6D563CD94B9AF1971DA0A4F
+F7B49E6C8BBC52CCBF8DD88CCBD1F4258425482BC33DD02F7A26377DED907CC3
+35462724B7E97745DF03FDF781167A64173307261CADEC3A4EAADE3C58F0E9C9
+4BC5876F66939F76217C153D24DCDCD919CF7E573501733FFCD7B7071A1714B6
+318729F987C4BC953F2DE2C31F44C8E2DB02BB9DAF1292C01DB31D30F318FDC7
+7DE05443B32A7984A1AE32500A4BBDA3920447681950A31F12A45DC6A679FDB1
+CEADCF324A085EDEE5C658E1B2983AB7CD521C9DA2BEDBA8FFCD018658F4A90E
+CA1D88F143822204D08F595A4FB005410FD681E99C7A283524C2553B0E6F4A85
+CD47DB0EC5AFFBD58A786F92DF8D3A011EC5372B6B27F1434846427485A6F53D
+A6C520766169401828690B85D5726B43C9AD23231AA7F4062DA23B55FB842DF4
+E1D98FE7322CEA740AEAB62B8E89A58D6C45225931C102F27D08BAF955C700C5
+48D93B4FFE9A44135BBCAD25AC4B526EC0A4126FB1F636B0409CB0DD0279D0FC
+83FB8CBB42A762DF7AACCBF2814DB08B180AD91F6A4040B830B2E6B778FADC69
+B5309626DB03244237C92B31D159B59BBFE2F21C546B41C4FBDF769EB5302DBD
+A10E07FD7CD2D9DD118C7943CBCE8F87087E492C0A2DA05F8B3B5A29B4F33FCB
+FB1A6D4CBADF99E88F9C08A4CA17C6F479D389C8696218112A278F0FBC612E74
+094BAD9D119B011D581D3BDAC4C7F1CE0F235C7088A910A93CA68639ACCD634C
+4E31423BC5861F5667F21A23937FE76D4104800566BC9E2DDE5DDE4F70CE1336
+F3714BB387F784630B10BCD386D19E8E25BA6BDC9AA69CBF11BF78957AEA4EE4
+BA15BD2F604A6692F1CB6C6A4B9AAD724C2ED99BAADF68683923A46D2EC667B7
+A55EB925ED7862B5354D4110C9A32C76410C9AA3B02A97072D440EA19D8B9A5D
+C12078ECF342B92F71193D204C9D334A16AFB4A1150804208F5D9ABD0C0C1936
+0D8F7D6470B46B5D6D6B90C2E8986DDE7802D9C8E1C5EC63659FA66719CEC409
+67AEF24688F55274BB12D24C32246B29D4D785045B0914B142D53E0BDF59D41D
+5E233FD0040FFEE21E95EEF423FA2747F1D36AF926798EF958794EC5D2F1D5CA
+601A7C71D89B005525695F033D4F3D0D8888ED06BC7CC518498564FB3521A733
+15BC620B4E050A94131F2D908B897B7366168D264BEE7E26977C51E549AA808F
+152B6D4E11ABFAF2919FA24C49B2066E726CD9EE7954095107111FD4AEA2DBA4
+F5B86805CD0F2A7CE285796F336D229441513D19E10AF1EB72E28121659C7F2A
+C4BB0C032771A8D49903B7A8E7FA1C3F83841D0390CB0415867689D4EC37FC9A
+191C419C520DF485FA9431AC2B8D21657E1F6B3EA95590A96ED25E986EF94774
+EB5EB04117BEA22ABC896BF1A47B112225D6BD1C2CA79CAD7FC0531D30E1B878
+14F7F2115E43589B6D31D5EDED57F4715803A3B5512504D0D1FCB627AE735064
+5EDCC1C4A5A7B7B9D58D067476D0EE1B8EFD38800170F052018F578D3BA9FFA4
+F0255F7FB35C37FAA2519B9CFCB133A43B383A5E09A7D4D6CAA615E9154E4C6A
+7A1E1AA2B039CDD1D6E6B9C4D891DB6E4D5B8BD026E099A1BD877B5790831573
+926216F62742856383E128E1B7AACE644F28DCD53F584EB24E6AE6B451CCF10A
+9D058CDFE1E017565DEE7A926853397EF7787C774D96CE9CE781B33BAD9CD796
+AA7B1B75F6E091B47A7FBCC903C076C9945091AA2F8CDA5FDA6D779B65415004
+1D8F5A4B376A317AB559A42C5C961A4DCC7975E55DA14644A1492A578298440B
+C7F4CE1AF5CDB3D3399C8661720005E95E32BDD0C05C49F1E4C2AE55EDB6101C
+E045F4CFAD6AB1C9960BAA2A965BF407E61AFDECE5EC4BED58CC01E5086C662C
+27BA31D6D61293255EA3F4454876864C2C6A503A09A2EE0D069ED5D30E22C136
+BBB1AA135ED6E11FD00743FEDE36937AD76B720B51FA2EF2FB30F24AB4677464
+E94408A9017A1073C6CC56EE4F2EC74BFD8DCCE8D59712BEE48EDE7BFAD3F3D8
+FD3EE0C8F1FA1C460D82C64FF38028BFC06C91E1D2C97F9B8BA4E729992FE8EF
+A7108DC0EFC5BAF250E05B31510F4C2006644CC97507F5D688826028AD90E833
+F39724B6501619E8A94313552717DDEF3B09E67DB8F8F49BD911CACEE035785C
+F9936661D9B9FFB82F99AD8D7043ED2379B1FC5E5EA694C72C17F53C22C80C18
+1A45CFC137F479E64E598F72A9DE4E21C0399D7E2F900503D4AEB123AA4A0295
+95D66DDDBA469A0CCDEB73A2457F721617984588C9D85B62561DA910541D836E
+5D6AA94CDB61C409056A8272F12F8CD496F8687872BF7ACE26B9595B08C1183D
+C10EBDA3A6996FBDA4BFDCA7007A733D3F4A209184C753C13CF5D750FC866AEC
+5E6C751CC9EC6F409F99812FB35A64BF1882157DD97FA1F676B3AABBDDD97154
+0997472D6663614878DCBAC0698192CF2616451A276D94DDE64CAD75160A7101
+DA2BBB40866BC98B99D5F48E7B4EC8807C1D444A570973622069458A641F1986
+01F19A0005222649135F580932533F055A496CEE3F1163EC133457CB7759ABCC
+1F2E175E176CE0F8D804051971DF0A5D33F4681A67E9106DA2901921785681D8
+6957CC2BF04AF951DECCF9BCF527BD5F73C6046E2B3213595AE850778D7A16DD
+1462A45EF40173AF0D9A97C8960B76DDCD619A87D35B577B7381C33AF3DF5E04
+8D75F2218A59980548289C8F2B92C298DF2EC770C6A3EB9B7A1F23D206D58732
+4508118E41C18BBF67D422D149698624C4EEA26B8CC9AA7D07CCD498AFF19F35
+2AE3828DF14565C7EBC3A01938F5F461C4F47A71E1C533EC94041CB2A2556DDC
+E294DC2AD58C35FF4270DD2892145F364A4D92A3CEA2F6C2E8CEA2CA248E0178
+14D6A68288D89FD32E960DE2CF2E3C0CDA7FAC26EFBD8B05FD9F77AEB0E88835
+3C3C3B40D17F8110551F98DA68DAC7A864CFA3A39D47E7D94DA3F44654DD0E7C
+99D3B259C6A07DCC2E19E9BBEE7D5DD72CFCB52D586E3038C9CDE325EFBD2EA5
+F5BE0E3EB493F8F009633954CE0F1ED18BAE461628EC39856C853D3C3B98CD78
+E086E0744EB0D1314D4A264BE16F3093CB456EF9DD32C02BEE4BCEB510532647
+2EBE604306BB88EA37780E0A931A5011FCECD19E48C48A7481C556063BEDC189
+9BB3199B31F30D71B8B837A98A5C495AD55F9D5524159546D94C5461964726B6
+3B54AE3795F7C299638409852C612999192BB05EC6ECCEA1D10282FD71CE6B64
+8DC6B80FB109B52030D90A795A155B3F917A4AFA241CE4761F4F0BB86BD70907
+C8BFC8EE289829F7FC6244502EE3D6951441976B555ABFC293DA0BAE65258647
+DBDA261556761AC2181A21C26E96C79DC1405A9DD8524AF10E198A8BA0B72DD4
+D47F64A9A7AA41A277FFD62509810B876BE1713075010D364446C49D8225E28E
+FD02FA65FF887E67085C3175193C7586EB5A6A30BBC50741DF9F302ED2227437
+6204E2A943A794B267563C5C927D876A187DCB28670C817FF764DC4F10C0295E
+F66C81F753E72EC9C84D72819EAD449EB622A48496ED54F930FA5DF683196474
+AFB46B27DB7E1730C8857FD7321DE268ED7106E26D29D3D7DCF57A1F31E7556B
+BE48F874C6EC21A615B6CA4954FABDD2FC56A12ADADCE422045F45A358A706D4
+EA65F98609EC4AF9E1D819163533973EBEAB55ABC87DD0A97F0E4661F2698BBD
+BDBCFE3EA3244CDA279C615118F3B837F88CF43D290A2CB2094DC1446DEF7B66
+A4E9E100DDD3805F9B8F528E6E76610991EC2F0E419C30306C916EE2281DD55B
+D79E40ACC81E367912990BBA06063493A6080D45AC00264C9F6E7C9417F1CD89
+DDDBE2BEC6981539819AA399FF95CA9FEF38028AC6591553FFA2F132104D96C0
+7C163B3D52BC47F8ADD52934383D74A48D465815C2AFD310B1D76DCE5D2BC189
+C20658F721886C7C5A9A69B5BA4B57A7A0F6CAA28625CF91B4EF22A4BC8CCB94
+497AD3858B28CA586EEEAE46CAE80DA0F5314B9E14E2C435D11ABA5B06C82FCA
+447AF359F7D4DDF7B69F14B30BD357AD584CAAFE03887EBBFBC5BD7F34324686
+0CB8ABD16D469A20CE3D04FD6A143C33E3FA06EFD2DA9FEF0794829FA2EB0433
+04FB03C20A1C003CB1D321BC097D2D853EFDF8B6D44E8E726563AEBD522C1DFC
+08DCD87F3A4363A1A6AE54ACC206DC00F5B5457C74004E093D0BC25B213B6895
+BEAFAAB1CD4F2A172D61D1288D7BDD593165E8F570213E486C14AE27D098C46E
+5D4BC3210F98F384E35E57847CE38C0EDC22306A35F3F401CB73812F0AE20045
+B28F8C3DF8249B3EA83E5B9B573C0F455E8D2B09836A775995178F785A0E73AF
+258C9F6DC8A7BE490FBF2F61E03B8950345504D6D79177EFB6648D0E9FDA4C5A
+AF9D7A72DDFBCDBCCDD3085B9C89A8013879544E3D7A642A63F8C2861578FA8C
+997997EA7FE06A14C806230EDA20A69862816E48C5805F80109ACE297B4B20D3
+0C52F08052EB5C62A20A6D088BEBDC7FB3F8513DB08A5CA11E3D0B12022A3AF9
+5831913982CE4E359671F8BF22DE1D7A01DB25AA3F153EA280E84AF07A76B425
+D3F02E1DF7C3C833701143DF12059CA9E17E08D4253C99759C2B89987581258F
+83E0BD78776157B26B64C467AF64BE40D858468AEFCB9FCCD49E8208773F2E64
+F8A88BD964A4C58A5EE38082928EEAD6C3D4D25B738CBFA63D5EAB45253C0CA5
+328193432D
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -5212,7 +5235,6 @@ dup 100 /d put
 dup 101 /e put
 dup 103 /g put
 dup 105 /i put
-dup 107 /k put
 dup 108 /l put
 dup 109 /m put
 dup 110 /n put
@@ -5448,129 +5470,120 @@ CEBF16946487E546C6E433A5C5B9FB7D5B97F2B4B202F892CF5121199EB48642
 4448B45EDB617EDB931969D53B9C200E954B4A6DA6617E3A56D72EF332FB941F
 4694BAF21CAF8473EE2767CB5434E955C5A08DB04F67508AA1F5CFAE25FBC9B3
 9FA855CBF2DFBD04C656532230B8A2A0B33C7EC74BF3EB2877DA369035C976C2
-F3227355AE2E740152A344AC5E0CB3D04A1D4273A54A35BF8B1F247973158C4E
-2ADCC0E93E456A8F099F28C99EE6497EDBAD4A0E7937FAD55FF114586FF56F02
-D7DE3994628E4816B2D15C8370B95E334D9D374A9C1B6C7A10E83874B380B6F2
-A527D6AE149DA8AEC229DF8964FD62D697D99C3CA805CDD28742348F462C2FA5
-6E83657F5587E0E9FBBD2540F4E14876CF5BE9A38270E56C85C0732DC781344A
-A480D0BAD09DE7839C3CFF2BD09C9A9A80F985DB188B8C1689CC8A4AD620196D
-06D17C44063A9CB2F30EDAE6DAE4FC7751BC8CB7D2B54CC5FED51A14354725A5
-5D3568B56A54EEFB5C20E38A336DD50BAFCB061B051A0AADB33DE07516535472
-379855FDFF2C07BC75FCE7E930062C334CE95B6B538CBC41B0322812E1E51679
-1716297E204395DA31ECBF6177CE515E88B4F4D61348CE6AAE02FD0F1D286114
-3BCA0B5199B0505D786AB3ED0CED56A180DA736C3EEEE8825A3BAADCE6A49117
-B0B754B2B53ACE67F02AEBC31A4665FF2B023F5ADFE660CC2E34967D5208BC6D
-2F686AB71E897B3DFF0BEAB60E661F651F6BC46DC1FAB62EE9BD004B03358262
-32EFB3F4E4F7C13275442F3404888CF7FA12872A463CBBC52B993DFCC8CA0981
-991AE2D8738573A60531C13C0FC33A9309D9C99F3A68B7BB3EEB118E0943DE7B
-5CFDCA5615AFA20AFB7467D2541ABE54E4DE0226A49A72C2DF120A6A1E9CD16B
-143E9D3CEC3D6EACB409AAED738C066C9F8714E1D062AC775BD346019D2B86EB
-21007D2847DC4F694FD547A5C1C3C8089E9F6DBE130C6EF07766D89A5BD25778
-27056E32DBF97F975EA2495B466D643625BDE7F55B35FA5FD47F2707F76A3D25
-9117398C915A3BB4B461972B136CE89DEA6304D5D99C043F3CBFAB9E1B68AB10
-D416CB8A4F7760D76F3750D41AB01151F36EC6E47ED148FC15FE7DB2C0AE91E4
-40222918FACD5EFE0F8A2093D487E9C7E840C25BFD2E49617FFED0B13490E86C
-89A9DD5544A0CE6B49162B950CAA484227A5BA5C6AD796D57A7F8DF7DDBC1FEB
-9CE33165B20539DE7DB2F0B4FAB376000013828B458F938375769B75DF7541E6
-21937987B397872B880D350D359A9183D1F9B530C3FDCE648262E1E10B8BA95A
-D23B1EB3C38FC30A6A70A541A31E626427790AF8ED201B2F813DDD1AB47EA8C8
-370E1591073B6E128BA9B02116F28A929A0F34E1C12C091E4820C12FE47E31A8
-B56EC3E47D203D61DFFEF269A4EB9B7BEADE78B9506CEF4F200BE114A7669473
-4D16CCFDBBC2B8DF7AF87F60EEAF24BB9137E58CEF2F83F0E9116E9ADD2067DC
-DB5C9E05440EA0DCE72F3C98B3E97D907B63DE8F2AB4F06A572EFA28A395B653
-DEF02B8BC01E79FDAC8528DCF05A1BC986C9133FE81B274ED656E8F54087F85E
-9AE42FB250690B927A0378FAE0FC32602718E29AB9595A48B51E0914D9A5F6B0
-45CBD36D854AB5717CF8E645D7DDCE370D8B555B2DF0EB9E3CFEF436F4306065
-A8EDD52C19D9330F2518B1637D69A72DE1903D5C7D246A5DBB7D33AFBEEF9217
-1F8DFE2E5B3CF13AF8F74B728479B7E7D227FCF6BB618140E795916010E7A814
-F7CC8B76EA35BEF33551819D6EC75245FB5324775E1CAC860543BB7931404BE9
-D535D9DC60A9C43428E03CAAB2C5530DB97491A498BBC8A03361C0DD06828CFB
-AC3E51B672D460BBE1FA0FADFFBD7B6528D96E0496A8F62C8E3D4AF463CE4D4C
-3DEC985D05FF44FC710605EC1C7F2C77469E7C4DFB13DBD74DE4AB848D81DEA0
-B974766E14A6F2FAEC6BB1C0185D6079BFCA713481EF5872D53EBE1630DA0FCC
-977B484D15B1B9BCE324E375FCA501D3C2EAAB0A366AF151DADB9A45EE0B7D07
-3F6F6D7B104411688787A811D525AE0273989C7EC61F4211B6E982C9A957617E
-96933996835140D7F944DE6AEC922CC203C63798F0D617C1946047303B163B10
-2E9EC86E4AE909B7D5926F97BD05F6D4B81A5AB5F2CC682B02857AB89C9058D3
-4AB595E9EC0BD0AA10F4C35E33B6179A0EE971DC7739BFF1235C7669D098C848
-A8ACC9785237D6249D4DB97E3EFE29B4C2471A9475E1A9B1B238FBC5C11E6E67
-D3FFCE034BDAC6D8A9C679E06FC504375FE7C5C2CD713FA67A8A3CF2912A2A4E
-AC61EF89F0D4BCCF3638857C2525E9666109A1D529DDB3A570ACC33718E43EF0
-62BCDD2A6259292D5581F0076287E1A676D1B971959A143CA314D558DA5337D7
-2241B07CA926C8FC0771D56585CE189318BADE9B63A4246A01DAF7B8A58899D6
-5D5E95F4E0E9D0DE0E7DC14675DE607204E0FFC429DAACFA6BC3732B0A3AAF09
-14D5B15F9972A0D4E5483CD19DDB3D4142994B6687D1096FE57725EE8342A3FD
-62997C2DD51B51F4872C985D8C25827B40ECBA559450C7B275F6592704CA842A
-B24F2F28E0A4D1B2BED9905C9D7D527B4A09C3E1F56C0B954F6B80308BDE6E2F
-2CCA155B1E504D0CE5B00203A3DC21E281FB218340699D3D7246E16696EFBFF1
-C0D29066F8496F6E83FCC932AC2B66A12C91D27E7E7305C4B12B6F595F77664F
-763EDF055907BFA90503B5C92F8B3B1D9F234BCE872AEACA16AA1FE701A4795D
-93ABF4030B0169EF2084D46D96F011158139337D51822A3269827770ECC3B6C5
-A302C2884AFA7129DED8420B9E134EA54FAF797A324EC2310D777432FB630605
-AD3A28F2363D7B2FEA9528AB95C7B9B2DCEBDFA94D9391CC8893C9BC0B68D2D2
-7793B9F2DA30F6FA0045826999B0B8F8B103AC9F35A3174DCD3658A4C924377E
-655B9A37532B3BE2109EBA9AF8CCD5105905934C28D9F8B82D413F1F8D844D1F
-5F36F7540A97445D45D01C92CCB1C3DD1F11E3148E9FB14BB414CF383504298E
-43F21314C75676E8B8F0DE47FE006DFDB857C015EEFBEB3795B27730693EC62D
-B25EEAEF20F83E1B43C0E860024CBA717101F51049094FBAB4D0F991312106D0
-CF1C70EDBC10CAD125F46418D620849DDA9868A20DBA44126AAE63FB50CA16CC
-6F8BBEAE9F660F9141F14162C2CB22AA9F0ACA1D977733E250C492CB0F281D0D
-4104E440A2B60511BB701B6FD9B894909DE4D6399663896527DC894C0C99CD5F
-0164897CD14A4E73C9B32EA4931A0D1B629C5F78DFC0EF737DB040458982F808
-56A5E2136FF134199B00782AA6B90D303CF3BD557A5127595F54155F0394B7EF
-7B1320A078EBF18A81CF8B258345ABBC744858039176956A6A9FE480DE0197D6
-AEA79AD19158C9099DDB125F05A2D6591B9262788D04FC6C62AD3E1F15030EA4
-1B1EE0EC169C3B33FD21C55F75873D0CC4441A9ABFC267EE406E8F674636A1DC
-1926B470845050D61E3B368731C0826CBD0C9D9652D87A166C3B72750F629ECE
-42CE84FC05BED43AADEC7B2790E23983FFA6FE909AA195441DF31DE62A694AC5
-601ACB4E3FB6DF0D0672CEEBC1651885E7344B873A1CF9EF7E3712EEFAA5E329
-3FF7A2CC06427BBCFE91750070B65471F7F97AC3831F0234CB49C6E15C59C9BE
-F528991410DDBEDE9AAFAD2DCE9060C3ED864CB1AFD6A46ED385A33918D90EDD
-18476E09EA8BD621C5CEE1A171DF48BDC0E012A2038552DDE53D553DFE6B03B8
-1579FF629DA867302F75DDBB32899A26BE11B8F8575DC18D67922DEB40A3DDB4
-596879E4B817F39FCF678FCEB94B19C5AAF076D4440807A320AE1D2CAED5790E
-3B2405A0C99736B7E56CAA78CDC63A3A62C462C9BE9FBEA067AEFB9F7045B6DE
-DA819A42D2D28D9635B83F59DADB671D33A5AA6022FF8C406907A174EE9868E8
-302EE498ECF450911F8B4A06EC07B81468029A7E3CE34EF1AF35DBFD66B2E804
-26FAF5A3D3E0E41205F3584C5FEC21904297196C53A467EA1FE56E65B9D87A98
-2B8884E1105C47F9BFAA57AFDE233E09BAAF9C5A7DD05C45674A951CE1B2CDA0
-A176D473F1949221DEF2AA6E35FE72627DCD1B920B5B8CCC4E5BAAF3F97D8FFE
-F15FC0B0D07E01B3A7DAC22DA34CED526708B049889CB600E61029D9C7D7AB85
-05E5C0D1D14CEB1248D8B889892B2A5B2F7C10AF3395A0EC02F9A3765FFDF0AC
-17BF4202576D48FC88280A85495719114C0DA6D1B040C832D25C97B7C5A31D96
-E03F0E502FD0115D971936DB5A8808B9977D7107696041B997CF1C3CF3D2558B
-05AEA679512B9CE6518DD10C408B83DC1EDACA0D0EA6434119AC08611CE1E2D8
-39A7354A2A24B2317A8C1C17E8E314BB6E0DFEC26AD1A43076625C96DBAF488B
-4C76B2BA32DCDA9161B850B428D8EEA0C034E8C9FEC8BEDA74C552D78ABC253A
-86AC5C8CCBE7658AE83374D417F1FCB5836AC25507A5B2B9FCF680880F72CCFC
-43CC23A3019BBFB7E9FC6BBD00166F577BB3F1EB97BEE6368007D9A3671432F8
-F7754423350A5FCB3979D629AB52136FA3CF750E9A96A52F3E74D0DAF9249613
-21A2BF4FC21C9A8EF53AD911AFAA853340CE0E95D8096CDAFA28A1544233539B
-4D1C0AF2B635BD2FDA2AE06485A42B94EC24CD6D08AD5FE186A4B330B7A7E2CF
-7CAF7C929B2EC0AC0CF066F642B1FD77A6299F6FD50315A27A9E7F416D0A59DA
-C5740A6AA35FB37ED7E2631784AB9427C71CACFD7F1BB8A08D466E40C5FEFE67
-4E81C0B6597B886B4E81BEFEE7501BD140C5F34653AB6443210E94B52B092D65
-0C86122ECF14BE14F3D21104698412DBA2B9186BE1F3EC2CC5721DCD12057E25
-1A95D75E1D173C301566B9CF19A092DB1F90793FCB1F0F6671C871E5EDDBB6D5
-2D054B41B59D69CB2C205F7E86C30778B4C254F6606F2BA759D08E4DBD800776
-69F14DAAB8A3BEF3A808EBD917970D254E6BCCDC98FC42C8ECAE8311822A18BD
-765CF8F136485692B2B069359F11851F2AA9F9A14DB1EFBC34FCB46C0251458D
-8C9FEFEA2723AD67668854A5A85E9E1831143D60194DDB8E8059344485F3B65D
-FA047A29CC91CC45A3FDCA6677F836ABEC1C7A9029A0C7461DA9856C1D37908A
-9992810D459F0598CC390135A481DD241E59B85938545ED728D332675BDB5857
-00DC0CED734A5D295D69C3657F8F32130CC0447B8D609D0AD9E97AF80FCFD766
-9018C9D1FC42DACFE999198F9D47A870CE7B48BCF539138B398662537EDA1E9D
-2B7C7F9F75663CEA2960AB88B126A98CA16E3E8AC4F13706443D4F469F9D44F0
-002716FD449285518CD845A2E8BB824F2E03C5393E803A967955B7069AA8EF3A
-2C49A16D753E5A34D7DB3688E5B5C116208AE555A23A13A91331E79541C56F74
-9A09E3A0123A38517511B9D4CD18F5230891AF7052C29E6B9E0AB664331CFEA3
-AC7A1BDDC53E9FE118307D548CBF22DC10017A3A3B606B9760CC286B6D05887F
-357C778050E31D29D5ADACB352B2257234057B7ECC7384A0CE2097ACDB1981D2
-C9C4798FEA02362D04DBE745631DBF9DDBDD479603592BD898712A64FCB981F5
-B18423AC72E311461084CA85AF30F274D84468B319E675C8EE651A28F89D4DB9
-266E4513AE286EC25A6C5CEB8354C896C79EAE31B3D3E0D3ECB47526AFF2507F
-0AD61CFD7C07B0D2513C2DB1EED8781C233EB06E4AE484D44A04E3B3AE2BF44B
-40A6777DDB
+F3227355AE2E740152A344AC5E0CB3D04A1D4273A54A35BF8B1F24797246B5E1
+CFD5D260F4D5E5131120AEE3B3BF1308B9E55026C969C5451EDA76E0F06E75F2
+6DCC258952B63FE0B7B99B39D5563AB4F7CDE57AA7490C71E3CD9EB563E0A9C0
+8C54E64E3B537A901395E33847C6FF75C2B6FC3536E8F990C18A6623A00AB558
+272AE4D142503BF0B82A13EB6088D27E0D8B319D6BCF1E0E8EE94C9ADD6D4645
+A5B0FBD17AF7CB1E1ADDD2D822A76F6B9338B6B459D4A67631292AA028A8B976
+8F9771C890FFDF7751F3079E36D8F92AFB62BBB960A45891B5FABC8E5BDA1348
+5AC23D29879FA27A392E3DE732D78EFF7168F2FB7B0841C8B3729FFA2B515885
+C699663626473D04C1421BE24259C91B9FE8F63DC99929D9741F37E67CF70E38
+3C489E823CF0F62B020CF576753734C989AA1A360A21A137DFD644ED2197032C
+3DEAB8E7A1306D8DF7E36DDD52A895488E63701D6A69E634EC862DFCDAC01BA2
+56DE73FC77027F65B89BF3188686026D0C2A2F22DA92B8DA0F6476F6252D8066
+D9F0AEAC5E6F09120646EF77CC81FEDB1BC8E3197E9CCA12C941152387E71286
+E00B8ED61DBA85D2EF5550663A1D2C7233D6FDEDBE947241585C4B9580E7A700
+5081C957D863FD2DBDBF56CE8DA67E3D6A8A47C3BF38478D3D4D72A803DEC0D5
+797CC1ED5B005CFE4A46CF549FEE756419351B89B8DDF13BC2EC18939901BA5D
+37ED1DBCE8DA072938DFA9585444FA6F09CC32C7098E2ACCEEEDF7D117235385
+BD95CE9C7C997491613FA253743E7D0B03348072F516B7436A78435B19C828FB
+1712254A679503CE81FF1761ACA3C3BEC0C1E2736A2908C7A8D6F30D86F7DD00
+1BA2200908FA4180273E50863CA552868F1EE5EC1D8D47AE159B4A42C65F3D7A
+73332A618CEA966BFA32B9AEFCE9C7CD4678B2301FC1DB91964486B62E28DD60
+11D123711C6A2D190F6FB97ECE36679247507514606287D049455AB9CCF928CE
+CB2C62D55BBC4DFB1F8A033B7D42D8D1119D71F616205A91B48C7C83CB2D0B39
+15824D6F324A9CB64E6C09D65C478F8753905E1A0B094D310123FBB7CBC4CF71
+08D6381228C2B6C393E8055AF7D226FFBD9CF19379B4E7F75938D5A39E3410D5
+4E2BB197AD202DB623844B156AD0FD80AE4CB0E8B7831CECF25E15753FE27E19
+A8CF57C78C6D1CD021C6FED91E81AE1F09F1F9CE7D8CB480EB559729BAFB507D
+B99DE23E7D3A9FD04345DDC7E8E498F2229CC33A991418E69A9366ECB375C42E
+69E1B73DC94401E5E7AD9CFE8086432F8026224CD42D9A1EFDB1B3B0D5BE74A9
+186F30C774BAF35F25D4B0B1C9C791CAA87015D3A7519184FCE9DB2439A98A49
+0DA01A0A9ED463382DAAA05555106902836A46E3651871D20B65879902C0D93E
+C8C3358A8F64CD0CA264614EBE741ABEC13F29CAC4625A1A7301889D9A994416
+24BC8C7816579FB7D7AF946DBB3D911457CB2D0CE74BD645CE388BEDA28CA1F6
+EF4DD197628362D38ED6499657B1E45D1DDE460ABE0EC838DF3BBD2B90FD2245
+6DC211B771E1ECC3E294F1B767BA0F3D041BF4DB159EF01C3AC7C00281A675A7
+BECDF043A5EB64CB6D99FC8E7876EA1216F005A7A63EBA79549D5B6C33FA47BE
+38466B6D62D3D00C52D9BB7AB23DD4A4C896D3A5890E8C57B7ED5A627CC7EA4C
+0BE63CAA285E1A35808FEE0ADB1FF9EA3B18EC1040560B1FD950D7EF32F7F958
+5ECEFC1C01A98E4DCB69934F9314316D3CBC0AD4A1F68346CD40AE6E3A804EA5
+7286646FB2A7ABFE62B300F72A0484CC51D34D3FA2B292D308D605576D56EFAD
+DB68453A08E5B45720C99964B02A5F517A7CA00F6976CF1F6CAEBCDC1772568D
+14129CB82DDE0705F45EABE56EA4DC5AC1656105957F509F2E8AA72FE5C2F830
+38F2BB415C413D54F348903AA6B614A3AE99EC4B800D4AA2677BC588B5813A94
+F5C2FC3F8B09E58B00DA92C2946D5B9FD8DECF4E0B49BF16A81A6F19EA1FBA6A
+41FA0D679E6CA980C541395DD15AA0C203335ADF3B0D48D519816D46681993D4
+A857426475A068E6C30E75E1201524D6B5EEA7BFCAA429AD5DA4504B245B23D1
+9E5E2498B1F63A7E2B7CC42C3E5B75F075006FC833724FC05AE4157F640E7D1F
+48C35EC8DF3DDD461EA211E48B2B3E628BE4A523680BC78FAC41FA1FCBC6FE81
+17AC84A895CB2CC9CAE4D77FE1ADC8C8A4797A3F1D00E090282FE2116D5848BD
+1E61B36613A89BECE27188CBE9E0C7ED75385BDC63BBC9C55E2191F1186917F8
+423A10D8326896DF44D7B2A5AC320B1818771EFCC9C20D7E5BD5291ABE762A50
+5148AE49289CF337FE6F2B6A369C557D6AA731ACF3BB97E38306F77A94C6EB2B
+B7846ABC4F32E886B0C66A806C27B4EE3CE94297C19714C889943921426433BF
+19002E5C083BA89BF31D8F5A2602BF058A8C5C78DA421DA74A4E2DCE034D6510
+C4720403654A84BD4000C074522F9D2D7ED733AC6B46232C69E21496575EFA86
+D24B2A8DC064071F35AA926565BF09130B4F96A8150A2E3EB36355535D866B67
+17B9F62C47A065E28261990D79E64DE2E4C5CA8E3B6D215925200D982510F150
+8B0562589AA66EC47508F0A5AC15B06078A83B911C15232963F6B59BEDF57A57
+1322DB18C44E6CA9154AF9084CC02095987FA65AFB0D896551415EC9D45BE803
+BD428A107A492BBA8AD075A89112B3FE451399E061AFB98FBDDDEC71DA7BCFB5
+2833E5299591FC86BF14F7B324F7F3EBAD36DDFB77313F1ACC40D0E4805D5B04
+FB965C08CEC682A07412118A17C4549C0A96F397C3FB466C6D888F5A407D43B7
+761962E8CBC5C7E27AD0A3605336CA17DB4CC1593C64E66285117EF7CCFE1A17
+203C9F1ED41FB4FADFF14DE66F78E87A9028C853A757204F81CC7F425FC7F8A2
+509611BDE84D0F549F5614C814C3E88851F9FE74506EB52C5BCEE4F21DB52BBF
+31940BC2156EF38908869732038D1EA6E39B5417E547DC412CDB0B1F1DA09E65
+07B13C1C9C962D1A9F7A0EE6187B92874964B3C5E20AFAE716E33C3E999A4FC9
+462899118EA9CC961A7D704FE46A872BCF77491F70DEE94E1335196FD787579E
+30A01C29CBCA08F301889C27910B03E20B4DA1363F6F5896007F71CA90E1DC57
+9C6BE8898B3E2AC201895AB1223CEC56C003299D9C0947320DA9D9DA474D59F8
+1EF5F4720AE0FCA1A8E55A2B9CD79801FECDABE6E5FDDDA140226714304D6EC0
+AE2BDDDD1A02E3C01D6A46682D801A7BD61C1737358EDAD7D993D9006B56BC43
+2467A2A0B58C33FE4BCFD8DAE939184D45DFC23F5B597D788F14319EB52B1FCE
+DF8C405005CEFF39D4167B66082A38209A7A8E1D5E73D87CE049BDA2FFDD49C6
+3DA02E5D6405E2F54C921F6E2CF9F1E18268DCE0D0C960D477C8525CE5FEE998
+82ACB08902CF6FF1E437468C519FDD447A2661C381A999E8724AACE9F461E629
+998539472CC9355A9E55989EB7CE1FEC9D313A160294AA55910F4F8E55BFB917
+BC77A51055CCC1772D0021AFBC1E79B289B539ADC3E99D9632919F8BD17A1B91
+BA25661178C5EE19D4CEC42744B52F04FFC27A2E3C044BAEDCBFE020A896BA3E
+79A6451ADECB932F183CD599F694DC8393E1F878737113E3DCBA11F22D46F028
+6FA7CF148F2CFEB03F61D40D6A0D30451723E7C91D4BE58E6976FBDB89D50F4B
+6EE65D2DB6465545038E094E333A015E79737CEDA211F913D831E78032B2626B
+0FB1E7E20CAD4E01BF398E9C4965BF91136D4AE83029E5F3A6339CE3C8FB64DF
+E5925D739FD720AE38EFBA0E32E74317DD35363F19EEC4806EA840F2A77AAE2C
+8752B4B786378B134F5A376A1F0BDF8FE6F0B247D4A28248D0693988D696E7B3
+4B937A41277C56A182BC2BE08D57939398C3CC125A74905ABE953028EB2A8A0B
+9BEB795D484BC979809506C8FA55AD6135FA66A0FAEC7EF53F5F91B37D8515DB
+C93CD4EF0A12CF0F9C3CD06C57FC9646A15810910EACA53BCBAEFF4AC568CD8D
+13DE144FF06FB3F1A6CE76ACC351297DE4D7E755561C1EEBBD39F1351D1731C2
+16AAFFB586C680F588B62AEC37650017928769C53E032EEADAE9E5361F28F78E
+1841C1419290D1A453C63EBEFD3C99B5F8A72548393E2C6B1C95A43CB19EC099
+4DA22BC088E6E95FC177B3D00DB7B3652D8C5DF1682DE9C3D22796AF78149E7E
+A951D0A46EB6EFDA46594BF4D608E3C4BF9406EC7A09D3A8D6623D79FB609222
+C8B1257CAB63C810A5C6983BD16FE6322E5CACDF56B91FDD46AA8B292210D3D4
+B59BE801C1B5A425CF5F5774968D510C017C3EA4D7B86C8555A96D4F0163DD8D
+F1FD9DA5D9D15999E626DB68763C5CD22EF18C747BCA003DA4354FD484A56552
+D0A96B7FF1958035AE04025DF7F67EB52B468D63D735CC8EA34484B7E18136F9
+9D4C0966C79990ED629A87C033A52F4C96295E3D3CCD4B476188101B94E214B0
+7B4C4463CEB3C81E8838D0FFC9BA36CB0A39173105C90BF8A6FE12A0B3749045
+7CA9DB29EE500088F3FFD13BAC41782854B25955B23118FF880BF20D66E30C4F
+164FD408E5E5636976D9D2686192BE5AE7B2C96A911C290B749344C0B630DF9F
+B3FD98F2E62707541A128058A5F22E05922103A39A95C1B7F6F807A5F3A21A25
+50EBF0F5950A45C9B864D2785C24F30108BB15A3E5468902D83B5F3CFBE1E359
+BD129E494D769A371B26967AC8D715BB742EA20B414D5ACBB4B25A5770A80E7F
+B315EC73D3AD78C7BEC227661C2EFDCED86C4240D38267BF1EE26C506CF00382
+8E7F86509AFABDA5ABA519C6CDA52703B40DB3502D72E8308725E660F107F4A9
+026DFE14CF4BCFD2F4832F6AD1550CDBDB5644CA52899F4641C5897D4F907931
+185D13C33184D78EAE54BCC164076DB74D99F52C064216C7FAAC977CFB69B150
+A78A2052E4EE7090A7465324648976E1C3F19F146328BA460DADED492AA74BFD
+04AE08FD24AC871D21CF7CC808495ECA5E73B26D97EAE5F9BC435D53BF2C1BD9
+0A9004BFC44EBBF6683D52781943814C3C942BDD9BF95F1661761119B49AED7B
+D9376B6124A4DC87B9D7DDB2386974A6E02B29AC5A994617F3F988B692EDC47E
+6C948C5071CFE0D680E018950F545831B5EBE3C19BF384A51DF56F3CC7757B8D
+037FDB95F4D1878C407B8C1DF1CA9E9236C468E9B8
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -6409,6 +6422,7 @@ end readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
 dup 13 /circlecopyrt put
+dup 15 /bullet put
 readonly def
 currentdict end
 currentfile eexec
@@ -6586,20 +6600,26 @@ DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
-88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
-60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
-71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
-9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
-A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
-AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
-F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
-A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
-AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
-EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
-EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
-CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
-86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
-AE5400775223E684BFCB
+88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0
+657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE
+D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808
+AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2
+3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E
+7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B
+A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0
+2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25
+CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D
+9E592159338E1293F449380E13C21AE42E6861DBBF4AE99A7469F871A3940835
+FFBE7F316FA9BB834EAB18625F0960352C75105A92F175850289B1AE177E0D52
+E43635C41B85F75CFB706BC92B0BF90367E180A141703EF69FD064C0FA34618A
+5D9684895C3EF50F4AAF6E0F78D483280942D3F9C1A18FE7FA657928477AAC74
+ABCC21B622EBE2C0AD9EDEDAEDAA9A6E3D96E01CC837668FAC44FB52307CE618
+BE8399078154C80E7DB52F0CD16717DC59203497E89D69B390E9966C19D36188
+E47270673493F7DFC14C72B5B4737AD52783C573B5F12D50E9D54AD65C2C310C
+72BAF2A8ADAD81ACF0C49DF971775F2DB7404FC9AD6B30C947A348B28B0C042F
+CD9756359BA6942D643D8B7BC54E6047DFE25215CE5EE74CC3076975A3F324DF
+E8D80F42AE4A1C00B155FE56A61CCC09924E4D7DA7EE07987C2EF9E91AED55CF
+524C54E553030B5F
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -6614,8 +6634,8 @@ cleartomark
 TeXDict begin 40258431 52099146 1000 600 600 (readline.dvi)
 @start /Fa 197[21 58[{}1 74.7198 /CMMI9 rf /Fb 133[34
 41 41 55 41 43 30 30 30 41 43 38 43 64 21 41 1[21 43
-38 23 34 43 34 43 38 39[38 38 38 38 38 38 38 38 38 38
-2[26 21 30[43 43 12[{}39 74.7198 /CMR9 rf /Fc 134[39
+38 23 34 43 34 43 38 12[55 26[38 38 38 38 38 38 38 38
+38 38 2[26 21 30[43 43 12[{}40 74.7198 /CMR9 rf /Fc 134[39
 39 2[39 39 39 39 2[39 39 39 39 2[39 39 1[39 39 39 2[39
 19[39 27[39 39 2[39 45[{}20 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
@@ -6635,40 +6655,40 @@ rf /Ff 133[44 53 53 72 53 55 39 39 39 53 55 50 55 83
 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
 81 1[89 87 93 7[61 61 61 61 61 61 61 61 61 61 1[34 46[{}52
-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 2[45 28[51 51 53 11[{}51 90.9091
-/CMSL10 rf /Fk 134[44 1[60 42 49 30 37 38 1[46 46 51
-74 23 42 1[28 1[42 1[42 46 42 1[46 84[51 12[{}20 90.9091
-/CMTI10 rf /Fl 134[48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 1[48 48 48 48 48 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[{}37 90.9091
+109.091 /CMBX12 rf /Fj 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 /Fk 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 2[45 28[51 51 53 11[{}51 90.9091 /CMSL10
+rf /Fl 134[48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 1[48 48 48 48 48 48 48 1[48 2[48 48 7[48 5[48
+48 3[48 2[48 48 48 17[48 48 2[48 5[48 39[{}38 90.9091
 /CMSLTT10 rf /Fm 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 /Fn 197[25
 58[{}1 90.9091 /CMMI10 rf /Fo 197[33 58[{}1 119.552 /CMMI12
 rf /Fp 135[85 117 1[90 63 64 66 1[90 81 90 134 45 2[45
 90 81 49 74 90 72 90 78 10[122 124 112 1[120 1[110 1[126
 1[97 2[60 1[127 101 106 124 117 1[122 14[81 81 49[{}36
-143.462 /CMBX12 rf /Fq 242[91 13[{}1 90.9091 /CMSY10
+143.462 /CMBX12 rf /Fq 240[45 1[91 13[{}2 90.9091 /CMSY10
 rf /Fr 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 7[102 1[139 102 103 94 75
 100 101 92 101 105 128 81 105 1[50 105 106 85 88 103
-97 96 102 6[37 67 67 67 67 67 67 67 67 67 67 1[37 1[37
-44[{}58 119.552 /CMBX12 rf /Fs 129[48 48 48 48 48 48
+97 96 102 6[37 1[67 67 67 67 67 67 67 67 2[37 1[37 44[{}56
+119.552 /CMBX12 rf /Fs 129[48 48 48 48 48 48 48 48 48
 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 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 48 48 1[48 48 1[48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}91
-90.9091 /CMTT10 rf /Ft 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 71 4[25 25
-45 45 45 45 45 45 45 45 45 45 45 25 30 25 2[35 35 25
-2[45 1[45 19[76 51 51 53 11[{}84 90.9091 /CMR10 rf /Fu
-134[102 6[79 3[108 1[54 2[54 3[88 108 1[108 94 11[149
-2[144 3[151 1[116 4[152 71[{}14 172.154 /CMBX12 rf end
+48 48 48 48 48 48 48 1[48 48 48 48 48 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 48 48 48 48 48 48 48 48 48 48 33[{}92 90.9091
+/CMTT10 rf /Ft 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 71 4[25 25 45 45 45 45
+45 45 45 45 45 45 45 25 30 25 2[35 35 25 2[45 1[45 19[76
+51 51 53 11[{}84 90.9091 /CMR10 rf /Fu 134[102 6[79 3[108
+1[54 2[54 3[88 108 1[108 94 11[149 2[144 3[151 1[116
+4[152 71[{}14 172.154 /CMBX12 rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
@@ -6683,20 +6703,20 @@ 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(8.2,)i(for)e
-Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.2.)3118
-1623 y(Septem)m(b)s(er)f(2022)150 4927 y Fr(Chet)45 b(Ramey)-11
+150 1418 3600 34 v 1873 1515 a Ft(Edition)30 b(8.3,)i(for)e
+Fs(Readline)e(Library)h Ft(V)-8 b(ersion)31 b(8.3.)3145
+1623 y(Decem)m(b)s(er)g(2024)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)21 b(man)m(ual)g(describ)s(es)
-g(the)g(GNU)h(Readline)g(Library)f(\(v)m(ersion)h(8.2,)i(19)e(Septem)m
-(b)s(er)f(2022\),)26 b(a)21 b(library)150 4523 y(whic)m(h)39
+TeXDict begin 2 1 bop 150 4413 a Ft(This)23 b(man)m(ual)g(describ)s(es)
+g(the)h(GNU)g(Readline)g(Library)e(\(v)m(ersion)j(8.3,)h(30)e(Decem)m
+(b)s(er)g(2024\),)k(a)23 b(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{2022)35 b(F)-8
+4764 y(c)577 4767 y Fq(\015)f Ft(1988{2025)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
@@ -6725,13 +6745,13 @@ f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 b Ft(1)399 1005 y(1.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)18
 b Fn(:)e(:)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
-(:)31 b Ft(1)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
+(:)31 b Ft(2)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
 (Commands)18 b Fn(:)d(:)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(:)32
 b Ft(2)399 1225 y(1.2.3)93 b(Readline)31 b(Killing)g(Commands)10
 b Fn(:)k(:)h(:)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(:)23
-b Ft(2)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22
+b Ft(3)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22
 b Fn(:)15 b(:)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(:)36 b Ft(3)399 1444 y(1.2.5)93 b(Searc)m(hing)31
@@ -6747,1141 +6767,1219 @@ b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 39 b Ft(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16
 b Fn(:)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(:)29
-b Ft(13)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22
+b Ft(14)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(14)275 1992 y(1.4)92
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Ft(15)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(17)399 2101
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(18)399 2101
 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18
 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(17)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8
+(:)31 b Ft(18)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(18)399
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Ft(19)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
-b Ft(19)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8
+b Ft(21)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8
 b(anking)13 b Fn(:)k(:)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(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Ft(21)399 2540 y(1.4.5)93
+(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Ft(22)399 2540 y(1.4.5)93
 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fn(:)15
 b(:)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(:)41 b Ft(22)399 2649
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Ft(23)399 2649
 y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
 b(or)31 b(Y)-8 b(ou)22 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(:)35
-b Ft(22)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11
+b Ft(24)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11
 b Fn(:)17 b(:)e(:)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(:)h(:)24 b Ft(23)399 2868 y(1.4.8)93
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Ft(25)399 2868 y(1.4.8)93
 b(Some)30 b(Miscellaneous)j(Commands)16 b Fn(:)e(:)h(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)29 b Ft(23)275 2978 y(1.5)92 b(Readline)31
+(:)h(:)f(:)29 b Ft(25)275 2978 y(1.5)92 b(Readline)31
 b(vi)f(Mo)s(de)10 b Fn(:)16 b(:)f(:)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(:)h(:)23
-b Ft(25)150 3229 y Fr(2)135 b(Programming)46 b(with)f(GNU)g(Readline)37
+b Ft(27)150 3229 y Fr(2)135 b(Programming)46 b(with)f(GNU)g(Readline)37
 b Fo(:)19 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)48
-b Fr(26)275 3366 y Ft(2.1)92 b(Basic)31 b(Beha)m(vior)23
+b Fr(28)275 3366 y Ft(2.1)92 b(Basic)31 b(Beha)m(vior)23
 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(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
 h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)36
-b Ft(26)275 3475 y(2.2)92 b(Custom)29 b(F)-8 b(unctions)19
+b Ft(28)275 3475 y(2.2)92 b(Custom)29 b(F)-8 b(unctions)19
 b Fn(:)d(:)g(:)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(:)h(:)f(:)h(:)f(:)g(:)32 b Ft(27)399
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)32 b Ft(29)399
 3585 y(2.2.1)93 b(Readline)31 b(T)m(yp)s(edefs)17 b Fn(:)e(:)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(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)30 b Ft(28)399 3694 y(2.2.2)93 b(W)-8 b(riting)31
+(:)30 b Ft(30)399 3694 y(2.2.2)93 b(W)-8 b(riting)31
 b(a)g(New)g(F)-8 b(unction)24 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(:)g(:)37 b Ft(28)275 3804 y(2.3)92
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)37 b Ft(31)275 3804 y(2.3)92
 b(Readline)31 b(V)-8 b(ariables)11 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(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)h(:)f(:)24 b Ft(29)275 3914 y(2.4)92 b(Readline)31
+(:)h(:)f(:)24 b Ft(31)275 3914 y(2.4)92 b(Readline)31
 b(Con)m(v)m(enience)g(F)-8 b(unctions)22 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(:)35 b Ft(34)399 4023 y(2.4.1)93
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Ft(37)399 4023 y(2.4.1)93
 b(Naming)31 b(a)g(F)-8 b(unction)21 b Fn(:)16 b(:)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(:)34
-b Ft(34)399 4133 y(2.4.2)93 b(Selecting)32 b(a)e(Keymap)9
+b Ft(37)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(35)399 4242 y(2.4.3)93 b(Binding)30
+f(:)h(:)f(:)g(:)h(:)22 b Ft(37)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(36)399 4352 y(2.4.4)93 b(Asso)s(ciating)32 b(F)-8
+b Ft(38)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(38)399
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 b Ft(40)399
 4462 y(2.4.5)93 b(Allo)m(wing)32 b(Undoing)26 b 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(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)40 b Ft(39)399 4571 y(2.4.6)93 b(Redispla)m(y)10
+f(:)g(:)h(:)f(:)40 b Ft(41)399 4571 y(2.4.6)93 b(Redispla)m(y)10
 b Fn(:)15 b(:)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(:)
 h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)23
-b Ft(40)399 4681 y(2.4.7)93 b(Mo)s(difying)30 b(T)-8
+b Ft(42)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(41)399
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)28 b Ft(44)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(42)399 4900 y(2.4.9)93 b(T)-8 b(erminal)30
+(:)g(:)35 b Ft(44)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(43)399 5010 y(2.4.10)93
+g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(45)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(43)399 5119 y(2.4.11)93 b(Miscellaneous)33 b(F)-8
+b Ft(46)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(45)399 5229 y(2.4.12)93 b(Alternate)32
+f(:)h(:)f(:)36 b Ft(47)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(46)399 5338
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(48)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
-b Ft(46)p eop end
+b Ft(49)p eop end
 %%Page: -2 4
 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(48)275 193 y(2.5)92 b(Readline)31
+f(:)g(:)h(:)f(:)h(:)31 b Ft(51)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(50)275 302
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)31 b Ft(53)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(53)399 412 y(2.6.1)93 b(Ho)m(w)31 b(Completing)g(W)-8
+(:)40 b Ft(56)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(53)399 521 y(2.6.2)93 b(Completion)31
+g(:)h(:)f(:)h(:)24 b Ft(56)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(54)399 631 y(2.6.3)93
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b Ft(57)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(55)399 741 y(2.6.4)93 b(A)30 b(Short)g(Completion)h(Example)15
+Ft(58)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(60)150 991 y Fr(App)t(endix)44 b(A)119 b(GNU)39 b(F)-11
+Ft(64)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(70)150 1269 y(Concept)45 b(Index)36 b Fo(:)19
+b(:)32 b Fr(73)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(78)150 1548 y(F)-11 b(unction)44 b(and)h(V)-11
+h(:)49 b Fr(81)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(79)p
+f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fr(82)p
 eop end
 %%Page: 1 5
 TeXDict begin 1 4 bop 3705 -116 a Ft(1)150 299 y Fp(1)80
-b(Command)54 b(Line)f(Editing)150 527 y Ft(This)30 b(c)m(hapter)h
+b(Command)54 b(Line)f(Editing)150 574 y Ft(This)30 b(c)m(hapter)h
 (describ)s(es)e(the)i(basic)g(features)f(of)h(the)f Fm(gnu)g
-Ft(command)h(line)f(editing)h(in)m(terface.)150 766 y
+Ft(command)h(line)f(editing)h(in)m(terface.)150 835 y
 Fr(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150
-925 y Ft(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h
-(notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275
-1058 y(The)35 b(text)i Fl(C-k)f Ft(is)g(read)g(as)h(`Con)m(trol-K')g
-(and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)h
-Fs(k)150 1168 y Ft(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol)
-g(k)m(ey)g(is)g(depressed.)275 1301 y(The)g(text)i Fl(M-k)e
-Ft(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)
-h(pro)s(duced)e(when)f(the)i(Meta)150 1411 y(k)m(ey)i(\(if)f(y)m(ou)h
-(ha)m(v)m(e)g(one\))g(is)f(depressed,)g(and)f(the)h Fs(k)g
-Ft(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s
-(eled)f Fs(ALT)150 1521 y Ft(on)c(man)m(y)h(k)m(eyb)s(oards.)40
-b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g
-Fs(ALT)e Ft(\(usually)i(to)g(either)g(side)g(of)g(the)150
-1630 y(space)h(bar\),)f(the)g Fs(ALT)f Ft(on)h(the)g(left)h(side)f(is)g
-(generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8
-b(.)42 b(The)29 b Fs(ALT)g Ft(k)m(ey)i(on)150 1740 y(the)c(righ)m(t)h
-(ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i
-(k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150
-1849 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f
-(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 1983 y(If)23
-b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Fs(ALT)e
-Ft(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g
-(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 2092
-y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g
-Fs(ESC)e Fk(\014rst)p Ft(,)j(and)e(then)g(t)m(yping)h
-Fs(k)p Ft(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150
-2202 y(as)j Fj(metafying)39 b Ft(the)30 b Fs(k)g Ft(k)m(ey)-8
-b(.)275 2335 y(The)39 b(text)j Fl(M-C-k)d Ft(is)h(read)g(as)h
-(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i
-(pro)s(duced)d(b)m(y)150 2445 y Fj(metafying)g Fl(C-k)p
-Ft(.)275 2578 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g
-(their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38
-b Fs(DEL)p Ft(,)f Fs(ESC)p Ft(,)g Fs(LFD)p Ft(,)g Fs(SPC)p
-Ft(,)g Fs(RET)p Ft(,)150 2688 y(and)d Fs(TAB)f Ft(all)j(stand)e(for)g
-(themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)
-h(\014le)f(\(see)i(Section)f(1.3)150 2797 y([Readline)c(Init)e(File],)j
-(page)e(4\).)41 b(If)29 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)f
-Fs(LFD)f Ft(k)m(ey)-8 b(,)31 b(t)m(yping)g Fs(C-j)d Ft(will)i(pro)s
-(duce)f(the)150 2907 y(desired)h(c)m(haracter.)42 b(The)30
-b Fs(RET)g Ft(k)m(ey)h(ma)m(y)g(b)s(e)e(lab)s(eled)i
-Fs(Return)e Ft(or)h Fs(Enter)f Ft(on)h(some)h(k)m(eyb)s(oards.)150
-3145 y Fr(1.2)68 b(Readline)47 b(In)l(teraction)150 3305
+995 y Ft(The)j(follo)m(wing)j(paragraphs)d(use)h(Emacs)g(st)m(yle)h(to)
+g(describ)s(e)f(the)g(notation)h(used)e(to)i(represen)m(t)150
+1104 y(k)m(eystrok)m(es.)275 1252 y(The)35 b(text)i Fl(C-k)f
+Ft(is)g(read)g(as)h(`Con)m(trol-K')g(and)f(describ)s(es)f(the)h(c)m
+(haracter)i(pro)s(duced)d(when)g(the)h Fs(k)150 1362
+y Ft(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol)g(k)m(ey)g(is)
+g(depressed.)275 1510 y(The)g(text)i Fl(M-k)e Ft(is)h(read)f(as)i
+(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)h(pro)s(duced)e
+(when)f(the)i(Meta)150 1620 y(k)m(ey)h(\(if)f(y)m(ou)g(ha)m(v)m(e)h
+(one\))g(is)f(depressed,)f(and)g(the)i Fs(k)e Ft(k)m(ey)i(is)f(pressed)
+f(\(a)h Fk(meta)h(c)m(haracter)7 b Ft(\),)34 b(then)e(b)s(oth)150
+1729 y(are)k(released.)56 b(The)35 b(Meta)i(k)m(ey)f(is)f(lab)s(eled)h
+Fs(ALT)e Ft(or)h Fs(Option)f Ft(on)h(man)m(y)h(k)m(eyb)s(oards.)55
+b(On)34 b(k)m(eyb)s(oards)150 1839 y(with)c(t)m(w)m(o)h(k)m(eys)f(lab)s
+(eled)g Fs(ALT)f Ft(\(usually)h(to)g(either)h(side)e(of)h(the)g(space)h
+(bar\),)f(the)g Fs(ALT)f Ft(on)g(the)h(left)h(side)150
+1948 y(is)d(generally)h(set)g(to)f(w)m(ork)g(as)g(a)h(Meta)g(k)m(ey)-8
+b(.)41 b(One)28 b(of)g(the)g Fs(ALT)f Ft(k)m(eys)h(ma)m(y)h(also)g(b)s
+(e)e(con\014gured)g(as)i(some)150 2058 y(other)i(mo)s(di\014er,)e(suc)m
+(h)h(as)h(a)g(Comp)s(ose)f(k)m(ey)h(for)f(t)m(yping)h(accen)m(ted)h(c)m
+(haracters.)275 2206 y(On)42 b(some)j(k)m(eyb)s(oards,)i(the)d(Meta)h
+(k)m(ey)f(mo)s(di\014er)f(pro)s(duces)g(c)m(haracters)i(with)e(the)h
+(eigh)m(th)h(bit)150 2316 y(\(0200\))38 b(set.)56 b(Y)-8
+b(ou)36 b(can)g(use)f(the)h Fs(enable-meta-key)31 b Ft(v)-5
+b(ariable)36 b(to)g(con)m(trol)h(whether)e(or)h(not)f(it)h(do)s(es)150
+2425 y(this,)28 b(if)g(the)g(k)m(eyb)s(oard)f(allo)m(ws)i(it.)41
+b(On)26 b(man)m(y)i(others,)h(the)f(terminal)g(or)f(terminal)i(em)m
+(ulator)f(con)m(v)m(erts)150 2535 y(the)h(meta\014ed)g(k)m(ey)g(to)h(a)
+f(k)m(ey)g(sequence)g(b)s(eginning)f(with)h Fs(ESC)f
+Ft(as)g(describ)s(ed)g(in)g(the)h(next)g(paragraph.)275
+2683 y(If)k(y)m(ou)i(do)f(not)g(ha)m(v)m(e)h(a)g(Meta)h(or)e
+Fs(ALT)f Ft(k)m(ey)-8 b(,)36 b(or)e(another)h(k)m(ey)g(w)m(orking)f(as)
+h(a)f(Meta)i(k)m(ey)-8 b(,)36 b(y)m(ou)f(can)150 2793
+y(generally)28 b(ac)m(hiev)m(e)h(the)f(latter)g(e\013ect)g(b)m(y)f(t)m
+(yping)h Fs(ESC)e Fj(\014rst)p Ft(,)i(and)f(then)f(t)m(yping)i
+Fs(k)p Ft(.)39 b(The)26 b Fs(ESC)g Ft(c)m(haracter)150
+2902 y(is)k(kno)m(wn)g(as)h(the)f Fk(meta)i(pre\014x)6
+b Ft(\).)275 3050 y(Either)30 b(pro)s(cess)g(is)g(kno)m(wn)g(as)h
+Fk(metafying)39 b Ft(the)30 b Fs(k)g Ft(k)m(ey)-8 b(.)275
+3198 y(If)24 b(y)m(our)i(Meta)g(k)m(ey)h(pro)s(duces)d(a)h(k)m(ey)h
+(sequence)g(with)f(the)h Fs(ESC)e Ft(meta)i(pre\014x,)g(y)m(ou)f(can)h
+(mak)m(e)g Fl(M-key)150 3308 y Ft(k)m(ey)40 b(bindings)e(y)m(ou)i(sp)s
+(ecify)f(\(see)i Fs(Key)29 b(Bindings)37 b Ft(in)i(Section)i(1.3.1)g
+([Readline)f(Init)g(File)g(Syn)m(tax],)150 3418 y(page)31
+b(4\))g(do)f(the)h(same)g(thing)f(b)m(y)g(setting)i(the)f
+Fs(force-meta-prefix)25 b Ft(v)-5 b(ariable.)275 3566
+y(The)39 b(text)j Fl(M-C-k)d Ft(is)h(read)g(as)h(`Meta-Con)m(trol-k')j
+(and)39 b(describ)s(es)h(the)g(c)m(haracter)i(pro)s(duced)d(b)m(y)150
+3675 y(metafying)31 b Fl(C-k)p Ft(.)275 3823 y(In)k(addition,)j(sev)m
+(eral)f(k)m(eys)g(ha)m(v)m(e)g(their)f(o)m(wn)g(names.)58
+b(Sp)s(eci\014cally)-8 b(,)38 b Fs(DEL)p Ft(,)f Fs(ESC)p
+Ft(,)g Fs(LFD)p Ft(,)g Fs(SPC)p Ft(,)g Fs(RET)p Ft(,)150
+3933 y(and)d Fs(TAB)f Ft(all)j(stand)e(for)g(themselv)m(es)i(when)d
+(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)h(\014le)f(\(see)i
+(Section)f(1.3)150 4043 y([Readline)e(Init)g(File],)h(page)f(4\).)48
+b(If)32 b(y)m(our)g(k)m(eyb)s(oard)g(lac)m(ks)i(a)f Fs(LFD)e
+Ft(k)m(ey)-8 b(,)35 b(t)m(yping)d Fs(C-j)g Ft(will)h(output)f(the)150
+4152 y(appropriate)e(c)m(haracter.)43 b(The)30 b Fs(RET)f
+Ft(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h Fs(Return)d
+Ft(or)j Fs(Enter)d Ft(on)j(some)g(k)m(eyb)s(oards.)150
+4413 y Fr(1.2)68 b(Readline)47 b(In)l(teraction)150 4573
 y Ft(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t)
 m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g
-(that)f(the)150 3414 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g
+(that)f(the)150 4682 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g
 (missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g
-(a)g(set)g(of)f(commands)g(for)150 3524 y(manipulating)e(the)g(text)h
+(a)g(set)g(of)f(commands)g(for)150 4792 y(manipulating)e(the)g(text)h
 (as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h
 (just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150
-3634 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29
+4902 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29
 b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m
-(ou)h(mo)m(v)m(e)g(the)g(cursor)150 3743 y(to)35 b(the)f(place)i(that)e
+(ou)h(mo)m(v)m(e)g(the)g(cursor)150 5011 y(to)35 b(the)f(place)i(that)e
 (needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g
-(the)f(corrections.)54 b(Then,)150 3853 y(when)24 b(y)m(ou)h(are)g
+(the)f(corrections.)54 b(Then,)150 5121 y(when)24 b(y)m(ou)h(are)g
 (satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g
 Fs(RET)p Ft(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e
-(at)h(the)h(end)150 3962 y(of)33 b(the)h(line)g(to)g(press)e
+(at)h(the)h(end)150 5230 y(of)33 b(the)h(line)g(to)g(press)e
 Fs(RET)p Ft(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g
-(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 4072
-y(within)c(the)g(line.)150 4269 y Fi(1.2.1)63 b(Readline)40
-b(Bare)h(Essen)m(tials)150 4416 y Ft(In)31 b(order)h(to)h(en)m(ter)g(c)
-m(haracters)g(in)m(to)g(the)g(line,)g(simply)e(t)m(yp)s(e)i(them.)46
-b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i(app)s(ears)150
-4525 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g(the)h(cursor)e(mo)
-m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 b(If)32
-b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4635 y(c)m(haracter,)f(y)m(ou)f(can)g
-(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f
-(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 4768
+(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340
+y(within)c(the)g(line.)p eop end
+%%Page: 2 6
+TeXDict begin 2 5 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y Fi(1.2.1)63
+b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Ft(In)31
+b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g
+(simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i
+(app)s(ears)150 555 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g
+(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47
+b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 665 y(c)m(haracter,)f(y)m(ou)f
+(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f
+(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 813
 y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g
 (and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t)
-m(yp)s(ed)150 4878 y(sev)m(eral)e(other)f(c)m(haracters.)42
+m(yp)s(ed)150 922 y(sev)m(eral)e(other)f(c)m(haracters.)42
 b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h
 Fl(C-b)d Ft(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150
-4987 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31
+1032 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31
 b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g
-(with)f Fl(C-f)p Ft(.)275 5121 y(When)i(y)m(ou)h(add)f(text)h(in)f(the)
+(with)f Fl(C-f)p Ft(.)275 1179 y(When)i(y)m(ou)h(add)f(text)h(in)f(the)
 h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m
-(haracters)h(to)g(the)e(righ)m(t)150 5230 y(of)d(the)g(cursor)f(are)h
+(haracters)h(to)g(the)e(righ)m(t)150 1289 y(of)d(the)g(cursor)f(are)h
 (`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h
 (that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150
-5340 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m
-(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)p
-eop end
-%%Page: 2 6
-TeXDict begin 2 5 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y(bac)m(k')24
-b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g
-(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g
-(bare)f(essen)m(tials)150 408 y(for)30 b(editing)h(the)g(text)g(of)g
-(an)f(input)f(line)i(follo)m(ws.)150 571 y Fl(C-b)336
-b Ft(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150
-732 y Fl(C-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m(haracter.)
-150 893 y Fs(DEL)e Ft(or)i Fs(Backspace)630 1003 y Ft(Delete)i(the)d(c)
-m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150
-1164 y Fl(C-d)336 b Ft(Delete)33 b(the)d(c)m(haracter)i(underneath)d
-(the)i(cursor.)150 1325 y(Prin)m(ting)g(c)m(haracters)630
-1435 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g
-(cursor.)150 1596 y Fl(C-_)e Ft(or)i Fl(C-x)e(C-u)630
-1706 y Ft(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8
+1398 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m
+(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)
+150 1508 y(bac)m(k')k(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)
+g(b)m(y)e(the)h(remo)m(v)-5 b(al)42 b(of)f(the)g(text.)73
+b(These)40 b(are)h(the)g(bare)150 1618 y(essen)m(tials)32
+b(for)e(editing)h(the)g(text)g(of)g(an)f(input)f(line:)150
+1796 y Fl(C-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)
+150 1969 y Fl(C-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m
+(haracter.)150 2141 y Fs(DEL)e Ft(or)i Fs(Backspace)630
+2251 y Ft(Delete)i(the)d(c)m(haracter)i(to)f(the)g(left)g(of)f(the)h
+(cursor.)150 2423 y Fl(C-d)336 b Ft(Delete)33 b(the)d(c)m(haracter)i
+(underneath)d(the)i(cursor.)150 2596 y(Prin)m(ting)g(c)m(haracters)630
+2705 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g
+(cursor.)150 2878 y Fl(C-_)e Ft(or)i Fl(C-x)e(C-u)630
+2987 y Ft(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8
 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g
-(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)c(on)g(y)m(our)g
-(con\014guration,)h(the)f Fs(Backspace)d Ft(k)m(ey)k(migh)m(t)g(b)s(e)e
-(set)i(to)g(delete)g(the)f(c)m(haracter)150 2087 y(to)h(the)f(left)h
+(empt)m(y)630 3097 y(line.)150 3276 y(Dep)s(ending)e(on)h(y)m(our)f
+(con\014guration,)i(the)f Fs(Backspace)e Ft(k)m(ey)i(migh)m(t)h(b)s(e)e
+(set)h(to)g(delete)h(the)f(c)m(haracter)150 3385 y(to)e(the)f(left)h
 (of)f(the)g(cursor)f(and)h(the)g Fs(DEL)f Ft(k)m(ey)i(set)g(to)f
 (delete)i(the)e(c)m(haracter)h(underneath)e(the)h(cursor,)150
-2196 y(lik)m(e)i Fl(C-d)p Ft(,)d(rather)i(than)f(the)g(c)m(haracter)i
-(to)f(the)g(left)g(of)g(the)f(cursor.\))150 2398 y Fi(1.2.2)63
-b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 2545
-y Ft(The)27 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)e(the)g(most)i
-(basic)f(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)g(in)f(order)g(to)i
-(do)e(editing)i(of)150 2654 y(the)k(input)f(line.)49
-b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m(enience,)j(man)m(y)d(other)g
-(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g(in)h(addition)150
-2764 y(to)j Fl(C-b)p Ft(,)f Fl(C-f)p Ft(,)g Fl(C-d)p
-Ft(,)h(and)e Fs(DEL)p Ft(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h
-(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h(the)150 2873
-y(line.)150 3035 y Fl(C-a)336 b Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h
-(of)g(the)f(line.)150 3197 y Fl(C-e)336 b Ft(Mo)m(v)m(e)32
-b(to)g(the)e(end)g(of)g(the)h(line.)150 3358 y Fl(M-f)336
-b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f(where)g(a)h(w)m(ord)f
-(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)150
-3519 y Fl(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m(ord.)
-150 3680 y Fl(C-l)336 b Ft(Clear)31 b(the)f(screen,)h(reprin)m(ting)f
-(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 3843 y(Notice)c(ho)m(w)f
-Fl(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m(haracter,)j(while)d
-Fl(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m(ord.)39
-b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32
+3495 y(lik)m(e)i Fl(C-d)p Ft(,)d(rather)i(than)f(the)g(c)m(haracter)i
+(to)f(the)g(left)g(of)g(the)f(cursor.)150 3707 y Fi(1.2.2)63
+b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 3854
+y Ft(The)34 b(ab)s(o)m(v)m(e)i(table)f(describ)s(es)f(the)g(most)h
+(basic)g(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)f(in)g(order)g(to)h
+(do)f(editing)150 3964 y(of)c(the)g(input)f(line.)40
+b(F)-8 b(or)31 b(y)m(our)e(con)m(v)m(enience,)k(man)m(y)c(other)h
+(commands)g(are)g(a)m(v)-5 b(ailable)32 b(in)d(addition)h(to)150
+4073 y Fl(C-b)p Ft(,)e Fl(C-f)p Ft(,)g Fl(C-d)p Ft(,)g(and)g
+Fs(DEL)p Ft(.)39 b(Here)29 b(are)g(some)g(commands)e(for)i(mo)m(ving)g
+(more)f(rapidly)g(within)g(the)g(line.)150 4252 y Fl(C-a)336
+b Ft(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(line.)150
+4425 y Fl(C-e)336 b Ft(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h
+(line.)150 4597 y Fl(M-f)336 b Ft(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m
+(ord,)f(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d
+(digits.)150 4769 y Fl(M-b)336 b Ft(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)
+g(w)m(ord.)150 4942 y Fl(C-l)336 b Ft(Clear)31 b(the)f(screen,)h
+(reprin)m(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275
+5121 y(Notice)c(ho)m(w)f Fl(C-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m
+(haracter,)j(while)d Fl(M-f)e Ft(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m
+(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32
 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m
 (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150
-4062 y(w)m(ords.)150 4263 y Fi(1.2.3)63 b(Readline)40
-b(Killing)i(Commands)150 4410 y Fj(Killing)35 b Ft(text)28
-b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i(but)e(to)h
-(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f(usually)150
-4519 y(b)m(y)g Fj(y)m(anking)35 b Ft(\(re-inserting\))28
-b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27
-b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150
-4629 y(`kill')32 b(and)d(`y)m(ank'.\))275 4765 y(If)g(the)i
-(description)f(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g
-(text,)h(then)e(y)m(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150
-4875 y(can)g(get)g(the)g(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g
-(\(or)g(the)f(same\))h(place)h(later.)275 5011 y(When)23
-b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i
-(in)e(a)g Fj(kill-ring)p Ft(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h
-(consecutiv)m(e)150 5121 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g
-(killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f
-(bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 5230
-y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g
-(that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f
-(is)h(a)m(v)-5 b(ailable)150 5340 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)
-m(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)p
-eop end
+5340 y(w)m(ords.)p eop end
 %%Page: 3 7
 TeXDict begin 3 6 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(Here)30
-b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150
-456 y Fl(C-k)336 b Ft(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g
-(cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150
-614 y Fl(M-d)336 b Ft(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g
-(of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m
-(ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41
+b(Command)29 b(Line)i(Editing)2153 b(3)150 299 y Fi(1.2.3)63
+b(Readline)40 b(Killing)i(Commands)150 446 y Fk(Killing)35
+b Ft(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i
+(but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f
+(usually)150 555 y(b)m(y)g Fk(y)m(anking)35 b Ft(\(re-inserting\))28
+b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27
+b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150
+665 y(`kill')32 b(and)d(`y)m(ank'.\))275 795 y(If)g(the)i(description)f
+(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g(text,)h(then)e(y)m
+(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 904 y(can)g(get)g(the)g
+(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g(\(or)g(the)f(same\))h
+(place)h(later.)275 1034 y(When)23 b(y)m(ou)g(use)g(a)h(kill)g
+(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i(in)e(a)g
+Fk(kill-ring)p Ft(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h(consecutiv)
+m(e)150 1144 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g(killed)h(text)g
+(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f(bac)m(k,)h(y)m
+(ou)g(get)g(it)f(all.)43 b(The)150 1253 y(kill)33 b(ring)f(is)g(not)h
+(line)g(sp)s(eci\014c;)g(the)g(text)g(that)g(y)m(ou)g(killed)f(on)h(a)f
+(previously)g(t)m(yp)s(ed)h(line)f(is)h(a)m(v)-5 b(ailable)150
+1363 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)m(k)g(later,)h(when)d(y)m(ou)
+i(are)g(t)m(yping)f(another)h(line.)275 1493 y(Here)f(is)h(the)f(list)h
+(of)g(commands)f(for)g(killing)h(text.)150 1643 y Fl(C-k)336
+b Ft(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g(cursor)g(p)s
+(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 1793
+y Fl(M-d)336 b Ft(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g(of)h
+(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)
+g(to)g(the)630 1903 y(end)j(of)g(the)h(next)f(w)m(ord.)41
 b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used)
-f(b)m(y)g Fl(M-f)p Ft(.)150 881 y Fl(M-DEL)240 b Ft(Kill)34
+f(b)m(y)g Fl(M-f)p Ft(.)150 2053 y Fl(M-DEL)240 b Ft(Kill)34
 b(from)f(the)g(cursor)g(to)h(the)g(start)g(of)g(the)f(curren)m(t)g(w)m
 (ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)g(to)630
-991 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39
+2162 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39
 b(W)-8 b(ord)28 b(b)s(oundaries)e(are)i(the)g(same)g(as)g(those)g(used)
-f(b)m(y)630 1100 y Fl(M-b)p Ft(.)150 1258 y Fl(C-w)336
+f(b)m(y)630 2272 y Fl(M-b)p Ft(.)150 2422 y Fl(C-w)336
 b Ft(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)
 55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fl(M-DEL)630
-1367 y Ft(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275
-1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fj(y)m(ank)47 b Ft(the)42
+2532 y Ft(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275
+2682 y(Here)42 b(is)f(ho)m(w)h(to)g Fk(y)m(ank)47 b Ft(the)42
 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43
-b(means)e(to)h(cop)m(y)h(the)e(most-)150 1634 y(recen)m(tly-killed)33
-b(text)e(from)f(the)g(kill)i(bu\013er.)150 1792 y Fl(C-y)336
-b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m
-(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150
-1949 y Fl(M-y)336 b Ft(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h
+b(means)e(to)h(cop)m(y)h(the)e(most-)150 2791 y(recen)m(tly-killed)33
+b(text)e(from)f(the)g(kill)i(bu\013er)d(in)m(to)i(the)g(line)g(at)g
+(the)f(curren)m(t)g(cursor)g(p)s(osition.)150 2941 y
+Fl(C-y)336 b Ft(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f
+(text)g(bac)m(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150
+3091 y Fl(M-y)336 b 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 2059 y(command)30 b(is)h Fl(C-y)e Ft(or)h
-Fl(M-y)p Ft(.)150 2256 y Fi(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150
-2403 y Ft(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f
+(the)g(prior)630 3201 y(command)30 b(is)h Fl(C-y)e Ft(or)h
+Fl(M-y)p Ft(.)150 3391 y Fi(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150
+3538 y Ft(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f
 (Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150
-2513 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g
-Fk(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m
-(t.)71 b(If)40 b(y)m(ou)150 2622 y(pass)33 b(a)h(negativ)m(e)i(argumen)
+3648 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g
+Fj(sign)47 b Ft(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m
+(t.)71 b(If)40 b(y)m(ou)150 3757 y(pass)33 b(a)h(negativ)m(e)i(argumen)
 m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m
-(ard)f(direction,)i(that)150 2732 y(command)g(will)h(act)g(in)f(a)h
+(ard)f(direction,)i(that)150 3867 y(command)g(will)h(act)g(in)f(a)h
 (bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g
-(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 2842 y(the)31
+(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 3976 y(the)31
 b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fs(M--)f(C-k)p
-Ft('.)275 2975 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g
+Ft('.)275 4106 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g
 (argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i
-(digits)e(b)s(efore)150 3085 y(the)j(command.)42 b(If)30
+(digits)e(b)s(efore)150 4216 y(the)j(command.)42 b(If)30
 b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h
 (\(`)p Fs(-)p Ft('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150
-3194 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m
+4325 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m
 (e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h
-(started,)i(y)m(ou)150 3304 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f
+(started,)i(y)m(ou)150 4435 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f
 (of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40
 b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fl(C-d)150
-3414 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f
+4544 y Ft(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f
 (t)m(yp)s(e)h(`)p Fs(M-1)29 b(0)h(C-d)p Ft(',)39 b(whic)m(h)e(will)h
-(delete)h(the)e(next)h(ten)150 3523 y(c)m(haracters)32
-b(on)e(the)h(input)e(line.)150 3720 y Fi(1.2.5)63 b(Searc)m(hing)40
-b(for)i(Commands)g(in)f(the)g(History)150 3867 y Ft(Readline)22
+(delete)h(the)e(next)h(ten)150 4654 y(c)m(haracters)32
+b(on)e(the)h(input)e(line.)150 4844 y Fi(1.2.5)63 b(Searc)m(hing)40
+b(for)i(Commands)g(in)f(the)g(History)150 4991 y Ft(Readline)22
 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)f(the)g
 (command)h(history)f(for)g(lines)g(con)m(taining)150
-3977 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30
-b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Fj(incremen)m(tal)35
-b Ft(and)30 b Fj(non-incremen)m(tal)p Ft(.)275 4111 y(Incremen)m(tal)c
+5101 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30
+b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Fk(incremen)m(tal)35
+b Ft(and)30 b Fk(non-incremen)m(tal)p Ft(.)275 5230 y(Incremen)m(tal)c
 (searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e
 (t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150
-4220 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
+5340 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
 (ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i
-(history)150 4330 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g
-(far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g
-(man)m(y)g(c)m(haracters)i(as)150 4439 y(needed)i(to)i(\014nd)d(the)i
-(desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29
-b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i
-(particular)150 4549 y(string,)g(t)m(yp)s(e)f Fl(C-r)p
-Ft(.)40 b(T)m(yping)29 b Fl(C-s)g Ft(searc)m(hes)h(forw)m(ard)f
-(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m
-(t)150 4658 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g
-Fs(isearch-terminators)33 b Ft(v)-5 b(ariable)39 b(are)f(used)f(to)i
-(terminate)g(an)f(incremen)m(tal)150 4768 y(searc)m(h.)71
-b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i
-(a)f(v)-5 b(alue,)44 b(the)c Fs(ESC)g Ft(and)f Fl(C-J)h
-Ft(c)m(haracters)i(will)150 4878 y(terminate)h(an)g(incremen)m(tal)g
-(searc)m(h.)78 b Fl(C-g)41 b Ft(will)i(ab)s(ort)f(an)g(incremen)m(tal)i
-(searc)m(h)f(and)f(restore)h(the)150 4987 y(original)30
-b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f
-(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150
-5097 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 5230
-y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h
-(history)g(list,)h(t)m(yp)s(e)g Fl(C-r)e Ft(or)h Fl(C-s)f
-Ft(as)h(appropriate.)43 b(This)150 5340 y(will)26 b(searc)m(h)h(bac)m
-(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g
-(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)p
-eop end
+(history)p eop end
 %%Page: 4 8
 TeXDict begin 4 7 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(t)m(yp)s(ed)37
-b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i(sequence)f(b)s(ound)e(to)
-i(a)g(Readline)h(command)e(will)h(terminate)h(the)150
-408 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39
-b(F)-8 b(or)26 b(instance,)h(a)f Fs(RET)f Ft(will)g(terminate)i(the)f
-(searc)m(h)g(and)e(accept)150 518 y(the)30 b(line,)g(thereb)m(y)f
-(executing)i(the)e(command)g(from)g(the)h(history)f(list.)41
-b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g
-(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e(the)i(curren)m(t)f
-(line,)h(and)f(b)s(egin)g(editing.)275 777 y(Readline)35
-b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g(searc)m(h)f(string.)
-54 b(If)34 b(t)m(w)m(o)j Fl(C-r)p Ft(s)c(are)i(t)m(yp)s(ed)g(without)
-150 886 y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h
-(new)f(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i
-(string)g(is)150 996 y(used.)275 1145 y(Non-incremen)m(tal)48
+b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(matc)m(hing)33
+b(the)g(string)f(t)m(yp)s(ed)g(so)g(far.)46 b(An)32 b(incremen)m(tal)h
+(searc)m(h)g(requires)f(only)g(as)g(man)m(y)g(c)m(haracters)150
+408 y(as)i(needed)f(to)h(\014nd)e(the)h(desired)g(history)g(en)m(try)-8
+b(.)51 b(When)33 b(using)g(emacs)h(editing)g(mo)s(de,)g(t)m(yp)s(e)g
+Fl(C-r)e Ft(to)150 518 y(searc)m(h)26 b(bac)m(kw)m(ard)f(in)g(the)g
+(history)g(for)g(a)g(particular)g(string.)39 b(T)m(yping)25
+b Fl(C-s)f Ft(searc)m(hes)i(forw)m(ard)f(through)150
+628 y(the)32 b(history)-8 b(.)44 b(The)31 b(c)m(haracters)i(presen)m(t)
+f(in)f(the)h(v)-5 b(alue)32 b(of)f(the)h Fs(isearch-terminators)26
+b Ft(v)-5 b(ariable)33 b(are)150 737 y(used)26 b(to)h(terminate)h(an)e
+(incremen)m(tal)i(searc)m(h.)41 b(If)26 b(that)h(v)-5
+b(ariable)27 b(has)g(not)g(b)s(een)f(assigned)h(a)g(v)-5
+b(alue,)28 b(the)150 847 y Fs(ESC)g Ft(and)g Fl(C-j)f
+Ft(c)m(haracters)j(terminate)g(an)e(incremen)m(tal)i(searc)m(h.)41
+b Fl(C-g)28 b Ft(ab)s(orts)g(an)g(incremen)m(tal)i(searc)m(h)150
+956 y(and)g(restores)h(the)g(original)h(line.)42 b(When)30
+b(the)h(searc)m(h)h(is)e(terminated,)i(the)f(history)f(en)m(try)h(con)m
+(taining)150 1066 y(the)g(searc)m(h)g(string)f(b)s(ecomes)h(the)f
+(curren)m(t)g(line.)275 1216 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m
+(hing)g(en)m(tries)g(in)e(the)h(history)g(list,)h(t)m(yp)s(e)g
+Fl(C-r)e Ft(or)h Fl(C-s)f Ft(as)h(appropriate.)43 b(This)150
+1326 y(searc)m(hes)34 b(bac)m(kw)m(ard)f(or)f(forw)m(ard)g(in)h(the)g
+(history)f(for)h(the)f(next)h(en)m(try)g(matc)m(hing)h(the)f(searc)m(h)
+g(string)150 1435 y(t)m(yp)s(ed)28 b(so)h(far.)40 b(An)m(y)29
+b(other)g(k)m(ey)g(sequence)g(b)s(ound)e(to)i(a)g(Readline)h(command)e
+(terminates)h(the)g(searc)m(h)150 1545 y(and)38 b(executes)h(that)g
+(command.)64 b(F)-8 b(or)39 b(instance,)i(a)d Fs(RET)f
+Ft(terminates)j(the)e(searc)m(h)h(and)e(accepts)j(the)150
+1655 y(line,)k(thereb)m(y)c(executing)i(the)e(command)h(from)f(the)g
+(history)h(list.)71 b(A)41 b(mo)m(v)m(emen)m(t)h(command)f(will)150
+1764 y(terminate)31 b(the)g(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g
+(found)e(the)i(curren)m(t)f(line,)h(and)f(b)s(egin)g(editing.)275
+1915 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g
+(searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j Fl(C-r)p
+Ft(s)c(are)i(t)m(yp)s(ed)g(without)150 2024 y(an)m(y)42
+b(in)m(terv)m(ening)i(c)m(haracters)f(de\014ning)f(a)g(new)g(searc)m(h)
+g(string,)k(Readline)c(uses)g(an)m(y)h(remem)m(b)s(ered)150
+2134 y(searc)m(h)31 b(string.)275 2284 y(Non-incremen)m(tal)48
 b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s
-(efore)f(starting)h(to)h(searc)m(h)f(for)150 1255 y(matc)m(hing)d
-(history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f
-(t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150
-1364 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150
-1627 y Fr(1.3)68 b(Readline)47 b(Init)e(File)150 1786
+(efore)f(starting)h(to)h(searc)m(h)f(for)150 2394 y(matc)m(hing)39
+b(history)f(en)m(tries.)64 b(The)38 b(searc)m(h)g(string)g(ma)m(y)h(b)s
+(e)e(t)m(yp)s(ed)g(b)m(y)h(the)g(user)g(or)g(b)s(e)f(part)h(of)g(the)
+150 2503 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150
+2768 y Fr(1.3)68 b(Readline)47 b(Init)e(File)150 2927
 y Ft(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of)
 f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150
-1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)
+3037 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)
 m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h
-(customize)h(programs)150 2005 y(that)39 b(use)g(Readline)g(b)m(y)f
-(putting)h(commands)f(in)g(an)h Fj(inputrc)k Ft(\014le,)e(con)m(v)m(en)
-m(tionally)h(in)c(their)h(home)150 2115 y(directory)-8
+(customize)h(programs)150 3146 y(that)39 b(use)g(Readline)g(b)m(y)f
+(putting)h(commands)f(in)g(an)h Fk(inputrc)k Ft(\014le,)e(con)m(v)m(en)
+m(tionally)h(in)c(their)h(home)150 3256 y(directory)-8
 b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e
 (the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
-b(ariable)25 b Fs(INPUTRC)p Ft(.)150 2224 y(If)30 b(that)g(v)-5
+b(ariable)25 b Fs(INPUTRC)p Ft(.)150 3365 y(If)30 b(that)g(v)-5
 b(ariable)31 b(is)f(unset,)g(the)h(default)f(is)g Fs(~/.inputrc)p
 Ft(.)38 b(If)30 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h
-(b)s(e)150 2334 y(read,)g(the)f(ultimate)i(default)e(is)h
-Fs(/etc/inputrc)p Ft(.)275 2483 y(When)e(a)h(program)f(whic)m(h)h(uses)
-f(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h
-(read,)g(and)f(the)150 2593 y(k)m(ey)i(bindings)e(are)i(set.)275
-2742 y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g
+(b)s(e)150 3475 y(read,)g(Readline)g(lo)s(oks)f(for)g
+Fs(/etc/inputrc)p Ft(.)275 3625 y(When)36 b(a)h(program)g(that)g(uses)f
+(the)h(Readline)g(library)g(starts)g(up,)g(Readline)h(reads)e(the)h
+(init)g(\014le)150 3735 y(and)30 b(sets)h(an)m(y)f(v)-5
+b(ariables)31 b(and)f(k)m(ey)h(bindings)e(it)i(con)m(tains.)275
+3885 y(In)26 b(addition,)i(the)f Fs(C-x)i(C-r)d Ft(command)h(re-reads)g
 (this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m
-(hanges)150 2851 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g
-(it.)150 3065 y Fi(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150
-3212 y Ft(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w)
+(hanges)150 3995 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g
+(it.)150 4210 y Fi(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150
+4357 y Ft(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w)
 m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41
-b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
+b(lines)h(are)150 4466 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
 (a)g(`)p Fs(#)p Ft(')g(are)h(commen)m(ts.)73 b(Lines)41
 b(b)s(eginning)f(with)g(a)i(`)p Fs($)p Ft(')f(indicate)150
-3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h
-([Conditional)f(Init)f(Constructs],)j(page)f(13\).)74
-b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31
-b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8
-b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
+4576 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h
+([Conditional)f(Init)f(Constructs],)j(page)f(14\).)74
+b(Other)150 4686 y(lines)31 b(denote)g(v)-5 b(ariable)31
+b(settings)g(and)f(k)m(ey)h(bindings.)150 4869 y(V)-8
+b(ariable)32 b(Settings)630 4978 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
 (the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h
-(the)g(v)-5 b(alues)41 b(of)630 3941 y(v)-5 b(ariables)34
+(the)g(v)-5 b(alues)41 b(of)630 5088 y(v)-5 b(ariables)34
 b(in)f(Readline)i(using)e(the)g Fs(set)g Ft(command)g(within)g(the)h
-(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4051 y(is)d(simple:)870
-4193 y Fs(set)47 b Fl(variable)e(value)630 4335 y Ft(Here,)29
+(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5198 y(is)d(simple:)870
+5340 y Fs(set)47 b Fl(variable)e(value)p eop end
+%%Page: 5 9
+TeXDict begin 5 8 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y(Here,)29
 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default)
-h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 4444 y(use)k
-Fs(vi)g Ft(line)h(editing)g(commands:)870 4586 y Fs(set)47
-b(editing-mode)d(vi)630 4728 y Ft(V)-8 b(ariable)36 b(names)f(and)g(v)
--5 b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f
-(regard)630 4837 y(to)c(case.)42 b(Unrecognized)31 b(v)-5
-b(ariable)31 b(names)g(are)f(ignored.)630 4979 y(Bo)s(olean)c(v)-5
+h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 408 y(use)k
+Fs(vi)g Ft(line)h(editing)g(commands:)870 545 y Fs(set)47
+b(editing-mode)d(vi)630 682 y Ft(V)-8 b(ariable)36 b(names)f(and)g(v)-5
+b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f
+(regard)630 792 y(to)c(case.)42 b(Unrecognized)31 b(v)-5
+b(ariable)31 b(names)g(are)f(ignored.)630 929 y(Bo)s(olean)c(v)-5
 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f(set)i(to)g(on)f(or)g
 (o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)g(v)-5
-b(alue)26 b(is)630 5089 y(n)m(ull)e(or)g(empt)m(y)-8
-b(,)27 b Fj(on)d Ft(\(case-insensitiv)m(e\),)29 b(or)24
+b(alue)26 b(is)630 1039 y(n)m(ull)e(or)g(empt)m(y)-8
+b(,)27 b Fk(on)d Ft(\(case-insensitiv)m(e\),)29 b(or)24
 b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v)
--5 b(ariable)630 5198 y(b)s(eing)30 b(set)h(to)g(o\013.)630
-5340 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m
-(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)p
-eop end
-%%Page: 5 9
-TeXDict begin 5 8 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fs
-(active-region-start-colo)o(r)1110 408 y Ft(A)27 b(string)f(v)-5
-b(ariable)27 b(that)g(con)m(trols)h(the)f(text)g(color)h(and)e(bac)m
-(kground)g(when)1110 518 y(displa)m(ying)50 b(the)f(text)h(in)f(the)h
-(activ)m(e)h(region)f(\(see)g(the)g(description)f(of)1110
-628 y Fs(enable-active-region)25 b Ft(b)s(elo)m(w\).)43
-b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i(up)d(an)m(y)1110
-737 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f(on)g(the)f(displa)
-m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only)1110
-847 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61 b(It)36
-b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110
-956 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63
+-5 b(ariable)630 1148 y(b)s(eing)30 b(set)h(to)g(o\013.)630
+1285 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m
+(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)630
+1450 y Fs(active-region-start-colo)o(r)1110 1559 y Ft(A)27
+b(string)f(v)-5 b(ariable)27 b(that)g(con)m(trols)h(the)f(text)g(color)
+h(and)e(bac)m(kground)g(when)1110 1669 y(displa)m(ying)50
+b(the)f(text)h(in)f(the)h(activ)m(e)h(region)f(\(see)g(the)g
+(description)f(of)1110 1778 y Fs(enable-active-region)25
+b Ft(b)s(elo)m(w\).)43 b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i
+(up)d(an)m(y)1110 1888 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f
+(on)g(the)f(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only)
+1110 1998 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61
+b(It)36 b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110
+2107 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63
 b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110
-1066 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h
+2217 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h
 (terminal)g(t)m(yp)s(e)g(c)m(hanges.)41 b(The)28 b(default)1110
-1176 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i
+2326 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i
 (terminal)f(in)g(standout)g(mo)s(de,)g(as)h(ob-)1110
-1285 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68
-b(A)40 b(sample)f(v)-5 b(alue)1110 1395 y(migh)m(t)31
-b(b)s(e)f(`)p Fs(\\e[01;33m)p Ft('.)630 1570 y Fs
-(active-region-end-color)1110 1680 y Ft(A)48 b(string)g(v)-5
-b(ariable)48 b(that)h Fs(")p Ft(undo)s(es)p Fs(")d Ft(the)i(e\013ects)h
-(of)f Fs(active-region-)1110 1789 y(start-color)36 b
-Ft(and)i(restores)h Fs(")p Ft(normal)p Fs(")f Ft(terminal)h(displa)m(y)
-g(app)s(earance)1110 1899 y(after)26 b(displa)m(ying)h(text)f(in)g(the)
-g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e)
-1110 2008 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d
-(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110
-2118 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41
-b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 2228
+2436 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68
+b(A)40 b(sample)f(v)-5 b(alue)1110 2545 y(migh)m(t)31
+b(b)s(e)f(`)p Fs(\\e[01;33m)p Ft('.)630 2710 y Fs
+(active-region-end-color)1110 2819 y Ft(A)48 b(string)h(v)-5
+b(ariable)49 b(that)g(\\undo)s(es")f(the)h(e\013ects)g(of)g
+Fs(active-region-)1110 2929 y(start-color)36 b Ft(and)j(restores)h
+(\\normal")g(terminal)g(displa)m(y)g(app)s(earance)1110
+3039 y(after)26 b(displa)m(ying)h(text)f(in)g(the)g(activ)m(e)i
+(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e)1110
+3148 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d(on)h
+(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110
+3258 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41
+b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 3367
 y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i
 (region.)58 b(This)34 b(v)-5 b(ariable)37 b(is)f(re-)1110
-2337 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h
-(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 2447
+3477 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h
+(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 3587
 y(default)38 b(v)-5 b(alue)39 b(is)f(the)h(string)f(that)h(restores)f
-(the)h(terminal)f(from)g(stand-)1110 2556 y(out)30 b(mo)s(de,)f(as)g
+(the)h(terminal)f(from)g(stand-)1110 3696 y(out)30 b(mo)s(de,)f(as)g
 (obtained)h(from)f(the)g(terminal's)h(terminfo)f(description.)41
-b(A)1110 2666 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p
-Fs(\\e[0m)p Ft('.)630 2841 y Fs(bell-style)1110 2951
+b(A)1110 3806 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p
+Fs(\\e[0m)p Ft('.)630 3970 y Fs(bell-style)1110 4080
 y Ft(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m
-(ts)f(to)h(ring)e(the)h(termi-)1110 3061 y(nal)37 b(b)s(ell.)61
+(ts)f(to)h(ring)e(the)h(termi-)1110 4189 y(nal)37 b(b)s(ell.)61
 b(If)37 b(set)h(to)g(`)p Fs(none)p Ft(',)g(Readline)g(nev)m(er)g(rings)
-e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 3170 y(`)p
+e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 4299 y(`)p
 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
-3280 y(`)p Fs(audible)p Ft(')j(\(the)i(default\),)i(Readline)e
-(attempts)g(to)h(ring)e(the)g(terminal's)1110 3389 y(b)s(ell.)630
-3565 y Fs(bind-tty-special-chars)1110 3674 y Ft(If)e(set)g(to)h(`)p
+4408 y(`)p Fs(audible)p Ft(')j(\(the)i(default\),)i(Readline)e
+(attempts)g(to)h(ring)e(the)g(terminal's)1110 4518 y(b)s(ell.)630
+4682 y Fs(bind-tty-special-chars)1110 4792 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 3784 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 3893 y(Readline)h(equiv)-5 b(alen)m(ts.)630
-4069 y Fs(blink-matching-paren)1110 4178 y Ft(If)36 b(set)g(to)h(`)p
+(the)i(con)m(trol)1110 4902 y(c)m(haracters)28 b(that)g(are)f(treated)g
+(sp)s(ecially)h(b)m(y)f(the)g(k)m(ernel's)g(terminal)g(driv)m(er)1110
+5011 y(to)33 b(their)f(Readline)h(equiv)-5 b(alen)m(ts.)47
+b(These)32 b(o)m(v)m(erride)h(the)f(default)g(Readline)1110
+5121 y(bindings)h(describ)s(ed)g(here.)51 b(T)m(yp)s(e)34
+b(`)p Fs(stty)29 b(-a)p Ft(')34 b(at)h(a)f(Bash)g(prompt)g(to)g(see)
+1110 5230 y(y)m(our)h(curren)m(t)g(terminal)h(settings,)i(including)d
+(the)h(sp)s(ecial)f(con)m(trol)i(c)m(har-)1110 5340 y(acters)31
+b(\(usually)g Fs(cchars)p Ft(\).)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
+(blink-matching-paren)1110 408 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 4288 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
-4398 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 4573
-y Fs(colored-completion-prefi)o(x)1110 4682 y Ft(If)f(set)h(to)g(`)p
+(the)f(cursor)e(to)i(an)1110 518 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
+628 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630 792 y
+Fs(colored-completion-prefi)o(x)1110 902 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 4792 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
+g(the)f(com-)1110 1011 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
-4902 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5
-b(alue)26 b(of)g(the)f Fs(LS_COLORS)e Ft(en-)1110 5011
+1121 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5
+b(alue)26 b(of)g(the)f Fs(LS_COLORS)e Ft(en-)1110 1230
 y(vironmen)m(t)34 b(v)-5 b(ariable.)50 b(If)33 b(there)h(is)g(a)f
 (color)i(de\014nition)e(in)g Fs(LS_COLORS)e Ft(for)1110
-5121 y(the)22 b(custom)g(su\016x)f(`)p Fs(readline-colored-complet)o
-(ion)o(-pre)o(fix)p Ft(',)c(Read-)1110 5230 y(line)24
+1340 y(the)22 b(custom)g(su\016x)f(`)p Fs(readline-colored-complet)o
+(ion)o(-pre)o(fix)p Ft(',)c(Read-)1110 1450 y(line)24
 b(uses)e(this)i(color)g(for)f(the)h(common)f(pre\014x)f(instead)i(of)f
-(its)h(default.)38 b(The)1110 5340 y(default)31 b(is)f(`)p
-Fs(off)p Ft('.)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(colored-stats)1110
-408 y Ft(If)26 b(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
-518 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+(its)h(default.)38 b(The)1110 1559 y(default)31 b(is)f(`)p
+Fs(off)p Ft('.)630 1724 y Fs(colored-stats)1110 1833
+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
+1943 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
-628 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fs(LS_COLORS)d
+2052 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
-737 y(is)30 b(`)p Fs(off)p Ft('.)630 925 y Fs(comment-begin)1110
-1035 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 1144 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 1332 y Fs(completion-display-width)
-1110 1442 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 1551
-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
-1661 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
-1771 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
-1958 y Fs(completion-ignore-case)1110 2068 y Ft(If)d(set)h(to)g(`)p
+2162 y(is)30 b(`)p Fs(off)p Ft('.)630 2326 y Fs(comment-begin)1110
+2436 y Ft(The)72 b(string)g(to)h(insert)f(at)i(the)e(b)s(eginning)g(of)
+g(the)h(line)g(b)m(y)f(the)1110 2545 y Fs(insert-comment)26
+b Ft(command.)41 b(The)30 b(default)g(v)-5 b(alue)31
+b(is)g Fs("#")p Ft(.)630 2710 y Fs(completion-display-width)1110
+2819 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 2929 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 3039
+y(0)37 b(or)f(greater)i(than)e(the)g(terminal)h(screen)g(width.)58
+b(A)36 b(v)-5 b(alue)37 b(of)g(0)g(causes)1110 3148 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 3313
+y Fs(completion-ignore-case)1110 3422 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 2178 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
+(and)e(completion)1110 3532 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 2365 y Fs(completion-map-case)1110 2475 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 2585 y(h)m(yphens)29
+Ft('.)630 3696 y Fs(completion-map-case)1110 3806 y Ft(If)22
+b(set)g(to)h(`)p Fs(on)p Ft(',)h(and)e Fk(completion-ignore-case)31
+b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 3915 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
-2694 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
-(completion.)85 b(The)44 b(default)1110 2804 y(v)-5 b(alue)31
-b(is)f(`)p Fs(off)p Ft('.)630 2992 y Fs(completion-prefix-displa)o
-(y-le)o(ngth)1110 3101 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
-3211 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 3320
-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 3430
-y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)
-f(completions.)630 3618 y Fs(completion-query-items)1110
-3727 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 3837 y(is)43
-b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b)
-s(e)g(displa)m(y)m(ed.)77 b(If)1110 3947 y(the)29 b(n)m(um)m(b)s(er)f
-(of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g
-(to)h(this)1110 4056 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g
-(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110
-4166 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45
-b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110
-4275 y(to)43 b(an)e(in)m(teger)j(v)-5 b(alue)42 b(greater)h(than)f(or)g
-(equal)g(to)h(zero.)76 b(A)42 b(zero)g(v)-5 b(alue)1110
-4385 y(means)40 b(Readline)h(should)f(nev)m(er)g(ask;)46
-b(negativ)m(e)d(v)-5 b(alues)41 b(are)f(treated)i(as)1110
-4495 y(zero.)g(The)29 b(default)i(limit)g(is)g Fs(100)p
-Ft(.)630 4682 y Fs(convert-meta)1110 4792 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
-4902 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
-5011 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 5121
-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 5230 y(that)21 b(con)m(tains)h(eigh)m(t-bit)h(c)m(haracters.)
-39 b(This)20 b(v)-5 b(ariable)21 b(is)g(dep)s(enden)m(t)f(on)h(the)1110
-5340 y Fs(LC_CTYPE)26 b Ft(lo)s(cale)31 b(category)-8
-b(,)31 b(and)d(ma)m(y)h(c)m(hange)h(if)e(the)h(lo)s(cale)h(is)f(c)m
-(hanged.)p eop end
+4025 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 4134 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 4299 y Fs(completion-prefix-displa)o
+(y-le)o(ngth)1110 4408 y Ft(The)24 b(maxim)m(um)g(length)h(in)f(c)m
+(haracters)i(of)f(the)f(common)h(pre\014x)e(of)i(a)g(list)g(of)1110
+4518 y(p)s(ossible)i(completions)h(that)g(is)g(displa)m(y)m(ed)g
+(without)f(mo)s(di\014cation.)40 b(When)1110 4628 y(set)26
+b(to)h(a)f(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(Readline)e
+(replaces)h(common)f(pre\014xes)1110 4737 y(longer)46
+b(than)f(this)h(v)-5 b(alue)46 b(with)f(an)h(ellipsis)g(when)e(displa)m
+(ying)i(p)s(ossible)1110 4847 y(completions.)41 b(If)29
+b(a)g(completion)i(b)s(egins)d(with)h(a)g(p)s(erio)s(d,)g(and)f
+(Readline)i(is)1110 4956 y(completing)22 b(\014lenames,)h(it)e(uses)g
+(three)g(underscores)e(instead)j(of)e(an)h(ellipsis.)630
+5121 y Fs(completion-query-items)1110 5230 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 5340 y(is)43 b(ask)m(ed)g(whether)f(the)g
+(list)h(of)g(p)s(ossibilities)g(should)f(b)s(e)g(displa)m(y)m(ed.)77
+b(If)p eop end
 %%Page: 7 11
 TeXDict begin 7 10 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fs(disable-completion)
-1110 408 y Ft(If)36 b(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
-518 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
-628 y(to)31 b Fs(self-insert)p Ft(.)38 b(The)30 b(default)g(is)h(`)p
-Fs(off)p Ft('.)630 774 y Fs(echo-control-characters)1110
-883 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 993
-y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m(haracter)i(corresp)s(onding)d
-(to)i(a)f(signal)h(generated)1110 1103 y(from)h(the)g(k)m(eyb)s(oard.)
-41 b(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 1249
-y Fs(editing-mode)1110 1358 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 1468 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 1577 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
-1687 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 1833 y Fs(emacs-mode-string)1110 1943
-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
-2052 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 2162 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 2271 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 2381 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 2491
-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 2600 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 2710 y(default)31 b(is)f(`)p Fs(@)p Ft('.)630
-2856 y Fs(enable-active-region)1110 2966 y Ft(The)46
-b Fj(p)s(oin)m(t)j Ft(is)e(the)g(curren)m(t)f(cursor)g(p)s(osition,)52
-b(and)46 b Fj(mark)52 b Ft(refers)46 b(to)i(a)1110 3075
-y(sa)m(v)m(ed)37 b(cursor)f(p)s(osition)g(\(see)i(Section)f(1.4.1)h
-([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 3185 y(page)25
-b(17\).)40 b(The)24 b(text)h(b)s(et)m(w)m(een)g(the)g(p)s(oin)m(t)f
-(and)g(mark)g(is)g(referred)g(to)h(as)g(the)1110 3294
-y Fj(region)p Ft(.)62 b(When)37 b(this)g(v)-5 b(ariable)38
-b(is)f(set)h(to)g(`)p Fs(On)p Ft(',)h(Readline)f(allo)m(ws)g(certain)
-1110 3404 y(commands)f(to)h(designate)h(the)e(region)h(as)g
-Fj(activ)m(e)p Ft(.)64 b(When)37 b(the)h(region)g(is)1110
-3513 y(activ)m(e,)43 b(Readline)38 b(highligh)m(ts)h(the)g(text)g(in)e
-(the)i(region)g(using)e(the)h(v)-5 b(alue)1110 3623 y(of)35
-b(the)g Fs(active-region-start-color)p Ft(,)30 b(whic)m(h)35
-b(defaults)g(to)h(the)f(string)1110 3733 y(that)23 b(enables)f(the)g
-(terminal's)h(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d
-(sho)m(ws)1110 3842 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m
-(eted-paste)i(and)e(an)m(y)g(matc)m(hing)h(text)g(found)1110
-3952 y(b)m(y)f(incremen)m(tal)i(and)e(non-incremen)m(tal)i(history)e
-(searc)m(hes.)48 b(The)32 b(default)1110 4061 y(is)e(`)p
-Fs(On)p Ft('.)630 4208 y Fs(enable-bracketed-paste)1110
-4317 y Ft(When)36 b(set)h(to)g(`)p Fs(On)p Ft(',)h(Readline)f
-(con\014gures)f(the)h(terminal)f(to)i(insert)e(eac)m(h)1110
-4427 y(paste)27 b(in)m(to)g(the)f(editing)h(bu\013er)e(as)h(a)h(single)
-g(string)f(of)g(c)m(haracters,)j(instead)1110 4536 y(of)d(treating)i
-(eac)m(h)g(c)m(haracter)f(as)g(if)f(it)h(had)f(b)s(een)f(read)i(from)e
-(the)i(k)m(eyb)s(oard.)1110 4646 y(This)36 b(is)h(called)h(putting)f
-(the)h(terminal)f(in)m(to)h Fj(brac)m(k)m(eted)h(paste)e(mo)s(de)5
-b Ft(;)40 b(it)1110 4756 y(prev)m(en)m(ts)30 b(Readline)h(from)e
-(executing)i(an)m(y)f(editing)h(commands)e(b)s(ound)f(to)1110
-4865 y(k)m(ey)j(sequences)g(app)s(earing)f(in)g(the)g(pasted)h(text.)42
-b(The)29 b(default)i(is)f(`)p Fs(On)p Ft('.)630 5011
-y Fs(enable-keypad)1110 5121 y Ft(When)23 b(set)h(to)g(`)p
-Fs(on)p Ft(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f
-(application)i(k)m(eypad)1110 5230 y(when)h(it)h(is)f(called.)41
-b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m
-(eys.)1110 5340 y(The)j(default)g(is)h(`)p Fs(off)p Ft('.)p
+b(Command)29 b(Line)i(Editing)2153 b(7)1110 299 y(the)47
+b(n)m(um)m(b)s(er)e(of)i(p)s(ossible)f(completions)i(is)e(greater)i
+(than)e(or)h(equal)g(to)1110 408 y(this)38 b(v)-5 b(alue,)41
+b(Readline)e(asks)f(whether)f(or)h(not)h(the)f(user)f(wishes)h(to)h
+(view)1110 518 y(them;)33 b(otherwise,)g(Readline)g(simply)f(lists)h
+(the)f(completions.)47 b(This)31 b(v)-5 b(ari-)1110 628
+y(able)32 b(m)m(ust)f(b)s(e)g(set)h(to)g(an)g(in)m(teger)g(v)-5
+b(alue)32 b(greater)h(than)e(or)h(equal)g(to)g(zero.)1110
+737 y(A)e(zero)h(v)-5 b(alue)30 b(means)g(Readline)g(should)f(nev)m(er)
+h(ask;)g(negativ)m(e)i(v)-5 b(alues)31 b(are)1110 847
+y(treated)g(as)g(zero.)42 b(The)29 b(default)i(limit)g(is)g
+Fs(100)p Ft(.)630 1011 y Fs(convert-meta)1110 1121 y
+Ft(If)36 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(con)m(v)m(erts)h
+(c)m(haracters)g(it)f(reads)f(that)h(ha)m(v)m(e)h(the)1110
+1230 y(eigh)m(th)e(bit)f(set)h(to)g(an)f Fm(asci)r(i)g
+Ft(k)m(ey)h(sequence)f(b)m(y)g(clearing)i(the)e(eigh)m(th)h(bit)1110
+1340 y(and)25 b(pre\014xing)g(an)h Fs(ESC)f Ft(c)m(haracter,)k(con)m(v)
+m(erting)e(them)f(to)h(a)f(meta-pre\014xed)1110 1450
+y(k)m(ey)f(sequence.)39 b(The)23 b(default)h(v)-5 b(alue)25
+b(is)f(`)p Fs(on)p Ft(',)h(but)e(Readline)i(sets)f(it)h(to)f(`)p
+Fs(off)p Ft(')1110 1559 y(if)h(the)g(lo)s(cale)i(con)m(tains)f(c)m
+(haracters)h(whose)e(enco)s(dings)g(ma)m(y)h(include)e(b)m(ytes)1110
+1669 y(with)g(the)h(eigh)m(th)g(bit)f(set.)40 b(This)23
+b(v)-5 b(ariable)25 b(is)g(dep)s(enden)m(t)e(on)i(the)f
+Fs(LC_CTYPE)1110 1778 y Ft(lo)s(cale)i(category)-8 b(,)28
+b(and)23 b(ma)m(y)i(c)m(hange)g(if)f(the)g(lo)s(cale)h(c)m(hanges.)40
+b(This)23 b(v)-5 b(ariable)1110 1888 y(also)23 b(a\013ects)h(k)m(ey)g
+(bindings;)g(see)f(the)f(description)h(of)g Fs(force-meta-prefix)1110
+1998 y Ft(b)s(elo)m(w.)630 2162 y Fs(disable-completion)1110
+2271 y Ft(If)k(set)h(to)g(`)p Fs(On)p Ft(',)g(Readline)g(inhibits)f(w)m
+(ord)g(completion.)41 b(Completion)28 b(c)m(har-)1110
+2381 y(acters)44 b(are)f(inserted)g(in)m(to)h(the)f(line)g(as)g(if)g
+(they)g(had)g(b)s(een)f(mapp)s(ed)f(to)1110 2491 y Fs(self-insert)p
+Ft(.)d(The)30 b(default)g(is)g(`)p Fs(off)p Ft('.)630
+2655 y Fs(echo-control-characters)1110 2765 y Ft(When)g(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 2874 y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m
+(haracter)i(corresp)s(onding)d(to)i(a)f(signal)h(generated)1110
+2984 y(from)h(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)23 b Fs(editing-mode)d Ft(v)-5 b(ariable)24 b(con)m(trols)g(the)
+g(default)f(set)h(of)g(k)m(ey)g(bindings.)1110 3367 y(By)37
+b(default,)i(Readline)f(starts)g(up)d(in)i(emacs)h(editing)g(mo)s(de,)g
+(where)f(the)1110 3477 y(k)m(eystrok)m(es)d(are)g(most)f(similar)g(to)g
+(Emacs.)48 b(This)32 b(v)-5 b(ariable)34 b(can)f(b)s(e)f(set)h(to)1110
+3587 y(either)e(`)p Fs(emacs)p Ft(')e(or)i(`)p Fs(vi)p
+Ft('.)630 3751 y Fs(emacs-mode-string)1110 3861 y Ft(If)i(the)h
+Fk(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 3970 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 4080 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 4189 y(ing,)j(so)d(the)h(standard)f(set)h(of)g(meta-)h(and)
+e(con)m(trol-)i(pre\014xes)e(and)g(bac)m(kslash)1110
+4299 y(escap)s(e)32 b(sequences)f(is)h(a)m(v)-5 b(ailable.)46
+b(The)31 b(`)p Fs(\\1)p Ft(')g(and)g(`)p Fs(\\2)p Ft(')g(escap)s(es)h
+(b)s(egin)f(and)1110 4408 y(end)25 b(sequences)h(of)g(non-prin)m(ting)g
+(c)m(haracters,)i(whic)m(h)e(can)g(b)s(e)f(used)g(to)i(em-)1110
+4518 y(b)s(ed)i(a)i(terminal)g(con)m(trol)h(sequence)f(in)m(to)h(the)e
+(mo)s(de)h(string.)41 b(The)30 b(default)1110 4628 y(is)g(`)p
+Fs(@)p Ft('.)630 4792 y Fs(enable-active-region)1110
+4902 y Fk(p)s(oin)m(t)d Ft(is)e(the)h(curren)m(t)f(cursor)f(p)s
+(osition,)j(and)d Fk(mark)31 b Ft(refers)24 b(to)i(a)g(sa)m(v)m(ed)g
+(cur-)1110 5011 y(sor)33 b(p)s(osition)g(\(see)h(Section)g(1.4.1)h
+([Commands)d(F)-8 b(or)34 b(Mo)m(ving],)i(page)d(18\).)1110
+5121 y(The)46 b(text)h(b)s(et)m(w)m(een)h(the)e(p)s(oin)m(t)h(and)f
+(mark)g(is)g(referred)g(to)h(as)g(the)g Fk(re-)1110 5230
+y(gion)p Ft(.)80 b(When)44 b(this)f(v)-5 b(ariable)44
+b(is)f(set)h(to)g(`)p Fs(On)p Ft(',)j(Readline)d(allo)m(ws)h(certain)
+1110 5340 y(commands)37 b(to)h(designate)h(the)e(region)h(as)g
+Fk(activ)m(e)p Ft(.)64 b(When)37 b(the)h(region)g(is)p
 eop end
 %%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(enable-meta-key)
-1110 408 y Ft(When)40 b(set)g(to)g(`)p Fs(on)p Ft(',)j(Readline)d(will)
-g(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110
-518 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h
-(is)g(called.)76 b(On)41 b(man)m(y)1110 628 y(terminals,)c(the)e(meta)h
-(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56
-b(The)1110 737 y(default)31 b(is)f(`)p Fs(on)p Ft('.)630
-894 y Fs(expand-tilde)1110 1003 y Ft(If)d(set)h(to)h(`)p
-Fs(on)p Ft(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h
-(Readline)h(attempts)1110 1113 y(w)m(ord)i(completion.)42
-b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1270
-y Fs(history-preserve-point)1110 1379 y Ft(If)41 b(set)h(to)h(`)p
+b(Command)29 b(Line)i(Editing)2153 b(8)1110 299 y(activ)m(e,)43
+b(Readline)38 b(highligh)m(ts)h(the)g(text)g(in)e(the)i(region)g(using)
+e(the)h(v)-5 b(alue)1110 408 y(of)35 b(the)g Fs
+(active-region-start-color)p Ft(,)30 b(whic)m(h)35 b(defaults)g(to)h
+(the)f(string)1110 518 y(that)23 b(enables)f(the)g(terminal's)h
+(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d(sho)m(ws)1110
+628 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m(eted-paste)i(and)e
+(an)m(y)g(matc)m(hing)h(text)g(found)1110 737 y(b)m(y)f(incremen)m(tal)
+i(and)e(non-incremen)m(tal)i(history)e(searc)m(hes.)48
+b(The)32 b(default)1110 847 y(is)e(`)p Fs(On)p Ft('.)630
+1011 y Fs(enable-bracketed-paste)1110 1121 y Ft(When)36
+b(set)h(to)g(`)p Fs(On)p Ft(',)h(Readline)f(con\014gures)f(the)h
+(terminal)f(to)i(insert)e(eac)m(h)1110 1230 y(paste)27
+b(in)m(to)g(the)f(editing)h(bu\013er)e(as)h(a)h(single)g(string)f(of)g
+(c)m(haracters,)j(instead)1110 1340 y(of)d(treating)i(eac)m(h)g(c)m
+(haracter)f(as)g(if)f(it)h(had)f(b)s(een)f(read)i(from)e(the)i(k)m(eyb)
+s(oard.)1110 1450 y(This)36 b(is)h(called)h(putting)f(the)h(terminal)f
+(in)m(to)h Fk(brac)m(k)m(eted)h(paste)e(mo)s(de)5 b Ft(;)40
+b(it)1110 1559 y(prev)m(en)m(ts)30 b(Readline)h(from)e(executing)i(an)m
+(y)f(editing)h(commands)e(b)s(ound)f(to)1110 1669 y(k)m(ey)j(sequences)
+g(app)s(earing)f(in)g(the)g(pasted)h(text.)42 b(The)29
+b(default)i(is)f(`)p Fs(On)p Ft('.)630 1833 y Fs(enable-keypad)1110
+1943 y Ft(When)k(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(tries)g(to)g
+(enable)g(the)g(application)h(k)m(eypad)1110 2052 y(when)26
+b(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f(to)h(enable)
+g(the)g(arro)m(w)g(k)m(eys.)1110 2162 y(The)j(default)g(is)h(`)p
+Fs(off)p Ft('.)630 2326 y Fs(enable-meta-key)1110 2436
+y Ft(When)22 b(set)h(to)f(`)p Fs(on)p Ft(',)i(Readline)f(tries)g(to)g
+(enable)f(an)m(y)h(meta)g(mo)s(di\014er)e(k)m(ey)i(the)1110
+2545 y(terminal)35 b(claims)f(to)h(supp)s(ort)d(when)i(it)g(is)g
+(called.)53 b(On)33 b(man)m(y)h(terminals,)1110 2655
+y(the)45 b(Meta)i(k)m(ey)f(is)f(used)f(to)i(send)e(eigh)m(t-bit)j(c)m
+(haracters;)54 b(this)45 b(v)-5 b(ariable)1110 2765 y(c)m(hec)m(ks)37
+b(for)e(the)h(terminal)g(capabilit)m(y)i(that)e(indicates)h(the)e
+(terminal)i(can)1110 2874 y(enable)f(and)f(disable)h(a)g(mo)s(de)f
+(that)h(sets)g(the)g(eigh)m(th)g(bit)g(of)f(a)h(c)m(haracter)1110
+2984 y(\(0200\))31 b(if)d(the)g(Meta)i(k)m(ey)f(is)f(held)g(do)m(wn)g
+(when)f(the)h(c)m(haracter)i(is)e(t)m(yp)s(ed)g(\(a)1110
+3093 y(meta)j(c)m(haracter\).)43 b(The)30 b(default)g(is)h(`)p
+Fs(on)p Ft('.)630 3258 y Fs(expand-tilde)1110 3367 y
+Ft(If)h(set)h(to)h(`)p Fs(on)p Ft(',)f(Readline)h(attempts)f(tilde)h
+(expansion)e(when)g(it)h(attempts)1110 3477 y(w)m(ord)d(completion.)42
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 3641
+y Fs(force-meta-prefix)1110 3751 y Ft(If)h(set)i(to)g(`)p
+Fs(on)p Ft(',)f(Readline)h(mo)s(di\014es)e(its)h(b)s(eha)m(vior)g(when)
+f(binding)g(k)m(ey)h(se-)1110 3861 y(quences)22 b(con)m(taining)i
+Fl(\\M-)e Ft(or)h Fs(Meta-)e Ft(\(see)i Fs(Key)29 b(Bindings)21
+b Ft(in)h(Section)h(1.3.1)1110 3970 y([Readline)36 b(Init)f(File)i(Syn)
+m(tax],)g(page)f(4\))g(b)m(y)g(con)m(v)m(erting)h(a)e(k)m(ey)i
+(sequence)1110 4080 y(of)k(the)h(form)e Fl(\\M-)p Fk(C)48
+b Ft(or)41 b Fs(Meta-)p Fk(C)48 b Ft(to)41 b(the)h(t)m(w)m(o-c)m
+(haracter)i(sequence)e Fl(ESC)1110 4189 y Fk(C)e Ft(\(adding)32
+b(the)g(meta)h(pre\014x\).)46 b(If)32 b Fs(force-meta-prefix)27
+b Ft(is)33 b(set)f(to)h(`)p Fs(off)p Ft(')1110 4299 y(\(the)25
+b(default\),)i(Readline)e(uses)f(the)h(v)-5 b(alue)25
+b(of)f(the)h Fs(convert-meta)c Ft(v)-5 b(ariable)1110
+4408 y(to)30 b(determine)f(whether)f(to)i(p)s(erform)d(this)i(con)m(v)m
+(ersion:)41 b(if)29 b Fs(convert-meta)1110 4518 y Ft(is)37
+b(`)p Fs(on)p Ft(',)i(Readline)f(p)s(erforms)d(the)j(con)m(v)m(ersion)g
+(describ)s(ed)e(ab)s(o)m(v)m(e;)42 b(if)37 b(it)h(is)1110
+4628 y(`)p Fs(off)p Ft(',)24 b(Readline)g(con)m(v)m(erts)g
+Fk(C)30 b Ft(to)23 b(a)h(meta)f(c)m(haracter)i(b)m(y)d(setting)i(the)f
+(eigh)m(th)1110 4737 y(bit)30 b(\(0200\).)44 b(The)29
+b(default)i(is)f(`)p Fs(off)p Ft('.)630 4902 y Fs
+(history-preserve-point)1110 5011 y Ft(If)41 b(set)h(to)h(`)p
 Fs(on)p Ft(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f
-(p)s(oin)m(t)f(\(the)1110 1489 y(curren)m(t)35 b(cursor)g(p)s
+(p)s(oin)m(t)f(\(the)1110 5121 y(curren)m(t)35 b(cursor)g(p)s
 (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g
-(line)1110 1598 y(retriev)m(ed)h(with)f Fs(previous-history)c
+(line)1110 5230 y(retriev)m(ed)h(with)f Fs(previous-history)c
 Ft(or)37 b Fs(next-history)p Ft(.)55 b(The)36 b(default)1110
-1708 y(is)30 b(`)p Fs(off)p Ft('.)630 1864 y Fs(history-size)1110
-1974 y Ft(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
-(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2084
+5340 y(is)30 b(`)p Fs(off)p Ft('.)p eop end
+%%Page: 9 13
+TeXDict begin 9 12 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(9)630 299 y Fs(history-size)1110
+408 y Ft(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
+(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 518
 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f
-(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2193 y(new)e(en)m(tries)i
+(en)m(tries)g(are)g(deleted)h(and)e(no)1110 628 y(new)e(en)m(tries)i
 (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5
 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110
-2303 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
+737 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110
-2412 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is)
-f(made)g(to)h(set)f Fj(history-size)39 b Ft(to)1110 2522
-y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m
-(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 2632
-y(b)s(e)c(set)h(to)g(500.)630 2788 y Fs(horizontal-scroll-mode)1110
-2898 y Ft(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f
-(`)p Fs(on)p Ft(')g(or)g(`)p Fs(off)p Ft('.)57 b(Setting)36
-b(it)g(to)h(`)p Fs(on)p Ft(')1110 3007 y(means)26 b(that)h(the)f(text)h
-(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
-(tally)1110 3117 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
-(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3226
-y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i
-(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3336
-y(automatically)k(set)e(to)g(`)p Fs(on)p Ft(')f(for)g(terminals)g(of)h
-(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3446
-y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fs(off)p Ft('.)630
-3602 y Fs(input-meta)1110 3712 y Ft(If)f(set)g(to)h(`)p
-Fs(on)p Ft(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
-i(will)f(not)h(clear)1110 3821 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
-(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110
-3931 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79
-b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fs(off)p
-Ft(',)j(but)1110 4041 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p
-Fs(on)p Ft(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m
-(haracters.)1110 4150 y(The)k(name)g Fs(meta-flag)e Ft(is)i(a)h(synon)m
-(ym)f(for)g(this)g(v)-5 b(ariable.)42 b(This)28 b(v)-5
-b(ariable)1110 4260 y(is)35 b(dep)s(enden)m(t)f(on)h(the)g
-Fs(LC_CTYPE)e Ft(lo)s(cale)k(category)-8 b(,)39 b(and)34
-b(ma)m(y)i(c)m(hange)g(if)1110 4369 y(the)31 b(lo)s(cale)h(is)e(c)m
-(hanged.)630 4526 y Fs(isearch-terminators)1110 4635
-y Ft(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j
-(an)f(incremen)m(tal)1110 4745 y(searc)m(h)25 b(without)g(subsequen)m
-(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110
-4855 y(\(see)45 b(Section)h(1.2.5)g([Searc)m(hing],)j(page)d(3\).)84
-b(If)44 b(this)g(v)-5 b(ariable)45 b(has)g(not)1110 4964
-y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h
-Fs(ESC)d Ft(and)h Fl(C-J)g Ft(will)h(terminate)g(an)1110
-5074 y(incremen)m(tal)c(searc)m(h.)630 5230 y Fs(keymap)192
-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 5340 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(,)p eop end
-%%Page: 9 13
-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 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 408 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
-518 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
-628 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 737 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 909 y Fs(keyseq-timeout)1110 1019 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 1129 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
-1238 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 1348 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 1457 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
-1567 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 1677
-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
-1786 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 1896 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
-(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23
-b(is)1110 2005 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
-(equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5
-b(alue,)1110 2115 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
-(k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110
-2225 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)g Fs(500)p Ft(.)630 2397 y Fs(mark-directories)1110
-2506 y Ft(If)38 b(set)g(to)h(`)p Fs(on)p Ft(',)i(completed)e(directory)
-f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
-2616 y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630
-2788 y Fs(mark-modified-lines)1110 2898 y Ft(This)k(v)-5
-b(ariable,)38 b(when)d(set)h(to)h(`)p Fs(on)p Ft(',)g(causes)g
-(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3007 y(terisk)f(\(`)p
-Fs(*)p Ft('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f
-(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3117 y(This)d(v)-5
-b(ariable)31 b(is)f(`)p Fs(off)p Ft(')g(b)m(y)g(default.)630
-3289 y Fs(mark-symlinked-directori)o(es)1110 3399 y Ft(If)59
-b(set)h(to)g(`)p Fs(on)p Ft(',)67 b(completed)60 b(names)f(whic)m(h)g
-(are)h(sym)m(b)s(olic)g(links)f(to)1110 3508 y(directories)71
-b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70
-b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3618 y Fs(mark-directories)p
-Ft(\).)37 b(The)30 b(default)g(is)g(`)p Fs(off)p Ft('.)630
-3790 y Fs(match-hidden-files)1110 3900 y Ft(This)21 b(v)-5
-b(ariable,)25 b(when)d(set)g(to)h(`)p Fs(on)p Ft(',)h(causes)f
-(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4009
+847 y(en)m(tries)24 b(is)g(not)g(limited.)39 b(If)24
+b(y)m(ou)g(try)f(to)i(set)f Fk(history-size)30 b Ft(to)24
+b(a)g(non-n)m(umeric)1110 956 y(v)-5 b(alue,)31 b(the)g(maxim)m(um)f(n)
+m(um)m(b)s(er)f(of)i(history)f(en)m(tries)h(will)g(b)s(e)e(set)i(to)g
+(500.)630 1110 y Fs(horizontal-scroll-mode)1110 1219
+y Ft(Setting)i(this)e(v)-5 b(ariable)33 b(to)g(`)p Fs(on)p
+Ft(')e(means)h(that)g(the)g(text)h(of)f(the)g(lines)g(b)s(eing)1110
+1329 y(edited)d(will)h(scroll)g(horizon)m(tally)h(on)e(a)g(single)h
+(screen)f(line)g(when)f(the)i(lines)1110 1439 y(are)k(longer)h(than)e
+(the)h(width)g(of)g(the)g(screen,)h(instead)f(of)g(wrapping)f(on)m(to)
+1110 1548 y(a)42 b(new)f(screen)h(line.)74 b(This)41
+b(v)-5 b(ariable)42 b(is)g(automatically)i(set)e(to)h(`)p
+Fs(on)p Ft(')e(for)1110 1658 y(terminals)31 b(of)f(heigh)m(t)i(1.)41
+b(By)30 b(default,)h(this)f(v)-5 b(ariable)32 b(is)e(set)h(to)g(`)p
+Fs(off)p Ft('.)630 1811 y Fs(input-meta)1110 1921 y Ft(If)g(set)h(to)h
+(`)p Fs(on)p Ft(',)f(Readline)g(enables)g(eigh)m(t-bit)i(input)c
+(\(that)j(is,)f(it)g(do)s(es)g(not)1110 2030 y(clear)j(the)g(eigh)m(th)
+g(bit)f(in)g(the)g(c)m(haracters)i(it)f(reads\),)g(regardless)g(of)f
+(what)1110 2140 y(the)45 b(terminal)g(claims)h(it)g(can)f(supp)s(ort.)
+82 b(The)45 b(default)g(v)-5 b(alue)45 b(is)g(`)p Fs(off)p
+Ft(',)1110 2250 y(but)31 b(Readline)i(sets)g(it)g(to)g(`)p
+Fs(on)p Ft(')f(if)g(the)g(lo)s(cale)i(con)m(tains)f(c)m(haracters)h
+(whose)1110 2359 y(enco)s(dings)c(ma)m(y)h(include)f(b)m(ytes)h(with)f
+(the)g(eigh)m(th)h(bit)f(set.)42 b(This)29 b(v)-5 b(ariable)1110
+2469 y(is)37 b(dep)s(enden)m(t)f(on)i(the)f Fs(LC_CTYPE)e
+Ft(lo)s(cale)k(category)-8 b(,)41 b(and)c(its)h(v)-5
+b(alue)37 b(ma)m(y)1110 2578 y(c)m(hange)g(if)f(the)g(lo)s(cale)h(c)m
+(hanges.)58 b(The)35 b(name)h Fs(meta-flag)d Ft(is)j(a)g(synon)m(ym)
+1110 2688 y(for)30 b Fs(input-meta)p Ft(.)630 2841 y
+Fs(isearch-terminators)1110 2951 y Ft(The)51 b(string)h(of)g(c)m
+(haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110
+3061 y(searc)m(h)84 b(without)f(subsequen)m(tly)g(executing)h(the)f(c)m
+(haracter)i(as)f(a)1110 3170 y(command)38 b(\(see)g(Section)h(1.2.5)g
+([Searc)m(hing],)i(page)e(3\).)63 b(If)37 b(this)h(v)-5
+b(ariable)1110 3280 y(has)33 b(not)g(b)s(een)g(giv)m(en)h(a)f(v)-5
+b(alue,)35 b(the)e(c)m(haracters)i Fs(ESC)d Ft(and)h
+Fl(C-j)f Ft(terminate)1110 3389 y(an)e(incremen)m(tal)i(searc)m(h.)630
+3543 y Fs(keymap)192 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
+3652 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 3762
+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
+3871 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 3981 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 4091 y(ma)m(y)35 b(add)f(additional)h
+(names.)52 b(The)34 b(default)h(v)-5 b(alue)34 b(is)h
+Fs(emacs)p Ft(;)g(the)f(v)-5 b(alue)1110 4200 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 4354 y Fs(keyseq-timeout)1110
+4463 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 4573
+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 4682 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 4792 y(to)27 b(complete)h(a)f(longer)g(k)m(ey)g(sequence\).)40
+b(If)26 b(Readline)h(do)s(esn't)f(receiv)m(e)j(an)m(y)1110
+4902 y(input)j(within)f(the)i(timeout,)h(it)f(uses)g(the)f(shorter)g
+(but)g(complete)i(k)m(ey)f(se-)1110 5011 y(quence.)39
+b(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 5121 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 5230 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 5340
+y(Readline)32 b(will)f(w)m(ait)h(one)g(second)f(for)g(additional)h
+(input.)42 b(If)30 b(this)h(v)-5 b(ariable)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)1110 299 y(is)40
+b(set)g(to)h(a)f(v)-5 b(alue)40 b(less)g(than)g(or)g(equal)g(to)h
+(zero,)i(or)d(to)g(a)g(non-n)m(umeric)1110 408 y(v)-5
+b(alue,)34 b(Readline)g(w)m(aits)g(un)m(til)g(another)f(k)m(ey)h(is)f
+(pressed)f(to)i(decide)f(whic)m(h)1110 518 y(k)m(ey)e(sequence)g(to)g
+(complete.)42 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h
+Fs(500)p Ft(.)630 671 y Fs(mark-directories)1110 781
+y Ft(If)38 b(set)g(to)h(`)p Fs(on)p Ft(',)i(completed)e(directory)f
+(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 891
+y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630 1044
+y Fs(mark-modified-lines)1110 1154 y Ft(When)c(this)g(v)-5
+b(ariable)28 b(is)f(set)g(to)h(`)p Fs(on)p Ft(',)g(Readline)f(displa)m
+(ys)g(an)g(asterisk)h(\(`)p Fs(*)p Ft('\))1110 1263 y(at)c(the)g(start)
+g(of)f(history)g(lines)h(whic)m(h)f(ha)m(v)m(e)i(b)s(een)d(mo)s
+(di\014ed.)38 b(This)22 b(v)-5 b(ariable)1110 1373 y(is)30
+b(`)p Fs(off)p Ft(')g(b)m(y)h(default.)630 1526 y Fs
+(mark-symlinked-directori)o(es)1110 1636 y Ft(If)59 b(set)h(to)g(`)p
+Fs(on)p Ft(',)67 b(completed)60 b(names)f(whic)m(h)g(are)h(sym)m(b)s
+(olic)g(links)f(to)1110 1745 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)
+g(app)s(ended,)77 b(sub)5 b(ject)70 b(to)g(the)g(v)-5
+b(alue)70 b(of)1110 1855 y Fs(mark-directories)p Ft(.)36
+b(The)30 b(default)h(is)f(`)p Fs(off)p Ft('.)630 2008
+y Fs(match-hidden-files)1110 2118 y Ft(This)24 b(v)-5
+b(ariable,)26 b(when)e(set)h(to)g(`)p Fs(on)p Ft(',)g(forces)g
+(Readline)g(to)g(matc)m(h)h(\014les)e(whose)1110 2228
 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fs(.)p Ft(')g(\(hidden)f
-(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4119
-y(completion.)75 b(If)41 b(set)g(to)h(`)p Fs(off)p Ft(',)i(the)e
-(leading)g(`)p Fs(.)p Ft(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110
-4228 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)
-53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fs(on)p Ft(')g(b)m(y)1110
-4338 y(default.)630 4510 y Fs(menu-complete-display-pr)o(efix)1110
-4620 y Ft(If)f(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion)i
+(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 2337
+y(completion.)f(If)28 b(set)i(to)g(`)p Fs(off)p Ft(',)f(the)g(user)f(m)
+m(ust)h(include)g(the)g(leading)h(`)p Fs(.)p Ft(')f(in)1110
+2447 y(the)i(\014lename)f(to)h(b)s(e)f(completed.)42
+b(This)29 b(v)-5 b(ariable)31 b(is)g(`)p Fs(on)p Ft(')f(b)m(y)g
+(default.)630 2600 y Fs(menu-complete-display-pr)o(efix)1110
+2710 y Ft(If)j(set)h(to)g(`)p Fs(on)p Ft(',)h(men)m(u)e(completion)i
 (displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110
-4729 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)
-s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4839 y(through)30
+2819 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)
+s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 2929 y(through)30
 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fs(off)p
-Ft('.)630 5011 y Fs(output-meta)1110 5121 y Ft(If)35
-b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(will)g(displa)m(y)f(c)m
-(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5230 y(set)h(directly)g
-(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59
-b(The)1110 5340 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)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)1110 299 y(eigh)m(t-bit)38
-b(c)m(haracters.)61 b(This)36 b(v)-5 b(ariable)37 b(is)g(dep)s(enden)m
-(t)e(on)h(the)h Fs(LC_CTYPE)1110 408 y Ft(lo)s(cale)32
-b(category)-8 b(,)33 b(and)d(ma)m(y)h(c)m(hange)g(if)g(the)f(lo)s(cale)
-i(is)f(c)m(hanged.)630 581 y Fs(page-completions)1110
-690 y Ft(If)i(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
-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
-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
-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
+Ft('.)630 3082 y Fs(output-meta)1110 3192 y Ft(If)23
+b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)e(displa)m(ys)h(c)m
+(haracters)g(with)f(the)g(eigh)m(th)h(bit)f(set)h(di-)1110
+3302 y(rectly)29 b(rather)e(than)h(as)g(a)g(meta-pre\014xed)g(escap)s
+(e)g(sequence.)40 b(The)28 b(default)1110 3411 y(is)e(`)p
+Fs(off)p Ft(',)h(but)e(Readline)h(sets)h(it)f(to)h(`)p
+Fs(on)p Ft(')f(if)g(the)g(lo)s(cale)h(con)m(tains)g(c)m(haracters)1110
+3521 y(whose)36 b(enco)s(dings)g(ma)m(y)h(include)f(b)m(ytes)h(with)f
+(the)h(eigh)m(th)g(bit)g(set.)59 b(This)1110 3630 y(v)-5
+b(ariable)24 b(is)e(dep)s(enden)m(t)g(on)h(the)g Fs(LC_CTYPE)e
+Ft(lo)s(cale)j(category)-8 b(,)27 b(and)22 b(its)h(v)-5
+b(alue)1110 3740 y(ma)m(y)31 b(c)m(hange)g(if)g(the)f(lo)s(cale)i(c)m
+(hanges.)630 3893 y Fs(page-completions)1110 4003 y Ft(If)24
+b(set)g(to)h(`)p Fs(on)p Ft(',)h(Readline)f(uses)f(an)g(in)m(ternal)h
+(pager)f(resem)m(bling)h Fj(mor)-5 b(e)7 b Ft(\(1\))26
+b(to)1110 4113 y(displa)m(y)j(a)g(screenful)g(of)f(p)s(ossible)h
+(completions)h(at)f(a)g(time.)41 b(This)28 b(v)-5 b(ariable)1110
+4222 y(is)30 b(`)p Fs(on)p Ft(')h(b)m(y)f(default.)630
+4376 y Fs(prefer-visible-bell)1110 4485 y Ft(See)h Fs(bell-style)p
+Ft(.)630 4639 y Fs(print-completions-horizo)o(ntal)o(ly)1110
+4748 y Ft(If)38 b(set)h(to)g(`)p Fs(on)p Ft(',)h(Readline)f(displa)m
+(ys)f(completions)h(with)f(matc)m(hes)i(sorted)1110 4858
+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 4967 y(The)30 b(default)g(is)h(`)p
+Fs(off)p Ft('.)630 5121 y Fs(revert-all-at-newline)1110
+5230 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
-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
+5340 y(returning)35 b(when)f(executing)j Fs(accept-line)p
+Ft(.)54 b(By)36 b(default,)h(history)f(lines)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)1110 299 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 2021 y Fs(readline\(\))p Ft(.)38
-b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 2193
-y Fs(show-all-if-ambiguous)1110 2303 y Ft(This)e(alters)i(the)f
+(across)g(calls)h(to)1110 408 y Fs(readline\(\))p Ft(.)38
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 591
+y Fs(search-ignore-case)1110 701 y Ft(If)j(set)g(to)h(`)p
+Fs(on)p Ft(',)h(Readline)e(p)s(erforms)f(incremen)m(tal)i(and)f
+(non-incremen)m(tal)1110 810 y(history)27 b(list)g(searc)m(hes)h(in)f
+(a)g(case-insensitiv)m(e)j(fashion.)39 b(The)26 b(default)h(v)-5
+b(alue)1110 920 y(is)30 b(`)p Fs(off)p Ft('.)630 1103
+y Fs(show-all-if-ambiguous)1110 1212 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 2412 y(to)f(`)p Fs(on)p Ft(',)g(w)m(ords)f(whic)m(h)
+b(If)29 b(set)1110 1322 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 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
+1110 1431 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 1541 y(The)30
 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fs(off)p Ft('.)630
-2804 y Fs(show-all-if-unmodified)1110 2913 y Ft(This)38
+1724 y Fs(show-all-if-unmodified)1110 1833 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 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 3133 y(ha)m(v)m(e)32
+(functions)e(in)h(a)1110 1943 y(fashion)25 b(similar)h(to)g
+Fk(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 2052 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 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
+(ossible)f(par-)1110 2162 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 2271
 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 3461 y(ing)g(the)f(b)s(ell.)41
+(immediately)i(instead)e(of)h(ring-)1110 2381 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 3634 y Fs(show-mode-in-prompt)1110 3743 y Ft(If)24
+Ft('.)630 2564 y Fs(show-mode-in-prompt)1110 2673 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
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 2783
 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
+h(insertion.)49 b(The)32 b(mo)s(de)1110 2892 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Fk(emacs-mo)s(de-string)8
+b Ft(\).)87 b(The)45 b(default)1110 3002 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 3185 y Fs(skip-completed-text)1110
+3294 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
+3404 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)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46
-b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 4682 y(not)41
+3513 y(ing)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46
+b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 3623 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
+(c)m(haracters)1110 3733 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
+3842 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(`)
-p Fs(Makefilefile)p Ft(',)1110 5230 y(assuming)d(there)g(is)h(a)f
-(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5
-b(alue)1110 5340 y(is)30 b(`)p Fs(off)p Ft('.)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
-(vi-cmd-mode-string)1110 408 y Ft(If)33 b(the)h Fj(sho)m(w-mo)s
+3952 y(abled,)h(attempting)h(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(\014rst)f(`)p Fs(e)p Ft(')1110 4061 y(in)23
+b(`)p Fs(Makefile)p Ft(')f(will)h(result)h(in)f(`)p Fs(Makefile)p
+Ft(')e(rather)i(than)h(`)p Fs(Makefilefile)p Ft(',)1110
+4171 y(assuming)35 b(there)g(is)h(a)f(single)h(p)s(ossible)f
+(completion.)56 b(The)35 b(default)g(v)-5 b(alue)1110
+4281 y(is)30 b(`)p Fs(off)p Ft('.)630 4463 y Fs(vi-cmd-mode-string)1110
+4573 y Ft(If)j(the)h Fk(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
+4682 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 4792 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 4902 y(panded)23
+b(lik)m(e)j(a)e(k)m(ey)h(binding,)g(so)g(the)f(standard)g(set)h(of)f
+(meta-)h(and)f(con)m(trol-)1110 5011 y(pre\014xes)31
+b(and)h(bac)m(kslash)g(escap)s(e)h(sequences)f(is)g(a)m(v)-5
+b(ailable.)48 b(The)32 b(`)p Fs(\\1)p Ft(')g(and)1110
+5121 y(`)p Fs(\\2)p Ft(')40 b(escap)s(es)h(b)s(egin)g(and)f(end)f
+(sequences)i(of)g(non-prin)m(ting)f(c)m(haracters,)1110
+5230 y(whic)m(h)35 b(can)g(b)s(e)f(used)g(to)i(em)m(b)s(ed)e(a)i
+(terminal)f(con)m(trol)i(sequence)e(in)m(to)h(the)1110
+5340 y(mo)s(de)30 b(string.)41 b(The)30 b(default)g(is)g(`)p
+Fs(\(cmd\))p Ft('.)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 Fs
+(vi-ins-mode-string)1110 408 y Ft(If)33 b(the)h Fk(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
+628 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
+737 y(panded)23 b(lik)m(e)j(a)e(k)m(ey)h(binding,)g(so)g(the)f
+(standard)g(set)h(of)f(meta-)h(and)f(con)m(trol-)1110
+847 y(pre\014xes)31 b(and)h(bac)m(kslash)g(escap)s(e)h(sequences)f(is)g
+(a)m(v)-5 b(ailable.)48 b(The)32 b(`)p Fs(\\1)p Ft(')g(and)1110
+956 y(`)p Fs(\\2)p Ft(')40 b(escap)s(es)h(b)s(egin)g(and)f(end)f
+(sequences)i(of)g(non-prin)m(ting)f(c)m(haracters,)1110
+1066 y(whic)m(h)35 b(can)g(b)s(e)f(used)g(to)i(em)m(b)s(ed)e(a)i
+(terminal)f(con)m(trol)i(sequence)e(in)m(to)h(the)1110
+1176 y(mo)s(de)30 b(string.)41 b(The)30 b(default)g(is)g(`)p
+Fs(\(ins\))p Ft('.)630 1353 y Fs(visible-stats)1110 1462
 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
+1572 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 1749
+y(Key)f(Bindings)630 1858 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)
+b(First)43 b(y)m(ou)630 1968 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
+b(The)27 b(follo)m(wing)630 2078 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
+m(y)-8 b(,)630 2187 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 2330 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
+(the)g(init)630 2440 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
+630 2550 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 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(and)630 2659 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 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+b(The)40 b(name)h(of)630 2769 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 3888 y(comfortable.)630
-4025 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h
+(what)h(y)m(ou)g(\014nd)e(most)630 2878 y(comfortable.)630
+3022 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h
 (k)m(eys)g(to)f(b)s(e)f(b)s(ound)f(to)i(a)g(string)630
-4134 y(that)d(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 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 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
+3131 y(that)i(is)f(inserted)f(when)g(the)i(k)m(ey)f(is)g(pressed)f(\(a)
+i Fk(macro)5 b Ft(\).)55 b(The)35 b(di\013erence)g(b)s(et)m(w)m(een)h
+(a)630 3241 y(macro)31 b(and)f(a)h(command)f(is)g(that)h(a)g(macro)g
+(is)f(enclosed)h(in)f(single)h(or)g(double)f(quotes.)630
+3418 y Fk(k)m(eyname)5 b Ft(:)42 b Fk(function-name)35
+b Ft(or)c Fk(macro)1110 3528 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 3671 y Fs(Control-u:)45
+b(universal-argument)1350 3780 y(Meta-Rubout:)f(backward-kill-word)1350
+3890 y(Control-o:)h(">)i(output")1110 4033 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 5011 y Fs(universal-argument)p
+(to)i(the)f(function)1110 4143 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 5230 y(expressed)45
+4253 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 4362 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 5340 y(output)p Ft(')29 b(in)m(to)i(the)g
-(line\).)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)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
-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 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
-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
-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 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 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 5340 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p
-eop end
+h(text)h(`)p Fs(>)1110 4472 y(output)p Ft(')29 b(in)m(to)i(the)g
+(line\).)1110 4615 y(This)26 b(k)m(ey)h(binding)e(syn)m(tax)i
+(recognizes)i(a)e(n)m(um)m(b)s(er)e(of)h(sym)m(b)s(olic)h(c)m(haracter)
+1110 4725 y(names:)43 b Fk(DEL)p Ft(,)32 b Fk(ESC)p Ft(,)f
+Fk(ESCAPE)p Ft(,)g Fk(LFD)p Ft(,)h Fk(NEWLINE)p Ft(,)h
+Fk(RET)p Ft(,)e Fk(RETURN)p Ft(,)1110 4834 y Fk(R)m(UBOUT)37
+b Ft(\(a)31 b(destructiv)m(e)h(bac)m(kspace\),)g Fk(SP)-8
+b(A)m(CE)p Ft(,)31 b Fk(SPC)p Ft(,)e(and)h Fk(T)-8 b(AB)p
+Ft(.)630 5011 y Fs(")p Fk(k)m(eyseq)r Fs(")p Ft(:)41
+b Fk(function-name)36 b Ft(or)30 b Fk(macro)1110 5121
+y(k)m(eyseq)24 b Ft(di\013ers)c(from)g Fk(k)m(eyname)27
+b Ft(ab)s(o)m(v)m(e)22 b(in)e(that)h(strings)g(denoting)f(an)h(en)m
+(tire)1110 5230 y(k)m(ey)i(sequence)f(can)h(b)s(e)e(sp)s(eci\014ed,)j
+(b)m(y)e(placing)h(the)f(k)m(ey)h(sequence)g(in)e(double)1110
+5340 y(quotes.)46 b(Some)32 b Fm(gnu)f Ft(Emacs)h(st)m(yle)h(k)m(ey)g
+(escap)s(es)f(can)g(b)s(e)f(used,)h(as)g(in)g(the)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)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
+b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(follo)m(wing)47
+b(example,)j(but)44 b(none)i(of)f(the)g(sp)s(ecial)h(c)m(haracter)h
+(names)f(are)1110 408 y(recognized.)1350 543 y Fs("\\C-u":)g
+(universal-argument)1350 652 y("\\C-x\\C-r":)f(re-read-init-file)1350
+762 y("\\e[11~":)g("Function)h(Key)g(1")1110 896 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 1006 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 1115 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 1225 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 1384 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 1493 y(k)m(ey)i(sequences:)630
+1652 y Fl(\\C-)336 b Ft(A)30 b(con)m(trol)i(pre\014x.)630
+1811 y Fl(\\M-)336 b Ft(Adding)33 b(the)h(meta)g(pre\014x)f(or)h(con)m
+(v)m(erting)h(the)f(follo)m(wing)h(c)m(haracter)g(to)g(a)1110
+1921 y(meta)27 b(c)m(haracter,)h(as)e(describ)s(ed)e(ab)s(o)m(v)m(e)j
+(under)d Fs(force-meta-prefix)d Ft(\(see)1110 2030 y
+Fs(Variable)28 b(Settings)42 b Ft(in)h(Section)i(1.3.1)g([Readline)g
+(Init)e(File)i(Syn)m(tax],)1110 2140 y(page)31 b(4\).)630
+2299 y Fl(\\e)384 b Ft(An)30 b(escap)s(e)h(c)m(haracter.)630
+2458 y Fl(\\\\)384 b Ft(Bac)m(kslash.)630 2617 y Fl(\\)p
+Fs(")g(")p Ft(,)30 b(a)h(double)f(quotation)i(mark.)630
+2776 y Fl(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe.)630 2934 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 3044 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+3203 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 3362
+y Fs(\\b)384 b Ft(bac)m(kspace)630 3521 y Fs(\\d)g Ft(delete)630
+3680 y Fs(\\f)g Ft(form)30 b(feed)630 3839 y Fs(\\n)384
+b Ft(newline)630 3998 y Fs(\\r)g Ft(carriage)32 b(return)630
+4156 y Fs(\\t)384 b Ft(horizon)m(tal)32 b(tab)630 4315
+y Fs(\\v)384 b Ft(v)m(ertical)32 b(tab)630 4474 y Fs(\\)p
+Fl(nnn)288 b Ft(The)31 b(eigh)m(t-bit)j(c)m(haracter)f(whose)f(v)-5
+b(alue)32 b(is)f(the)h(o)s(ctal)h(v)-5 b(alue)33 b Fk(nnn)d
+Ft(\(one)i(to)1110 4584 y(three)f(digits\).)630 4743
+y Fs(\\x)p Fl(HH)288 b Ft(The)34 b(eigh)m(t-bit)j(c)m(haracter)f(whose)
+f(v)-5 b(alue)35 b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36
+b Fk(HH)1110 4852 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\).)630
+5011 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
+5121 y(indicate)d(a)f(macro)g(de\014nition.)45 b(Unquoted)32
+b(text)g(is)g(assumed)f(to)i(b)s(e)e(a)h(function)g(name.)630
+5230 y(The)27 b(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m
+(e)i(are)g(expanded)f(in)g(the)g(macro)h(b)s(o)s(dy)-8
+b(.)39 b(Bac)m(k-)630 5340 y(slash)e(will)h(quote)h(an)m(y)f(other)f(c)
+m(haracter)j(in)d(the)h(macro)g(text,)j(including)c(`)p
+Fs(")p Ft(')h(and)f(`)p Fs(')p Ft('.)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)630 299 y(F)-8
+b(or)29 b(example,)h(the)e(follo)m(wing)i(binding)e(will)g(mak)m(e)i(`)
+p Fl(C-x)f Fs(\\)p Ft(')g(insert)f(a)h(single)g(`)p Fs(\\)p
+Ft(')f(in)m(to)i(the)630 408 y(line:)870 542 y Fs("\\C-x\\\\":)45
+b("\\\\")150 740 y Fi(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)150
+887 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
+996 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 1106 y(result)f(of)h(tests.)41
+b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(a)m(v)-5
+b(ailable.)150 1264 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 1373 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 1483 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 1592 y(noted,)i(no)f(c)m
+(haracters)i(are)f(required)e(to)i(isolate)i(it.)630
+1750 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
+1860 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 1969 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
+2079 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 2188 y(starting)f(out)g
+(in)f Fs(emacs)f Ft(mo)s(de.)630 2346 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 2800 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2456 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 2910 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 2565 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 3020 y(b)s(oth)k(the)h(full)g
+Fs(=)p Ft(')g(is)g(tested)h(against)1110 2675 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 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 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
+(terminal)1110 2785 y(name)j(b)s(efore)f(the)h(\014rst)f(`)p
+Fs(-)p Ft('.)47 b(This)32 b(allo)m(ws)i Fs(xterm)e Ft(to)h(matc)m(h)g
+(b)s(oth)f Fs(xterm)1110 2894 y Ft(and)e Fs(xterm-256color)p
+Ft(,)d(for)j(instance.)630 3052 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 3161 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 3271 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 3381 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
+3490 y(the)23 b(righ)m(t)h(side)f(of)g(the)g(op)s(erator)h(consists)f
+(of)h(a)f(ma)5 b(jor)23 b(v)m(ersion)h(n)m(um)m(b)s(er,)f(an)1110
+3600 y(optional)29 b(decimal)g(p)s(oin)m(t,)g(and)f(an)g(optional)h
+(minor)f(v)m(ersion)g(\(e.g.,)j(`)p Fs(7.1)p Ft('\).)1110
+3709 y(If)24 b(the)h(minor)g(v)m(ersion)g(is)g(omitted,)i(it)e
+(defaults)g(to)h(`)p Fs(0)p Ft('.)39 b(The)24 b(op)s(erator)h(ma)m(y)
+1110 3819 y(b)s(e)g(separated)h(from)g(the)g(string)g
+Fs(version)d Ft(and)j(from)f(the)h(v)m(ersion)g(n)m(um)m(b)s(er)1110
+3929 y(argumen)m(t)34 b(b)m(y)g(whitespace.)51 b(The)34
+b(follo)m(wing)h(example)f(sets)g(a)g(v)-5 b(ariable)35
+b(if)1110 4038 y(the)c(Readline)g(v)m(ersion)f(b)s(eing)g(used)g(is)g
+(7.0)i(or)e(new)m(er:)1350 4172 y Fs($if)47 b(version)f(>=)h(7.0)1350
+4281 y(set)g(show-mode-in-prompt)42 b(on)1350 4391 y($endif)630
+4549 y(application)1110 4658 y Ft(The)21 b Fk(application)j
 Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)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
-5230 y(name)p Ft(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+(set-)1110 4768 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(Readline)g(library)g(sets)g(the)g Fk(application)1110
+4878 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
-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: 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)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 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 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 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 3440 y(conditional)j(syn)m
-(tax.)p eop end
+4987 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 5097
+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 5206 y(the)e(curren)m(t)f(or)g(previous)
+g(w)m(ord)g(in)g(Bash:)1350 5340 y Fs($if)47 b(Bash)p
+eop end
 %%Page: 15 19
 TeXDict begin 15 18 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(15)390 408 y Fs(#)47
-b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h
-(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h
+b(Command)29 b(Line)i(Editing)2107 b(15)1350 299 y Fs(#)47
+b(Quote)g(the)g(current)f(or)h(previous)e(word)1350 408
+y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 518 y($endif)630
+677 y(variable)96 b Ft(The)33 b Fk(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 787 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 897 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 1006 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 1116 y(from)36 b(the)h(v)-5 b(alue)37
+b(on)f(the)h(righ)m(t)g(hand)f(side)g(b)m(y)g(whitespace.)60
+b(String)37 b(and)1110 1225 y(b)s(o)s(olean)29 b(v)-5
+b(ariables)29 b(ma)m(y)h(b)s(e)e(tested.)41 b(Bo)s(olean)30
+b(v)-5 b(ariables)29 b(m)m(ust)g(b)s(e)f(tested)1110
+1335 y(against)33 b(the)e(v)-5 b(alues)32 b Fk(on)f Ft(and)g
+Fk(o\013)p Ft(.)44 b(The)31 b(follo)m(wing)i(example)f(is)f(equiv)-5
+b(alen)m(t)1110 1445 y(to)31 b(the)g Fs(mode=emacs)c
+Ft(test)32 b(describ)s(ed)d(ab)s(o)m(v)m(e:)1350 1579
+y Fs($if)47 b(editing-mode)d(==)k(emacs)1350 1689 y(set)f
+(show-mode-in-prompt)42 b(on)1350 1798 y($endif)150 1958
+y($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 2117 y Fs($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 2276 y Fs($include)96 b Ft(This)27 b(directiv)m(e)i
+(tak)m(es)g(a)f(single)g(\014lename)g(as)g(an)g(argumen)m(t)g(and)f
+(reads)g(commands)h(and)630 2386 y(k)m(ey)40 b(bindings)f(from)g(that)h
+(\014le.)68 b(F)-8 b(or)40 b(example,)j(the)d(follo)m(wing)h(directiv)m
+(e)g(reads)e(from)630 2496 y Fs(/etc/inputrc)p Ft(:)870
+2630 y Fs($include)46 b(/etc/inputrc)150 2829 y Fi(1.3.3)63
+b(Sample)41 b(Init)g(File)150 2976 y Ft(Here)27 b(is)f(an)h(example)g
+(of)f(an)h Fk(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
+3086 y(conditional)j(syn)m(tax.)p eop end
+%%Page: 16 20
+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 408 y Fs(#)47
+b(This)g(file)g(controls)e(the)i(behavior)f(of)h(line)g(input)f
+(editing)g(for)390 518 y(#)h(programs)f(that)h(use)g(the)f(GNU)h
 (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include)
 g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g
 (re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390
@@ -7908,9 +8006,9 @@ h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v
 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode)
 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390
 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end
-%%Page: 16 20
-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(#"\\M-\\C-[A":)331
+%%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)390 299 y Fs(#"\\M-\\C-[A":)331
 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390
 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066
 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the)
@@ -7943,571 +8041,633 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
 g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user)
 g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g
 (completion-query-items)42 b(150)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)390 299 y Fs(#)47
+%%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)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 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
+847 y($endif)150 1072 y Fr(1.4)68 b(Bindable)45 b(Readline)i(Commands)
+150 1231 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 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
+b(Command)150 1341 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
-1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fj(p)s(oin)m(t)h
+1467 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fk(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 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
-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
-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
-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 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-display)c
-(\(M-C-l\))630 5230 y Ft(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s
+Fk(mark)31 b Ft(refers)150 1577 y(to)24 b(a)g(cursor)f(p)s(osition)g
+(sa)m(v)m(ed)i(b)m(y)e(the)h Fs(set-mark)d Ft(command.)38
+b(The)23 b(text)h(b)s(et)m(w)m(een)g(the)g(p)s(oin)m(t)f(and)g(mark)150
+1686 y(is)31 b(referred)g(to)h(as)f(the)h Fk(region)p
+Ft(.)44 b(Readline)32 b(has)f(the)h(concept)g(of)f(an)h
+Fj(active)h(r)-5 b(e)g(gion)7 b Ft(:)44 b(when)30 b(the)h(region)150
+1796 y(is)k(activ)m(e,)k(Readline)c(redispla)m(y)h(highligh)m(ts)f(the)
+h(region)f(using)g(the)g(v)-5 b(alue)35 b(of)h(the)f
+Fs(active-region-)150 1906 y(start-color)26 b Ft(v)-5
+b(ariable.)41 b(The)29 b Fs(enable-active-region)24 b
+Ft(v)-5 b(ariable)30 b(turns)d(this)j(on)f(and)f(o\013.)41
+b(Sev)m(eral)150 2015 y(commands)30 b(set)h(the)f(region)h(to)h(activ)m
+(e;)g(those)f(are)g(noted)g(b)s(elo)m(w.)150 2199 y Fi(1.4.1)63
+b(Commands)42 b(F)-10 b(or)41 b(Mo)m(ving)150 2363 y
+Fs(beginning-of-line)26 b(\(C-a\))630 2472 y Ft(Mo)m(v)m(e)k(to)e(the)g
+(start)g(of)f(the)h(curren)m(t)f(line.)40 b(This)27 b(ma)m(y)h(also)h
+(b)s(e)e(b)s(ound)e(to)j(the)g(Home)g(k)m(ey)630 2582
+y(on)i(some)h(k)m(eyb)s(oards.)150 2725 y Fs(end-of-line)c(\(C-e\))630
+2835 y Ft(Mo)m(v)m(e)34 b(to)f(the)f(end)f(of)i(the)f(line.)46
+b(This)31 b(ma)m(y)i(also)g(b)s(e)e(b)s(ound)f(to)j(the)f(End)f(k)m(ey)
+i(on)f(some)630 2944 y(k)m(eyb)s(oards.)150 3088 y Fs(forward-char)27
+b(\(C-f\))630 3198 y Ft(Mo)m(v)m(e)35 b(forw)m(ard)d(a)i(c)m(haracter.)
+50 b(This)32 b(ma)m(y)i(also)g(b)s(e)e(b)s(ound)f(to)i(the)h(righ)m(t)f
+(arro)m(w)g(k)m(ey)h(on)630 3307 y(some)d(k)m(eyb)s(oards.)150
+3451 y Fs(backward-char)c(\(C-b\))630 3560 y Ft(Mo)m(v)m(e)32
+b(bac)m(k)f(a)g(c)m(haracter.)42 b(This)29 b(ma)m(y)i(also)g(b)s(e)e(b)
+s(ound)f(to)j(the)g(left)f(arro)m(w)h(k)m(ey)g(on)f(some)630
+3670 y(k)m(eyb)s(oards.)150 3813 y Fs(forward-word)d(\(M-f\))630
+3923 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 4033 y(digits.)150 4176 y Fs(backward-word)27
+b(\(M-b\))630 4286 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 4395 y(of)d(letters)g(and)f
+(digits.)150 4539 y Fs(previous-screen-line)25 b(\(\))630
+4648 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
+4758 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 4868 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 4977 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i
+(screen)f(width.)150 5121 y Fs(next-screen-line)c(\(\))630
+5230 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
+5340 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)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)630 299 y(not)27
+b(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
+408 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 556 y Fs(clear-display)c
+(\(M-C-l\))630 665 y Ft(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s
 (ossible,)i(the)f(terminal's)g(scrollbac)m(k)i(bu\013er,)e(then)f
-(redra)m(w)630 5340 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e
-(curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)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)150 299 y Fs(clear-screen)27
-b(\(C-l\))630 408 y Ft(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g
-(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g
-(the)630 518 y(top)c(of)f(the)h(screen.)150 665 y Fs
-(redraw-current-line)25 b(\(\))630 775 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 962 y Fi(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
-b(Manipulating)h(The)f(History)150 1128 y Fs(accept-line)27
-b(\(Newline)h(or)i(Return\))630 1237 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
-1347 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 1457 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 1604 y Fs(previous-history)26 b(\(C-p\))630
-1713 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 1861 y Fs(next-history)d
-(\(C-n\))630 1970 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
-2117 y Fs(beginning-of-history)25 b(\(M-<\))630 2227
+(redra)m(w)630 775 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e
+(curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)150
+922 y Fs(clear-screen)c(\(C-l\))630 1032 y Ft(Clear)35
+b(the)f(screen,)i(then)e(redra)m(w)g(the)h(curren)m(t)f(line,)i(lea)m
+(ving)g(the)f(curren)m(t)f(line)h(at)g(the)630 1141 y(top)e(of)h(the)f
+(screen.)49 b(If)33 b(giv)m(en)h(a)g(n)m(umeric)f(argumen)m(t,)i(this)e
+(refreshes)f(the)i(curren)m(t)f(line)630 1251 y(without)d(clearing)i
+(the)f(screen.)150 1398 y Fs(redraw-current-line)25 b(\(\))630
+1508 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 1695 y Fi(1.4.2)63
+b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150
+1861 y Fs(accept-line)27 b(\(Newline)h(or)i(Return\))630
+1970 y Ft(Accept)h(the)g(line)f(regardless)h(of)f(where)g(the)g(cursor)
+f(is.)41 b(If)30 b(this)g(line)g(is)h(non-empt)m(y)-8
+b(,)31 b(y)m(ou)630 2080 y(can)36 b(add)f(it)i(to)f(the)g(history)g
+(list)h(using)e Fs(add_history\(\))p Ft(.)54 b(If)35
+b(this)h(line)g(is)g(a)g(mo)s(di\014ed)630 2189 y(history)30
+b(line,)h(then)f(restore)h(the)g(history)f(line)h(to)g(its)g(original)g
+(state.)150 2337 y Fs(previous-history)26 b(\(C-p\))630
+2446 y Ft(Mo)m(v)m(e)h(`bac)m(k')f(through)f(the)g(history)g(list,)i
+(fetc)m(hing)f(the)f(previous)f(command.)39 b(This)24
+b(ma)m(y)630 2556 y(also)31 b(b)s(e)f(b)s(ound)e(to)j(the)g(up)e(arro)m
+(w)i(k)m(ey)g(on)f(some)h(k)m(eyb)s(oards.)150 2703 y
+Fs(next-history)c(\(C-n\))630 2813 y Ft(Mo)m(v)m(e)k(`forw)m(ard')d
+(through)g(the)h(history)f(list,)i(fetc)m(hing)f(the)g(next)g(command.)
+40 b(This)27 b(ma)m(y)630 2922 y(also)k(b)s(e)f(b)s(ound)e(to)j(the)g
+(do)m(wn)f(arro)m(w)g(k)m(ey)i(on)e(some)h(k)m(eyb)s(oards.)150
+3069 y Fs(beginning-of-history)25 b(\(M-<\))630 3179
 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 2374 y Fs(end-of-history)26 b(\(M->\))630 2484
+b(.)150 3326 y Fs(end-of-history)26 b(\(M->\))630 3436
 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
-2631 y Fs(reverse-search-history)24 b(\(C-r\))630 2741
+3583 y Fs(reverse-search-history)24 b(\(C-r\))630 3693
 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
-2850 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f
+3802 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f
 (incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f
-(region)630 2960 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5
-b(ates)33 b(the)d(mark.)150 3107 y Fs(forward-search-history)24
-b(\(C-s\))630 3217 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+(region)630 3912 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5
+b(ates)33 b(the)d(region.)150 4059 y Fs(forward-search-history)24
+b(\(C-s\))630 4169 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 3326 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38
+630 4278 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38
 b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37
-b(command)h(sets)h(the)630 3436 y(region)31 b(to)g(the)g(matc)m(hed)g
-(text)g(and)f(activ)-5 b(ates)33 b(the)d(mark.)150 3583
-y Fs(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-p\))630 3693 y Ft(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+b(command)h(sets)h(the)630 4388 y(region)31 b(to)g(the)g(matc)m(hed)g
+(text)g(and)f(activ)-5 b(ates)33 b(the)d(region.)150
+4535 y Fs(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-p\))630 4645 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 3802 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
+(his-)630 4754 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
-3912 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 4059 y Fs
+4864 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 5011 y Fs
 (non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-n\))630 4169 y Ft(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+b(\(M-n\))630 5121 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 4278 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
+630 5230 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
-4388 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 4535 y Fs
-(history-search-forward)24 b(\(\))630 4645 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 4754 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
-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 4974 y(command)d(is)h(un)m(b)s(ound.)150
-5121 y Fs(history-search-backward)24 b(\(\))630 5230
-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
-5340 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)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)630 299 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 408 y(command)d(is)h(un)m
-(b)s(ound.)150 566 y Fs(history-substring-search)o(-for)o(ward)24
-b(\(\))630 676 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 785 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 895 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 1005 y(is)e(un)m(b)s(ound.)150
-1162 y Fs(history-substring-search)o(-bac)o(kwar)o(d)24
-b(\(\))630 1272 y Ft(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h
+5340 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.)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
+(history-search-backward)24 b(\(\))630 408 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 518 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
+628 y(b)s(eginning)44 b(of)g(a)h(history)g(line.)83 b(This)44
+b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)84 b(By)44
+b(default,)630 737 y(this)32 b(command)h(is)f(un)m(b)s(ound,)f(but)h
+(ma)m(y)h(b)s(e)f(b)s(ound)e(to)j(the)g(P)m(age)h(Do)m(wn)f(k)m(ey)g
+(on)g(some)630 847 y(k)m(eyb)s(oards.)150 1029 y Fs
+(history-search-forward)24 b(\(\))630 1139 y Ft(Searc)m(h)f(forw)m(ard)
+e(through)h(the)h(history)f(for)g(the)g(string)h(of)f(c)m(haracters)i
+(b)s(et)m(w)m(een)f(the)f(start)630 1249 y(of)g(the)h(curren)m(t)f
+(line)g(and)g(the)g(p)s(oin)m(t.)38 b(The)22 b(searc)m(h)g(string)g(m)m
+(ust)g(matc)m(h)h(at)g(the)g(b)s(eginning)630 1358 y(of)33
+b(a)g(history)f(line.)48 b(This)32 b(is)h(a)g(non-incremen)m(tal)h
+(searc)m(h.)48 b(By)33 b(default,)h(this)e(command)630
+1468 y(is)e(un)m(b)s(ound,)e(but)i(ma)m(y)h(b)s(e)f(b)s(ound)e(to)j
+(the)g(P)m(age)h(Up)e(k)m(ey)h(on)f(some)h(k)m(eyb)s(oards.)150
+1650 y Fs(history-substring-search)o(-bac)o(kwar)o(d)24
+b(\(\))630 1760 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 1381 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h
+(the)630 1870 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 1491 y(in)i(a)h(history)g(line.)47 b(This)32
+(an)m(ywhere)630 1979 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 1601 y(is)e(un)m(b)s(ound.)150
-1758 y Fs(yank-nth-arg)d(\(M-C-y\))630 1868 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 1978 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 2087 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
-2197 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
-2306 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
-2416 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 2574 y Fs(yank-last-arg)d(\(M-.)i(or)h
-(M-_\))630 2683 y Ft(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)
+b(default,)h(this)e(command)630 2089 y(is)e(un)m(b)s(ound.)150
+2271 y Fs(history-substring-search)o(-for)o(ward)24 b(\(\))630
+2381 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
+2491 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 2600 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 2710 y(is)e(un)m(b)s(ound.)150 2892 y Fs(yank-nth-arg)d
+(\(M-C-y\))630 3002 y Ft(Insert)e(the)i(\014rst)e(argumen)m(t)h(to)h
+(the)f(previous)g(command)f(\(usually)h(the)g(second)g(w)m(ord)g(on)630
+3112 y(the)k(previous)g(line\))g(at)h(p)s(oin)m(t.)40
+b(With)31 b(an)f(argumen)m(t)g Fk(n)p Ft(,)g(insert)f(the)i
+Fk(n)p Ft(th)e(w)m(ord)g(from)h(the)630 3221 y(previous)c(command)h
+(\(the)h(w)m(ords)e(in)h(the)g(previous)f(command)h(b)s(egin)f(with)h
+(w)m(ord)g(0\).)40 b(A)630 3331 y(negativ)m(e)28 b(argumen)m(t)e
+(inserts)f(the)h Fk(n)p Ft(th)f(w)m(ord)g(from)g(the)h(end)f(of)h(the)g
+(previous)f(command.)630 3440 y(Once)32 b(the)f(argumen)m(t)h
+Fk(n)f Ft(is)h(computed,)g(this)f(uses)h(the)f(history)h(expansion)f
+(facilities)j(to)630 3550 y(extract)e(the)e Fk(n)p Ft(th)g(w)m(ord,)g
+(as)h(if)f(the)h(`)p Fs(!)p Fl(n)p Ft(')f(history)g(expansion)h(had)e
+(b)s(een)h(sp)s(eci\014ed.)150 3733 y Fs(yank-last-arg)d(\(M-.)i(or)h
+(M-_\))630 3842 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
-2793 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+3952 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 2902 y(Successiv)m(e)26 b(calls)g(to)f Fs(yank-last-arg)c
+Ft(.)630 4061 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 3012 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+(inserting)630 4171 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 3122 y(in)36 b(turn.)58 b(An)m(y)36
+(of)f(eac)m(h)h(line)630 4281 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 3231 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(calls)h(determines)630 4390 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 3341 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 3450 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 3560 y(sp)s(eci\014ed.)150 3718 y
-Fs(operate-and-get-next)e(\(C-o\))630 3827 y Ft(Accept)30
-b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g
-(application)h(as)e(if)g(a)h(newline)f(had)630 3937 y(b)s(een)22
-b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f
-(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4046
-y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f
-(supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630
-4156 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4314
-y Fs(fetch-history)d(\(\))630 4423 y Ft(With)e(a)f(n)m(umeric)g
-(argumen)m(t,)i(fetc)m(h)f(that)g(en)m(try)f(from)g(the)g(history)g
-(list)h(and)e(mak)m(e)i(it)g(the)630 4533 y(curren)m(t)30
-b(line.)41 b(Without)30 b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g
-(to)f(the)g(\014rst)f(en)m(try)h(in)g(the)g(history)630
-4643 y(list.)150 4840 y Fi(1.4.3)63 b(Commands)42 b(F)-10
-b(or)41 b(Changing)g(T)-10 b(ext)150 5011 y Fl(end-of-file)27
-b Fs(\(usually)h(C-d\))630 5121 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 5230
-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
-5340 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(.)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(delete-char)27
-b(\(C-d\))630 408 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 518 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 669 y Fs(backward-delete-char)25 b(\(Rubout\))630
-779 y Ft(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
+(switc)m(hes)h(the)630 4500 y(direction)23 b(through)e(the)i(history)f
+(\(bac)m(k)h(or)g(forw)m(ard\).)37 b(This)22 b(uses)g(the)g(history)g
+(expansion)630 4609 y(facilities)44 b(to)e(extract)g(the)g(last)g(w)m
+(ord,)i(as)e(if)f(the)g(`)p Fs(!$)p Ft(')h(history)f(expansion)g(had)g
+(b)s(een)630 4719 y(sp)s(eci\014ed.)150 4902 y Fs(operate-and-get-next)
+25 b(\(C-o\))630 5011 y Ft(Accept)30 b(the)g(curren)m(t)e(line)i(for)f
+(return)f(to)h(the)h(calling)g(application)h(as)e(if)g(a)h(newline)f
+(had)630 5121 y(b)s(een)22 b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)
+g(line)h(relativ)m(e)h(to)f(the)f(curren)m(t)g(line)h(from)f(the)g
+(history)630 5230 y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)
+m(t,)i(if)f(supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)
+f(use)630 5340 y(instead)g(of)f(the)h(curren)m(t)f(line.)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(fetch-history)27
+b(\(\))630 408 y Ft(With)e(a)f(n)m(umeric)g(argumen)m(t,)i(fetc)m(h)f
+(that)g(en)m(try)f(from)g(the)g(history)g(list)h(and)e(mak)m(e)i(it)g
+(the)630 518 y(curren)m(t)30 b(line.)41 b(Without)30
+b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g(to)f(the)g(\014rst)f(en)m
+(try)h(in)g(the)g(history)630 628 y(list.)150 835 y Fi(1.4.3)63
+b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150
+1011 y Fl(end-of-file)27 b Fs(\(usually)h(C-d\))630 1121
+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
+1230 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
+1340 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
+1507 y Fs(delete-char)e(\(C-d\))630 1617 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 1727
+y(as)i(the)f(tt)m(y)i Fm(eof)e Ft(c)m(haracter,)j(as)e
+Fl(C-d)e Ft(commonly)j(is,)f(see)g(ab)s(o)m(v)m(e)h(for)e(the)h
+(e\013ects.)55 b(This)630 1836 y(ma)m(y)31 b(also)g(b)s(e)f(b)s(ound)e
+(to)j(the)g(Delete)i(k)m(ey)e(on)f(some)h(k)m(eyb)s(oards.)150
+2004 y Fs(backward-delete-char)25 b(\(Rubout\))630 2113
+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
-889 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
-1040 y Fs(forward-backward-delete-)o(char)24 b(\(\))630
-1149 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
-1259 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
-1369 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
-1520 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1630
+2223 y(c)m(haracters,)h(sa)m(ving)f(them)g(on)f(the)h(kill)g(ring,)f
+(instead)h(of)f(deleting)i(them.)150 2391 y Fs
+(forward-backward-delete-)o(char)24 b(\(\))630 2500 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 2610
+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
+2719 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+2887 y Fs(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2997
 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
-1739 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)150
-1891 y Fs(tab-insert)e(\(M-TAB\))630 2000 y Ft(Insert)i(a)h(tab)f(c)m
-(haracter.)150 2151 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
-(\))630 2261 y Ft(Insert)g(y)m(ourself.)150 2412 y Fs
-(bracketed-paste-begin)25 b(\(\))630 2522 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
-2632 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 2741 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
-2851 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
-2960 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
-3070 y(commands.)630 3200 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h
-(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and)
-g(the)g(mark\))630 3310 y(to)j(the)g(inserted)f(text.)65
-b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Fk(active)i(mark)10
-b Ft(:)57 b(when)38 b(the)g(mark)630 3420 y(is)d(activ)m(e,)k(Readline)
-c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i
-(denote)g(the)630 3529 y(region.)150 3680 y Fs(transpose-chars)26
-b(\(C-t\))630 3790 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 3900 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 4009 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 4119 y(ha)m(v)m(e)32
-b(no)e(e\013ect.)150 4270 y Fs(transpose-words)c(\(M-t\))630
-4380 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 4489 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 4599 y(last)j(t)m(w)m(o)h(w)m
-(ords)e(on)g(the)h(line.)150 4750 y Fs(upcase-word)c(\(M-u\))630
-4860 y Ft(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
+3106 y(sequences)d(lik)m(e)g Fl(C-q)p Ft(,)f(for)g(example.)150
+3274 y Fs(tab-insert)e(\(M-TAB\))630 3383 y Ft(Insert)i(a)h(tab)f(c)m
+(haracter.)150 3551 y Fs(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
+(\))630 3661 y Ft(Insert)g(the)g(c)m(haracter)i(t)m(yp)s(ed.)150
+3828 y Fs(bracketed-paste-begin)25 b(\(\))630 3938 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 4047 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 4157 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 4267 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 4376 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 4486 y(commands.)630 4624 y(Brac)m(k)m(eted)38 b(paste)f(sets)f
+(the)h(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)
+f(and)g(the)g(mark\))630 4734 y(to)31 b(the)g(inserted)f(text.)42
+b(It)30 b(sets)h(the)f Fj(active)j(r)-5 b(e)g(gion)p
+Ft(.)150 4902 y Fs(transpose-chars)26 b(\(C-t\))630 5011
+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
+5121 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 5230 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 5340 y(ha)m(v)m(e)32 b(no)e(e\013ect.)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 Fs(transpose-words)26
+b(\(M-t\))630 408 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 518 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 628 y(last)j(t)m(w)m(o)h
+(w)m(ords)e(on)g(the)h(line.)150 797 y Fs(upcase-word)c(\(M-u\))630
+907 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
-4969 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 5121 y Fs(downcase-word)d(\(M-l\))630
-5230 y Ft(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+1016 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 1186 y Fs(downcase-word)d(\(M-l\))630
+1296 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 5340 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.)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(capitalize-word)26
-b(\(M-c\))630 408 y Ft(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(ercase)630 1405 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 1575 y Fs(capitalize-word)26
+b(\(M-c\))630 1684 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 518 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 678 y Fs(overwrite-mode)26
-b(\(\))630 788 y Ft(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+(capitalize)630 1794 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 1964 y Fs(overwrite-mode)26
+b(\(\))630 2073 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 897 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+h(switc)m(hes)630 2183 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 1007 y(insert)30 b(mo)s(de.)41
+(t,)i(switc)m(hes)e(to)630 2292 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 1116
+Fs(vi)f Ft(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 2402
 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
-1251 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
+2541 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
-1361 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
+2651 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
-1470 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 1605
-y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
-1805 y Fi(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
-1977 y Fs(kill-line)28 b(\(C-k\))630 2087 y Ft(Kill)k(the)f(text)i
-(from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44
-b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630
-2197 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h
-(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150
-2357 y Fs(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
-2466 y Ft(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g
-(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41
-b(a)630 2576 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50
-b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the)
-630 2685 y(curren)m(t)30 b(line.)150 2845 y Fs(unix-line-discard)c
-(\(C-u\))630 2955 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
-3115 y Fs(kill-whole-line)c(\(\))630 3225 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
-3334 y(this)30 b(is)h(un)m(b)s(ound.)150 3494 y Fs(kill-word)d(\(M-d\))
-630 3604 y Ft(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+2761 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 2900
+y(By)g(default,)g(this)g(command)f(is)h(un)m(b)s(ound,)d(but)i(ma)m(y)h
+(b)s(e)f(b)s(ound)e(to)k(the)f(Insert)f(k)m(ey)h(on)630
+3010 y(some)g(k)m(eyb)s(oards.)150 3219 y Fi(1.4.4)63
+b(Killing)42 b(And)e(Y)-10 b(anking)150 3396 y Fs(kill-line)28
+b(\(C-k\))630 3506 y Ft(Kill)e(the)h(text)g(from)e(p)s(oin)m(t)h(to)h
+(the)f(end)f(of)h(the)h(curren)m(t)e(line.)40 b(With)27
+b(a)f(negativ)m(e)i(n)m(umeric)630 3615 y(argumen)m(t,)j(kill)g(bac)m
+(kw)m(ard)g(from)f(the)g(cursor)g(to)h(the)g(b)s(eginning)e(of)i(the)g
+(line.)150 3785 y Fs(backward-kill-line)25 b(\(C-x)30
+b(Rubout\))630 3895 y Ft(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h
+(cursor)g(to)g(the)g(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70
+b(With)41 b(a)630 4004 y(negativ)m(e)31 b(n)m(umeric)e(argumen)m(t,)h
+(kill)g(forw)m(ard)f(from)f(the)i(cursor)e(to)i(the)f(end)g(of)g(the)g
+(line.)150 4174 y Fs(unix-line-discard)d(\(C-u\))630
+4283 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 4453
+y Fs(kill-whole-line)c(\(\))630 4562 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 4672 y(this)30
+b(is)h(un)m(b)s(ound.)150 4842 y Fs(kill-word)d(\(M-d\))630
+4951 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 3713 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+(the)g(end)630 5061 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 3874 y Fs(backward-kill-word)25 b(\(M-DEL\))630
-3983 y Ft(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+Ft(.)150 5230 y Fs(backward-kill-word)25 b(\(M-DEL\))630
+5340 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 4143 y Fs(shell-transpose-words)c
-(\(M-C-t\))630 4253 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 4362 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 4472 y(last)j(t)m(w)m(o)h
-(w)m(ords)d(on)i(the)f(line.)41 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h
-(the)h(same)f(as)h Fs(shell-forward-)630 4582 y(word)e
-Ft(and)h Fs(shell-backward-word)p Ft(.)150 4742 y Fs(unix-word-rubout)c
-(\(C-w\))630 4851 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 4961 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)
-f(kill-ring.)150 5121 y Fs(unix-filename-rubout)25 b(\(\))630
-5230 y Ft(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+Fs(backward-word)p Ft(.)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(unix-word-rubout)
+26 b(\(C-w\))630 408 y Ft(Kill)33 b(the)f(w)m(ord)g(b)s(ehind)f(p)s
+(oin)m(t,)i(using)f(white)g(space)h(as)f(a)h(w)m(ord)f(b)s(oundary)-8
+b(,)32 b(sa)m(ving)h(the)630 518 y(killed)e(text)g(on)g(the)f
+(kill-ring.)150 713 y Fs(unix-filename-rubout)25 b(\(\))630
+822 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
-5340 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.)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 Fs
-(delete-horizontal-space)24 b(\(\))630 408 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 564
-y Fs(kill-region)d(\(\))630 673 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 829 y Fs(copy-region-as-kill)25 b(\(\))630
-938 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 1048 y(By)31 b(default,)f(this)h(command)f(is)g(un)m
-(b)s(ound.)150 1203 y Fs(copy-backward-word)25 b(\(\))630
-1313 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 1422 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
-1578 y Fs(copy-forward-word)26 b(\(\))630 1687 y Ft(Cop)m(y)31
+932 y(w)m(ord)30 b(b)s(oundaries,)f(sa)m(ving)i(the)g(killed)g(text)g
+(on)g(the)f(kill-ring.)150 1126 y Fs(delete-horizontal-space)24
+b(\(\))630 1236 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
+1430 y Fs(kill-region)d(\(\))630 1540 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 1734 y Fs(copy-region-as-kill)25
+b(\(\))630 1844 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 1954 y(By)31 b(default,)f(this)h(command)
+f(is)g(un)m(b)s(ound.)150 2148 y Fs(copy-backward-word)25
+b(\(\))630 2258 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 2367 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
+2562 y Fs(copy-forward-word)26 b(\(\))630 2671 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
-1797 y(same)f(as)f Fs(forward-word)p Ft(.)38 b(By)30
+2781 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
-1952 y Fs(yank)f(\(C-y\))630 2062 y Ft(Y)-8 b(ank)31
+2975 y Fs(yank)f(\(C-y\))630 3085 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 2217 y Fs(yank-pop)d(\(M-y\))630 2327
+(p)s(oin)m(t.)150 3279 y Fs(yank-pop)d(\(M-y\))630 3389
 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
-2436 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p
-Ft(.)150 2631 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
-(ts)150 2801 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 2911 y Ft(Add)d(this)h(digit)g
+3499 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p
+Ft(.)150 3733 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 3922 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 4032 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 3020 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i
-(argumen)m(t.)150 3176 y Fs(universal-argument)25 b(\(\))630
-3285 y Ft(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
+(new)f(argumen)m(t.)630 4142 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 3395 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
+(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
-3505 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
+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
-3614 y Ft(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+4774 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
-3724 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
+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
-3833 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+4994 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
-3943 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+5103 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
-4053 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+5213 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
-4162 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 4357 y Fi(1.4.6)63
+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: 24 28
+TeXDict begin 24 27 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(24)150 299 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 4527 y Fs(complete)28 b(\(TAB\))630
-4637 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
-4746 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
+b(Y)-10 b(ou)150 468 y Fs(complete)28 b(\(TAB\))630 578
+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
+687 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
-4902 y Fs(possible-completions)25 b(\(M-?\))630 5011
-Ft(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
+841 y Fs(possible-completions)25 b(\(M-?\))630 951 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
-5121 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
+1061 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 5230 y Fs(completion-display-width)o
+b(alue)33 b(of)630 1170 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 5340 y(or)30 b(the)h(screen)f
-(width,)g(in)g(that)h(order.)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
-(insert-completions)25 b(\(M-*\))630 408 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 518
-y(b)m(y)g Fs(possible-completions)p Ft(.)150 673 y Fs(menu-complete)d
-(\(\))630 783 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 893 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
-1002 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
-1112 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
-1221 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 1331 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 1441 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 1550 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
-(y)i(default.)150 1705 y Fs(menu-complete-backward)24
-b(\(\))630 1815 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 1925 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
-2080 y Fs(delete-char-or-list)25 b(\(\))630 2190 y Ft(Deletes)41
+b(ariable)38 b Fs(COLUMNS)p Ft(,)630 1280 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 1434 y Fs(insert-completions)25
+b(\(M-*\))630 1544 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 1653 y(b)m(y)g Fs(possible-completions)p
+Ft(,)25 b(separated)31 b(b)m(y)f(a)h(space.)150 1807
+y Fs(menu-complete)c(\(\))630 1917 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 2026 y(from)41
+b(the)h(list)g(of)g(p)s(ossible)f(completions.)76 b(Rep)s(eatedly)42
+b(executing)h Fs(menu-complete)630 2136 y Ft(steps)28
+b(through)e(the)i(list)h(of)e(p)s(ossible)g(completions,)j(inserting)e
+(eac)m(h)g(matc)m(h)h(in)e(turn.)39 b(A)m(t)630 2246
+y(the)h(end)f(of)h(the)f(list)i(of)f(completions,)j Fs(menu-complete)36
+b Ft(rings)j(the)h(b)s(ell)f(\(sub)5 b(ject)40 b(to)630
+2355 y(the)d(setting)h(of)e Fs(bell-style)p Ft(\))e(and)i(restores)h
+(the)g(original)h(text.)60 b(An)37 b(argumen)m(t)g(of)f
+Fk(n)630 2465 y Ft(mo)m(v)m(es)i Fk(n)e Ft(p)s(ositions)g(forw)m(ard)g
+(in)g(the)h(list)g(of)f(matc)m(hes;)41 b(a)c(negativ)m(e)i(argumen)m(t)
+e(mo)m(v)m(es)630 2574 y(bac)m(kw)m(ard)29 b(through)f(the)h(list.)41
+b(This)28 b(command)g(is)h(in)m(tended)g(to)g(b)s(e)f(b)s(ound)f(to)i
+Fs(TAB)p Ft(,)g(but)630 2684 y(is)h(un)m(b)s(ound)e(b)m(y)i(default.)
+150 2838 y Fs(menu-complete-backward)24 b(\(\))630 2948
+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
+3057 y(completions,)j(as)e(if)g Fs(menu-complete)c Ft(had)j(b)s(een)h
+(giv)m(en)g(a)g(negativ)m(e)i(argumen)m(t.)58 b(This)630
+3167 y(command)30 b(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150
+3321 y Fs(export-completions)25 b(\(\))630 3431 y Ft(P)m(erform)43
+b(completion)h(on)e(the)h(w)m(ord)g(b)s(efore)f(p)s(oin)m(t)h(as)g
+(describ)s(ed)f(ab)s(o)m(v)m(e)i(and)e(write)630 3540
+y(the)28 b(list)h(of)f(p)s(ossible)f(completions)j(to)e(Readline's)h
+(output)f(stream)g(using)f(the)h(follo)m(wing)630 3650
+y(format,)j(writing)f(information)h(on)f(separate)i(lines:)705
+3782 y Fq(\017)60 b Ft(the)31 b(n)m(um)m(b)s(er)e(of)h(matc)m(hes)i
+Fk(N)10 b Ft(;)705 3914 y Fq(\017)60 b Ft(the)31 b(w)m(ord)f(b)s(eing)g
+(completed;)705 4045 y Fq(\017)60 b Fk(S)5 b Ft(:)p Fk(E)p
+Ft(,)24 b(where)e Fk(S)27 b Ft(and)22 b Fk(E)28 b Ft(are)23
+b(the)f(start)h(and)f(end)g(o\013sets)h(of)g(the)f(w)m(ord)h(in)f(the)g
+(Readline)810 4155 y(line)31 b(bu\013er;)e(then)705 4287
+y Fq(\017)60 b Ft(eac)m(h)32 b(matc)m(h,)f(one)g(p)s(er)e(line)630
+4441 y(If)j(there)h(are)g(no)f(matc)m(hes,)j(the)e(\014rst)e(line)i
+(will)g(b)s(e)f(\\0",)j(and)d(this)g(command)g(do)s(es)h(not)630
+4551 y(prin)m(t)42 b(an)m(y)h(output)e(after)i(the)g
+Fk(S)5 b Ft(:)p Fk(E)p Ft(.)76 b(If)42 b(there)g(is)h(only)f(a)h
+(single)g(matc)m(h,)j(this)c(prin)m(ts)630 4660 y(a)f(single)g(line)g
+(con)m(taining)h(it.)72 b(If)40 b(there)h(is)f(more)h(than)f(one)h
+(matc)m(h,)j(this)d(prin)m(ts)f(the)630 4770 y(common)31
+b(pre\014x)f(of)g(the)h(matc)m(hes,)h(whic)m(h)f(ma)m(y)g(b)s(e)f(empt)
+m(y)-8 b(,)32 b(on)f(the)g(\014rst)e(line)j(after)f(the)630
+4879 y Fk(S)5 b Ft(:)p Fk(E)p Ft(,)28 b(then)e(the)i(matc)m(hes)g(on)f
+(subsequen)m(t)f(lines.)40 b(In)26 b(this)h(case,)i Fk(N)37
+b Ft(will)27 b(include)g(the)g(\014rst)630 4989 y(line)k(with)f(the)g
+(common)h(pre\014x.)630 5121 y(The)41 b(user)g(or)g(application)i
+(should)d(b)s(e)h(able)h(to)g(accommo)s(date)h(the)f(p)s(ossibilit)m(y)
+g(of)g(a)630 5230 y(blank)25 b(line.)39 b(The)25 b(in)m(ten)m(t)i(is)e
+(that)h(the)g(user)e(or)i(application)g(reads)f Fk(N)36
+b Ft(lines)25 b(after)h(the)g(line)630 5340 y(con)m(taining)j
+Fk(S)5 b Ft(:)p Fk(E)33 b Ft(to)28 b(obtain)g(the)g(matc)m(h)g(list.)41
+b(This)26 b(command)i(is)f(un)m(b)s(ound)e(b)m(y)i(default.)p
+eop end
+%%Page: 25 29
+TeXDict begin 25 28 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(25)150 299 y Fs
+(delete-char-or-list)25 b(\(\))630 408 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 2299 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 2409
-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 2604 y Fi(1.4.7)63 b(Keyb)s(oard)41
-b(Macros)150 2774 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630
-2883 y Ft(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
+(eginning)e(or)h(end)f(of)h(the)630 518 y(line)49 b(\(lik)m(e)g
+Fs(delete-char)p Ft(\).)92 b(A)m(t)49 b(the)f(end)g(of)g(the)g(line,)54
+b(it)48 b(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)630
+628 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 813 y Fi(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 978 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630
+1088 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
-3039 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 3148 y Ft(Stop)e(sa)m(ving)h
+1233 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 1343 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 3258
-y(de\014nition.)150 3413 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630
-3523 y Ft(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h
+(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 1452
+y(de\014nition.)150 1598 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630
+1707 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
-3632 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 3788 y Fs(print-last-kbd-macro)25 b(\(\))630
-3897 y Ft(Prin)m(t)30 b(the)g(last)h(k)m(eyb)s(oard)f(macro)h
+1817 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 1962 y Fs(print-last-kbd-macro)25 b(\(\))630
+2072 y Ft(Prin)m(t)30 b(the)g(last)h(k)m(eyb)s(oard)f(macro)h
 (de\014ned)e(in)h(a)g(format)h(suitable)g(for)f(the)g
-Fj(inputrc)35 b Ft(\014le.)150 4092 y Fi(1.4.8)63 b(Some)41
-b(Miscellaneous)i(Commands)150 4262 y Fs(re-read-init-file)26
-b(\(C-x)j(C-r\))630 4372 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 4481 y(assignmen)m(ts)31
-b(found)e(there.)150 4637 y Fs(abort)g(\(C-g\))630 4746
+Fk(inputrc)35 b Ft(\014le.)150 2257 y Fi(1.4.8)63 b(Some)41
+b(Miscellaneous)i(Commands)150 2422 y Fs(re-read-init-file)26
+b(\(C-x)j(C-r\))630 2532 y Ft(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)
+f(the)g Fk(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 2642 y(assignmen)m(ts)31
+b(found)e(there.)150 2787 y Fs(abort)g(\(C-g\))630 2897
 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
-4856 y(setting)j(of)g Fs(bell-style)p Ft(\).)150 5011
+3006 y(setting)j(of)g Fs(bell-style)p Ft(\).)150 3152
 y Fs(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fl(x)p
-Fs(,)g(...)o(\))630 5121 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 5230 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w)
+Fs(,)g(...)o(\))630 3261 y Ft(If)35 b(the)g(meta\014ed)g(c)m(haracter)i
+Fk(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 3371 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 5340 y Fj(x)37 b Ft(is)30 b(already)h(lo)m(w)m
-(er)h(case.)p eop end
-%%Page: 24 28
-TeXDict begin 24 27 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fs(prefix-meta)27
-b(\(ESC\))630 408 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 518 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 704 y Fs(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630
-814 y Ft(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s(ered)f(for)g
-(eac)m(h)i(line.)150 1000 y Fs(revert-line)27 b(\(M-r\))630
-1110 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 1219 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f
-(b)s(eginning.)150 1406 y Fs(tilde-expand)d(\(M-~\))630
-1515 y Ft(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
-(ord.)150 1702 y Fs(set-mark)d(\(C-@\))630 1811 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
-1921 y(to)f(that)g(p)s(osition.)150 2107 y Fs(exchange-point-and-mark)
-24 b(\(C-x)29 b(C-x\))630 2217 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 2326 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
-2513 y Fs(character-search)26 b(\(C-]\))630 2622 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 2732 y(A)30
-b(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
-(ccurrences.)150 2918 y Fs(character-search-backwar)o(d)24
-b(\(M-C-]\))630 3028 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 3137 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(argumen)m(t)f
-(searc)m(hes)g(for)g(subsequen)m(t)e(o)s(ccurrences.)150
-3324 y Fs(skip-csi-sequence)d(\(\))630 3433 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 3543 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 3652 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 3762 y(ducing)29
-b(suc)m(h)g(sequences)g(will)h(ha)m(v)m(e)h(no)e(e\013ect)i(unless)d
-(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630 3871 y(command,)j
-(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 3981 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
-4167 y Fs(insert-comment)26 b(\(M-#\))630 4277 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 4387 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,)630 4496 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 4606 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 4715
-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 4825
-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 5011 y Fs(dump-functions)d
-(\(\))630 5121 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
-5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(unde\014ned)e(if)630 3481 y Fk(x)37 b Ft(is)30 b(already)h(lo)m(w)m
+(er)h(case.)150 3626 y Fs(prefix-meta)27 b(\(ESC\))630
+3736 y Ft(Metafy)32 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)40
+b(T)m(yping)30 b(`)p Fs(ESC)g(f)p Ft(')g(is)h(equiv)-5
+b(alen)m(t)31 b(to)h(t)m(yping)e Fl(M-f)p Ft(.)150 3881
+y Fs(undo)f(\(C-_)g(or)h(C-x)g(C-u\))630 3991 y Ft(Incremen)m(tal)h
+(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
+4136 y Fs(revert-line)27 b(\(M-r\))630 4246 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
+4355 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(initial)i
+(state.)150 4501 y Fs(tilde-expand)27 b(\(M-~\))630 4611
+y Ft(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)
+150 4756 y Fs(set-mark)d(\(C-@\))630 4866 y Ft(Set)k(the)g(mark)f(to)h
+(the)g(p)s(oin)m(t.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
+(supplied,)f(set)h(the)g(mark)f(to)630 4975 y(that)g(p)s(osition.)150
+5121 y Fs(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+5230 y Ft(Sw)m(ap)38 b(the)g(p)s(oin)m(t)h(with)f(the)g(mark.)65
+b(Set)38 b(the)h(curren)m(t)f(cursor)g(p)s(osition)g(to)h(the)g(sa)m(v)
+m(ed)630 5340 y(p)s(osition,)31 b(then)f(set)h(the)f(mark)g(to)h(the)g
+(old)g(cursor)e(p)s(osition.)p eop end
+%%Page: 26 30
+TeXDict begin 26 29 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(26)150 299 y Fs(character-search)
+26 b(\(C-]\))630 408 y Ft(Read)33 b(a)h(c)m(haracter)g(and)e(mo)m(v)m
+(e)j(p)s(oin)m(t)e(to)h(the)f(next)g(o)s(ccurrence)g(of)g(that)h(c)m
+(haracter.)50 b(A)630 518 y(negativ)m(e)33 b(argumen)m(t)d(searc)m(hes)
+i(for)e(previous)g(o)s(ccurrences.)150 687 y Fs
+(character-search-backwar)o(d)24 b(\(M-C-]\))630 796
+y Ft(Read)30 b(a)g(c)m(haracter)h(and)e(mo)m(v)m(e)i(p)s(oin)m(t)e(to)i
+(the)e(previous)g(o)s(ccurrence)h(of)g(that)g(c)m(haracter.)630
+906 y(A)g(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(subsequen)m
+(t)g(o)s(ccurrences.)150 1074 y Fs(skip-csi-sequence)c(\(\))630
+1184 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
+1293 y(for)i(k)m(eys)g(lik)m(e)h(Home)g(and)e(End.)39
+b(CSI)29 b(sequences)h(b)s(egin)f(with)h(a)g(Con)m(trol)h(Sequence)e
+(In-)630 1403 y(dicator)e(\(CSI\),)f(usually)f Fl(ESC)30
+b([)p Ft(.)38 b(If)26 b(this)g(sequence)g(is)g(b)s(ound)d(to)k
+Fs("\\)p Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro)s(ducing)630
+1513 y(CSI)33 b(sequences)h(ha)m(v)m(e)h(no)f(e\013ect)h(unless)e
+(explicitly)j(b)s(ound)c(to)i(a)g(Readline)h(command,)630
+1622 y(instead)27 b(of)f(inserting)h(stra)m(y)f(c)m(haracters)i(in)m
+(to)g(the)e(editing)h(bu\013er.)38 b(This)26 b(is)g(un)m(b)s(ound)e(b)m
+(y)630 1732 y(default,)31 b(but)e(usually)i(b)s(ound)d(to)j
+Fl(ESC)e([)p Ft(.)150 1900 y Fs(insert-comment)d(\(M-#\))630
+2010 y Ft(Without)34 b(a)g(n)m(umeric)g(argumen)m(t,)h(insert)f(the)f
+(v)-5 b(alue)35 b(of)e(the)h Fs(comment-begin)c Ft(v)-5
+b(ariable)630 2119 y(at)38 b(the)g(b)s(eginning)f(of)h(the)f(curren)m
+(t)h(line.)63 b(If)37 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)g
+(this)630 2229 y(command)i(acts)h(as)f(a)g(toggle:)62
+b(if)40 b(the)g(c)m(haracters)i(at)e(the)g(b)s(eginning)g(of)g(the)g
+(line)g(do)630 2339 y(not)35 b(matc)m(h)g(the)g(v)-5
+b(alue)35 b(of)f Fs(comment-begin)p Ft(,)f(insert)h(the)h(v)-5
+b(alue;)37 b(otherwise)e(delete)h(the)630 2448 y(c)m(haracters)28
+b(in)f Fs(comment-begin)c Ft(from)j(the)h(b)s(eginning)f(of)h(the)g
+(line.)40 b(In)26 b(either)h(case,)i(the)630 2558 y(line)i(is)f
+(accepted)i(as)e(if)h(a)g(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150
+2726 y Fs(dump-functions)d(\(\))630 2836 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 2946 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 3055 y(it)f(can)g(b)s(e)e(made)i
+(part)f(of)g(an)h Fk(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
+3224 y Fs(dump-variables)26 b(\(\))630 3333 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
+3443 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
-5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fj(inputrc)k
+3552 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fk(inputrc)k
 Ft(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
-(default.)p eop end
-%%Page: 25 29
-TeXDict begin 25 28 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(25)150 299 y Fs(dump-variables)26
-b(\(\))630 408 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 518 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 628 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 787 y Fs(dump-macros)c(\(\))630
-897 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
-1006 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
-1116 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 1225 y(default.)150 1385 y Fs(emacs-editing-mode)e(\(C-e\))
-630 1494 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
-1654 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 1763 y Ft(When)k(in)g
+(default.)150 3721 y Fs(dump-macros)c(\(\))630 3830 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
+3940 y(output)e(to)h(the)f(Readline)h(output)f(stream.)46
+b(If)32 b(a)g(n)m(umeric)g(argumen)m(t)h(is)f(supplied,)g(the)630
+4050 y(output)g(is)f(formatted)i(in)f(suc)m(h)f(a)h(w)m(a)m(y)h(that)g
+(it)f(can)g(b)s(e)g(made)g(part)f(of)h(an)g Fk(inputrc)37
+b Ft(\014le.)630 4159 y(This)30 b(command)g(is)g(un)m(b)s(ound)e(b)m(y)
+i(default.)150 4328 y Fs(execute-named-command)25 b(\(M-x\))630
+4437 y Ft(Read)g(a)h(bindable)f(Readline)g(command)g(name)h(from)e(the)
+i(input)e(and)h(execute)h(the)g(func-)630 4547 y(tion)g(to)h(whic)m(h)f
+(it's)g(b)s(ound,)f(as)h(if)g(the)g(k)m(ey)h(sequence)f(to)h(whic)m(h)e
+(it)i(w)m(as)f(b)s(ound)e(app)s(eared)630 4657 y(in)37
+b(the)h(input.)61 b(If)37 b(this)h(function)f(is)g(supplied)g(with)g(a)
+h(n)m(umeric)f(argumen)m(t,)j(it)e(passes)630 4766 y(that)31
+b(argumen)m(t)g(to)g(the)f(function)h(it)f(executes.)150
+4935 y Fs(emacs-editing-mode)25 b(\(C-e\))630 5044 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
+5213 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 5322 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 2004 y Fr(1.5)68 b(Readline)47
-b(vi)e(Mo)t(de)150 2164 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
-2273 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
+Fs(vi)f Ft(editing)h(mo)s(de.)p eop end
+%%Page: 27 31
+TeXDict begin 27 30 bop 150 -116 a Ft(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(27)150 299 y Fr(1.5)68
+b(Readline)47 b(vi)e(Mo)t(de)150 458 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
+568 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 2383 y(the)e Fm(posix)e Ft(standard.)275
-2517 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 2627 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 2736 y Ft(mo)s(de\).)k(The)30
-b(Readline)h(default)f(is)g Fs(emacs)f Ft(mo)s(de.)275
-2871 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 2980 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
-3090 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 3200 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: 26 30
-TeXDict begin 26 29 bop 3659 -116 a Ft(26)150 299 y Fp(2)80
+(eci\014ed)f(in)150 677 y(the)e Fs(sh)e Ft(description)i(in)f(the)g
+Fm(posix)g Ft(standard.)275 812 y(In)e(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
+922 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 1031 y Ft(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g
+Fs(emacs)f Ft(mo)s(de.)275 1166 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 1275 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 1385 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 1494 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: 28 32
+TeXDict begin 28 31 bop 3659 -116 a Ft(28)150 299 y Fp(2)80
 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
@@ -8519,2524 +8679,2669 @@ b(c)m(hapter)i(describ)s(es)e(the)h(in)m(terface)h(b)s(et)m(w)m(een)g
 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 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
-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 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
-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 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 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 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
+Ft(.)63 b(F)-8 b(or)39 b(suc)m(h)150 1386 y(programs,)33
+b(the)f(default)g(b)s(eha)m(vior)h(of)f(Readline)h(is)f(su\016cien)m
+(t.)47 b(This)31 b(section)j(describ)s(es)d(ho)m(w)h(to)h(use)150
+1496 y(Readline)e(in)f(the)h(simplest)f(w)m(a)m(y)i(p)s(ossible,)e(p)s
+(erhaps)e(to)j(replace)h(calls)f(in)f(y)m(our)h(co)s(de)f(to)h
+Fs(fgets\(\))p Ft(.)275 1633 y(The)38 b(function)g Fs(readline\(\))e
+Ft(prin)m(ts)i(a)i(prompt)d Fk(prompt)j Ft(and)e(then)h(reads)f(and)g
+(returns)g(a)h(sin-)150 1743 y(gle)i(line)f(of)g(text)h(from)e(the)h
+(user.)68 b(Since)40 b(it's)g(p)s(ossible)g(to)g(en)m(ter)h(c)m
+(haracters)g(in)m(to)g(the)f(line)g(while)150 1852 y(quoting)32
+b(them)g(to)g(disable)g(an)m(y)g(Readline)g(editing)g(function)g(they)f
+(migh)m(t)i(normally)f(ha)m(v)m(e,)h(this)f(line)150
+1962 y(ma)m(y)41 b(include)f(em)m(b)s(edded)g(newlines)g(and)g(other)g
+(sp)s(ecial)h(c)m(haracters.)73 b(If)40 b Fk(prompt)h
+Ft(is)g Fs(NULL)e Ft(or)i(the)150 2072 y(empt)m(y)34
+b(string,)h Fs(readline\(\))30 b Ft(do)s(es)j(not)h(displa)m(y)g(a)g
+(prompt.)49 b(The)33 b(line)h Fs(readline\(\))d Ft(returns)h(is)i(al-)
+150 2181 y(lo)s(cated)d(with)f Fs(malloc\(\))p Ft(;)e(the)i(caller)h
+(should)e Fs(free\(\))f Ft(the)i(line)g(when)f(it)i(has)e(\014nished)g
+(with)g(it.)41 b(The)150 2291 y(declaration)32 b(for)e
+Fs(readline)e Ft(in)i(ANSI)g(C)g(is)390 2429 y Fs(char)47
+b(*readline)e(\(const)h(char)h(*)p Fl(prompt)p Fs(\);)150
+2566 y Ft(So,)31 b(one)f(migh)m(t)h(sa)m(y)390 2704 y
+Fs(char)47 b(*line)f(=)h(readline)f(\("Enter)g(a)h(line:)g("\);)150
+2842 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 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 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
-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
+(newline)g(remo)m(v)m(ed,)150 2951 y(so)35 b(only)f(the)h(text)g
+(remains.)53 b(This)33 b(means)h(that)h(lines)g(consisting)g(of)g(a)f
+(newline)h(return)e(the)i(empt)m(y)150 3061 y(string.)275
+3199 y(If)25 b(Readline)h(encoun)m(ters)h(an)e Fs(EOF)g
+Ft(while)h(reading)g(the)g(line,)h(and)e(the)h(line)h(is)e(empt)m(y)i
+(at)f(that)h(p)s(oin)m(t,)150 3308 y(then)34 b Fs(readline\(\))e
+Ft(returns)h Fs(\(char)c(*\)NULL)p Ft(.)52 b(Otherwise,)36
+b(the)e(line)h(is)g(ended)f(just)g(as)h(if)f(a)h(newline)150
+3418 y(had)30 b(b)s(een)f(t)m(yp)s(ed.)275 3556 y(Readline)22
+b(p)s(erforms)e(some)j(expansion)e(on)h(the)g Fk(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(40\))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)
+b(See)150 3665 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(42\))g(for)f
+(additional)150 3775 y(details,)41 b(esp)s(ecially)f(if)e
+Fk(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 3884 y(space)31 b(when)e(displa)m
+(y)m(ed.)275 4022 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
+Fs(C-p)f Ft(for)h(example\),)i(y)m(ou)e(m)m(ust)150 4132
 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
+g(a)m(w)m(a)m(y)h(in)e(a)h Fk(history)38 b Ft(list)31
+b(of)g(suc)m(h)f(lines.)390 4269 y Fs(add_history)45
+b(\(line\);)150 4407 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 4216 y(It)f(is)g(preferable)g(to)i(a)m(v)m(oid)f(sa)m(ving)h
+(ual.)275 4545 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 4326 y(burning)28 b(need)h(to)i(reuse)e(a)
+(rarely)i(ha)m(v)m(e)h(a)150 4654 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 4435 y Fs(gets\(\))f
+g(replaces)i(the)f(standard)150 4764 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
-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: 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)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 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
-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
-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 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 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 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
-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
+4902 y Fs(/*)47 b(A)h(static)e(variable)f(for)i(holding)f(the)h(line.)f
+(*/)390 5011 y(static)g(char)h(*line_read)e(=)i(\(char)g(*\)NULL;)390
+5230 y(/*)g(Read)g(a)g(string,)f(and)h(return)f(a)i(pointer)d(to)j(it.)
+533 5340 y(Returns)e(NULL)h(on)g(EOF.)f(*/)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)390
+299 y Fs(char)47 b(*)390 408 y(rl_gets)f(\(\))390 518
+y({)485 628 y(/*)i(If)f(the)g(buffer)f(has)h(already)f(been)g
+(allocated,)629 737 y(return)g(the)h(memory)f(to)h(the)g(free)f(pool.)h
+(*/)485 847 y(if)h(\(line_read\))581 956 y({)676 1066
+y(free)f(\(line_read\);)676 1176 y(line_read)f(=)h(\(char)f(*\)NULL;)
+581 1285 y(})485 1504 y(/*)i(Get)f(a)g(line)g(from)f(the)h(user.)g(*/)
+485 1614 y(line_read)f(=)h(readline)f(\(""\);)485 1833
+y(/*)i(If)f(the)g(line)f(has)h(any)g(text)g(in)g(it,)629
+1943 y(save)f(it)h(on)h(the)f(history.)e(*/)485 2052
+y(if)j(\(line_read)d(&&)i(*line_read\))581 2162 y(add_history)e
+(\(line_read\);)485 2381 y(return)i(\(line_read\);)390
+2491 y(})275 2622 y Ft(This)21 b(function)i(giv)m(es)h(the)f(user)e
+(the)i(default)g(b)s(eha)m(vior)g(of)g Fs(TAB)e Ft(completion:)39
+b(\014lename)22 b(completion.)150 2732 y(If)31 b(y)m(ou)g(do)g(not)g(w)
+m(an)m(t)h(Readline)g(to)f(complete)i(\014lenames,)e(y)m(ou)h(can)f(c)m
+(hange)h(the)f(binding)f(of)i(the)f Fs(TAB)150 2841 y
+Ft(k)m(ey)g(with)f Fs(rl_bind_key\(\))p Ft(.)390 2973
+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 3104 y(rl_bind_key\(\))29
+b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:)47 b Fk(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 3214 y Fk(function)39 b Ft(is)f(the)h(address)f(of)h
+(the)g(function)g(to)g(call)i(when)c Fk(k)m(ey)48 b Ft(is)39
+b(pressed.)65 b(Binding)38 b Fs(TAB)g Ft(to)i Fs(rl_)150
+3324 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
+Fk(k)m(ey)47 b Ft(is)39 b(not)g(a)g(v)-5 b(alid)150 3433
+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 3565 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
+3696 y Fs(rl_bind_key)45 b(\('\\t',)h(rl_insert\);)275
+3828 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 3663 y(tion)33 b(called)h Fs(initialize_readline\(\))27
+g(func-)150 3937 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 3773 y(suc)m(h)e(as)h(installing)g(custom)g
+(initializations,)150 4047 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
-(53\).)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
+(56\).)150 4282 y Fr(2.2)68 b(Custom)45 b(F)-11 b(unctions)150
+4441 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 4292 y(to)37 b(an)m(ticipate)i(the)e(needs)f(of)h(all)g
+(ossible)150 4551 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 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 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 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
-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 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 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 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)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)150
-299 y(on)35 b(the)g(installed)h(Readline)f(v)m(ersion.)56
+b(arious)36 b(functions)h(and)150 4660 y(v)-5 b(ariables)42
+b(de\014ned)f(within)g(the)h(Readline)h(library)e(whic)m(h)g(allo)m(w)j
+(a)e(program)f(to)i(add)e(customized)150 4770 y(functionalit)m(y)32
+b(to)f(Readline.)275 4902 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 5011 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 5121 y Fs(<readline/readline.h>)22
+b Ft(in)27 b(an)m(y)h(\014le)f(that)h(uses)f(Readline's)i(features.)40
+b(Since)27 b(some)h(of)g(the)g(de\014ni-)150 5230 y(tions)k(in)f
+Fs(readline.h)d Ft(use)j(the)h Fs(stdio)e Ft(library)-8
+b(,)31 b(the)h(program)f(should)f(include)i(the)f(\014le)g
+Fs(<stdio.h>)150 5340 y Ft(b)s(efore)f Fs(readline.h)p
+Ft(.)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)275
+299 y Fs(readline.h)27 b 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 408 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 518 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
+(the)h(ma)5 b(jor)35 b(and)150 628 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
+Fk(MMmm)p Ft(.)53 b Fk(MM)45 b Ft(is)34 b(the)g(t)m(w)m(o-digit)j(ma)5
+b(jor)150 737 y(v)m(ersion)29 b(n)m(um)m(b)s(er;)g Fk(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
+847 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 1078
+y Fi(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)150 1225
+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 1391 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 1238
+(easier)h(to)f(write)g(co)s(de)g(describing)150 1501
 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(alues.)275 1667 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 Fk(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
+1777 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
+(of)e(the)h(Readline)h(bindable)150 1886 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
+2053 y Fs(int)f(\(*func\)\(\);)150 2219 y Ft(or)h(the)h(ANSI-C)f(st)m
+(yle)i(declaration)275 2385 y Fs(int)d(\(*func\)\(int,)e(int\);)150
+2552 y Ft(w)m(e)k(ma)m(y)g(write)275 2718 y Fs(rl_command_func_t)25
+b(*func;)275 2884 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 3091
 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
+3201 y(typedef)g(char)i(*rl_compentry_func_t)24 b(\(const)29
+b(char)g(*,)h(int\);)150 3311 y(typedef)e(char)i
 (**rl_completion_func_t)24 b(\(const)29 b(char)g(*,)h(int,)f(int\);)150
-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
+3420 y(typedef)f(char)i(*rl_quote_func_t)c(\(char)i(*,)i(int,)f(char)h
+(*\);)150 3530 y(typedef)e(char)i(*rl_dequote_func_t)25
+b(\(char)k(*,)h(int\);)150 3639 y(typedef)e(int)i(rl_compignore_func_t)
+25 b(\(char)k(**\);)150 3749 y(typedef)f(void)i(rl_compdisp_func_t)25
+b(\(char)k(**,)g(int,)h(int\);)150 3859 y(typedef)e(void)i
+(rl_macro_print_func_t)24 b(\(const)29 b(char)g(*,)h(const)f(char)g(*,)
+h(int,)f(const)g(char)150 3968 y(*\);)150 4078 y(typedef)f(int)i
+(rl_hook_func_t)c(\(void\);)150 4187 y(typedef)i(int)i(rl_getc_func_t)c
+(\(FILE)j(*\);)150 4297 y(typedef)f(int)i(rl_linebuf_func_t)c(\(char)i
+(*,)i(int\);)150 4407 y(typedef)e(int)i(rl_intfunc_t)d(\(int\);)150
+4516 y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)150
+4626 y(typedef)h(int)i(rl_icpfunc_t)d(\(char)i(*\);)150
+4735 y(typedef)f(int)i(rl_icppfunc_t)d(\(char)i(**\);)150
+4845 y(typedef)f(void)i(rl_voidfunc_t)c(\(void\);)150
+4954 y(typedef)i(void)i(rl_vintfunc_t)c(\(int\);)150
+5064 y(typedef)i(void)i(rl_vcpfunc_t)d(\(char)i(*\);)150
+5174 y(typedef)f(void)i(rl_vcppfunc_t)c(\(char)j(**\);)150
+5340 y Ft(The)h Fs(rltypedefs.h)d Ft(\014le)j(has)g(more)h(do)s(cumen)m
+(tation)g(for)f(these)h(t)m(yp)s(es.)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)150
+299 y Fi(2.2.2)63 b(W)-10 b(riting)41 b(a)f(New)h(F)-10
+b(unction)150 446 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 4941 y(k)m(eyb)s(oard-in)m(v)m(ok)m(ed)f
+(v)m(en)m(tions)g(for)150 555 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 5051
-y(of)h(the)f(line)h(read)f(so)h(far.)275 5196 y(The)e(calling)j
+b(that)f(describ)s(e)g(the)g(curren)m(t)g(state)150 665
+y(of)h(the)f(line)h(read)f(so)h(far.)275 799 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
-5340 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))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)150
-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 541 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 650 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 760 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 870 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 979
-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 1089 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 1221 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 1331 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 1440 y(Readline)e(bindable)f(command)g(functions.)
-150 1677 y Fr(2.3)68 b(Readline)47 b(V)-11 b(ariables)150
-1836 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 2014 y([V)-8
+932 y Fs(int)47 b(foo)g(\(int)f(count,)h(int)f(key\))150
+1066 y Ft(where)35 b Fk(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 Fk(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
+1175 y(this)30 b(function.)275 1309 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 1418 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 1528 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 1637
+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 1747 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 1857 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 1990 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 2100 y(greater)45 b(than)f(zero)h(if)f(some)h(error)f(o)s
+(ccurs.)82 b(All)44 b(of)h(the)f(builtin)g(Readline)h(bindable)e
+(command)150 2209 y(functions)30 b(ob)s(ey)g(this)g(con)m(v)m(en)m
+(tion.)150 2448 y Fr(2.3)68 b(Readline)47 b(V)-11 b(ariables)150
+2608 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 2789 y([V)-8
 b(ariable])-3598 b Fh(char)54 b(*)e(rl_line_buffer)390
-2123 y Ft(This)30 b(is)i(the)f(line)g(gathered)h(so)f(far.)43
+2899 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 2233 y(but)k(see)h(Section)g(2.4.5)h([Allo)m
-(wing)h(Undoing],)f(page)f(39.)57 b(The)35 b(function)g
-Fs(rl_extend_line_)390 2342 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 2520 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_point)390 2630 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 2808 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(rl_end)390 2917 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 3027 y(of)j(the)f(line,)h
-Fs(rl_point)d Ft(and)i Fs(rl_end)f Ft(are)h(equal.)3371
-3204 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_mark)390
-3314 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 3424 y Fk(r)-5 b(e)g(gion)p
-Ft(.)3371 3601 y([V)d(ariable])-3598 b Fh(int)53 b(rl_done)390
-3711 y Ft(Setting)22 b(this)g(to)g(a)g(non-zero)g(v)-5
+(ts)i(of)e(the)g(line,)390 3008 y(but)k(see)h(Section)g(2.4.5)h([Allo)m
+(wing)h(Undoing],)f(page)f(41.)57 b(The)35 b(function)g
+Fs(rl_extend_line_)390 3118 y(buffer)29 b Ft(will)h(increase)i(the)e
+(memory)g(allo)s(cated)j(to)e Fs(rl_line_buffer)p Ft(.)3371
+3299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_point)390
+3409 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 Fj(p)-5
+b(oint)9 b Ft(\).)3371 3590 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_end)390 3700 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
+3809 y(of)j(the)f(line,)h Fs(rl_point)d Ft(and)i Fs(rl_end)f
+Ft(are)h(equal.)3371 3991 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_mark)390 4100 y Ft(The)36 b Fk(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
+4210 y Fj(r)-5 b(e)g(gion)p Ft(.)54 b(Some)35 b(Readline)g(commands)f
+(set)h(the)f(mark)h(as)f(part)h(of)f(op)s(erating;)k(users)33
+b(can)i(also)390 4320 y(set)c(the)f(mark)h(explicitly)-8
+b(.)3371 4501 y([V)g(ariable])-3598 b Fh(int)53 b(rl_done)390
+4611 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(.)390 3820 y(Readline)26 b(will)f(set)h(this)f(v)-5
+(immediately)-8 b(.)390 4720 y(Readline)26 b(will)f(set)h(this)f(v)-5
 b(ariable)26 b(when)e(it)i(has)f(read)g(a)g(k)m(ey)h(sequence)g(b)s
-(ound)d(to)j Fs(accept-line)390 3930 y Ft(and)k(is)g(ab)s(out)g(to)h
-(return)f(the)g(line)h(to)g(the)g(caller.)3371 4108 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(rl_eof_found)390 4217
+(ound)d(to)j Fs(accept-line)390 4830 y Ft(and)k(is)g(ab)s(out)g(to)h
+(return)f(the)g(line)h(to)g(the)g(caller.)3371 5011 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_eof_found)390 5121
 y Ft(Readline)28 b(will)g(set)g(this)f(v)-5 b(ariable)28
 b(when)e(it)i(has)f(read)g(an)h(EOF)f(c)m(haracter)i(\(e.g.,)h(the)d
-(stt)m(y)h(`)p Fs(EOF)p Ft(')390 4327 y(c)m(haracter\))42
-b(on)e(an)f(empt)m(y)i(line)f(or)g(encoun)m(tered)g(a)g(read)g(error)f
-(and)h(is)g(ab)s(out)f(to)i(return)e(a)390 4437 y(NULL)30
-b(line)h(to)g(the)g(caller.)3371 4614 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_num_chars_to_read)390 4724 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
-4833 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
-4943 y(to)31 b Fs(accept-line)p Ft(.)3371 5121 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390 5230
-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 5340 y(c)m(haracter)32
-b(in)m(to)f(the)g(input)e(stream.)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(int)53 b(rl_dispatching)390
-408 y Ft(Set)24 b(to)h(a)g(non-zero)g(v)-5 b(alue)24
+(stt)m(y)h(`)p Fs(EOF)p Ft(')390 5230 y(c)m(haracter\))k(on)f(an)f
+(empt)m(y)h(line)g(or)f(has)g(encoun)m(tered)h(a)g(read)f(error)g(or)h
+(EOF)f(and)g(is)g(ab)s(out)g(to)390 5340 y(return)f(a)i(NULL)f(line)h
+(to)g(the)g(caller.)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)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_num_chars_to_read)390
+408 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 518 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 628 y(to)31 b Fs(accept-line)p Ft(.)3371
+810 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_pending_input)390
+920 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
+1029 y(c)m(haracter)32 b(in)m(to)f(the)g(input)e(stream.)3371
+1212 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_dispatching)390
+1322 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 518 y(Application)37
+(binding;)g(zero)g(otherwise.)390 1431 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 628 y(b)m(y)30
-b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)3371 835
+h(w)m(ere)g(called)h(directly)f(or)390 1541 y(b)m(y)30
+b(Readline's)h(dispatc)m(hing)g(mec)m(hanism.)3371 1724
 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_erase_empty_line)390
-944 y Ft(Setting)47 b(this)e(to)i(a)f(non-zero)h(v)-5
+1833 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 1054 y(line,)f(including)c(an)m(y)g(prompt,)j(an)m(y)d(time)h
+m(t)390 1943 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 1163 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 1273 y(line.)3371 1480 y([V)-8 b(ariable])-3598
-b Fh(char)54 b(*)e(rl_prompt)390 1590 y Ft(The)26 b(prompt)f(Readline)i
+390 2052 y(an)31 b(otherwise-empt)m(y)h(line.)44 b(This)30
+b(mo)m(v)m(es)j(the)e(cursor)g(to)h(the)f(b)s(eginning)f(of)i(the)f
+(newly-blank)390 2162 y(line.)3371 2345 y([V)-8 b(ariable])-3598
+b Fh(char)54 b(*)e(rl_prompt)390 2454 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 1699 y(not)h(b)s(e)f
+Fs(readline\(\))p Ft(,)d(and)i(should)390 2564 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 1809
-y(pla)m(y],)i(page)h(40\))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 2016 y([V)-8 b(ariable])-3598 b Fh(char)54
-b(*)e(rl_display_prompt)390 2125 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 2125 28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390
-2235 y(b)s(e)j(c)m(hanged)g(temp)s(orarily)h(b)m(y)f(functions)g(that)g
+Ft(function)j(\(see)i(Section)g(2.4.6)h([Redis-)390 2673
+y(pla)m(y],)37 b(page)e(42\))h(ma)m(y)f(b)s(e)f(used)f(to)j(mo)s(dify)d
+(the)i(prompt)f(string)g(after)h(calling)h Fs(readline\(\))p
+Ft(.)390 2783 y(Readline)30 b(p)s(erforms)d(some)j(prompt)e(expansions)
+h(and)f(analyzes)i(the)g(prompt)e(for)h(line)g(breaks,)390
+2892 y(so)i Fs(rl_set_prompt\(\))26 b Ft(is)k(preferred.)3371
+3075 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_display_prompt)390
+3185 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 Fk(rl)p
+3031 3185 28 4 v 40 w(prompt)p Ft(,)f(but)g(ma)m(y)390
+3294 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
-2345 y(suc)m(h)30 b(as)h(incremen)m(tal)g(searc)m(h.)3371
-2552 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390
-2661 y Ft(If)36 b(an)g(application)i(wishes)d(to)i(displa)m(y)g(the)f
+3404 y(suc)m(h)30 b(as)h(incremen)m(tal)g(searc)m(h.)3371
+3587 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_already_prompted)390
+3696 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
-2771 y(it)c(the)g(\014rst)f(time)i Fs(readline\(\))c
+3806 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 2880 y(after)38
+b(to)f(a)g(non-zero)g(v)-5 b(alue)390 3915 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 2990
+(b)s(e)e(passed)g(as)i(the)f(argumen)m(t)g(to)390 4025
 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 3099 y(application)g(is)e(resp)s(onsible)g(for)g
+b(The)32 b(calling)390 4134 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 3306 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_library_version)390 3416 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
-3623 y([V)g(ariable])-3598 b Fh(int)53 b(rl_readline_version)390
-3733 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 3842 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 3952 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 4061 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v)
--5 b(alue)31 b(0x0402.)3371 4268 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_gnu_readline_p)390 4378 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)h(some)f(em)m(ulation.)3371
-4585 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_terminal_name)390 4695 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 4804 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
-5011 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_readline_name)390 5121 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 5230
-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
-5340 y(structs],)j(page)g(13\).)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)3371
-299 y([V)-8 b(ariable])-3598 b Fh(FILE)54 b(*)e(rl_instream)390
-408 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
-518 y Fj(stdin)p Ft(.)3371 704 y([V)-8 b(ariable])-3598
-b Fh(FILE)54 b(*)e(rl_outstream)390 814 y Ft(The)34 b(stdio)h(stream)f
-(to)i(whic)m(h)e(Readline)h(p)s(erforms)e(output.)52
+3371 4317 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_library_version)390 4427 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(Readline)h(library)-8
+b(,)31 b(as)g(a)f(string)h(\(e.g.,)h Fs(")p Ft(4.2)p
+Fs(")p Ft(\).)3371 4609 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_readline_version)390 4719 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
+4829 y(0x)p Fk(MMmm)p Ft(,)39 b(where)d Fk(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 Fk(mm)g Ft(is)h(the)f(t)m(w)m(o-)390 4938
+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
+5048 y Ft(w)m(ould)30 b(ha)m(v)m(e)i(the)e(v)-5 b(alue)31
+b(0x0402.)3371 5230 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_gnu_readline_p)390 5340 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)h
+(some)f(em)m(ulation.)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)3371
+299 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_terminal_name)390 408 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 518 y(this)f(to)g(the)g(v)-5
+b(alue)29 b(of)f(the)g Fs(TERM)e Ft(en)m(vironmen)m(t)j(v)-5
+b(ariable)28 b(the)g(\014rst)f(time)i(it)f(is)g(called.)41
+b(Readline)390 628 y(uses)30 b(this)g(to)h(lo)s(ok)g(up)f(the)g
+(terminal)h(capabilities)h(it)f(needs)f(in)g(the)h(terminfo)f
+(database.)3371 825 y([V)-8 b(ariable])-3598 b Fh(const)54
+b(char)f(*)g(rl_readline_name)390 934 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
+1044 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
+1154 y(structs],)j(page)g(14\).)3371 1351 y([V)-8 b(ariable])-3598
+b Fh(FILE)54 b(*)e(rl_instream)390 1461 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 1570
+y Fk(stdin)p Ft(.)3371 1767 y([V)-8 b(ariable])-3598
+b Fh(FILE)54 b(*)e(rl_outstream)390 1877 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
-924 y Fj(stdout)p Ft(.)3371 1110 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_prefer_env_winsize)390 1219 y Ft(If)28
+1987 y Fk(stdout)p Ft(.)3371 2184 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_prefer_env_winsize)390 2293 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 1329 y(ables)41 b(greater)h(precedence)g(than)e(v)-5
+b(ari-)390 2403 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 1439 y(screen)30 b(dimensions.)3371 1625 y([V)-8
+(the)390 2513 y(screen)30 b(dimensions.)3371 2710 y([V)-8
 b(ariable])-3598 b Fh(rl_command_func_t)57 b(*)c(rl_last_func)390
-1734 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
-1844 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 2030
-y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52
-b(rl_startup_hook)390 2140 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 2250 y(\014rst)c(prompt.)3371
-2436 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
-b(*)52 b(rl_pre_input_hook)390 2545 y Ft(If)35 b(non-zero,)j(this)d(is)
+2819 y Ft(The)33 b(address)f(of)h(the)h(last)g(command)f(function)g
+(Readline)h(executed.)50 b(This)32 b(ma)m(y)i(b)s(e)f(used)f(to)390
+2929 y(test)f(whether)f(or)g(not)h(a)g(function)f(is)g(b)s(eing)g
+(executed)h(t)m(wice)h(in)e(succession,)h(for)g(example.)3371
+3126 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
+b(*)52 b(rl_startup_hook)390 3236 y Ft(If)36 b(non-zero,)j(this)e(is)g
+(the)g(address)f(of)h(a)g(function)f(to)i(call)g(just)e(b)s(efore)g
+(Readline)i(prin)m(ts)e(the)390 3345 y(\014rst)30 b(prompt.)3371
+3543 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
+b(*)52 b(rl_pre_input_hook)390 3652 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 2655 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 2841 y([V)-8 b(ariable])-3598 b
-Fh(rl_hook_func_t)57 b(*)52 b(rl_event_hook)390 2951
-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
-3061 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 3170 y(if)g(there)h(is)f(no)h(k)m(eyb)s(oard)f(input.)
-3371 3356 y([V)-8 b(ariable])-3598 b Fh(rl_getc_func_t)57
-b(*)52 b(rl_getc_function)390 3466 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 3576 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
-3685 y(function)f(\(see)i(Section)g(2.4.8)g([Character)g(Input],)f
-(page)h(42\).)39 b(In)22 b(general,)k(an)c(application)i(that)390
-3795 y(sets)31 b Fj(rl)p 635 3795 28 4 v 40 w(getc)p
-835 3795 V 41 w(function)f Ft(should)g(consider)g(setting)h
-Fj(rl)p 2234 3795 V 40 w(input)p 2487 3795 V 39 w(a)m(v)-5
-b(ailable)p 2867 3795 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371
-3981 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
-b(*)52 b(rl_signal_event_hook)390 4091 y Ft(If)27 b(non-zero,)h(this)f
+(\014rst)f(prompt)f(has)i(b)s(een)390 3762 y(prin)m(ted)30
+b(and)g(just)f(b)s(efore)h(Readline)h(starts)g(reading)g(input)e(c)m
+(haracters.)3371 3959 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
+b(*)52 b(rl_event_hook)390 4069 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 4178 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 4288 y(if)g(there)h(is)f(no)h(k)m
+(eyb)s(oard)f(input.)3371 4485 y([V)-8 b(ariable])-3598
+b Fh(rl_getc_func_t)57 b(*)52 b(rl_getc_function)390
+4595 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 4704 y(the)43 b(input)e(stream.)78 b(By)42 b(default,)k(it)d(is)g
+(set)g(to)g Fs(rl_getc)p Ft(,)h(the)f(Readline)g(c)m(haracter)h(input)
+390 4814 y(function)38 b(\(see)i(Section)g(2.4.8)g([Character)g
+(Input],)g(page)f(44\).)68 b(In)38 b(general,)k(an)d(application)390
+4924 y(that)31 b(sets)g Fk(rl)p 832 4924 28 4 v 40 w(getc)p
+1032 4924 V 41 w(function)f Ft(should)g(consider)g(setting)h
+Fk(rl)p 2431 4924 V 40 w(input)p 2684 4924 V 39 w(a)m(v)-5
+b(ailable)p 3064 4924 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371
+5121 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57
+b(*)52 b(rl_signal_event_hook)390 5230 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 4200 y(when)h(Readline)i(is)g
-(reading)f(terminal)h(input.)3371 4387 y([V)-8 b(ariable])-3598
-b Fh(rl_hook_func_t)57 b(*)52 b(rl_timeout_event_hook)390
-4496 y Ft(If)25 b(non-zero,)i(this)e(is)g(the)h(address)e(of)h(a)h
-(function)f(to)h(call)g(if)g(Readline)f(times)h(out)g(while)f(reading)
-390 4606 y(input.)3371 4792 y([V)-8 b(ariable])-3598
-b Fh(rl_hook_func_t)57 b(*)52 b(rl_input_available_ho)q(ok)390
-4902 y Ft(If)28 b(non-zero,)j(Readline)e(will)g(use)g(this)g
+(system)g(call)h(is)g(in)m(terrupted)390 5340 y(b)m(y)i(a)h(signal)g
+(when)e(Readline)i(is)g(reading)f(terminal)h(input.)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)3371
+299 y([V)-8 b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52
+b(rl_timeout_event_hook)390 408 y Ft(If)25 b(non-zero,)i(this)e(is)g
+(the)h(address)e(of)h(a)h(function)f(to)h(call)g(if)g(Readline)f(times)
+h(out)g(while)f(reading)390 518 y(input.)3371 719 y([V)-8
+b(ariable])-3598 b Fh(rl_hook_func_t)57 b(*)52 b(rl_input_available_ho)
+q(ok)390 829 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 5011 y(whether)42 b(or)g(not)h(there)f(is)h(a)m(v)-5
+(determine)390 938 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 5121 y(ho)s(ok)25 b(c)m(hec)m(ks)i
+b(The)42 b(default)390 1048 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 5230
+(di\013eren)m(t)g(input)e(source,)j(it)f(should)390 1157
 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 5340 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)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(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 408 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 518 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 628 y(\(see)d(Section)f
-(2.4.12)i([Alternate)f(In)m(terface],)h(page)e(46\),)i(whic)m(h)d(ma)m
-(y)h(not)g(use)g(the)g(traditional)390 737 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
-847 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
-956 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 1066 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 1176 y(that)e(sets)g Fj(rl)p 832 1176 28 4 v 40 w(getc)p
-1032 1176 V 41 w(function)f Ft(should)g(consider)g(setting)h
-Fj(rl)p 2431 1176 V 40 w(input)p 2684 1176 V 39 w(a)m(v)-5
-b(ailable)p 3064 1176 V 43 w(ho)s(ok)36 b Ft(as)30 b(w)m(ell.)3371
-1362 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
-(rl_redisplay_function)390 1471 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 1581 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
-1691 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(40\).)3371
-1877 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d
-(rl_prep_term_function)390 1987 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 2096 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 2206 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
-2315 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(43\).)3371
-2502 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
-(rl_deprep_term_functio)q(n)390 2611 y Ft(If)36 b(non-zero,)j(Readline)
+(ting)390 1267 y(in)m(tra-k)m(ey-sequence)43 b(timeouts)f(during)d
+(input)h(and)g(incremen)m(tal)i(searc)m(hes.)73 b(This)40
+b(function)390 1377 y(m)m(ust)26 b(return)f(zero)i(if)f(there)g(is)h
+(no)f(input)f(a)m(v)-5 b(ailable,)29 b(and)d(non-zero)h(if)f(input)f
+(is)h(a)m(v)-5 b(ailable.)42 b(This)390 1486 y(ma)m(y)36
+b(use)e(an)h(application-sp)s(eci\014c)i(timeout)f(b)s(efore)e
+(returning)g(a)i(v)-5 b(alue;)38 b(Readline)d(uses)g(the)390
+1596 y(v)-5 b(alue)25 b(passed)g(to)h Fs(rl_set_keyboard_input_t)o(ime)
+o(out\()o(\))19 b Ft(or)25 b(the)g(v)-5 b(alue)25 b(of)h(the)f
+(user-settable)390 1705 y Fk(k)m(eyseq-timeout)44 b Ft(v)-5
+b(ariable.)71 b(This)39 b(is)h(designed)f(for)h(use)g(b)m(y)g
+(applications)h(using)e(Readline's)390 1815 y(callbac)m(k)d(in)m
+(terface)f(\(see)g(Section)f(2.4.12)i([Alternate)f(In)m(terface],)i
+(page)d(48\),)i(whic)m(h)d(ma)m(y)i(not)390 1924 y(use)e(the)g
+(traditional)h Fs(read\(2\))d Ft(and)h(\014le)h(descriptor)f(in)m
+(terface,)k(or)c(other)h(applications)h(using)390 2034
+y(a)28 b(di\013eren)m(t)g(input)e(mec)m(hanism.)40 b(If)27
+b(an)g(application)i(uses)e(an)g(input)g(mec)m(hanism)h(or)f(ho)s(ok)g
+(that)390 2144 y(can)k(p)s(oten)m(tially)h(exceed)f(the)f(v)-5
+b(alue)31 b(of)g Fk(k)m(eyseq-timeout)p Ft(,)i(it)e(should)e(increase)i
+(the)g(timeout)g(or)390 2253 y(set)c(this)g(ho)s(ok)f(appropriately)h
+(ev)m(en)g(when)e(not)i(using)f(the)h(callbac)m(k)i(in)m(terface.)41
+b(In)25 b(general,)k(an)390 2363 y(application)g(that)g(sets)f
+Fk(rl)p 1294 2363 28 4 v 40 w(getc)p 1494 2363 V 41 w(function)g
+Ft(should)f(consider)g(setting)i Fk(rl)p 2883 2363 V
+40 w(input)p 3136 2363 V 39 w(a)m(v)-5 b(ailable)p 3516
+2363 V 43 w(ho)s(ok)390 2472 y Ft(as)31 b(w)m(ell.)3371
+2673 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_redisplay_function)390 2783 y Ft(Readline)21 b(will)g(call)h
+(indirectly)f(through)f(this)h(p)s(oin)m(ter)g(to)g(up)s(date)f(the)h
+(displa)m(y)g(with)f(the)h(curren)m(t)390 2892 y(con)m(ten)m(ts)43
+b(of)f(the)g(editing)g(bu\013er.)73 b(By)42 b(default,)j(it)d(is)f(set)
+h(to)h Fs(rl_redisplay)p Ft(,)e(the)h(default)390 3002
+y(Readline)31 b(redispla)m(y)g(function)f(\(see)h(Section)g(2.4.6)h
+([Redispla)m(y],)g(page)f(42\).)3371 3203 y([V)-8 b(ariable])-3598
+b Fh(rl_vintfunc_t)56 b(*)d(rl_prep_term_function)390
+3313 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
+3422 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
+3532 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
+3641 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(45\).)3371
+3842 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_deprep_term_functio)q(n)390 3952 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 2721 y(This)d(function)h(should)f(undo)g
+(reset)g(the)g(terminal.)390 4061 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 2830 y(is)30 b(set)h(to)g
+b(By)35 b(default,)i(this)390 4171 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(43\).)3371 3017
-y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_executing_keymap)390
-3126 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(35\))i(in)d
-(whic)m(h)390 3236 y(the)c(curren)m(tly)f(executing)i(Readline)f
-(function)f(w)m(as)g(found.)3371 3422 y([V)-8 b(ariable])-3598
-b Fh(Keymap)54 b(rl_binding_keymap)390 3532 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(35\))i(in)d(whic)m(h)390
-3641 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371
-3828 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390
-3937 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 4124
+b(erminal)30 b(Managemen)m(t],)j(page)e(45\).)3371 4372
+y([V)-8 b(ariable])-3598 b Fh(void)54 b(rl_macro_display_hook)390
+4482 y Ft(If)44 b(set,)k(this)c(p)s(oin)m(ts)h(to)g(a)f(function)g
+(that)h Fs(rl_macro_dumper)40 b Ft(will)45 b(call)g(to)g(displa)m(y)g
+(a)f(k)m(ey)390 4591 y(sequence)36 b(b)s(ound)e(to)i(a)g(macro.)57
+b(It)36 b(is)g(called)g(with)g(the)f(k)m(ey)i(sequence,)g(the)f
+Fs(")p Ft(un)m(translated)p Fs(")390 4701 y Ft(macro)43
+b(v)-5 b(alue)44 b(\(i.e.,)k(with)42 b(bac)m(kslash)i(escap)s(es)f
+(included,)i(as)f(when)d(passed)i(to)g Fs(rl_macro_)390
+4810 y(bind)p Ft(\),)25 b(the)g Fs(readable)d Ft(argumen)m(t)j(passed)f
+(to)h Fs(rl_macro_dumper)p Ft(,)d(and)i(an)m(y)h(pre\014x)e(to)j
+(displa)m(y)390 4920 y(b)s(efore)k(the)h(k)m(ey)g(sequence.)3371
+5121 y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_executing_keymap)390
+5230 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(37\))i(in)d
+(whic)m(h)390 5340 y(the)c(curren)m(tly)f(executing)i(Readline)f
+(function)f(w)m(as)g(found.)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)3371
+299 y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_binding_keymap)390
+408 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(37\))i(in)d(whic)m(h)
+390 518 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371
+714 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390
+823 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 1019
 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_executing_key)390
-4233 y Ft(The)30 b(k)m(ey)h(that)g(caused)f(the)h(dispatc)m(h)g(to)g
+1128 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
-4419 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq)
-390 4529 y Ft(The)35 b(full)g(k)m(ey)h(sequence)g(that)g(caused)g(the)g
+1324 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq)
+390 1433 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
-4639 y(function.)3371 4825 y([V)-8 b(ariable])-3598 b
-Fh(int)53 b(rl_key_sequence_lengt)q(h)390 4934 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 4934 V 40 w(executing)p 2032 4934 V 41 w(k)m(eyseq)p
-Ft(.)3371 5121 y([V)-8 b(ariable])-3598 b Fh(int)53 b
-(rl_readline_state)390 5230 y Ft(A)35 b(v)-5 b(ariable)35
+1543 y(function.)3371 1738 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_key_sequence_lengt)q(h)390 1848 y Ft(The)30
+b(n)m(um)m(b)s(er)f(of)h(c)m(haracters)i(in)e Fk(rl)p
+1617 1848 28 4 v 40 w(executing)p 2032 1848 V 41 w(k)m(eyseq)p
+Ft(.)3371 2043 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_readline_state)390 2153 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 5340
+h(Readline)g(state.)54 b(A)34 b(bit)h(is)f(set)390 2263
 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)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)390
-299 y Fs(RL_ISSTATE)34 b Ft(macro)k(to)g(test)g(whether)f(a)h
+(the)h Fs(RL_UNSETSTATE)d Ft(macro.)63 b(Use)39 b(the)390
+2372 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 408 y(include:)390 561 y Fs(RL_STATE_NONE)870
-670 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 822 y Fs
-(RL_STATE_INITIALIZING)870 932 y Ft(Readline)g(is)f(initializing)j(its)
-e(in)m(ternal)g(data)g(structures.)390 1084 y Fs(RL_STATE_INITIALIZED)
-870 1194 y Ft(Readline)g(has)f(completed)h(its)g(initialization.)390
-1346 y Fs(RL_STATE_TERMPREPPED)870 1456 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 1565 y(pla)m(y)-8 b(.)390 1717 y Fs
-(RL_STATE_READCMD)870 1827 y Ft(Readline)31 b(is)f(reading)h(a)g
-(command)f(from)g(the)g(k)m(eyb)s(oard.)390 1979 y Fs
-(RL_STATE_METANEXT)870 2089 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
-2241 y Fs(RL_STATE_DISPATCHING)870 2351 y Ft(Readline)h(is)f(dispatc)m
-(hing)h(to)g(a)g(command.)390 2503 y Fs(RL_STATE_MOREINPUT)870
-2612 y Ft(Readline)g(is)f(reading)h(more)f(input)g(while)g(executing)i
-(an)e(editing)h(command.)390 2765 y Fs(RL_STATE_ISEARCH)870
-2874 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(incremen)m(tal)i
-(history)e(searc)m(h.)390 3026 y Fs(RL_STATE_NSEARCH)870
-3136 y Ft(Readline)h(is)f(p)s(erforming)g(a)g(non-incremen)m(tal)i
-(history)e(searc)m(h.)390 3288 y Fs(RL_STATE_SEARCH)870
-3398 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
-3550 y Fs(RL_STATE_NUMERICARG)870 3660 y Ft(Readline)31
-b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 3812
-y Fs(RL_STATE_MACROINPUT)870 3921 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 4031 y(macro.)390 4183 y Fs(RL_STATE_MACRODEF)870
-4293 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 4445 y
-Fs(RL_STATE_OVERWRITE)870 4555 y Ft(Readline)g(is)f(in)g(o)m(v)m
-(erwrite)i(mo)s(de.)390 4707 y Fs(RL_STATE_COMPLETING)870
-4816 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390
-4969 y Fs(RL_STATE_SIGHANDLER)870 5078 y Ft(Readline)h(is)f(curren)m
-(tly)h(executing)g(the)g(readline)g(signal)g(handler.)390
-5230 y Fs(RL_STATE_UNDOING)870 5340 y Ft(Readline)g(is)f(p)s(erforming)
-g(an)g(undo.)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 Fs(RL_STATE_INPUTPENDING)870 408 y Ft(Readline)31
-b(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 557 y Fs(RL_STATE_TTYCSAVED)870
-666 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
-814 y Fs(RL_STATE_CALLBACK)870 924 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 1033 y(tion)31 b(2.4.12)h([Alternate)h(In)m
-(terface],)f(page)f(46\).)390 1182 y Fs(RL_STATE_VIMOTION)870
-1291 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 1439
-y Fs(RL_STATE_MULTIKEY)870 1549 y Ft(Readline)h(is)f(reading)h(a)g(m)m
-(ultiple-k)m(eystrok)m(e)i(command.)390 1697 y Fs(RL_STATE_VICMDONCE)
-870 1807 y Ft(Readline)40 b(has)f(en)m(tered)g(vi)g(command)g(\(mo)m(v)
+b(state)j(bits)390 2482 y(include:)390 2650 y Fs(RL_STATE_NONE)870
+2759 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 2924 y Fs
+(RL_STATE_INITIALIZING)870 3034 y Ft(Readline)g(is)f(initializing)j
+(its)e(in)m(ternal)g(data)g(structures.)390 3199 y Fs
+(RL_STATE_INITIALIZED)870 3308 y Ft(Readline)g(has)f(completed)h(its)g
+(initialization.)390 3473 y Fs(RL_STATE_TERMPREPPED)870
+3583 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 3692
+y(pla)m(y)-8 b(.)390 3857 y Fs(RL_STATE_READCMD)870 3967
+y Ft(Readline)31 b(is)f(reading)h(a)g(command)f(from)g(the)g(k)m(eyb)s
+(oard.)390 4132 y Fs(RL_STATE_METANEXT)870 4242 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 4407 y Fs(RL_STATE_DISPATCHING)870 4516
+y Ft(Readline)h(is)f(dispatc)m(hing)h(to)g(a)g(command.)390
+4681 y Fs(RL_STATE_MOREINPUT)870 4791 y Ft(Readline)g(is)f(reading)h
+(more)f(input)g(while)g(executing)i(an)e(editing)h(command.)390
+4956 y Fs(RL_STATE_ISEARCH)870 5065 y Ft(Readline)g(is)f(p)s(erforming)
+g(an)g(incremen)m(tal)i(history)e(searc)m(h.)390 5230
+y Fs(RL_STATE_NSEARCH)870 5340 y Ft(Readline)h(is)f(p)s(erforming)g(a)g
+(non-incremen)m(tal)i(history)e(searc)m(h.)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)390
+299 y Fs(RL_STATE_SEARCH)870 408 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 552 y Fs(RL_STATE_NUMERICARG)870 662 y Ft(Readline)31
+b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390 806
+y Fs(RL_STATE_MACROINPUT)870 915 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 1025 y(macro.)390 1169 y Fs(RL_STATE_MACRODEF)870
+1278 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 1422 y
+Fs(RL_STATE_OVERWRITE)870 1532 y Ft(Readline)g(is)f(in)g(o)m(v)m
+(erwrite)i(mo)s(de.)390 1676 y Fs(RL_STATE_COMPLETING)870
+1785 y Ft(Readline)f(is)f(p)s(erforming)g(w)m(ord)g(completion.)390
+1929 y Fs(RL_STATE_SIGHANDLER)870 2039 y Ft(Readline)h(is)f(curren)m
+(tly)h(executing)g(the)g(Readline)g(signal)g(handler.)390
+2182 y Fs(RL_STATE_UNDOING)870 2292 y Ft(Readline)g(is)f(p)s(erforming)
+g(an)g(undo.)390 2436 y Fs(RL_STATE_INPUTPENDING)870
+2545 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 2689 y Fs(RL_STATE_TTYCSAVED)
+870 2799 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
+2943 y Fs(RL_STATE_CALLBACK)870 3052 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 3162 y(tion)31 b(2.4.12)h([Alternate)h(In)m
+(terface],)f(page)f(48\).)390 3306 y Fs(RL_STATE_VIMOTION)870
+3415 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 3559
+y Fs(RL_STATE_MULTIKEY)870 3669 y Ft(Readline)h(is)f(reading)h(a)g(m)m
+(ultiple-k)m(eystrok)m(e)i(command.)390 3813 y Fs(RL_STATE_VICMDONCE)
+870 3922 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
-1916 y(during)29 b(the)i(curren)m(t)f(call)i(to)f Fs(readline\(\))p
-Ft(.)390 2064 y Fs(RL_STATE_DONE)870 2174 y Ft(Readline)d(has)g(read)f
+4032 y(during)29 b(the)i(curren)m(t)f(call)i(to)f Fs(readline\(\))p
+Ft(.)390 4176 y Fs(RL_STATE_DONE)870 4285 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 2284 y(return)i(the)i(line)g(to)g(the)f
-(caller.)390 2432 y Fs(RL_STATE_TIMEOUT)870 2541 y Ft(Readline)44
+Ft(and)i(is)h(ab)s(out)f(to)870 4395 y(return)i(the)i(line)g(to)g(the)f
+(caller.)390 4539 y Fs(RL_STATE_TIMEOUT)870 4648 y Ft(Readline)44
 b(has)f(timed)g(out)h(\(it)g(did)f(not)g(receiv)m(e)i(a)f(line)f(or)h
-(sp)s(eci\014ed)e(n)m(um)m(b)s(er)870 2651 y(of)36 b(c)m(haracters)i(b)
+(sp)s(eci\014ed)e(n)m(um)m(b)s(er)870 4758 y(of)36 b(c)m(haracters)i(b)
 s(efore)d(the)i(timeout)g(duration)e(sp)s(eci\014ed)h(b)m(y)g
-Fs(rl_set_timeout)870 2760 y Ft(elapsed\))31 b(and)f(is)g(returning)g
-(that)h(status)f(to)h(the)g(caller.)390 2909 y Fs(RL_STATE_EOF)870
-3018 y Ft(Readline)39 b(has)f(read)h(an)f(EOF)h(c)m(haracter)h(\(e.g.,)
+Fs(rl_set_timeout)870 4867 y Ft(elapsed\))31 b(and)f(is)g(returning)g
+(that)h(status)f(to)h(the)g(caller.)390 5011 y Fs(RL_STATE_EOF)870
+5121 y Ft(Readline)39 b(has)f(read)h(an)f(EOF)h(c)m(haracter)h(\(e.g.,)
 i(the)d(stt)m(y)g(`)p Fs(EOF)p Ft(')f(c)m(haracter\))j(or)870
-3128 y(encoun)m(tered)k(a)h(read)e(error)h(and)f(is)h(ab)s(out)g(to)g
-(return)f(a)h(NULL)g(line)g(to)h(the)870 3237 y(caller.)3371
-3405 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390
-3514 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 3624 y(Only)30 b(v)-5
-b(alid)30 b(in)h(a)f(bindable)g(command)g(function.)3371
-3791 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390
-3901 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 4010 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 4178 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_editing_mode)390 4287 y Ft(Set)25 b(to)h(a)g(v)-5
+5230 y(encoun)m(tered)32 b(a)f(read)g(error)g(or)g(EOF)g(and)g(is)g(ab)
+s(out)g(to)h(return)e(a)i(NULL)f(line)g(to)870 5340 y(the)g(caller.)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)3371
+299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390
+408 y Ft(Set)31 b(to)h(a)f(non-zero)g(v)-5 b(alue)32
+b(if)f(an)g(explicit)h(n)m(umeric)e(argumen)m(t)i(w)m(as)f(sp)s
+(eci\014ed)f(b)m(y)h(the)g(user.)42 b(It)390 518 y(is)30
+b(only)h(v)-5 b(alid)31 b(in)f(a)g(bindable)g(command)g(function.)3371
+699 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390
+808 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 918 y(executing)g(the)f(curren)m(t)f(Readline)h(function.)77
+b(It)43 b(is)f(only)h(v)-5 b(alid)43 b(in)f(a)h(bindable)f(command)390
+1027 y(function.)3371 1208 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_editing_mode)390 1317 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 4397 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
-4626 y Fr(2.4)68 b(Readline)47 b(Con)l(v)l(enience)f(F)-11
-b(unctions)150 4845 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10
-b(unction)150 4992 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 5102 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 5211 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
-5340 y Fs(Meta-Rubout:)92 b(backward-kill-word)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)275
-299 y(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
-408 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 518 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
-706 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 706
-30 5 v 43 w(command)p 2427 706 V 45 w(func)p 2656 706
-V 45 w(t)g(*function,)565 815 y(in)m(t)g(k)m(ey)p Fg(\))390
-925 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 1034 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 1222 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 1332
-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 1441 y(something)34 b(other)g(than)f(adding)h(a)g(function)f
+b(A)25 b(v)-5 b(alue)25 b(of)h Fk(1)32 b Ft(means)25
+b(Readline)390 1427 y(is)39 b(curren)m(tly)g(in)g(emacs)h(mo)s(de;)j
+Fk(0)k Ft(means)39 b(that)h(vi)f(mo)s(de)g(is)g(activ)m(e.)69
+b(This)39 b(determines)g(the)390 1537 y(curren)m(t)30
+b(k)m(eymap)h(and)f(k)m(ey)h(bindings.)150 1775 y Fr(2.4)68
+b(Readline)47 b(Con)l(v)l(enience)f(F)-11 b(unctions)150
+1998 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10 b(unction)150
+2145 y Ft(Readline)27 b(has)e(a)i(descriptiv)m(e)g(string)f(name)g(for)
+g(ev)m(ery)h(function)e(a)i(user)e(can)h(bind)f(to)i(a)f(k)m(ey)h
+(sequence,)150 2254 y(so)39 b(users)f(can)h(dynamically)g(c)m(hange)h
+(the)f(bindings)f(asso)s(ciated)i(with)e(k)m(ey)i(sequences)f(while)f
+(using)150 2364 y(Readline,)d(using)e(the)g(descriptiv)m(e)h(name)g
+(when)e(referring)h(to)h(the)f(function.)50 b(Th)m(us,)33
+b(in)g(an)g(init)h(\014le,)150 2473 y(one)d(migh)m(t)g(\014nd)390
+2607 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 2740
+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 Fj(descriptively)94 b Ft(named)150
+2850 y Fs(backward-kill-word)p Ft(.)68 b(As)41 b(the)g(programmer,)j(y)
+m(ou)d(should)g(bind)e(the)j(functions)e(y)m(ou)i(write)f(to)150
+2959 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
+3140 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 3140
+30 5 v 43 w(command)p 2427 3140 V 45 w(func)p 2656 3140
+V 45 w(t)g(*function,)565 3249 y(in)m(t)g(k)m(ey)p Fg(\))390
+3359 y Ft(Add)h Fk(name)41 b Ft(to)36 b(the)f(list)h(of)g(named)e
+(functions.)55 b(Mak)m(e)37 b Fk(function)e Ft(b)s(e)g(the)g(function)g
+(that)h(gets)390 3468 y(called)c(b)m(y)g(k)m(ey)g(sequences)f(that)h
+(bind)e(to)i Fk(name)p Ft(.)44 b(If)30 b Fk(k)m(ey)40
+b Ft(is)32 b(not)f(-1,)h(then)f(bind)f(it)i(to)g Fk(function)390
+3578 y Ft(using)e Fs(rl_bind_key\(\))p Ft(.)275 3759
+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
+3868 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 3978 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 1551 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)150
-1752 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 1899
-y Ft(Key)f(bindings)e(tak)m(e)j(place)g(on)f(a)g Fj(k)m(eymap)p
+150 4087 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)150
+4284 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 4431
+y Ft(Key)f(bindings)e(tak)m(e)j(place)g(on)f(a)g Fk(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 2008 y(that)29 b(the)g(user)e(t)m(yp)s(es)i
+(een)f(the)g(k)m(eys)150 4541 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
-2118 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 2305 y([F)-8 b(unction])-3599
+4650 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 4831 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 2415 y Ft(Returns)23 b(a)i(new,)g(empt)m(y)f(k)m(eymap.)40
+Fg(\))390 4940 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 2524 y(the)31 b(caller)g(should)f(free)g(it)h
+Fs(malloc\(\))p Ft(;)390 5050 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
-2712 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 2822 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 3009 y([F)-8 b(unction])-3599 b Fh(Keymap)54
-b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 3119
-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 3119 28 4 v 40
-w(insert,)g(the)g(lo)m(w)m(ercase)390 3228 y(Meta)24
-b(c)m(haracters)g(b)s(ound)d(to)i(run)e(their)i(equiv)-5
+5230 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 5340 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 Fk(map)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(Keymap)54 b(rl_make_keymap)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 408 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 408 28 4 v 40 w(insert,)g(the)g(lo)m(w)m(ercase)390
+518 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 3338 y(n)m(umeric)30 b(argumen)m(ts.)3350 3525
+(duce)390 628 y(n)m(umeric)30 b(argumen)m(ts.)3350 809
 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 3635 y Ft(F)-8
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 918 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 3823 y([F)-8 b(unction])-3599
+Fk(k)m(eymap)p Ft(.)41 b(The)29 b(caller)h(should)f(free)g
+Fk(k)m(eymap)p Ft(.)3350 1099 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 3932 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
+b(k)m(eymap)p Fg(\))390 1209 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso)
+s(ciated)g(with)f Fk(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
-4042 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 4229
+1318 y(ordinate)g(k)m(eymaps)g(and)e(macros.)3350 1499
 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 4339 y Ft(Return)c
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 1609 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
-4449 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 4636 y(Readline)45
+(functions)e(in)g Fk(k)m(eymap)s Ft(;)i(zero)f(if)g(there)g(are)390
+1718 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 1899 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
-4746 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 4933 y([F)-8
-b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap)c Fg(\()p
-Ff(v)m(oid)p Fg(\))390 5043 y Ft(Returns)29 b(the)i(curren)m(tly)f
-(activ)m(e)j(k)m(eymap.)3350 5230 y([F)-8 b(unction])-3599
+2009 y(k)m(eymap)31 b(is)f(activ)m(e.)43 b(This)30 b(is)g(one)h(w)m(a)m
+(y)g(to)g(switc)m(h)g(editing)g(mo)s(des,)f(for)g(example.)3350
+2190 y([F)-8 b(unction])-3599 b Fh(Keymap)54 b(rl_get_keymap)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2300 y Ft(Returns)29 b(the)i(curren)m
+(tly)f(activ)m(e)j(k)m(eymap.)3350 2481 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 5340 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.)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(Keymap)54 b(rl_get_keymap_by_name)e
-Fg(\()p Ff(const)34 b(c)m(har)g(*name)p Fg(\))390 408
-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 518 y(keymap)29 b Ft(inputrc)g(line)i
+b(k)m(eymap)p Fg(\))390 2590 y Ft(Mak)m(es)e Fk(k)m(eymap)h
+Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)3350 2771
+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 2881
+y Ft(Return)e(the)i(k)m(eymap)f(matc)m(hing)i Fk(name)p
+Ft(.)49 b Fk(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 2990 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
-692 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 801 y Ft(Return)e(the)i
-(name)f(matc)m(hing)h Fj(k)m(eymap)p Ft(.)50 b Fj(name)38
+3171 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 3281 y Ft(Return)e(the)i
+(name)f(matc)m(hing)h Fk(k)m(eymap)p Ft(.)50 b Fk(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 911 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 1085 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 1194 y Ft(Set)g(the)f(name)h(of)g Fj(k)m(eymap)p
+Fs(set)390 3390 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 3571
+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 3681 y Ft(Set)g(the)f(name)h(of)g Fk(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 1304 y(in)i(a)g Fs(set)29 b(keymap)k
+b(for)d(use)390 3791 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 1414 y Fj(name)27
+(File],)k(page)e(4\).)54 b(The)390 3900 y Fk(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
-1523 y(name)36 b(for)g(one)g(of)g(Readline's)h(builtin)e(k)m(eymaps.)58
+4010 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)390
-1633 y(with)31 b(a)g(giv)m(en)h(k)m(eymap)g(b)m(y)f(calling)h(this)f
+4119 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 1742 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
+Fk(k)m(eymap)390 4229 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 Fk(name)39
 b Ft(with)33 b(a)h(new)f(k)m(eymap)h(b)m(y)f(calling)i(this)390
-1852 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 1962 y(a)k(named)e(k)m(eymap)i(once)g(the)f(name)g
+4338 y(function)c(more)h(than)f(once)i(with)e(the)h(same)g
+Fk(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 4448 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 2071 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 2181 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 2373 y Fi(2.4.3)63 b(Binding)42 b(Keys)150
-2520 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 2629 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p
+(cop)m(y)g(of)390 4558 y Fk(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 Fk(name)35
+b Ft(is)c(one)g(of)f(Readline's)h(builtin)390 4667 y(k)m(eymap)g(names)
+f(or)h Fk(k)m(eymap)i Ft(is)e(one)f(of)h(Readline's)g(builtin)f(k)m
+(eymaps.)150 4864 y Fi(2.4.3)63 b(Binding)42 b(Keys)150
+5011 y Ft(Key)30 b(sequences)h(are)g(asso)s(ciated)h(with)e(functions)g
+(through)g(the)g(k)m(eymap.)42 b(Readline)31 b(has)f(sev)m(eral)i(in-)
+150 5121 y(ternal)e(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 2739 y(movement_keymap)p Ft(,)41 b(and)h
+Ft(,)g Fs(vi_)150 5230 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 2849 y(and)30 b(the)g(examples)h(in)f
-(this)h(man)m(ual)f(assume)g(that.)275 2980 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
-3089 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 3199 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 3308 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 3418 y(page)31 b(29\).)275 3549 y(These)f(functions)g
-(manage)h(k)m(ey)g(bindings.)3350 3723 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 3723 30 5 v 43 w(command)p 1904 3723
-V 45 w(func)p 2133 3723 V 45 w(t)h(*function)p Fg(\))390
-3832 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 3942 y(of)e(an)f(in)m(v)
--5 b(alid)31 b Fj(k)m(ey)p Ft(.)3350 4116 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 4116 V 43 w(command)p
-2270 4116 V 45 w(func)p 2499 4116 V 45 w(t)h(*function,)565
-4225 y(Keymap)h(map)p Fg(\))390 4335 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(.)3350 4509 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 4509 V 44 w(command)p
-2480 4509 V 44 w(func)p 2708 4509 V 45 w(t)565 4618 y(*function)p
-Fg(\))390 4728 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 4837 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 5011 y([F)-8 b(unction])-3599
+b Ft(is)42 b(the)g(default,)150 5340 y(and)30 b(the)g(examples)h(in)f
+(this)h(man)m(ual)f(assume)g(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)275
+299 y(Since)27 b 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 408 y(alw)m(a)m(ys)e(the)e(danger)g(that)h(a)
+g(custom)f(binding)f(installed)i(b)s(efore)f(the)h(\014rst)e(call)j(to)
+f Fs(readline\(\))c Ft(will)k(b)s(e)150 518 y(o)m(v)m(erridden.)50
+b(An)34 b(alternate)h(mec)m(hanism)f(that)g(can)g(a)m(v)m(oid)h(this)f
+(is)f(to)i(install)f(custom)g(k)m(ey)g(bindings)150 628
+y(in)44 b(an)g(initialization)j(function)c(assigned)h(to)h(the)f
+Fs(rl_startup_hook)c Ft(v)-5 b(ariable)45 b(\(see)g(Section)g(2.3)150
+737 y([Readline)31 b(V)-8 b(ariables],)32 b(page)g(31\).)275
+865 y(These)e(functions)g(manage)h(k)m(ey)g(bindings.)3350
+1027 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 1027
+30 5 v 43 w(command)p 1904 1027 V 45 w(func)p 2133 1027
+V 45 w(t)h(*function)p Fg(\))390 1137 y Ft(Binds)f Fk(k)m(ey)42
+b Ft(to)34 b Fk(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
+1246 y(of)e(an)f(in)m(v)-5 b(alid)31 b Fk(k)m(ey)p Ft(.)3350
+1409 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 1409
+V 43 w(command)p 2270 1409 V 45 w(func)p 2499 1409 V
+45 w(t)h(*function,)565 1518 y(Keymap)h(map)p Fg(\))390
+1628 y Ft(Bind)c Fk(k)m(ey)39 b Ft(to)31 b Fk(function)f
+Ft(in)g Fk(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 Fk(k)m(ey)p Ft(.)3350
+1791 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 1791
+V 44 w(command)p 2480 1791 V 44 w(func)p 2708 1791 V
+45 w(t)565 1900 y(*function)p Fg(\))390 2010 y Ft(Binds)43
+b Fk(k)m(ey)53 b Ft(to)45 b Fk(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 2119 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 Fk(k)m(ey)39 b Ft(or)30 b(if)h Fk(k)m(ey)39
+b Ft(is)30 b(already)h(b)s(ound.)3350 2282 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 5011
-V 44 w(command)p 2846 5011 V 44 w(func)p 3074 5011 V
-46 w(t)565 5121 y(*function,)i(Keymap)g(map)p Fg(\))390
-5230 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
+Fg(\()p Ff(in)m(t)34 b(k)m(ey)-8 b(,)32 b(rl)p 2382 2282
+V 44 w(command)p 2846 2282 V 44 w(func)p 3074 2282 V
+46 w(t)565 2392 y(*function,)i(Keymap)g(map)p Fg(\))390
+2501 y Ft(Binds)27 b Fk(k)m(ey)36 b Ft(to)28 b Fk(function)f
+Ft(if)g(it)h(is)f(not)h(already)g(b)s(ound)d(in)i Fk(map)p
 Ft(.)39 b(Returns)27 b(non-zero)g(in)g(the)h(case)390
-5340 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.)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)3350
-299 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 408 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
-518 y(case)31 b(of)g(error.)3350 693 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 803 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
-978 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q
-(_map)f Fg(\()p Ff(rl)p 1821 978 30 5 v 44 w(command)p
-2285 978 V 45 w(func)p 2514 978 V 45 w(t)33 b(*function,)565
-1088 y(Keymap)h(map)p Fg(\))390 1198 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 1373 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 1482 y(map)p Fg(\))390 1592 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 1767 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 1767
-V 44 w(command)p 2583 1767 V 44 w(func)p 2811 1767 V
-46 w(t)565 1877 y(*function)p Fg(\))390 1987 y Ft(Bind)43
+2611 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fk(k)m(ey)39 b
+Ft(or)30 b(if)g Fk(k)m(ey)39 b Ft(is)31 b(already)g(b)s(ound.)3350
+2773 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 2883 y Ft(Bind)h
+Fk(k)m(ey)42 b Ft(to)35 b(the)g(n)m(ull)f(function)f(in)h(the)g(curren)
+m(tly)h(activ)m(e)h(k)m(eymap.)52 b(This)34 b(is)g(not)g(the)h(same)390
+2993 y(as)c(binding)e(it)i(to)g Fs(self-insert)p Ft(.)38
+b(Returns)29 b(non-zero)i(in)f(case)h(of)g(error.)3350
+3155 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 3265 y Ft(Bind)50 b Fk(k)m(ey)59 b Ft(to)52
+b(the)e(n)m(ull)h(function)f(in)h Fk(map)p Ft(.)101 b(This)49
+b(is)i(not)g(the)g(same)g(as)g(binding)e(it)i(to)390
+3374 y Fs(self-insert)p Ft(.)38 b(Returns)29 b(non-zero)i(in)f(case)i
+(of)e(error.)3350 3537 y([F)-8 b(unction])-3599 b Fh(int)53
+b(rl_unbind_function_in)q(_map)f Fg(\()p Ff(rl)p 1821
+3537 V 44 w(command)p 2285 3537 V 45 w(func)p 2514 3537
+V 45 w(t)33 b(*function,)565 3647 y(Keymap)h(map)p Fg(\))390
+3756 y Ft(Un)m(bind)29 b(all)i(k)m(eys)g(that)g(execute)h
+Fk(function)e Ft(in)g Fk(map)p Ft(.)3350 3919 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
+4028 y(map)p Fg(\))390 4138 y Ft(Un)m(bind)c(all)i(k)m(eys)g(that)g
+(are)g(b)s(ound)e(to)i Fk(command)i Ft(in)d Fk(map)p
+Ft(.)3350 4301 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
+4301 V 44 w(command)p 2583 4301 V 44 w(func)p 2811 4301
+V 46 w(t)565 4410 y(*function)p Fg(\))390 4520 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 2096 y(b)s(eginning)27 b(in)h(the)h(curren)m(t)f(k)m(eymap.)40
+Fk(k)m(eyseq)j Ft(to)e(the)f(function)g Fk(function)p
+Ft(,)390 4629 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 2206 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 2381
+b(.)41 b(The)28 b(return)390 4739 y(v)-5 b(alue)31 b(is)f(non-zero)h
+(if)g Fk(k)m(eyseq)i Ft(is)d(in)m(v)-5 b(alid.)3350 4902
 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 2491
-y(rl)p 639 2491 V 44 w(command)p 1103 2491 V 44 w(func)p
-1331 2491 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
-2600 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 2710 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
-2819 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 2995 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 2995 V 44 w(command)p 2374 2995 V 44 w(func)p
-2602 2995 V 45 w(t)h(*function,)565 3104 y(Keymap)h(map)p
-Fg(\))390 3214 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs
-(rl_bind_keyseq_in_map)p Ft(.)3350 3389 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 3499 y(rl)p 639
-3499 V 44 w(command)p 1103 3499 V 44 w(func)p 1331 3499
-V 45 w(t)f(*function)p Fg(\))390 3608 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 3718
-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 3893 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 4003
-y(rl)p 639 4003 V 44 w(command)p 1103 4003 V 44 w(func)p
-1331 4003 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
-4113 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 4222 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.)3350 4398 y([F)-8 b(unction])-3599
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 5011
+y(rl)p 639 5011 V 44 w(command)p 1103 5011 V 44 w(func)p
+1331 5011 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
+5121 y Ft(Bind)h(the)h(k)m(ey)h(sequence)f(represen)m(ted)g(b)m(y)g
+(the)g(string)g Fk(k)m(eyseq)j Ft(to)d(the)g(function)g
+Fk(function)f Ft(in)390 5230 y Fk(map)p Ft(.)44 b(This)30
+b(mak)m(es)j(new)d(k)m(eymaps)i(as)g(necessary)-8 b(.)45
+b(Initial)32 b(bindings)e(are)i(p)s(erformed)e(in)h Fk(map)p
+Ft(.)390 5340 y(The)f(return)f(v)-5 b(alue)31 b(is)f(non-zero)h(if)g
+Fk(k)m(eyseq)i Ft(is)e(in)m(v)-5 b(alid.)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_set_key)c
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 1910
+299 30 5 v 44 w(command)p 2374 299 V 44 w(func)p 2602
+299 V 45 w(t)h(*function,)565 408 y(Keymap)h(map)p Fg(\))390
+518 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs(rl_bind_keyseq_in_map)p
+Ft(.)3350 682 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 792 y(rl)p 639 792 V 44 w(command)p 1103
+792 V 44 w(func)p 1331 792 V 45 w(t)f(*function)p Fg(\))390
+901 y Ft(Binds)i Fk(k)m(eyseq)k Ft(to)d Fk(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 1011 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 Fk(k)m(eyseq)j
+Ft(or)c(if)g Fk(k)m(eyseq)k Ft(is)c(already)h(b)s(ound.)3350
+1175 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
+1284 y(rl)p 639 1284 V 44 w(command)p 1103 1284 V 44
+w(func)p 1331 1284 V 45 w(t)f(*function,)h(Keymap)g(map)p
+Fg(\))390 1394 y Ft(Binds)d Fk(k)m(eyseq)k Ft(to)e Fk(function)f
+Ft(if)g(it)g(is)g(not)g(already)h(b)s(ound)d(in)h Fk(map)p
+Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 1503 y(case)f(of)g(an)f
+(in)m(v)-5 b(alid)31 b Fk(k)m(eyseq)j Ft(or)c(if)g Fk(k)m(eyseq)k
+Ft(is)c(already)h(b)s(ound.)3350 1667 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
-4507 y(Keymap)g(map)p Fg(\))390 4617 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
-4726 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 4836 y(macro)h(\()p
+1777 y(Keymap)g(map)p Fg(\))390 1886 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 Fk(k)m(eyseq)j
+Ft(to)e(the)f(arbitrary)g(p)s(oin)m(ter)g Fk(data)p Ft(.)390
+1996 y Fk(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 Fk(data)p Ft(;)h(this)e(can)h(b)s(e)f(a)
+g(function)g(\()p Fs(ISFUNC)p Ft(\),)h(a)390 2106 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 4945 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 5121 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 5230 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
+b(.)41 b(The)390 2215 y(initial)c(k)m(eymap)g(in)f(whic)m(h)f(to)i(do)f
+(bindings)f(is)h Fk(map)p Ft(.)57 b(Returns)35 b(non-zero)i(in)f(the)g
+(case)h(of)f(an)390 2325 y(in)m(v)-5 b(alid)31 b Fk(k)m(eyseq)p
+Ft(,)h(zero)f(otherwise.)3350 2489 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 2598 y Ft(P)m(arse)c Fk(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 5340 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\).)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_read_init_file)e
+390 2708 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
+2872 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
-408 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 518 y(Init)d(File],)i(page)f(4\).)150
-726 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42
-b(Names)f(and)g(Bindings)150 873 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 983 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 1092 y(arbitrary)j(function.)3350 1295 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 1404 y Ft(Return)c(the)g
-(function)g(with)g(name)h Fj(name)p Ft(.)3350 1606 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 1716 y(*k)m(eyseq,)f(Keymap)g(map,)
-g(in)m(t)h(*t)m(yp)s(e)p Fg(\))390 1826 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 1935 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 2045 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 2154 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 2356 y([F)-8 b(unction])-3599 b Fh(rl_command_func_t)57
+2981 y Ft(Read)e(k)m(eybindings)f(and)g(v)-5 b(ariable)32
+b(assignmen)m(ts)g(from)f Fk(\014lename)37 b Ft(\(see)32
+b(Section)g(1.3)h([Readline)390 3091 y(Init)d(File],)i(page)f(4\).)150
+3277 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42
+b(Names)f(and)g(Bindings)150 3424 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 3533 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 3643 y(arbitrary)j(function.)3350 3807
+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 3916 y Ft(Return)28 b(the)h(function)f(with)g(name)h
+Fk(name)p Ft(.)40 b Fk(name)34 b Ft(is)29 b(a)g(descriptiv)m(e)g(name)g
+(users)f(migh)m(t)h(use)f(in)390 4026 y(a)j(k)m(ey)g(binding.)3350
+4190 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
+4299 y(*k)m(eyseq,)f(Keymap)g(map,)g(in)m(t)h(*t)m(yp)s(e)p
+Fg(\))390 4409 y Ft(Return)28 b(the)h(function)g(in)m(v)m(ok)m(ed)i(b)m
+(y)e Fk(k)m(eyseq)j Ft(in)c(k)m(eymap)i Fk(map)p Ft(.)40
+b(If)28 b Fk(map)k Ft(is)d Fs(NULL)p Ft(,)f(this)h(uses)g(the)390
+4519 y(curren)m(t)34 b(k)m(eymap.)55 b(If)34 b Fk(t)m(yp)s(e)40
+b Ft(is)35 b(not)g Fs(NULL)p Ft(,)f(this)h(returns)e(the)i(t)m(yp)s(e)g
+(of)g(the)g(ob)5 b(ject)36 b(in)e(the)h Fs(int)390 4628
+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 4738 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
+4902 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 2466 y(*k)m(eyseq,)f(size)p 1121 2466 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 2576 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
-2685 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 2795 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 2997 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_trim_arg_from_keys)
-q(eq)f Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(size)p
-2678 2997 V 44 w(t)h(len,)565 3107 y(Keymap)h(map)p Fg(\))390
-3216 y Ft(If)e(there)h(is)f(a)h(n)m(umeric)g(argumen)m(t)g(at)g(the)g
-(b)s(eginning)e(of)i Fj(k)m(eyseq)p Ft(,)h(p)s(ossibly)e(including)g
-(digits,)390 3326 y(return)24 b(the)h(index)f(of)i(the)f(\014rst)f(c)m
-(haracter)i(in)f Fj(k)m(eyseq)j Ft(follo)m(wing)e(the)g(n)m(umeric)e
-(argumen)m(t.)40 b(This)390 3435 y(can)24 b(b)s(e)g(used)f(to)h(skip)g
-(o)m(v)m(er)h(the)f(n)m(umeric)g(argumen)m(t)g(\(whic)m(h)g(is)g(a)m(v)
--5 b(ailable)27 b(as)d Fs(rl_numeric_arg)390 3545 y Ft(while)30
-b(tra)m(v)m(ersing)i(the)f(k)m(ey)g(sequence)g(that)g(in)m(v)m(ok)m(ed)
-g(the)g(curren)m(t)f(command.)3350 3747 y([F)-8 b(unction])-3599
-b Fh(char)54 b(**)e(rl_invoking_keyseqs)g Fg(\()p Ff(rl)p
-1717 3747 V 44 w(command)p 2181 3747 V 44 w(func)p 2409
-3747 V 45 w(t)33 b(*function)p Fg(\))390 3857 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 3966
-y(the)g(curren)m(t)f(k)m(eymap.)3350 4168 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 4168 V 44 w(command)p 2547 4168
-V 44 w(func)p 2775 4168 V 45 w(t)565 4278 y(*function,)34
-b(Keymap)g(map)p Fg(\))390 4388 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 4497 y(the)g(k)m(eymap)f
-Fj(map)p Ft(.)3350 4699 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 4809 y Ft(Prin)m(t)i(the)g(Readline)g(function)g(names)f(and)
-g(the)h(k)m(ey)h(sequences)f(curren)m(tly)g(b)s(ound)d(to)k(them)390
-4919 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 5028 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 5230 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 5340 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(.)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)3350
-299 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 408
+b(c)m(har)565 5011 y(*k)m(eyseq,)f(size)p 1121 5011 V
+44 w(t)g(len,)g(Keymap)h(map,)f(in)m(t)g(*t)m(yp)s(e)p
+Fg(\))390 5121 y Ft(Return)20 b(the)h(function)g(in)m(v)m(ok)m(ed)i(b)m
+(y)e Fk(k)m(eyseq)j Ft(of)d(length)g Fk(len)h Ft(in)e(k)m(eymap)i
+Fk(map)p Ft(.)37 b(Equiv)-5 b(alen)m(t)22 b(to)g Fs(rl_)390
+5230 y(function_of_keyseq)g Ft(with)28 b(the)f(addition)h(of)f(the)h
+Fk(len)f Ft(parameter.)41 b(It)27 b(tak)m(es)i(a)f Fs(")p
+Ft(translated)p Fs(")390 5340 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.)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_trim_arg_from_keys)q(eq)f
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(size)p
+2678 299 30 5 v 44 w(t)h(len,)565 408 y(Keymap)h(map)p
+Fg(\))390 518 y Ft(If)e(there)h(is)f(a)h(n)m(umeric)g(argumen)m(t)g(at)
+g(the)g(b)s(eginning)e(of)i Fk(k)m(eyseq)p Ft(,)h(p)s(ossibly)e
+(including)g(digits,)390 628 y(return)24 b(the)h(index)f(of)i(the)f
+(\014rst)f(c)m(haracter)i(in)f Fk(k)m(eyseq)j Ft(follo)m(wing)e(the)g
+(n)m(umeric)e(argumen)m(t.)40 b(This)390 737 y(can)22
+b(b)s(e)e(used)h(to)g(skip)g(o)m(v)m(er)i(the)e(n)m(umeric)g(argumen)m
+(t)h(\(whic)m(h)f(is)g(a)m(v)-5 b(ailable)24 b(as)d Fs(rl_numeric_arg)p
+Ft(\))390 847 y(while)30 b(tra)m(v)m(ersing)i(the)f(k)m(ey)g(sequence)g
+(that)g(in)m(v)m(ok)m(ed)g(the)g(curren)m(t)f(command.)3350
+1043 y([F)-8 b(unction])-3599 b Fh(char)54 b(**)e(rl_invoking_keyseqs)g
+Fg(\()p Ff(rl)p 1717 1043 V 44 w(command)p 2181 1043
+V 44 w(func)p 2409 1043 V 45 w(t)33 b(*function)p Fg(\))390
+1152 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
+Fk(function)e Ft(in)390 1262 y(the)g(curren)m(t)f(k)m(eymap.)3350
+1458 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
+1458 V 44 w(command)p 2547 1458 V 44 w(func)p 2775 1458
+V 45 w(t)565 1567 y(*function,)34 b(Keymap)g(map)p Fg(\))390
+1677 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
+Fk(function)e Ft(in)390 1786 y(the)g(k)m(eymap)f Fk(map)p
+Ft(.)3350 1982 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_print_keybinding)d Fg(\()p Ff(const)34 b(c)m(har)g(*name,)f
+(Keymap)h(map,)f(in)m(t)565 2092 y(readable)p Fg(\))390
+2201 y Ft(Prin)m(t)d(k)m(ey)g(sequences)g(b)s(ound)d(to)j(Readline)h
+(function)e(name)g Fk(name)35 b Ft(in)29 b(k)m(eymap)h
+Fk(map)p Ft(.)40 b(If)30 b Fk(map)390 2311 y Ft(is)h(NULL,)g(this)g
+(uses)g(the)g(curren)m(t)g(k)m(eymap.)44 b(If)30 b Fk(readable)37
+b Ft(is)31 b(non-zero,)h(the)f(list)h(is)f(formatted)390
+2421 y(in)d(suc)m(h)g(a)h(w)m(a)m(y)g(that)g(it)g(can)g(b)s(e)e(made)i
+(part)f(of)g(an)h Fs(inputrc)d Ft(\014le)i(and)g(re-read)h(to)g
+(recreate)h(the)390 2530 y(k)m(ey)h(binding.)3350 2726
+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 2836 y Ft(Prin)m(t)i(the)g
+(Readline)g(function)g(names)f(and)g(the)h(k)m(ey)h(sequences)f(curren)
+m(tly)g(b)s(ound)d(to)k(them)390 2945 y(to)32 b Fs(rl_outstream)p
+Ft(.)40 b(If)31 b Fk(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
+3055 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 3251 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 3360 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
+3556 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 3666
 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 518 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 628 y(the)j(p)s(oin)m(ters,)f
+b(The)390 3775 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 3885 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 813 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 813
-30 5 v 43 w(command)p 2794 813 V 45 w(func)p 3023 813
-V 45 w(t)565 923 y(*function)p Fg(\))390 1033 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
-1142 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 1342 y Fi(2.4.5)63 b(Allo)m(wing)41
-b(Undoing)150 1489 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 1599 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 1734 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
-1844 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 1979 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 2088
-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
-2198 y(group\(\))28 b Ft(and)i Fs(rl_end_undo_group\(\))p
-Ft(.)275 2333 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 2446 y Fe(enum)40 b(undo_code)h({)f
-(UNDO_DELETE,)i(UNDO_INSERT,)g(UNDO_BEGIN,)g(UNDO_END)f(};)275
-2581 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
-2691 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 2800 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 2986
-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 3096 y Ft(Begins)32 b(sa)m(ving)g(undo)d
+3350 4081 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 4081
+V 43 w(command)p 2794 4081 V 45 w(func)p 3023 4081 V
+45 w(t)565 4190 y(*function)p Fg(\))390 4300 y Ft(Add)e
+Fk(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 Fk(function)f Ft(the)390
+4409 y(function)22 b(to)g(b)s(e)g(called)h(when)e Fk(name)27
+b Ft(is)22 b(in)m(v)m(ok)m(ed.)39 b(This)22 b(returns)e(the)j(index)e
+(of)h(the)h(newly-added)390 4519 y Fk(name)36 b Ft(in)30
+b(the)g(arra)m(y)h(of)g(function)f(names.)150 4724 y
+Fi(2.4.5)63 b(Allo)m(wing)41 b(Undoing)150 4871 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 4981 y(useful.)k(It)30
+b(is)h(certainly)g(easier)h(to)f(try)f(something)h(if)f(y)m(ou)h(kno)m
+(w)f(y)m(ou)h(can)g(undo)e(it.)275 5121 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 5230 y(text\(\))31 b Ft(or)i
+Fs(rl_delete_text\(\))28 b Ft(to)34 b(do)f(it,)h(then)e(Readline)i(do)s
+(es)e(the)h(undoing)f(for)h(y)m(ou)g(automati-)150 5340
+y(cally)-8 b(.)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)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 655 y(The)f(t)m(yp)s(es)i(of)f(ev)m
+(en)m(ts)i(Readline)f(can)g(undo)e(are:)390 769 y Fe(enum)40
+b(undo_code)h({)f(UNDO_DELETE,)i(UNDO_INSERT,)g(UNDO_BEGIN,)g(UNDO_END)
+f(};)275 906 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 1016 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
+1125 y Fs(UNDO_END)e Ft(are)i(tags)h(added)e(b)m(y)h
+Fs(rl_begin_undo_group\(\))19 b Ft(and)24 b Fs(rl_end_undo_group\(\))p
+Ft(;)e(they)j(are)150 1235 y(ho)m(w)30 b(Readline)h(delimits)g(groups)f
+(of)h(commands)f(that)h(should)e(b)s(e)h(undone)f(together.)3350
+1424 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 1534 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 3205 y(comes)42 b(from)f(calls)i(to)
+b(undo)g(information)h(usually)390 1643 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 3315 y(result)30
-b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p Ft(.)3350 3501
+Ft(,)f(but)h(could)h(b)s(e)f(the)390 1753 y(result)30
+b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p Ft(.)3350 1942
 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 3610 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 3720 y(b)s(e)h(one)g(call)i(to)f
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2051 y Ft(Closes)32 b(the)h(curren)m(t)f
+(undo)f(group)g(started)i(with)e Fs(rl_begin_undo_group\(\))p
+Ft(.)40 b(There)32 b(should)390 2161 y(b)s(e)e(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 3906 y([F)-8 b(unction])-3599
+Fs(rl_begin_undo_group\(\))p Ft(.)3350 2350 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 3906 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 4015 y(*text)p Fg(\))390 4125 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
-4235 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g(encompasses)h
-Fj(text)p Ft(.)3350 4420 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
-4530 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350
-4716 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 4825 y Ft(Undo)22 b(the)h(\014rst)g
+b(undo)p 1558 2350 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 2460 y(*text)p Fg(\))390 2569
+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 Fk(what)r Ft(\).)52 b(The)33 b(a\013ected)j(text)f
+(runs)d(from)390 2679 y Fk(start)h Ft(to)e Fk(end)p Ft(,)f(and)g
+(encompasses)h Fk(text)p Ft(.)3350 2868 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 2978 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350
+3167 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3276 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
-4935 y(if)30 b(something)h(w)m(as)g(undone.)275 5121
+3386 y(if)30 b(something)h(w)m(as)g(undone.)275 3575
 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 5230 y(c)m(hange)40 b(its)f(case\),)j(call)e Fs(rl_modifying\(\))35
+150 3684 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 5340 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(.)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_modifying)c
-Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p Fg(\))390
-408 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 518 y(assumed)30 b(that)h(y)m(ou)f(will)h
-(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 712 y
-Fi(2.4.6)63 b(Redispla)m(y)3350 903 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 1013 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 1123 y(buffer)p Ft(.)3350 1299 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 1409 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 1518
-y(screen)30 b(displa)m(y)h(is)f(correct.)3350 1695 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 1804 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 1914
-y(outputting)i(a)f(newline.)3350 2090 y([F)-8 b(unction])-3599
+b(Y)-8 b(ou)39 b(m)m(ust)150 3794 y(supply)31 b(the)i(indices)f(of)h
+(the)g(text)g(range)g(that)g(y)m(ou)g(are)g(going)h(to)f(mo)s(dify)-8
+b(.)47 b(Readline)33 b(will)g(create)h(an)150 3904 y(undo)29
+b(group)h(for)g(y)m(ou.)3350 4093 y([F)-8 b(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 4202 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 Fk(start)i Ft(and)c
+Fk(end)k Ft(as)e(a)f(single)h(undo)e(unit.)70 b(It)40
+b(is)390 4312 y(assumed)30 b(that)h(y)m(ou)f(will)h(subsequen)m(tly)f
+(mo)s(dify)f(that)i(text.)150 4513 y Fi(2.4.6)63 b(Redispla)m(y)3350
+4713 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 4822 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 4932
+y(buffer)p Ft(.)3350 5121 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 5230 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 5340 y(screen)30 b(displa)m(y)h(is)f(correct.)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)3350
+299 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 408 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
+518 y(outputting)i(a)f(newline.)3350 693 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 2200 y Ft(T)-8 b(ell)25 b(the)f(up)s(date)f
+Ff(v)m(oid)p Fg(\))390 803 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 2200 28 4 v 40 w(prompt)i
-Ft(already)390 2309 y(displa)m(y)m(ed.)41 b(This)28 b(could)g(b)s(e)g
+(new)g(line,)i(with)d Fk(rl)p 3106 803 28 4 v 40 w(prompt)i
+Ft(already)390 913 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 2419 y(themselv)m(es,)h(but)e(still)h(need)g
+(prompt)f(string)390 1022 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 2528 y(should)29 b(b)s(e)h(used)g
-(after)h(setting)g Fj(rl)p 1590 2528 V 40 w(already)p
-1920 2528 V 41 w(prompted)p Ft(.)3350 2705 y([F)-8 b(unction])-3599
+(redispla)m(y)-8 b(.)41 b(It)390 1132 y(should)29 b(b)s(e)h(used)g
+(after)h(setting)g Fk(rl)p 1590 1132 V 40 w(already)p
+1920 1132 V 41 w(prompted)p Ft(.)3350 1307 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 2814 y Ft(Clear)31 b(the)f(screen)h(lines)f(corresp)s(onding)
+Fg(\))390 1417 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
-2991 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 3100 y Ft(Reset)36 b(the)e(displa)m(y)h
+1592 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 1702 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 3210 y(new)30 b(line.)3350
-3386 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48
-b Fg(\()p Ff(v)m(oid)p Fg(\))390 3496 y Ft(Mo)m(v)m(e)32
+(t)g(line)g(starting)g(on)g(a)390 1811 y(new)30 b(line.)3350
+1987 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_crlf)48
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 2096 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 3672 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 3782 y Ft(Displa)m(y)g(c)m
-(haracter)g Fj(c)k Ft(on)32 b Fs(rl_outstream)p Ft(.)44
+3350 2271 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 2381 y Ft(Displa)m(y)g(c)m
+(haracter)g Fk(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 3891 y(c)m(haracters)27 b(directly)-8 b(,)29
+(meta)390 2491 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 4001 y(This)k(is)g(in)m
+(meta-pre\014xed)f(k)m(ey)g(sequence.)390 2600 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 4177 y([F)g(unction])-3599
+f(their)h(o)m(wn)f(redispla)m(y)-8 b(.)3350 2776 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 4287 y Ft(The)20 b(argumen)m(ts)h(are)g(a)g
+b(.)g(.)12 b Fg(\))390 2885 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 4396
+Fs(printf)p Ft(,)f(p)s(ossibly)e(con)m(taining)390 2995
 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 4506 y(satisfy)e(the)f(con)m(v)m(ersion)i(sp)s
+(necessary)f(to)390 3104 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 4616 y(area)p Ft(.)63
+(ed)h(in)f(the)h Fk(ec)m(ho)390 3214 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
-4725 y(Y)-8 b(ou)34 b(should)e(call)j Fs(rl_save_prompt)29
+3324 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 4835 y(function.)3350 5011 y([F)-8
+(calling)i(this)390 3433 y(function.)3350 3608 y([F)-8
 b(unction])-3599 b Fh(int)53 b(rl_clear_message)e Fg(\()p
-Ff(v)m(oid)p Fg(\))390 5121 y Ft(Clear)29 b(the)g(message)h(in)f(the)g
+Ff(v)m(oid)p Fg(\))390 3718 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 5230 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 5340 y(this)30 b(function.)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(void)54 b(rl_save_prompt)49
-b Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Sa)m(v)m(e)44
+(with)f(a)g(call)i(to)e Fs(rl_save_)390 3828 y(prompt)e
+Ft(b)s(efore)h(the)h(last)h(call)g(to)g Fs(rl_message)p
+Ft(,)c(y)m(ou)j(m)m(ust)g(call)h Fs(rl_restore_prompt)24
+b Ft(b)s(efore)390 3937 y(calling)32 b(this)e(function.)3350
+4113 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 4222 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 518
+(preparation)g(for)g(displa)m(ying)g(a)g(new)390 4332
 y(message)31 b(in)g(the)f(message)i(area)f(with)f Fs(rl_message\(\))p
-Ft(.)3350 722 y([F)-8 b(unction])-3599 b Fh(void)54 b
-(rl_restore_prompt)c Fg(\()p Ff(v)m(oid)p Fg(\))390 832
-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
-941 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 1051 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 1161 y(clear_message)p Ft(.)3350 1365
-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 1474 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
-1584 y(prompt)35 b(redispla)m(y)h(v)-5 b(ariables.)57
+Ft(.)3350 4507 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_restore_prompt)c Fg(\()p Ff(v)m(oid)p Fg(\))390
+4617 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
+4726 y Fs(rl_save_prompt)p Ft(.)e(If)32 b(y)m(ou)g(called)i
+Fs(rl_save_prompt)28 b Ft(to)33 b(sa)m(v)m(e)h(the)e(prompt)f(b)s
+(efore)h(a)h(call)g(to)390 4836 y Fs(rl_message)p Ft(,)24
+b(y)m(ou)i(should)e(call)j(this)e(function)g(b)s(efore)g(the)g(corresp)
+s(onding)g(call)h(to)g Fs(rl_clear_)390 4945 y(message)p
+Ft(.)3350 5121 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 5230 y
+Ft(Expand)41 b(an)m(y)j(sp)s(ecial)f(c)m(haracter)h(sequences)f(in)g
+Fk(prompt)g Ft(and)f(set)i(up)d(the)i(lo)s(cal)h(Readline)390
+5340 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 1694 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
-1803 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 1913 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 2022 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 2132 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 2242 y(START_IGNORE)34
-b Ft(and)j Fs(RL_PROMPT_END_IGNORE)32 b Ft(\(declared)39
-b(in)e Fs(readline.h)e Ft(as)j(`)p Fs(\\001)p Ft(')f(and)390
-2351 y(`)p Fs(\\002)p Ft(',)31 b(resp)s(ectiv)m(ely\).)46
-b(This)31 b(ma)m(y)h(b)s(e)f(used)f(to)j(em)m(b)s(ed)e(terminal-sp)s
-(eci\014c)h(escap)s(e)g(sequences)390 2461 y(in)e(prompts.)3350
-2665 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 2775
-y Ft(Mak)m(e)28 b(Readline)g(use)f Fj(prompt)h Ft(for)e(subsequen)m(t)h
+Ft(.)55 b(It)35 b(ma)m(y)i(also)g(b)s(e)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)390
+299 y(called)38 b(to)g(expand)f(the)g(primary)f(prompt)g(if)h(the)h
+(application)g(uses)f(the)g Fs(rl_on_new_line_)390 408
+y(with_prompt\(\))c Ft(function)i(or)i Fs(rl_already_prompted)31
+b Ft(v)-5 b(ariable.)59 b(It)36 b(returns)f(the)h(n)m(um)m(b)s(er)390
+518 y(of)k(visible)g(c)m(haracters)h(on)e(the)h(last)h(line)f(of)f(the)
+h(\(p)s(ossibly)f(m)m(ulti-line\))j(prompt.)67 b(Applica-)390
+628 y(tions)44 b(ma)m(y)g(indicate)h(that)g(the)e(prompt)g(con)m(tains)
+i(c)m(haracters)g(that)g(tak)m(e)g(up)e(no)g(ph)m(ysical)390
+737 y(screen)d(space)g(when)f(displa)m(y)m(ed)i(b)m(y)e(brac)m(k)m
+(eting)j(a)e(sequence)g(of)g(suc)m(h)g(c)m(haracters)h(with)f(the)390
+847 y(sp)s(ecial)32 b(mark)m(ers)g Fs(RL_PROMPT_START_IGNORE)26
+b Ft(and)31 b Fs(RL_PROMPT_END_IGNORE)26 b Ft(\(declared)32
+b(in)390 956 y Fs(readline.h)21 b Ft(as)k(`)p Fs(\\001)p
+Ft(')e(and)h(`)p Fs(\\002)p Ft(',)h(resp)s(ectiv)m(ely\).)40
+b(This)23 b(ma)m(y)i(b)s(e)e(used)h(to)g(em)m(b)s(ed)g(terminal-)390
+1066 y(sp)s(eci\014c)29 b(escap)s(e)g(sequences)g(in)g(prompts.)39
+b(If)28 b(y)m(ou)i(don't)f(use)f(these)h(indicators,)h(redispla)m(y)g
+(will)390 1176 y(lik)m(ely)i(pro)s(duce)d(screen)i(con)m(ten)m(ts)h
+(that)f(don't)f(matc)m(h)h(the)g(line)g(bu\013er.)3350
+1356 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 1465
+y Ft(Mak)m(e)28 b(Readline)g(use)f Fk(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
-2884 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 3093 y Fi(2.4.7)63 b(Mo)s(difying)43
-b(T)-10 b(ext)3350 3300 y Ft([F)i(unction])-3599 b Fh(int)53
+1575 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 1772 y Fi(2.4.7)63 b(Mo)s(difying)43
+b(T)-10 b(ext)3350 1966 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 3410 y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g
+Fg(\))390 2075 y Ft(Insert)d Fk(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 3519 y(acters)g(inserted.)
-3350 3723 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_delete_text)d
+b(the)i(n)m(um)m(b)s(er)f(of)g(c)m(har-)390 2185 y(acters)g(inserted.)
+3350 2365 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
-3833 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 3943 y(c)m(haracters)32
-b(deleted.)3350 4147 y([F)-8 b(unction])-3599 b Fh(char)54
+2475 y Ft(Delete)40 b(the)e(text)h(b)s(et)m(w)m(een)f
+Fk(start)i Ft(and)d Fk(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 2584 y(c)m(haracters)32
+b(deleted.)3350 2765 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 4256 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 4461 y([F)-8 b(unction])-3599 b Fh(int)53
+Fg(\))390 2874 y Ft(Return)d(a)g(cop)m(y)h(of)g(the)g(text)g(b)s(et)m
+(w)m(een)g Fk(start)i Ft(and)d Fk(end)j Ft(in)d(the)h(curren)m(t)f
+(line.)3350 3055 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 4570 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 4680 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 4789 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 4899 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 5103 y([F)-8 b(unction])-3599
+Fg(\))390 3164 y Ft(Cop)m(y)g(the)g(text)i(b)s(et)m(w)m(een)e
+Fk(start)j Ft(and)d Fk(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 3274 y(or)d(prep)s(ending)e(to)j
+(the)f(last)g(kill)h(if)f(the)g(last)h(command)e(w)m(as)i(a)f(kill)h
+(command.)45 b(This)31 b(deletes)390 3383 y(the)h(text)h(from)e(the)h
+(line.)45 b(If)31 b Fk(start)j Ft(is)e(less)g(than)f
+Fk(end)p Ft(,)h(the)g(text)g(is)g(app)s(ended,)f(otherwise)h(it)g(is)
+390 3493 y(prep)s(ended.)39 b(If)29 b(the)i(last)g(command)f(w)m(as)h
+(not)g(a)f(kill,)i(this)e(uses)g(a)h(new)f(kill)h(ring)f(slot.)3350
+3673 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 3673 30 5 v 44 w(undo)p Fg(\))390 3783 y Ft(Replace)42
+b(the)f(con)m(ten)m(ts)h(of)f Fs(rl_line_buffer)36 b
+Ft(with)41 b Fk(text)p Ft(.)72 b(This)40 b(preserv)m(es)g(the)h(p)s
+(oin)m(t)g(and)390 3892 y(mark,)33 b(if)f(p)s(ossible.)45
+b(If)32 b Fk(clear)p 1405 3892 28 4 v 41 w(undo)k Ft(is)c(non-zero,)h
+(this)f(clears)h(the)g(undo)e(list)i(asso)s(ciated)g(with)390
+4002 y(the)e(curren)m(t)f(line.)3350 4182 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 5213 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 5322 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.)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)150
-299 y Fi(2.4.8)63 b(Character)39 b(Input)3350 505 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 615 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 724 y(dles)e(input)g(inserted)g(in)m
-(to)i(the)e(input)g(stream)h(via)g Fj(rl)p 2226 724 28
-4 v 40 w(p)s(ending)p 2583 724 V 38 w(input)h Ft(\(see)f(Section)h(2.3)
-f([Read-)390 834 y(line)40 b(V)-8 b(ariables],)43 b(page)d(29\))g(and)f
+b(*macro)p Fg(\))390 4292 y Ft(Insert)29 b Fk(macro)35
+b Ft(in)m(to)30 b(the)g(line,)g(as)g(if)f(it)h(had)f(b)s(een)g(in)m(v)m
+(ok)m(ed)i(b)m(y)e(a)h(k)m(ey)g(b)s(ound)e(to)i(a)g(macro.)41
+b(Not)390 4401 y(esp)s(ecially)32 b(useful;)d(use)i Fs
+(rl_insert_text\(\))25 b Ft(instead.)150 4598 y Fi(2.4.8)63
+b(Character)39 b(Input)3350 4792 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
+4902 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 5011 y(dles)e(input)g(inserted)g(in)m(to)i(the)e
+(input)g(stream)h(via)g Fk(rl)p 2226 5011 V 40 w(p)s(ending)p
+2583 5011 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390
+5121 y(line)40 b(V)-8 b(ariables],)43 b(page)d(31\))g(and)f
 Fs(rl_stuff_char\(\))p Ft(,)f(macros,)k(and)d(c)m(haracters)h(read)f
-(from)390 943 y(the)34 b(k)m(eyb)s(oard.)52 b(While)35
+(from)390 5230 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 1053 y(to)d(the)g Fs(rl_event_hook)26
-b Ft(v)-5 b(ariable.)3350 1256 y([F)d(unction])-3599
-b Fh(int)53 b(rl_getc)48 b Fg(\()p Ff(FILE)33 b(*stream)p
-Fg(\))390 1365 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 1568 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 1678 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
-1787 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 1897 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 2007 y(0)g(otherwise.)3350 2209 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 2319 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 2429
-y(sets)31 b Fj(rl)p 635 2429 V 40 w(p)s(ending)p 992
-2429 V 38 w(input)p Ft(.)3350 2631 y([F)-8 b(unction])-3599
+(function)g(assigned)390 5340 y(to)d(the)g Fs(rl_event_hook)26
+b Ft(v)-5 b(ariable.)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)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_getc)48
+b Fg(\()p Ff(FILE)33 b(*stream)p Fg(\))390 408 y Ft(Return)20
+b(the)i(next)f(c)m(haracter)i(a)m(v)-5 b(ailable)24 b(from)c
+Fk(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 588 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
+697 y Ft(Insert)f Fk(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 807 y(to)40
+b(read)f(c)m(haracters)h(from)e(the)i(terminal)f(with)g
+Fs(rl_read_key\(\))p Ft(.)63 b(Applications)39 b(can)h(push)390
+916 y(bac)m(k)28 b(up)e(to)i(512)g(c)m(haracters.)41
+b Fs(rl_stuff_char)23 b Ft(returns)j(1)i(if)f(the)g(c)m(haracter)i(w)m
+(as)e(successfully)390 1026 y(inserted;)j(0)h(otherwise.)3350
+1205 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 1315 y Ft(Mak)m(e)j
+Fk(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
+1424 y(sets)31 b Fk(rl)p 635 1424 28 4 v 40 w(p)s(ending)p
+992 1424 V 38 w(input)p Ft(.)3350 1604 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 2741 y Ft(Unset)42 b Fj(rl)p 729 2741 V 40
-w(p)s(ending)p 1086 2741 V 38 w(input)p Ft(,)i(e\013ectiv)m(ely)h
+Fg(\))390 1713 y Ft(Unset)42 b Fk(rl)p 729 1713 V 40
+w(p)s(ending)p 1086 1713 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 2851 y(execute_next\(\))p Ft(.)59 b(This)36
+Fs(rl_)390 1823 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 2960 y(with)30 b Fs(rl_read_key\(\))p
-Ft(.)3350 3163 y([F)-8 b(unction])-3599 b Fh(int)53 b
+(already)g(b)s(een)f(read)390 1932 y(with)30 b Fs(rl_read_key\(\))p
+Ft(.)3350 2112 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 3273 y Ft(While)41 b(w)m(aiting)g(for)f(k)m(eyb)s(oard)
+b(u)p Fg(\))390 2221 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 3382 y(croseconds)31 b(for)g(input)f(b)s
+(for)f Fk(u)g Ft(mi-)390 2331 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
-3492 y(b)s(e)h(greater)i(than)f(or)g(equal)g(to)h(zero)f(\(a)h
+Fs(rl_event_hook)p Ft(.)39 b Fk(u)30 b Ft(m)m(ust)390
+2440 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 3601 y(default)31
+b(to)g(a)f(p)s(oll\).)45 b(The)390 2550 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.)3350
-3804 y([F)d(unction])-3599 b Fh(int)53 b(rl_set_timeout)d
+2729 y([F)d(unction])-3599 b Fh(int)53 b(rl_set_timeout)d
 Fg(\()p Ff(unsigned)35 b(in)m(t)e(secs,)h(unsigned)h(in)m(t)e(usecs)p
-Fg(\))390 3914 y Ft(Set)f(a)g(timeout)h(for)f(subsequen)m(t)f(calls)j
+Fg(\))390 2839 y Ft(Set)f(a)g(timeout)h(for)f(subsequen)m(t)f(calls)j
 (to)e Fs(readline\(\))p Ft(.)43 b(If)31 b(Readline)i(do)s(es)f(not)g
-(read)g(a)g(com-)390 4024 y(plete)37 b(line,)h(or)e(the)g(n)m(um)m(b)s
+(read)g(a)g(com-)390 2948 y(plete)37 b(line,)h(or)e(the)g(n)m(um)m(b)s
 (er)f(of)h(c)m(haracters)i(sp)s(eci\014ed)d(b)m(y)h Fs
-(rl_num_chars_to_read)p Ft(,)c(b)s(efore)390 4133 y(the)h(duration)g
-(sp)s(eci\014ed)g(b)m(y)g Fj(secs)38 b Ft(\(in)33 b(seconds\))h(and)e
-Fj(usecs)37 b Ft(\(microseconds\),)f(it)d(returns)g(and)390
-4243 y(sets)22 b Fs(RL_STATE_TIMEOUT)17 b Ft(in)k Fs(rl_readline_state)
+(rl_num_chars_to_read)p Ft(,)c(b)s(efore)390 3058 y(the)h(duration)g
+(sp)s(eci\014ed)g(b)m(y)g Fk(secs)38 b Ft(\(in)33 b(seconds\))h(and)e
+Fk(usecs)37 b Ft(\(microseconds\),)f(it)d(returns)g(and)390
+3168 y(sets)22 b Fs(RL_STATE_TIMEOUT)17 b Ft(in)k Fs(rl_readline_state)
 p Ft(.)33 b(P)m(assing)22 b(0)g(for)f Fs(secs)g Ft(and)g
-Fs(usecs)f Ft(cancels)390 4352 y(an)m(y)k(previously)f(set)h(timeout;)j
+Fs(usecs)f Ft(cancels)390 3277 y(an)m(y)k(previously)f(set)h(timeout;)j
 (the)d(con)m(v)m(enience)h(macro)f Fs(rl_clear_timeout\(\))19
-b Ft(is)k(shorthand)390 4462 y(for)30 b(this.)41 b(Returns)29
+b Ft(is)k(shorthand)390 3387 y(for)30 b(this.)41 b(Returns)29
 b(0)i(if)f(the)h(timeout)g(is)g(set)g(successfully)-8
-b(.)3350 4665 y([F)g(unction])-3599 b Fh(int)53 b(rl_timeout_remaining)
+b(.)3350 3566 y([F)g(unction])-3599 b Fh(int)53 b(rl_timeout_remaining)
 f Fg(\()p Ff(unsigned)33 b(in)m(t)f(*secs,)h(unsigned)g(in)m(t)f
-(*usecs)p Fg(\))390 4774 y Ft(Return)38 b(the)h(n)m(um)m(b)s(er)e(of)i
+(*usecs)p Fg(\))390 3676 y Ft(Return)38 b(the)h(n)m(um)m(b)s(er)e(of)i
 (seconds)f(and)g(microseconds)h(remaining)g(in)f(the)h(curren)m(t)f
-(timeout)390 4884 y(duration)26 b(in)g Fj(*secs)31 b
-Ft(and)26 b Fj(*usecs)p Ft(,)i(resp)s(ectiv)m(ely)-8
-b(.)41 b(Both)27 b Fj(*secs)k Ft(and)26 b Fj(*usecs)k
-Ft(m)m(ust)c(b)s(e)g(non-NULL)390 4994 y(to)j(return)f(an)m(y)h(v)-5
+(timeout)390 3785 y(duration)26 b(in)g Fk(*secs)31 b
+Ft(and)26 b Fk(*usecs)p Ft(,)i(resp)s(ectiv)m(ely)-8
+b(.)41 b(Both)27 b Fk(*secs)k Ft(and)26 b Fk(*usecs)k
+Ft(m)m(ust)c(b)s(e)g(non-NULL)390 3895 y(to)j(return)f(an)m(y)h(v)-5
 b(alues.)40 b(The)29 b(return)e(v)-5 b(alue)29 b(is)g(-1)g(on)g(error)f
-(or)h(when)e(there)i(is)g(no)f(timeout)i(set,)390 5103
+(or)h(when)e(there)i(is)g(no)f(timeout)i(set,)390 4004
 y(0)35 b(when)e(the)i(timeout)h(has)e(expired)g(\(lea)m(ving)j
-Fj(*secs)i Ft(and)34 b Fj(*usecs)39 b Ft(unc)m(hanged\),)c(and)f(1)h
-(if)g(the)390 5213 y(timeout)27 b(has)e(not)h(expired.)38
-b(If)26 b(either)g(of)f Fj(secs)30 b Ft(and)25 b Fj(usecs)k
+Fk(*secs)i Ft(and)34 b Fk(*usecs)39 b Ft(unc)m(hanged\),)c(and)f(1)h
+(if)g(the)390 4114 y(timeout)27 b(has)e(not)h(expired.)38
+b(If)26 b(either)g(of)f Fk(secs)30 b Ft(and)25 b Fk(usecs)k
 Ft(is)d Fs(NULL)p Ft(,)g(the)f(return)g(v)-5 b(alue)26
-b(indicates)390 5322 y(whether)k(the)g(timeout)i(has)e(expired.)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.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)3350
-496 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 496 30 5 v 44 w(\015ag)p
-Fg(\))390 606 y Ft(Mo)s(dify)42 b(the)h(terminal)g(settings)g(for)f
+b(indicates)390 4224 y(whether)k(the)g(timeout)i(has)e(expired.)150
+4419 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)3350
+4613 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 4613 30 5 v 44 w(\015ag)p
+Fg(\))390 4722 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 716 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 716 28 4 v 41 w(\015ag)39
-b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 825
-y(if)g(Readline)h(should)f(read)g(eigh)m(t-bit)i(input.)3350
-1011 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 1121 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
-1230 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 1416 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 1526 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 1635 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
-1821 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 1931
-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 2040 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 2150 y Fj(kmap)p Ft(.)3350 2336 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 2445 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 2555 y(\()p Fj(rl)p 492 2555 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 2555 V 40 w(outstream)p Ft(;)i(an)m(y)390
-2665 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 2774 y(terminal)31 b(settings.)42
+390 4832 y(c)m(haracter)22 b(at)g(a)f(time)g(from)f(the)h(k)m(eyb)s
+(oard)g(and)f(p)s(erform)f(redispla)m(y)-8 b(.)38 b(The)21
+b Fk(meta)p 3169 4832 28 4 v 41 w(\015ag)28 b Ft(argumen)m(t)390
+4942 y(should)h(b)s(e)h(non-zero)h(if)f(Readline)h(should)f(read)g
+(eigh)m(t-bit)i(input.)3350 5121 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_deprep_terminal)c Fg(\()p Ff(v)m(oid)p
+Fg(\))390 5230 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 5340 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(.)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)3350
+299 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 408 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
+518 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
+Fk(kmap)p Ft(.)3350 727 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 837 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 946 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 1056 y Fk(kmap)p Ft(.)3350 1265 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 1374 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 1484 y(\()p
+Fk(rl)p 492 1484 28 4 v 40 w(outstream)p Ft(\).)j(If)32
+b Fk(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 Fk(rl)p 3115 1484 V 40 w(outstream)p
+Ft(;)i(an)m(y)390 1594 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 1703 y(terminal)31 b(settings.)42
 b(This)29 b(function)h(returns)f(the)i(previous)f(v)-5
-b(alue.)3350 2960 y([F)d(unction])-3599 b Fh(int)53 b
+b(alue.)3350 1912 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 2960 30 5 v 43 w(name)p Fg(\))390 3070 y Ft(Reinitialize)26
-b(Readline's)f(idea)f(of)g(the)g(terminal)h(settings)f(using)g
-Fj(terminal)p 2977 3070 28 4 v 40 w(name)29 b Ft(as)24
-b(the)g(termi-)390 3179 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 3179
-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
-3289 y(v)-5 b(ariable)31 b(is)g(used.)150 3489 y Fi(2.4.10)63
-b(Utilit)m(y)40 b(F)-10 b(unctions)3350 3686 y Ft([F)i(unction])-3599
+2232 1912 30 5 v 43 w(name)p Fg(\))390 2022 y Ft(Reinitialize)i
+(Readline's)d(idea)h(of)f(the)g(terminal)h(settings)g(using)e
+Fk(terminal)p 3050 2022 28 4 v 41 w(name)38 b Ft(as)33
+b(the)g(ter-)390 2131 y(minal)k(t)m(yp)s(e)g(\(e.g.,)j
+Fs(xterm)p Ft(\).)58 b(If)36 b Fk(terminal)p 1889 2131
+V 41 w(name)42 b Ft(is)36 b Fs(NULL)p Ft(,)i(Readline)f(uses)f(the)h(v)
+-5 b(alue)37 b(of)g(the)390 2241 y Fs(TERM)29 b Ft(en)m(vironmen)m(t)i
+(v)-5 b(ariable.)150 2452 y Fi(2.4.10)63 b(Utilit)m(y)40
+b(F)-10 b(unctions)3350 2662 y Ft([F)i(unction])-3599
 b Fh(int)53 b(rl_save_state)d Fg(\()p Ff(struct)34 b(readline)p
-1759 3686 30 5 v 44 w(state)f(*sp)p Fg(\))390 3796 y
+1759 2662 30 5 v 44 w(state)f(*sp)p Fg(\))390 2771 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 3796 28 4 v 40 w(state)390 3906 y
+(to)f Fk(sp)p Ft(.)40 b(The)28 b(con)m(ten)m(ts)i(of)e(the)h
+Fk(readline)p 3518 2771 28 4 v 40 w(state)390 2881 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 4015 y(structure.)3350 4201 y([F)-8 b(unction])-3599
+(the)390 2990 y(structure.)3350 3199 y([F)-8 b(unction])-3599
 b Fh(int)53 b(rl_restore_state)e Fg(\()p Ff(struct)34
-b(readline)p 1916 4201 30 5 v 44 w(state)f(*sp)p Fg(\))390
-4311 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 4420 y(call)30 b(to)g
+b(readline)p 1916 3199 30 5 v 44 w(state)f(*sp)p Fg(\))390
+3309 y Ft(Restore)23 b(Readline's)g(in)m(ternal)g(state)g(to)g(that)g
+(stored)f(in)g Fk(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 3418 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 4420 28 4 v 41 w(state)35 b Ft(structure)29
-b(are)g(do)s(cumen)m(ted)390 4530 y(in)h Fs(readline.h)p
+Fk(readline)p 2470 3418 28 4 v 41 w(state)35 b Ft(structure)29
+b(are)g(do)s(cumen)m(ted)390 3528 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 4716 y([F)-8 b(unction])-3599 b Fh(void)54
+(structure.)3350 3737 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
-4825 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 5011 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
-5011 30 5 v 44 w(undo)p Fg(\))390 5121 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 5230 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39
-b(If)25 b Fj(clear)p 1422 5230 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
-5340 y(line)31 b(is)f(cleared.)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)3350
-299 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 408 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
-518 y(lo)s(cating)j(it)f(if)f(necessary)-8 b(.)3350 756
-y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d Fg(\()p
-Ff(v)m(oid)p Fg(\))390 865 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 975 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
-1212 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_ding)48
-b Fg(\()p Ff(v)m(oid)p Fg(\))390 1322 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 1559 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 1669 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
-1906 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_display_match_list)d
+3847 y Ft(Deallo)s(cate)25 b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)
+f Fk(mem)p Ft(.)38 b Fk(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 4056 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 4165 y Ft(Ensure)26
+b(that)j Fs(rl_line_buffer)23 b Ft(has)28 b(enough)f(space)h(to)h(hold)
+e Fk(len)h Ft(c)m(haracters,)h(reallo)s(cating)h(it)390
+4275 y(if)g(necessary)-8 b(.)3350 4484 y([F)g(unction])-3599
+b Fh(int)53 b(rl_initialize)d Fg(\()p Ff(v)m(oid)p Fg(\))390
+4593 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 4703 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 4912 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_ding)48 b Fg(\()p Ff(v)m(oid)p Fg(\))390
+5021 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 5230 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 5340 y Ft(Return)d(1)g(if)h
+Fk(c)36 b Ft(is)30 b(an)h(alphab)s(etic)g(c)m(haracter.)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)3350
+299 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 2016 y Ft(A)i(con)m(v)m(enience)h(function)e(for)g(displa)m
+Fg(\))390 408 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 2126 y(line's)g(output)f(stream.)51 b Fs(matches)31
+390 518 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 2235 y(completion)26 b(matc)m(hes.)39
+(as)h(a)g(list)g(of)390 628 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
-2345 y(the)h(longest)i(string)e(in)g Fs(matches)p Ft(.)37
+737 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 2454 y(horizontally)33 b Ft(to)k(select)h(ho)m
+(print-completions-)390 847 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 2564 y(Init)30 b(File)h(Syn)m(tax],)g(page)g
+(1.3.1)h([Readline)390 956 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 2674 y(b)s(er)23 b(of)g(columns)g(used)g(for)
+(sets)g(the)g(n)m(um-)390 1066 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
-2783 y(of)31 b(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)31
+1176 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 3021 y(The)g(follo)m(wing)j(are)e(implemen)m(ted)h(as)f(macros,)h
+275 1352 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 3130 y(refrain)d(from)g(using)g(them.)3350
-3368 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 3477 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 3715 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 3824 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 4062 y([F)-8 b(unction])-3599 b Fh(int)53
+b(should)150 1462 y(refrain)d(from)g(using)g(them.)3350
+1638 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 1747 y Ft(Return)c(1)g(if)h
+Fk(c)36 b Ft(is)30 b(an)h(upp)s(ercase)e(alphab)s(etic)i(c)m(haracter.)
+3350 1924 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 2033 y Ft(Return)c(1)g(if)h
+Fk(c)36 b Ft(is)30 b(a)h(lo)m(w)m(ercase)i(alphab)s(etic)e(c)m
+(haracter.)3350 2210 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
-4171 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 4409 y([F)-8 b(unction])-3599 b Fh(int)53
+2319 y Ft(Return)c(1)g(if)h Fk(c)36 b Ft(is)30 b(a)h(n)m(umeric)f(c)m
+(haracter.)3350 2496 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
-4519 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s
+2605 y Ft(If)23 b Fk(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 4756 y([F)-8 b(unction])-3599 b
+h(c)m(haracter.)3350 2782 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 4866 y Ft(If)28 b Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f
+Fg(\))390 2891 y Ft(If)28 b Fk(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 4975 y(ter.)3350 5213 y([F)-8
+(w)m(ercase)j(c)m(harac-)390 3001 y(ter.)3350 3177 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 5322 y Ft(If)c Fj(c)36 b
+Ff(in)m(t)34 b(c)p Fg(\))390 3287 y Ft(If)c Fk(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.)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)150
-299 y Fi(2.4.11)63 b(Miscellaneous)42 b(F)-10 b(unctions)3350
-489 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 598 y(Keymap)g(map)p Fg(\))390 708 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 817 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 927 y(is)k(deprecated;)i(use)e
-Fs(rl_generic_bind\(\))25 b Ft(instead.)3350 1101 y([F)-8
+b(alue)31 b(it)g(represen)m(ts.)150 3481 y Fi(2.4.11)63
+b(Miscellaneous)42 b(F)-10 b(unctions)3350 3672 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
+3782 y(Keymap)g(map)p Fg(\))390 3891 y Ft(Bind)23 b(the)g(k)m(ey)h
+(sequence)g Fk(k)m(eyseq)i Ft(to)e(in)m(v)m(ok)m(e)h(the)f(macro)f
+Fk(macro)p Ft(.)39 b(The)23 b(binding)f(is)i(p)s(erformed)d(in)390
+4001 y Fk(map)p Ft(.)39 b(When)28 b Fk(k)m(eyseq)i Ft(is)e(in)m(v)m(ok)
+m(ed,)i(the)d Fk(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 4111 y(is)k(deprecated;)i(use)
+e Fs(rl_generic_bind)c Ft(instead.)3350 4287 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 1210 y Ft(Prin)m(t)27
+Ff(in)m(t)33 b(readable)p Fg(\))390 4396 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
-1320 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 1429 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 1603 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 1713 y Ft(Mak)m(e)28 b(the)f(Readline)g(v)-5
-b(ariable)27 b Fj(v)-5 b(ariable)32 b Ft(ha)m(v)m(e)c
-Fj(v)-5 b(alue)p Ft(.)40 b(This)25 b(b)s(eha)m(v)m(es)i(as)g(if)f(the)h
-(Readline)g(com-)390 1822 y(mand)j(`)p Fs(set)g Fl(variable)e(value)p
+4506 y(to)43 b Fs(rl_outstream)p Ft(.)72 b(If)41 b(the)h(application)h
+(has)f(assigned)g(a)h(v)-5 b(alue)42 b(to)h Fs(rl_macro_display_)390
+4616 y(hook)p Ft(,)36 b Fs(rl_macro_dumper)31 b Ft(calls)37
+b(it)f(instead)f(of)h(prin)m(ting)f(an)m(ything.)56 b(If)35
+b Fk(readable)41 b Ft(is)36 b(greater)390 4725 y(than)28
+b(zero,)h(the)f(list)h(is)f(formatted)g(in)g(suc)m(h)f(a)h(w)m(a)m(y)h
+(that)g(it)f(can)g(b)s(e)f(made)h(part)g(of)g(an)g Fs(inputrc)390
+4835 y Ft(\014le)i(and)g(re-read.)3350 5011 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 5121 y Ft(Mak)m(e)28 b(the)f(Readline)g(v)-5
+b(ariable)27 b Fk(v)-5 b(ariable)32 b Ft(ha)m(v)m(e)c
+Fk(v)-5 b(alue)p Ft(.)40 b(This)25 b(b)s(eha)m(v)m(es)i(as)g(if)f(the)h
+(Readline)g(com-)390 5230 y(mand)j(`)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 1932 y([Readline)g(Init)f(File)
-i(Syn)m(tax],)f(page)g(4\).)3350 2106 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 2215 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 2325 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 2499 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 2608 y Ft(Prin)m(t)44 b(the)h(Readline)g(v)-5
-b(ariable)45 b(names)f(and)g(their)g(curren)m(t)g(v)-5
-b(alues)45 b(to)g Fs(rl_outstream)p Ft(.)79 b(If)390
-2718 y Fj(readable)37 b Ft(is)32 b(non-zero,)h(the)e(list)i(is)e
-(formatted)h(in)g(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(it)g(can)g(b)s(e)f
-(made)g(part)h(of)390 2827 y(an)e Fs(inputrc)f Ft(\014le)h(and)g
-(re-read.)3350 3001 y([F)-8 b(unction])-3599 b Fh(int)53
+Ft(\014le)i(\(see)h(Section)f(1.3.1)390 5340 y([Readline)g(Init)f(File)
+i(Syn)m(tax],)f(page)g(4\))g(or)g(b)m(y)f Fs(rl_parse_and_bind)p
+Ft(.)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)3350
+299 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
+408 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
+Fk(v)-5 b(ariable)p Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390
+518 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 699 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 809 y Ft(Prin)m(t)44
+b(the)h(Readline)g(v)-5 b(ariable)45 b(names)f(and)g(their)g(curren)m
+(t)g(v)-5 b(alues)45 b(to)g Fs(rl_outstream)p Ft(.)79
+b(If)390 918 y Fk(readable)37 b Ft(is)32 b(non-zero,)h(the)e(list)i(is)
+e(formatted)h(in)g(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(it)g(can)g(b)s(e)f
+(made)g(part)h(of)390 1028 y(an)e Fs(inputrc)f Ft(\014le)h(and)g
+(re-read.)3350 1209 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 3111 y Ft(Set)25 b(the)h(time)f(in)m(terv)-5
+b(u)p Fg(\))390 1318 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 3220 y(c)m(haracter)32
+(sho)m(wing)i(a)f(balancing)390 1428 y(c)m(haracter)32
 b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)3350
-3394 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 3504
+1609 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 1718
 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 3613 y(en)m(try)34 b(for)f(the)h
+(termcap)f(capabilit)m(y)i Fk(cap)p Ft(.)40 b(Readline)27
+b(fetc)m(hes)h(the)g(termcap)390 1828 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 3723 y(screen)21 b(line)h(and)e(p)s
+f(mo)m(v)m(e)h(around)e(the)390 1938 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 3832 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 3942 y(only)30
-b(those)h(capabilities)i(Readline)e(uses.)3350 4116 y([F)-8
-b(unction])-3599 b Fh(void)54 b(rl_clear_history)c Fg(\()p
-Ff(v)m(oid)p Fg(\))390 4225 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 4335 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 4445 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.)3350 4618 y([F)-8 b(unction])-3599 b
-Fh(void)54 b(rl_activate_mark)c Fg(\()p Ff(v)m(oid)p
-Fg(\))390 4728 y Ft(Enable)30 b(an)f Fk(active)37 b Ft(mark.)j(When)30
-b(this)f(is)h(enabled,)g(the)g(text)h(b)s(et)m(w)m(een)f(p)s(oin)m(t)g
-(and)f(mark)g(\(the)390 4837 y Fj(region)p Ft(\))c(is)f(displa)m(y)m
-(ed)h(in)f(the)g(terminal's)h(standout)f(mo)s(de)f(\(a)i
-Fj(face)5 b Ft(\).)40 b(This)24 b(is)g(called)h(b)m(y)f(v)-5
-b(arious)390 4947 y(Readline)28 b(functions)f(that)h(set)g(the)f(mark)g
-(and)g(insert)g(text,)j(and)c(is)i(a)m(v)-5 b(ailable)30
-b(for)d(applications)390 5057 y(to)k(call.)3350 5230
-y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deactivate_mark)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 5340 y Ft(T)-8 b(urn)29
-b(o\013)i(the)f(activ)m(e)j(mark.)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)3350
-299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_keep_mark_active)d
-Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Indicate)45 b(that)g(the)g
-(mark)f(should)g(remain)g(activ)m(e)j(when)c(the)i(curren)m(t)f
-(Readline)h(function)390 518 y(completes)28 b(and)e(after)h(redispla)m
-(y)g(o)s(ccurs.)40 b(In)26 b(most)h(cases,)h(the)f(mark)g(remains)f
-(activ)m(e)j(for)e(only)390 628 y(the)k(duration)f(of)g(a)h(single)g
-(bindable)f(Readline)h(function.)3350 799 y([F)-8 b(unction])-3599
-b Fh(int)53 b(rl_mark_active_p)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 909 y Ft(Return)30 b(a)g(non-zero)h(v)-5 b(alue)31
-b(if)f(the)h(mark)f(is)h(curren)m(tly)f(activ)m(e;)j(zero)e(otherwise.)
-150 1100 y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150
-1247 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
-1356 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 1466 y Fs(select\(\))40 b Ft(on)i(v)-5 b(arious)42
-b(\014le)g(descriptors.)76 b(T)-8 b(o)43 b(accommo)s(date)h(this)e
-(need,)j(Readline)e(can)f(also)i(b)s(e)150 1576 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 1685 y(this)e(easy)-8 b(.)3350 1857
-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 1966 y(rl)p
-639 1966 30 5 v 44 w(v)m(cpfunc)p 1016 1966 V 45 w(t)f(*lhandler)p
-Fg(\))390 2076 y Ft(Set)23 b(up)e(the)i(terminal)g(for)f(Readline)h
-(I/O)g(and)f(displa)m(y)h(the)f(initial)i(expanded)e(v)-5
-b(alue)23 b(of)g Fj(prompt)p Ft(.)390 2186 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 2295 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 2405 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 2514 y(\014nished)g(with)h
-(it.)3350 2686 y([F)-8 b(unction])-3599 b Fh(void)54
+(erasing)g(a)f(line.)38 b(Readline)390 2047 y(do)s(es)21
+b(not)h(fetc)m(h)h(or)e(use)h(all)g(of)g(a)g(terminal's)g
+(capabilities,)k(and)21 b(this)h(function)f(will)h(return)f(v)-5
+b(alues)390 2157 y(for)30 b(only)h(those)g(capabilities)h(Readline)f
+(fetc)m(hes.)3350 2338 y([F)-8 b(unction])-3599 b Fh(void)54
+b(rl_reparse_colors)c Fg(\()p Ff(v)m(oid)p Fg(\))390
+2447 y Ft(Read)31 b(or)f(re-read)h(color)g(de\014nitions)f(from)g
+Fs(LS_COLORS)p Ft(.)3350 2628 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_clear_history)c Fg(\()p Ff(v)m(oid)p
+Fg(\))390 2738 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 2848 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 2957 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.)3350
+3138 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_activate_mark)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3248 y Ft(Enable)40 b(an)g
+Fj(active)46 b Ft(region.)70 b(When)40 b(this)g(is)g(enabled,)i(the)e
+(text)h(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and)f(mark)390
+3357 y(\(the)26 b Fk(region)p Ft(\))h(is)f(displa)m(y)m(ed)h(using)e
+(the)h(color)h(sp)s(eci\014ed)e(b)m(y)h(the)g(v)-5 b(alue)27
+b(of)f(the)g Fs(active-region-)390 3467 y(start-color)37
+b Ft(v)-5 b(ariable)40 b(\(a)h Fk(face)5 b Ft(\).)71
+b(The)39 b(default)h(face)h(is)f(the)g(terminal's)g(standout)g(mo)s
+(de.)390 3576 y(This)29 b(is)g(called)i(b)m(y)e(v)-5
+b(arious)29 b(Readline)h(functions)f(that)h(set)g(the)g(mark)f(and)g
+(insert)g(text,)i(and)e(is)390 3686 y(a)m(v)-5 b(ailable)33
+b(for)d(applications)h(to)h(call.)3350 3867 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_deactivate_mark)c Fg(\()p Ff(v)m(oid)p
+Fg(\))390 3977 y Ft(T)-8 b(urn)29 b(o\013)i(the)f(activ)m(e)j(region.)
+3350 4158 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_keep_mark_active)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 4267 y Ft(Indicate)45
+b(that)g(the)g(mark)f(should)g(remain)g(activ)m(e)j(when)c(the)i
+(curren)m(t)f(Readline)h(function)390 4377 y(completes)28
+b(and)e(after)h(redispla)m(y)g(o)s(ccurs.)40 b(In)26
+b(most)h(cases,)h(the)f(mark)g(remains)f(activ)m(e)j(for)e(only)390
+4486 y(the)k(duration)f(of)g(a)h(single)g(bindable)f(Readline)h
+(function.)3350 4667 y([F)-8 b(unction])-3599 b Fh(int)53
+b(rl_mark_active_p)e Fg(\()p Ff(v)m(oid)p Fg(\))390 4777
+y Ft(Return)30 b(a)g(non-zero)h(v)-5 b(alue)31 b(if)f(the)h(mark)f(is)h
+(curren)m(tly)f(activ)m(e;)j(zero)e(otherwise.)150 4974
+y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150 5121
+y Ft(F)-8 b(or)39 b(applications)h(that)g(need)e(more)h(gran)m(ular)g
+(con)m(trol)h(than)e(plain)h Fs(readline\(\))d Ft(pro)m(vides,)41
+b(there)150 5230 y(is)j(an)g(alternate)i(in)m(terface.)83
+b(Some)44 b(applications)h(need)f(to)h(in)m(terlea)m(v)m(e)i(k)m(eyb)s
+(oard)d(I/O)g(with)g(\014le,)150 5340 y(device,)34 b(or)f(windo)m(w)f
+(system)h(I/O,)g(t)m(ypically)i(b)m(y)e(using)f(a)h(main)g(lo)s(op)f
+(to)i Fs(select\(\))c Ft(on)j(v)-5 b(arious)33 b(\014le)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)150
+299 y(descriptors.)62 b(T)-8 b(o)38 b(accommo)s(date)i(this)d(use)g
+(case,)k(Readline)d(can)g(also)h(b)s(e)e(in)m(v)m(ok)m(ed)i(as)e(a)h
+(`callbac)m(k')150 408 y(function)30 b(from)g(an)g(ev)m(en)m(t)i(lo)s
+(op.)41 b(There)30 b(are)h(functions)f(a)m(v)-5 b(ailable)32
+b(to)f(mak)m(e)h(this)e(easy)-8 b(.)3350 590 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 700 y(rl)p 639 700
+30 5 v 44 w(v)m(cpfunc)p 1016 700 V 45 w(t)f(*line)p
+1338 700 V 44 w(handler)p Fg(\))390 809 y Ft(Set)23 b(up)e(the)i
+(terminal)g(for)f(Readline)h(I/O)g(and)f(displa)m(y)h(the)f(initial)i
+(expanded)e(v)-5 b(alue)23 b(of)g Fk(prompt)p Ft(.)390
+919 y(Sa)m(v)m(e)35 b(the)f(v)-5 b(alue)35 b(of)f Fk(line)p
+1256 919 28 4 v 40 w(handler)40 b Ft(to)35 b(use)f(as)g(a)g(handler)f
+(function)h(to)h(call)g(when)e(a)h(complete)390 1029
+y(line)f(of)g(input)g(has)f(b)s(een)h(en)m(tered.)49
+b(The)32 b(handler)g(function)h(receiv)m(es)i(the)e(text)h(of)f(the)g
+(line)h(as)390 1138 y(an)e(argumen)m(t.)48 b(As)33 b(with)f
+Fs(readline\(\))p Ft(,)f(the)h(handler)g(function)g(should)g
+Fs(free)f Ft(the)i(line)g(when)390 1248 y(it)e(it)g(\014nished)e(with)h
+(it.)3350 1430 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
-2796 y Ft(Whenev)m(er)34 b(an)g(application)h(determines)e(that)i(k)m
+1539 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 2905 y Fs(rl_callback_read_char\(\))p Ft(,)17 b(whic)m(h)22
+390 1649 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 3015 y(source.)40 b(If)27 b(that)i(c)m(haracter)g(completes)
+(input)390 1758 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 3124 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 3234 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 3344 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
-3453 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
-3563 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 3735 y([F)-8 b(unction])-3599 b Fh(void)54
-b(rl_callback_sigcleanup)e Fg(\()p Ff(v)m(oid)p Fg(\))390
-3844 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 3954 y(to)35 b(rl)p 572 3954 28 4 v
-40 w(callbac)m(k)p 928 3954 V 42 w(read)p 1142 3954 V
-40 w(c)m(har)f(\(e.g.,)j(the)e(state)g(of)f(an)m(y)h(activ)m(e)h
+b(in)m(v)m(ok)m(e)i(the)390 1868 y Fk(line)p 537 1868
+V 40 w(handler)d Ft(function)21 b(installed)h(b)m(y)f
+Fs(rl_callback_handler_instal)o(l)15 b Ft(to)22 b(pro)s(cess)f(the)g
+(line.)390 1978 y(Before)32 b(calling)h(the)f Fk(line)p
+1269 1978 V 41 w(handler)37 b Ft(function,)31 b(Readline)h(resets)g
+(the)g(terminal)g(settings)h(to)f(the)390 2087 y(v)-5
+b(alues)37 b(they)f(had)g(b)s(efore)g(calling)h Fs
+(rl_callback_handler_instal)o(l)p Ft(.)53 b(If)35 b(the)i
+Fk(line)p 3411 2087 V 40 w(handler)390 2197 y Ft(function)f(returns,)i
+(and)e(the)h(line)g(handler)f(remains)g(installed,)j(Readline)f(mo)s
+(di\014es)d(the)i(ter-)390 2306 y(minal)31 b(settings)h(for)f(its)g
+(use)g(again.)43 b Fs(EOF)30 b Ft(is)h(indicated)h(b)m(y)f(calling)h
+Fk(line)p 2905 2306 V 40 w(handler)37 b Ft(with)31 b(a)g
+Fs(NULL)390 2416 y Ft(line.)3350 2598 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_callback_sigcleanup)e Fg(\()p Ff(v)m(oid)p
+Fg(\))390 2707 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 2817 y(to)35 b(rl)p 572 2817
+V 40 w(callbac)m(k)p 928 2817 V 42 w(read)p 1142 2817
+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
-4063 y(in)m(tended)f(to)h(b)s(e)e(used)g(b)m(y)h(applications)h(that)g
+2927 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
-4173 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g
-(when)e(appropriate.)3350 4345 y([F)-8 b(unction])-3599
+3036 y(Readline's)f(in)m(ternal)g(signal)g(handler)f(calls)h(this)g
+(when)e(appropriate.)3350 3218 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 4454 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 4564 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
-4673 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 4783 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 4893 y(b)s(efore)f(the)h(program)f
-(exits)h(to)g(reset)g(the)f(terminal)h(settings.)150
-5083 y Fi(2.4.13)63 b(A)41 b(Readline)f(Example)150 5230
+Ff(v)m(oid)p Fg(\))390 3328 y Ft(Restore)25 b(the)f(terminal)h(to)f
+(its)h(initial)g(state)g(and)f(remo)m(v)m(e)h(the)g(line)f(handler.)38
+b(Y)-8 b(ou)24 b(ma)m(y)h(call)g(this)390 3437 y(function)i(from)f
+(within)g(a)i(callbac)m(k)h(as)e(w)m(ell)h(as)f(indep)s(enden)m(tly)-8
+b(.)39 b(If)26 b(the)h Fk(line)p 3050 3437 V 41 w(handler)32
+b Ft(installed)390 3547 y(b)m(y)e Fs(rl_callback_handler_in)o(stal)o(l)
+24 b Ft(do)s(es)29 b(not)h(exit)g(the)g(program,)g(y)m(our)g(program)f
+(should)390 3656 y(call)i(either)f(this)g(function)g(or)g(the)g
+(function)f(referred)g(to)i(b)m(y)f(the)g(v)-5 b(alue)30
+b(of)g Fs(rl_deprep_term_)390 3766 y(function)e Ft(b)s(efore)i(the)h
+(program)f(exits)h(to)g(reset)g(the)g(terminal)f(settings.)150
+3963 y Fi(2.4.13)63 b(A)41 b(Readline)f(Example)150 4110
 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 5340 y(upp)s(ercase)d(c)m(haracters)j(to)f
+b(alen)m(ts,)37 b(and)150 4220 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(')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(w)m(ould)31 b(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 408 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 628 y Fs(/*)47
-b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g(characters.)e
-(*/)390 737 y(int)390 847 y(invert_case_line)f(\(count,)j(key\))629
-956 y(int)h(count,)f(key;)390 1066 y({)485 1176 y(register)g(int)h
-(start,)f(end,)h(i;)485 1395 y(start)g(=)g(rl_point;)485
-1614 y(if)h(\(rl_point)d(>=)i(rl_end\))581 1724 y(return)f(\(0\);)485
-1943 y(if)i(\(count)e(<)h(0\))581 2052 y({)676 2162 y(direction)f(=)h
-(-1;)676 2271 y(count)g(=)g(-count;)581 2381 y(})485
-2491 y(else)581 2600 y(direction)e(=)j(1;)485 2819 y(/*)g(Find)e(the)h
-(end)g(of)g(the)g(range)g(to)g(modify.)f(*/)485 2929
-y(end)h(=)h(start)e(+)i(\(count)e(*)h(direction\);)485
-3148 y(/*)h(Force)e(it)h(to)g(be)h(within)e(range.)g(*/)485
-3258 y(if)i(\(end)e(>)i(rl_end\))581 3367 y(end)f(=)g(rl_end;)485
-3477 y(else)g(if)g(\(end)g(<)g(0\))581 3587 y(end)g(=)g(0;)485
-3806 y(if)h(\(start)e(==)h(end\))581 3915 y(return)f(\(0\);)485
-4134 y(if)i(\(start)e(>)h(end\))581 4244 y({)676 4354
-y(int)g(temp)g(=)g(start;)676 4463 y(start)g(=)g(end;)676
-4573 y(end)g(=)h(temp;)581 4682 y(})485 4902 y(/*)g(Tell)e(readline)g
-(that)g(we)i(are)f(modifying)e(the)i(line,)629 5011 y(so)g(it)g(will)g
-(save)f(the)h(undo)g(information.)d(*/)485 5121 y(rl_modifying)h
-(\(start,)h(end\);)485 5340 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f
-(i++\))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)581
-299 y Fs({)676 408 y(if)48 b(\(_rl_uppercase_p)43 b
-(\(rl_line_buffer[i]\)\))772 518 y(rl_line_buffer[i])g(=)k
-(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 628 y(else)i(if)g
-(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 737
+Ft(')150 4330 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
+4439 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
+4573 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g
+(characters.)e(*/)390 4682 y(int)390 4792 y(invert_case_line)f
+(\(count,)j(key\))629 4902 y(int)h(count,)f(key;)390
+5011 y({)485 5121 y(int)h(start,)f(end,)h(i;)485 5340
+y(start)g(=)g(rl_point;)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)485
+408 y Fs(if)48 b(\(rl_point)d(>=)i(rl_end\))581 518 y(return)f(\(0\);)
+485 737 y(/*)i(Find)e(the)h(end)g(of)g(the)g(range)g(to)g(modify.)f(*/)
+485 847 y(end)h(=)h(start)e(+)i(count;)485 1066 y(/*)g(Force)e(it)h(to)
+g(be)h(within)e(range.)g(*/)485 1176 y(if)i(\(end)e(>)i(rl_end\))581
+1285 y(end)f(=)g(rl_end;)485 1395 y(else)g(if)g(\(end)g(<)g(0\))581
+1504 y(end)g(=)g(0;)485 1724 y(if)h(\(start)e(==)h(end\))581
+1833 y(return)f(\(0\);)485 2052 y(/*)i(For)f(positive)e(arguments,)g
+(put)i(point)f(after)h(the)g(last)f(changed)g(character.)f(For)p
+4017 2073 42 84 v 629 2162 a(negative)g(arguments,)g(put)i(point)f
+(before)h(the)f(last)h(changed)f(character.)f(*/)485
+2271 y(rl_point)h(=)h(end;)485 2491 y(/*)h(Swap)e(start)h(and)g(end)f
+(if)i(we)f(are)g(moving)f(backwards)f(*/)485 2600 y(if)j(\(start)e(>)h
+(end\))581 2710 y({)676 2819 y(int)g(temp)g(=)g(start;)676
+2929 y(start)g(=)g(end;)676 3039 y(end)g(=)h(temp;)581
+3148 y(})485 3367 y(/*)g(Tell)e(readline)g(that)g(we)i(are)f(modifying)
+e(the)i(line,)629 3477 y(so)g(it)g(will)g(save)f(the)h(undo)g
+(information.)d(*/)485 3587 y(rl_modifying)h(\(start,)h(end\);)485
+3806 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f(i++\))581
+3915 y({)676 4025 y(if)i(\(_rl_uppercase_p)43 b
+(\(rl_line_buffer[i]\)\))772 4134 y(rl_line_buffer[i])g(=)k
+(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 4244 y(else)i(if)g
+(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 4354
 y(rl_line_buffer[i])f(=)k(_rl_to_upper)e(\(rl_line_buffer[i]\);)581
-847 y(})485 956 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g(last)g
-(character)e(changed.)g(*/)485 1066 y(rl_point)h(=)h(\(direction)e(==)j
-(1\))f(?)g(end)g(-)h(1)f(:)h(start;)485 1176 y(return)f(\(0\);)390
-1285 y(})150 1518 y Fi(2.4.14)63 b(Alternate)40 b(In)m(terface)g
-(Example)150 1665 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 1775 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 1884 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 2052
-y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f(is)j(required.)d
-(*/)390 2162 y(#include)h(<stdlib.h>)390 2271 y(#include)g(<string.h>)
-390 2381 y(#include)g(<unistd.h>)390 2491 y(#include)g(<locale.h>)390
-2710 y(/*)h(Used)g(for)g(select\(2\))e(*/)390 2819 y(#include)h
-(<sys/types.h>)390 2929 y(#include)g(<sys/select.h>)390
-3148 y(#include)g(<signal.h>)390 3367 y(#include)g(<stdio.h>)390
-3587 y(/*)h(Standard)f(readline)f(include)h(files.)g(*/)390
-3696 y(#include)g(<readline/readline.h>)390 3806 y(#include)g
-(<readline/history.h>)390 4025 y(static)g(void)h(cb_linehandler)d
-(\(char)i(*\);)390 4134 y(static)g(void)h(sighandler)e(\(int\);)390
-4354 y(int)i(running;)390 4463 y(int)g(sigwinch_received;)390
-4573 y(const)f(char)h(*prompt)f(=)h("rltest$)f(";)390
-4792 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 4812 42 84
-v 533 4902 a(reading)g(a)h(character.)e(*/)390 5011 y(static)h(void)390
-5121 y(sighandler)f(\(int)i(sig\))390 5230 y({)485 5340
-y(sigwinch_received)d(=)j(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)390
-299 y Fs(})390 518 y(/*)47 b(Callback)f(function)f(called)h(for)h(each)
-g(line)g(when)f(accept-line)f(executed,)g(EOF)533 628
-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 737 y(also)g(call)f(exit\(3\).)g(*/)
-390 847 y(static)g(void)390 956 y(cb_linehandler)e(\(char)i(*line\))390
-1066 y({)485 1176 y(/*)i(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g(`exit')
-f(to)h(exit.)f(*/)485 1285 y(if)i(\(line)e(==)h(NULL)g(||)g(strcmp)f
-(\(line,)g("exit"\))g(==)h(0\))581 1395 y({)676 1504
-y(if)h(\(line)e(==)h(0\))772 1614 y(printf)f(\("\\n"\);)676
-1724 y(printf)g(\("exit\\n"\);)676 1833 y(/*)i(This)e(function)g(needs)
+4463 y(})485 4682 y(return)i(\(0\);)390 4792 y(})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)150
+299 y Fi(2.4.14)63 b(Alternate)40 b(In)m(terface)g(Example)150
+446 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
+555 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 665 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 847 y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f
+(is)j(required.)d(*/)390 956 y(#include)h(<stdlib.h>)390
+1066 y(#include)g(<string.h>)390 1176 y(#include)g(<unistd.h>)390
+1395 y(/*)h(Used)g(for)g(select\(2\))e(*/)390 1504 y(#include)h
+(<sys/types.h>)390 1614 y(#include)g(<sys/select.h>)390
+1833 y(#include)g(<signal.h>)390 2052 y(#include)g(<errno.h>)390
+2162 y(#include)g(<stdio.h>)390 2381 y(#include)g(<locale.h>)390
+2600 y(/*)h(Standard)f(readline)f(include)h(files.)g(*/)390
+2710 y(#include)g(<readline/readline.h>)390 2819 y(#include)g
+(<readline/history.h>)390 3039 y(#if)h(!defined)e(\(errno\))390
+3148 y(extern)h(int)h(errno;)390 3258 y(#endif)390 3477
+y(static)f(void)h(cb_linehandler)d(\(char)i(*\);)390
+3587 y(static)g(void)h(sighandler)e(\(int\);)390 3806
+y(int)i(running;)390 3915 y(int)g(sigwinch_received;)390
+4025 y(const)f(char)h(*prompt)f(=)h("rltest$)f(";)390
+4244 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 4264 42 84
+v 533 4354 a(reading)g(a)h(character.)e(*/)390 4463 y(static)h(void)390
+4573 y(sighandler)f(\(int)i(sig\))390 4682 y({)485 4792
+y(sigwinch_received)d(=)j(1;)390 4902 y(})390 5121 y(/*)g(Callback)f
+(function)f(called)h(for)h(each)g(line)g(when)f(accept-line)f
+(executed,)g(EOF)533 5230 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
+5340 y(also)g(call)f(exit\(3\).)g(*/)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(static)46 b(void)390 408 y(cb_linehandler)e(\(char)i(*line\))
+390 518 y({)485 628 y(/*)i(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g
+(`exit')f(to)h(exit.)f(*/)485 737 y(if)i(\(line)e(==)h(NULL)g(||)g
+(strcmp)f(\(line,)g("exit"\))g(==)h(0\))581 847 y({)676
+956 y(if)h(\(line)e(==)h(0\))772 1066 y(printf)f(\("\\n"\);)676
+1176 y(printf)g(\("exit\\n"\);)676 1285 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 1853 42 84 v 820 1943 a(and)g(calling)g(it)h(from)g(the)g(line)g
+3874 1305 42 84 v 820 1395 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
-1963 42 76 v 820 2052 a(being)g(displayed.)f(*/)676 2162
-y(rl_callback_handler_remove)c(\(\);)676 2381 y(running)46
-b(=)i(0;)581 2491 y(})485 2600 y(else)581 2710 y({)676
-2819 y(if)g(\(*line\))772 2929 y(add_history)d(\(line\);)676
-3039 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676
-3148 y(free)h(\(line\);)581 3258 y(})390 3367 y(})390
-3587 y(int)390 3696 y(main)g(\(int)f(c,)h(char)g(**v\))390
-3806 y({)485 3915 y(fd_set)g(fds;)485 4025 y(int)g(r;)485
-4244 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h
-(environment)e(variables.)g(*/)p 3874 4264 42 84 v 485
-4354 a(setlocale)h(\(LC_ALL,)f(""\);)485 4573 y(/*)j(Handle)e(window)g
+1415 42 76 v 820 1504 a(being)g(displayed.)f(*/)676 1614
+y(rl_callback_handler_remove)c(\(\);)676 1833 y(running)46
+b(=)i(0;)581 1943 y(})485 2052 y(else)581 2162 y({)676
+2271 y(if)g(\(*line\))772 2381 y(add_history)d(\(line\);)676
+2491 y(printf)h(\("input)g(line:)h(\045s\\n",)f(line\);)676
+2600 y(free)h(\(line\);)581 2710 y(})390 2819 y(})390
+3039 y(int)390 3148 y(main)g(\(int)f(c,)h(char)g(**v\))390
+3258 y({)485 3367 y(fd_set)g(fds;)485 3477 y(int)g(r;)485
+3696 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h
+(environment)e(variables.)g(*/)p 3874 3716 42 84 v 485
+3806 a(setlocale)h(\(LC_ALL,)f(""\);)485 4025 y(/*)j(Handle)e(window)g
 (size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h(reading)
-629 4682 y(characters.)d(*/)485 4792 y(signal)j(\(SIGWINCH,)e
-(sighandler\);)485 5011 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485
-5121 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);)
-485 5340 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)p
+629 4134 y(characters.)d(*/)485 4244 y(signal)j(\(SIGWINCH,)e
+(sighandler\);)485 4463 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485
+4573 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);)
+485 4792 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
+4902 y(to)g(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f(to)j
+(standard)d(input\))h(and)629 5011 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
+5121 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e(settings.)g(*/)
+485 5230 y(running)h(=)i(1;)485 5340 y(while)f(\(running\))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)629
-299 y Fs(to)47 b(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f
-(to)j(standard)d(input\))h(and)629 408 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 518 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e
-(settings.)g(*/)485 628 y(running)h(=)i(1;)485 737 y(while)f
-(\(running\))581 847 y({)676 956 y(FD_ZERO)f(\(&fds\);)676
-1066 y(FD_SET)g(\(fileno)g(\(rl_instream\),)e(&fds\);)676
-1285 y(r)k(=)f(select)f(\(FD_SETSIZE,)f(&fds,)h(NULL,)h(NULL,)f
-(NULL\);)676 1395 y(if)i(\(r)f(<)g(0)h(&&)f(errno)f(!=)h(EINTR\))772
-1504 y({)867 1614 y(perror)f(\("rltest:)g(select"\);)867
-1724 y(rl_callback_handler_remov)o(e)c(\(\);)867 1833
-y(break;)772 1943 y(})676 2052 y(if)48 b(\(sigwinch_received\))390
-2162 y({)485 2271 y(rl_resize_terminal)43 b(\(\);)485
-2381 y(sigwinch_received)h(=)j(0;)390 2491 y(})676 2600
-y(if)h(\(r)f(<)g(0\))390 2710 y(continue;)676 2929 y(if)h(\(FD_ISSET)d
-(\(fileno)h(\(rl_instream\),)e(&fds\)\))772 3039 y
-(rl_callback_read_char)e(\(\);)581 3148 y(})485 3367
+%%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)581
+299 y Fs({)676 408 y(FD_ZERO)46 b(\(&fds\);)676 518 y(FD_SET)g
+(\(fileno)g(\(rl_instream\),)e(&fds\);)676 737 y(r)k(=)f(select)f
+(\(FD_SETSIZE,)f(&fds,)h(NULL,)h(NULL,)f(NULL\);)676
+847 y(if)i(\(r)f(<)g(0)h(&&)f(errno)f(!=)h(EINTR\))772
+956 y({)867 1066 y(perror)f(\("rltest:)g(select"\);)867
+1176 y(rl_callback_handler_remov)o(e)c(\(\);)867 1285
+y(break;)772 1395 y(})676 1504 y(if)48 b(\(sigwinch_received\))390
+1614 y({)485 1724 y(rl_resize_terminal)43 b(\(\);)485
+1833 y(sigwinch_received)h(=)j(0;)390 1943 y(})676 2052
+y(if)h(\(r)f(<)g(0\))390 2162 y(continue;)676 2381 y(if)h(\(FD_ISSET)d
+(\(fileno)h(\(rl_instream\),)e(&fds\)\))772 2491 y
+(rl_callback_read_char)e(\(\);)581 2600 y(})485 2819
 y(printf)47 b(\("rltest:)e(Event)h(loop)h(has)g(exited\\n"\);)485
-3477 y(return)g(0;)390 3587 y(})150 3835 y Fr(2.5)68
-b(Readline)47 b(Signal)e(Handling)150 3995 y Ft(Signals)31
+2929 y(return)g(0;)390 3039 y(})150 3274 y Fr(2.5)68
+b(Readline)47 b(Signal)e(Handling)150 3433 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
-4104 y(of)24 b(another)f(pro)s(cess.)38 b(They)23 b(are)h(in)m(tended)f
+3543 y(of)24 b(another)f(pro)s(cess.)38 b(They)23 b(are)h(in)m(tended)f
 (to)h(indicate)h(exceptional)g(ev)m(en)m(ts,)i(lik)m(e)d(a)g(user)f
-(pressing)g(the)150 4214 y(terminal's)33 b(in)m(terrupt)f(k)m(ey)-8
+(pressing)g(the)150 3652 y(terminal's)33 b(in)m(terrupt)f(k)m(ey)-8
 b(,)34 b(or)e(a)g(net)m(w)m(ork)h(connection)h(b)s(eing)e(brok)m(en.)46
-b(There)31 b(is)h(a)h(class)g(of)f(signals)150 4323 y(that)f(can)g(b)s
+b(There)31 b(is)h(a)h(class)g(of)f(signals)150 3762 y(that)f(can)g(b)s
 (e)e(sen)m(t)i(to)g(the)g(pro)s(cess)f(curren)m(tly)g(reading)h(input)e
 (from)h(the)g(k)m(eyb)s(oard.)41 b(Since)30 b(Readline)150
-4433 y(c)m(hanges)41 b(the)e(terminal)i(attributes)f(when)f(it)h(is)f
+3871 y(c)m(hanges)41 b(the)e(terminal)i(attributes)f(when)f(it)h(is)f
 (called,)44 b(it)c(needs)f(to)i(p)s(erform)d(sp)s(ecial)i(pro)s
-(cessing)150 4543 y(when)33 b(suc)m(h)h(a)h(signal)g(is)f(receiv)m(ed)i
+(cessing)150 3981 y(when)33 b(suc)m(h)h(a)h(signal)g(is)f(receiv)m(ed)i
 (in)e(order)g(to)h(restore)f(the)h(terminal)g(to)g(a)f(sane)h(state,)i
-(or)d(pro)m(vide)150 4652 y(application)e(writers)e(with)g(functions)g
-(to)h(do)f(so)h(man)m(ually)-8 b(.)275 4792 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
-4902 y(\()p Fs(SIGINT)p Ft(,)e Fs(SIGQUIT)p Ft(,)f Fs(SIGTERM)p
+(or)d(pro)m(vide)150 4090 y(applications)e(using)d(Readline)i(with)g
+(functions)e(to)j(do)e(so)g(man)m(ually)-8 b(.)275 4222
+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
+4332 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 5011 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)150 5121 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 5230 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
-5340 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)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)150
-299 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 408 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 518 y(description)30
-b(of)h Fs(rl_free_line_state\(\))25 b Ft(b)s(elo)m(w\).)275
-656 y(There)e(is)i(an)f(additional)h(Readline)g(signal)g(handler,)g
+b(When)150 4441 y(Readline)33 b(receiv)m(es)h(one)f(of)f(these)h
+(signals,)g(the)g(signal)g(handler)e(will)i(reset)g(the)g(terminal)f
+(attributes)150 4551 y(to)27 b(those)h(that)f(w)m(ere)g(in)g(e\013ect)h
+(b)s(efore)e Fs(readline\(\))e Ft(w)m(as)j(called,)i(reset)e(the)g
+(signal)h(handling)e(to)h(what)150 4660 y(it)e(w)m(as)h(b)s(efore)e
+Fs(readline\(\))e Ft(w)m(as)k(called,)h(and)e(resend)f(the)h(signal)h
+(to)f(the)g(calling)i(application.)40 b(If)25 b(and)150
+4770 y(when)j(the)g(calling)i(application's)g(signal)f(handler)f
+(returns,)g(Readline)h(will)g(reinitialize)i(the)d(terminal)150
+4880 y(and)41 b(con)m(tin)m(ue)j(to)e(accept)i(input.)74
+b(When)42 b(a)h Fs(SIGINT)d Ft(is)i(receiv)m(ed,)k(the)c(Readline)h
+(signal)g(handler)150 4989 y(p)s(erforms)34 b(some)j(additional)g(w)m
+(ork,)h(whic)m(h)d(will)i(cause)f(an)m(y)h(partially-en)m(tered)h(line)
+e(to)h(b)s(e)e(ab)s(orted)150 5099 y(\(see)c(the)g(description)f(of)h
+Fs(rl_free_line_state\(\))25 b Ft(b)s(elo)m(w\).)275
+5230 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 765 y(pro)s(cess)i(whenev)m(er)h(the)g(terminal's)g(size)h(c)m
+(a)150 5340 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 875 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 984 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 1094 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 1204 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
-1313 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 1423 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 1560 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 1670 y(terface],)48 b(page)c(46\),)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 1779 y Fs(rl_callback_read_char)p Ft(.)c(Applications)33
+Fs(xterm)p Ft(\).)39 b(The)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)150
+299 y(Readline)36 b 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
+408 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 518 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 628 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 737 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 Fj(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 847
+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 979 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 1089
+y(terface],)48 b(page)c(48\),)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
+1199 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 1889 y(clean)d(up)d(Readline's)j(state)g(if)e(they)h(wish)f
+g(to)150 1308 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 1999 y(and)k(restores)h(the)f(terminal)h(state.)275
-2136 y(If)k(an)g(application)i(using)f(the)g(callbac)m(k)h(in)m
+(completes)150 1418 y(and)k(restores)h(the)f(terminal)h(state.)275
+1551 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 2246 y(handlers)22 b(at)h(the)g(time)h(the)e(application)j
+(signal)150 1660 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 2355 y(only)f(when)g(a)g(complete)i(line)f
+b(remo)m(v)m(e)i(them)150 1770 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 2465 y(handlers)c Ft(v)-5
+Fs(rl_persistent_signal_)150 1879 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 2575 y(of)j(the)h(signals)f(Readline)h(catc)m(hes)h(to)f
+(handling)150 1989 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 2684 y(it)d(can)g(result)g(in)f
+b(ariable)27 b(with)f(care;)150 2098 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 2794 y(to)36
+(\(or)h(allo)m(wing)i(the)e(application)150 2208 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
-2903 y(an)30 b(application)h(b)s(ecoming)f(less)g(resp)s(onsiv)m(e)f
+2318 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 3013 y(do)s(es)24 b(not)g(w)m(an)m(t)h(or)g(need)f(to)
+(application)150 2427 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 3123 y(b)s(et)m(w)m(een)31
+f(to)g(do)h(an)m(y)f(pro)s(cessing)150 2537 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
-3260 y(Readline)f(pro)m(vides)f(t)m(w)m(o)i(v)-5 b(ariables)29
+b(this)e(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(appropriate.)275
+2669 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 3370 y(it)34 b(will)f(catc)m(h)i(certain)f(signals)f(and)
+(or)h(not)150 2779 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 3479 y(applications)38
+b(It)33 b(is)g(imp)s(ortan)m(t)g(that)150 2889 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 3589 y(signal)31 b(handler,)f(so)g(Readline's)i
+Ft(,)d(not)i(in)g(a)150 2998 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
-3779 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390
-3889 y Ft(If)28 b(this)h(v)-5 b(ariable)30 b(is)f(non-zero,)h(Readline)
+3177 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_signals)390
+3287 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 3998 y Fs(SIGTERM)p Ft(,)h
+Ft(,)f Fs(SIGQUIT)p Ft(,)390 3396 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 4136
+Fs(SIGTTIN)p Ft(,)f(and)i Fs(SIGTTOU)p Ft(.)390 3529
 y(The)g(default)g(v)-5 b(alue)31 b(of)g Fs(rl_catch_signals)26
-b Ft(is)k(1.)3371 4326 y([V)-8 b(ariable])-3598 b Fh(int)53
-b(rl_catch_sigwinch)390 4436 y Ft(If)37 b(this)h(v)-5
+b Ft(is)k(1.)3371 3708 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_catch_sigwinch)390 3817 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
-4546 y Fs(SIGWINCH)p Ft(.)390 4683 y(The)30 b(default)g(v)-5
+3927 y Fs(SIGWINCH)p Ft(.)390 4060 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
-4874 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_persistent_signal_)q
-(hand)q(ler)q(s)390 4983 y Ft(If)31 b(an)h(application)g(using)g(the)f
+4238 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_persistent_signal_)q
+(hand)q(ler)q(s)390 4348 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 5093 y(installed)21 b(and)f(activ)m(e)j(during)d(the)h
+(to)j(b)s(e)390 4457 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 5202 y(an)30 b(en)m(tire)i(single)f
+b Ft(that)22 b(constitutes)390 4567 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 5340 y(The)30
+b(to)g(a)g(non-zero)g(v)-5 b(alue.)390 4700 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.)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(int)53 b(rl_change_environment)390
-408 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 518 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
+(rs)24 b Ft(is)31 b(0.)3371 4879 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_change_environment)390 4988 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 5098 y(line)h(will)h(mo)s(dify)e(the)h
+Fk(LINES)35 b Ft(and)29 b Fk(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
-628 y Fs(SIGWINCH)390 766 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
-957 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 1067 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 1177 y(functions)30 b(to)h(do)f(the)h(necessary)g
+5207 y Fs(SIGWINCH)p Ft(.)390 5340 y(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: 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)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 1368 y([F)-8 b(unction])-3599
+i(of)g(a)f(signal.)3350 704 y([F)-8 b(unction])-3599
 b Fh(int)53 b(rl_pending_signal)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 1478 y Ft(Return)27 b(the)g(signal)h(n)m(um)m(b)s(er)e(of)i
+Fg(\))390 814 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 1587 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s
-(ending)f(signal.)3350 1779 y([F)-8 b(unction])-3599
+(not)h(y)m(et)390 924 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s
+(ending)f(signal.)3350 1110 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 1889 y Ft(This)33 b(function)h(will)g(reset)g(the)g(state)i
+Fg(\))390 1219 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 1998 y Ft(w)m(as)c(called,)h(and)d(remo)m(v)m(e)j
+Fs(readline\(\))390 1329 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 2108 y(v)-5 b(alues)31 b(of)f
+(ending)d(on)h(the)390 1439 y(v)-5 b(alues)31 b(of)f
 Fs(rl_catch_signals)c Ft(and)k Fs(rl_catch_sigwinch)p
-Ft(.)3350 2300 y([F)-8 b(unction])-3599 b Fh(void)54
+Ft(.)3350 1625 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
-2409 y Ft(This)38 b(will)i(free)f(an)m(y)h(partial)g(state)g(asso)s
+1734 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
-2519 y(mation,)46 b(an)m(y)d(partial)h(history)e(en)m(try)-8
+1844 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 2628 y(partially-en)m(tered)50
+b(and)42 b(an)m(y)390 1954 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 2738 y(after_signal\(\))p
+(b)s(efore)e Fs(rl_cleanup_)390 2063 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
-2847 y(curren)m(t)30 b(input)g(line.)3350 3039 y([F)-8
+2173 y(curren)m(t)30 b(input)g(line.)3350 2359 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 3149 y Ft(This)28 b(will)g(reinitialize)
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2469 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 3258 y(ing)j(on)f(the)g(v)-5
+(handlers,)f(dep)s(end-)390 2578 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 3450 y(If)j(an)g(application)i(w)m(an)m
+(rl_catch_sigwinch)p Ft(.)275 2765 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 3560 y(it)j(has)g(b)s(een)f
+(ha)m(v)m(e)h(arriv)m(ed)f(while)150 2874 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
-3669 y(there)i(are)g(an)m(y)g(p)s(ending)e(signals.)61
+2984 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 3779 y(a)h(custom)g Fs(rl_getc_function)33
+(that)f(use)150 3093 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(29\))h(and)e(wish)g(to)150 3888 y(handle)30
+b(page)c(31\))h(and)e(wish)g(to)150 3203 y(handle)30
 b(signals)h(receiv)m(ed)h(while)e(w)m(aiting)i(for)e(input.)3350
-4080 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 4190 y Ft(If)40 b(there)h(are)g(an)m(y)g
+3389 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3499 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 4299 y(to)j(pro)s(cess)g(them.)77
+(handling)f(functions)390 3608 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 4409 y(whether)30 b(or)g(not)h(there)
-f(are)h(an)m(y)g(p)s(ending)e(signals.)275 4600 y(If)38
+(enden)m(tly)f(to)j(determine)390 3718 y(whether)30 b(or)g(not)h(there)
+f(are)h(an)m(y)g(p)s(ending)e(signals.)275 3904 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
-4710 y(terminal\(\))24 b Ft(or)j Fs(rl_set_screen_size\(\))22
+4014 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 4820 y(size)k(when)f(it)h(receiv)m(es)h(a)e
-Fs(SIGWINCH)p Ft(.)3350 5011 y([F)-8 b(unction])-3599
+g(terminal)150 4124 y(size)k(when)f(it)h(receiv)m(es)h(a)e
+Fs(SIGWINCH)p Ft(.)3350 4310 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 5121 y Ft(If)41 b(an)g(application)h(wishes)f(to)h
+b(sig)p Fg(\))390 4419 y Ft(If)41 b(an)g(application)h(wishes)f(to)h
 (install)g(its)f(o)m(wn)g(signal)h(handlers,)h(but)e(still)h(ha)m(v)m
-(e)g(Readline)390 5230 y(displa)m(y)31 b(c)m(haracters)h(that)f
+(e)g(Readline)390 4529 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 5340
+Fk(sig)39 b Ft(set)31 b(to)g Fs(SIGINT)p Ft(,)390 4639
 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.)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)3350
-299 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_resize_terminal)c
-Fg(\()p Ff(v)m(oid)p Fg(\))390 408 y Ft(Up)s(date)30
+m(haracter)i(generating)g(that)f(signal.)3350 4825 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_resize_terminal)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 4934 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 592 y([F)-8
+b(alues)31 b(from)f(the)g(k)m(ernel.)3350 5121 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
-702 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 811 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 921 y(unc)m(hanged.)k(This)27
-b(is)h(in)m(tended)g(to)g(tell)h(Readline)f(the)g(ph)m(ysical)g
-(dimensions)f(of)h(the)g(terminal,)390 1031 y(and)44
-b(is)h(used)f(in)m(ternally)i(to)f(calculate)j(the)d(maxim)m(um)f(n)m
-(um)m(b)s(er)g(of)h(c)m(haracters)h(that)f(ma)m(y)390
-1140 y(app)s(ear)30 b(on)g(a)h(single)g(line)g(and)e(on)i(the)f
-(screen.)275 1324 y(If)i(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 1434 y(the)d(screen)f(dimensions,)g(it)h(ma)m(y)g
+5230 y Ft(Set)28 b(Readline's)h(idea)f(of)g(the)g(terminal)g(size)h(to)
+g Fk(ro)m(ws)i Ft(ro)m(ws)d(and)f Fk(cols)33 b Ft(columns.)40
+b(If)27 b(either)h Fk(ro)m(ws)390 5340 y Ft(or)22 b Fk(columns)j
+Ft(is)c(less)h(than)g(or)f(equal)h(to)h(0,)h(Readline)e(do)s(esn't)f(c)
+m(hange)i(that)f(terminal)g(dimension.)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)390
+299 y(This)28 b(is)h(in)m(tended)g(to)h(tell)g(Readline)g(the)f(ph)m
+(ysical)h(dimensions)e(of)h(the)g(terminal,)h(and)f(is)g(used)390
+408 y(in)m(ternally)44 b(to)f(calculate)i(the)e(maxim)m(um)f(n)m(um)m
+(b)s(er)f(of)i(c)m(haracters)h(that)f(ma)m(y)g(app)s(ear)f(on)h(a)390
+518 y(single)31 b(line)g(and)f(on)g(the)g(screen.)275
+695 y(If)i(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 804 y(the)d(screen)f(dimensions,)g(it)h(ma)m(y)g
 (query)f(Readline's)h(idea)g(of)f(the)h(screen)f(size.)3350
-1618 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_get_screen_size)c
+981 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
-1727 y Ft(Return)c(Readline's)i(idea)g(of)f(the)g(terminal's)h(size)g
+1091 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 1837 y(men)m(ts.)3350 2021 y([F)-8 b(unction])-3599
+(argu-)390 1200 y(men)m(ts.)3350 1377 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 2130 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 2314
+Fg(\))390 1486 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 1663
 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 2498 y([F)-8 b(unction])-3599
+(Readline's)f(signal)g(handlers.)3350 1840 y([F)-8 b(unction])-3599
 b Fh(int)53 b(rl_set_signals)d Fg(\()p Ff(v)m(oid)p Fg(\))390
-2607 y Ft(Install)40 b(Readline's)h(signal)f(handler)f(for)h
+1949 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 2717 y Fs(SIGTSTP)p
+Fs(SIGHUP)p Ft(,)g Fs(SIGALRM)p Ft(,)390 2059 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 2827 y(signals)28 b Ft(and)i
-Fs(rl_catch_sigwinch)p Ft(.)3350 3010 y([F)-8 b(unction])-3599
+b(of)f Fs(rl_catch_)390 2168 y(signals)28 b Ft(and)i
+Fs(rl_catch_sigwinch)p Ft(.)3350 2345 y([F)-8 b(unction])-3599
 b Fh(int)53 b(rl_clear_signals)e Fg(\()p Ff(v)m(oid)p
-Fg(\))390 3120 y Ft(Remo)m(v)m(e)32 b(all)f(of)g(the)g(Readline)g
+Fg(\))390 2455 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 3361 y Fr(2.6)68 b(Custom)45 b(Completers)150
-3520 y Ft(T)m(ypically)-8 b(,)47 b(a)c(program)g(that)g(reads)f
+Ft(.)150 2690 y Fr(2.6)68 b(Custom)45 b(Completers)150
+2850 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 3630 y(commands)35 b(and)g(data.)56 b(If)35
+(biguating)150 2959 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 3739 y(commands,)29 b(data,)i(or)e(b)s
+(vide)f(completion)i(for)150 3069 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 3849 y(co)s(op)s(erate)j(to)h(pro)
-m(vide)e(this)g(service.)150 4048 y Fi(2.6.1)63 b(Ho)m(w)40
-b(Completing)i(W)-10 b(orks)150 4195 y Ft(In)26 b(order)f(to)i
+m(our)f(program)g(and)f(Readline)150 3178 y(co)s(op)s(erate)j(to)h(pro)
+m(vide)e(this)g(service.)150 3373 y Fi(2.6.1)63 b(Ho)m(w)40
+b(Completing)i(W)-10 b(orks)150 3520 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 4304 y(is,)28 b(it)f(is)g(not)g(p)s(ossible)g(to)g
+b(That)150 3629 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 4414 y(w)m(ords)33
+(all)f(of)g(the)g(p)s(ossible)150 3739 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 4523 y(to)d(completion,)h(and)e(t)m(w)m(o)i(of)e(the)h
+(terface)150 3848 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 4633 y(F)-8 b(or)39 b(completing)g(other)f(t)m
+b(and)e(username.)150 3958 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 4743 y(section)32
+(completion)h(function.)64 b(This)150 4067 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 4877 y(There)e(are)i(three)g(ma)
+(and)g(pro)m(vides)g(an)h(example.)275 4199 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
-5011 y(1.)61 b(The)43 b(user-in)m(terface)h(function)f
+4331 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 5121 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 5121 28 4 v 41 w(k)m(ey)p Ft(.)57
-b(It)36 b(isolates)330 5230 y(the)i(w)m(ord)f(to)h(b)s(e)f(completed)i
+e(the)h(same)330 4441 y(argumen)m(ts)36 b(as)g(other)g(bindable)f
+(Readline)h(functions:)51 b Fk(coun)m(t)38 b Ft(and)d
+Fk(in)m(v)m(oking)p 3107 4441 28 4 v 41 w(k)m(ey)p Ft(.)57
+b(It)36 b(isolates)330 4551 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 5340 y(p)s(ossible)31
+b(generate)g(a)f(list)g(of)330 4660 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)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)330
-299 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 408 y(desired.)199 552 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 662 y(ator)44
+(completions,)h(inserts)f(the)g(p)s(ossible)330 4770
+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
+4879 y(desired.)199 5011 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 Fk(gener-)330 5121 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)330
-771 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
-881 y(completion_entry_functio)o(n)p Ft(.)199 1024 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 1134
-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 1244 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
+5230 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
+5340 y(completion_entry_functio)o(n)p Ft(.)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)199
+299 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
+408 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 Fk(text)j Ft(and)c
+Fk(state)p Ft(.)49 b Fk(text)330 518 y Ft(is)32 b(the)g(partial)h(w)m
+(ord)f(to)h(b)s(e)e(completed.)47 b Fk(state)38 b Ft(is)32
 b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)330
-1353 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 1463 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 1572 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 1682 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
-1792 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
-1901 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 2011 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 2120 y(sp)s(eci\014c)d(completion)i(function)p
-Ft(.)3350 2341 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 2341 30 5 v 43 w(k)m(ey)p Fg(\))390 2451 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
+628 y(allo)m(wing)37 b(the)f(generator)h(to)f(p)s(erform)e(an)m(y)i
+(necessary)g(initialization,)k(and)35 b(a)h(p)s(ositiv)m(e)h(in)m
+(teger)330 737 y(for)31 b(eac)m(h)i(subsequen)m(t)e(call.)46
+b(The)31 b(generator)i(function)e(returns)g Fs(\(char)e(*\)NULL)h
+Ft(to)i(inform)f Fs(rl_)330 847 y(completion_matches\(\))20
+b Ft(that)27 b(there)f(are)g(no)f(more)h(p)s(ossibilities)h(left.)40
+b(Usually)26 b(the)g(generator)330 956 y(function)f(computes)h(the)g
+(list)g(of)f(p)s(ossible)h(completions)g(when)f Fk(state)32
+b Ft(is)25 b(zero,)j(and)d(returns)f(them)330 1066 y(one)e(at)h(a)g
+(time)g(on)f(subsequen)m(t)f(calls.)39 b(Eac)m(h)23 b(string)f(the)g
+(generator)i(function)d(returns)g(as)i(a)f(matc)m(h)330
+1176 y(m)m(ust)30 b(b)s(e)g(allo)s(cated)j(with)d Fs(malloc\(\))p
+Ft(;)f(Readline)i(frees)g(the)g(strings)f(when)g(it)h(has)f(\014nished)
+f(with)330 1285 y(them.)64 b(Suc)m(h)37 b(a)h(generator)h(function)f
+(is)g(referred)f(to)i(as)f(an)g Fk(application-sp)s(eci\014c)i
+(completion)330 1395 y(function)p Ft(.)3350 1575 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
+1575 30 5 v 43 w(k)m(ey)p Fg(\))390 1685 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
-2560 y(initial)42 b(simple)f(matc)m(hing)i(selection)f(algorithm)h
+1794 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
-2670 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371
-2890 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 3000
-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 3110 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
-3219 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
-3329 y(completion)22 b(function)f Ft(is)g(a)h(function)e(whose)h
+1904 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371
+2084 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 2194
+y Ft(This)20 b(is)g(a)h(p)s(oin)m(ter)g(to)g(the)g(generator)h
+(function)e(for)g Fs(rl_completion_matches\(\))p Ft(.)32
+b(If)20 b(the)g(v)-5 b(alue)390 2303 y(of)32 b Fs
+(rl_completion_entry_func)o(tio)o(n)26 b Ft(is)32 b Fs(NULL)e
+Ft(then)h(Readline)i(uses)e(the)h(default)g(\014lename)390
+2413 y(generator)k(function,)g Fs(rl_filename_completion_fu)o(ncti)o
+(on\(\))o Ft(.)49 b(An)34 b Fk(application-sp)s(eci\014c)390
+2522 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
-3438 y(function)28 b Ft(and)i(whose)g(return)f(v)-5 b(alues)31
+2632 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
-3656 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150
-3803 y Ft(Here)31 b(is)f(the)h(complete)h(list)f(of)f(callable)j
+2828 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150
+2975 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
-4023 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 4023 V 44 w(to)p 1994
-4023 V 43 w(do)p Fg(\))390 4133 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 4133
-28 4 v 40 w(to)p 2328 4133 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e
-(with)g(the)h(com-)390 4243 y(pletion.)44 b(A)31 b(v)-5
+3156 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 3156 V 44 w(to)p 1994
+3156 V 43 w(do)p Fg(\))390 3265 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 Fk(what)p 2208 3265
+28 4 v 40 w(to)p 2328 3265 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e
+(with)g(the)h(com-)390 3375 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
-4352 y(completion.)44 b(`)p Fs(*)p Ft(')32 b(means)f(insert)g(all)h(of)
+3484 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 4462 y(of)k(the)f(p)s(ossible)g
+b(means)f(to)h(displa)m(y)f(all)390 3594 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 4571 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 4681 y(completions)32 b(share)e(a)g(common)h
-(pre\014x.)3350 4902 y([F)-8 b(unction])-3599 b Fh(int)53
+(as)g(p)s(erforming)e(partial)390 3703 y(completion.)42
+b(`)p Fs(@)p Ft(')30 b(is)g(similar)h(to)g(`)p Fs(!)p
+Ft(',)f(but)g(do)s(es)g(not)g(list)h(p)s(ossible)f(completions)h(if)f
+(the)g(p)s(ossible)390 3813 y(completions)i(share)e(a)g(common)h
+(pre\014x.)3350 3993 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 4902 30 5 v 43 w(k)m(ey)p Fg(\))390 5011
+(oking)p 2020 3993 30 5 v 43 w(k)m(ey)p Fg(\))390 4103
 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 5121 y(the)33 b(initial)h(simple)f(matc)m(hing)h(selection)h
+s(es)390 4212 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 5230 y Fs(rl_completion_entry_func)o(tion)o
+b Ft(and)390 4322 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 5340 y(calls)32 b Fs(rl_complete_internal\(\))24
+59 b(This)390 4432 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 5340 28 4 v 41 w(k)m(ey)p Ft(.)p
+Fk(in)m(v)m(oking)p 3314 4432 28 4 v 41 w(k)m(ey)p Ft(.)3350
+4612 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 4612 30 5 v 43 w(k)m(ey)p Fg(\))390 4721 y Ft(List)43
+b(the)g(p)s(ossible)f(completions.)79 b(See)43 b(description)f(of)h
+Fs(rl_complete\(\))p Ft(.)74 b(This)42 b(calls)i Fs(rl_)390
+4831 y(complete_internal\(\))25 b Ft(with)30 b(an)g(argumen)m(t)h(of)g
+(`)p Fs(?)p Ft('.)3350 5011 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 5011 V 44
+w(k)m(ey)p Fg(\))390 5121 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 5230 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
+5340 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p 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)3350
-299 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 299 30 5 v 43 w(k)m(ey)p Fg(\))390 408 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 518 y(complete_internal\(\))25 b Ft(with)30
-b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 718 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 718 V 44 w(k)m(ey)p Fg(\))390 828 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 937 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 1047 y(an)30
-b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350 1247 y([F)-8
-b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e Fg(\()p
-Ff(rl)p 1455 1247 V 44 w(command)p 1919 1247 V 44 w(func)p
-2147 1247 V 46 w(t)33 b(*cfunc)p Fg(\))390 1356 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
-1466 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 1575 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 1685 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 1885 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 1995 y(rl)p 639 1995 V 44 w(comp)s(en)m(try)p
-1145 1995 V 44 w(func)p 1373 1995 V 45 w(t)f(*en)m(try)p
-1767 1995 V 44 w(func)p Fg(\))390 2104 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 2214
-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 2323 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 2433 y(with)k(a)h
-Fs(NULL)e Ft(p)s(oin)m(ter.)390 2575 y Fj(en)m(try)p
-603 2575 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 2685 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
-2794 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320
-2794 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 2904
-y(more)d(matc)m(hes.)3350 3104 y([F)-8 b(unction])-3599
+%%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)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e
+Fg(\()p Ff(rl)p 1455 299 30 5 v 44 w(command)p 1919 299
+V 44 w(func)p 2147 299 V 46 w(t)33 b(*cfunc)p Fg(\))390
+408 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 518 y(whether)g Fk(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 628 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 737 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 917 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 1027 y(rl)p
+639 1027 V 44 w(comp)s(en)m(try)p 1145 1027 V 44 w(func)p
+1373 1027 V 45 w(t)f(*en)m(try)p 1767 1027 V 44 w(func)p
+Fg(\))390 1137 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 Fk(text)p Ft(.)64
+b(If)38 b(there)g(are)g(no)390 1246 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 1356 y(for)26
+b Fk(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
+1465 y(with)k(a)h Fs(NULL)e Ft(p)s(oin)m(ter.)390 1599
+y Fk(en)m(try)p 603 1599 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
+1708 y Fk(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 1818 y(subsequen)m(t)33 b(calls.)52 b Fk(en)m(try)p
+1320 1818 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
+1927 y(more)d(matc)m(hes.)3350 2107 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 3213
-y(state)p Fg(\))390 3323 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 2217
+y(state)p Fg(\))390 2327 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 3433
+b Fk(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 2436
 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
-3542 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i
-(this)e(and)g(other)g(Readline)h(functions\).)3350 3742
+2546 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i
+(this)e(and)g(other)g(Readline)h(functions\).)3350 2726
 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
-3852 y(state)p Fg(\))390 3961 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 4071 y(a)j(random)f(c)m(haracter)i(\(usually)e(`)
+2836 y(state)p Fg(\))390 2945 y Ft(A)d(completion)g(generator)h(for)e
+(usernames.)40 b Fk(text)31 b Ft(con)m(tains)f(a)f(partial)g(username)f
+(preceded)g(b)m(y)390 3055 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 4180 y(the)g(\014rst)e(call)j
-(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 4388
+Fk(state)37 b Ft(is)31 b(zero)g(on)390 3164 y(the)g(\014rst)e(call)j
+(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 3361
 y Fi(2.6.3)63 b(Completion)41 b(V)-10 b(ariables)3371
-4592 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 4702
+3555 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 3665
 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 4811 y(use)d Fs(rl_filename_completion_fu)o(nct)o
+Ft(means)h(to)390 3774 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
-5011 y([V)-8 b(ariable])-3598 b Fh(rl_completion_func_t)58
+3954 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
-5121 y Ft(A)35 b(p)s(oin)m(ter)g(to)g(an)g(alternativ)m(e)i(function)d
+4064 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 5230 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
-5340 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)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)390
-299 y(this)22 b(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 408 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 518 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
-628 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
-737 y(no)d(matc)m(hes.)3371 913 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 1022 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 1132 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
-1241 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 1351 y(is)37 b(called)h(with)e
-Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 1351 28 4 v 41 w(t)m(yp)s(e)p
-Ft(,)f(and)d Fj(quote)p 2119 1351 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
-1461 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 1461
-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
-1570 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 1680 y(closing)22 b(quote)f(c)m(haracter.)40
-b(The)20 b Fj(quote)p 1751 1680 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 1789 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 1965 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 2074
-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
-2184 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
-2293 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 2403 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g
-(dequoted,)j(and)d Fj(quote)p 2014 2403 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
-2513 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 2513 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m
-(as)h(not)390 2622 y(in)d(an)g(em)m(b)s(edded)g(string.)3371
-2798 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57
-b(*)c(rl_char_is_quoted_p)390 2907 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 3017 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 3126 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 3236
-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 3345 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 3455 y(w)m(ords)f(for)g(the)h
-(completer.)3371 3630 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 3740 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 3850 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 3959 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
-4069 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
-4178 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 4354 y([V)-8 b(ariable])-3598
-b Fh(rl_icppfunc_t)56 b(*)d(rl_directory_completio)q(n_ho)q(ok)390
-4463 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 4573 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 4682 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 4792 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 4902 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 5011
-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 5121 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 5230 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 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(.)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(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
-408 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
-518 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 720 y([V)-8
-b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d(rl_directory_rewrite_h)q
-(ook;)390 830 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 939 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 1049 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 1159 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 1268 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p
-1463 1268 28 4 v 40 w(directory)p 1859 1268 V 41 w(completion)p
-2333 1268 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 1378 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 1487 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 1631 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
-1740 y(tion)c(mo)s(di\014es)e(its)i(directory)f(argumen)m(t.)53
+390 4173 y Fk(text)p Ft(,)51 b Fk(start)p Ft(,)f(and)45
+b Fk(end)p Ft(.)86 b Fk(start)48 b Ft(and)d Fk(end)k
+Ft(are)d(indices)g(in)f Fs(rl_line_buffer)d Ft(de\014ning)j(the)390
+4283 y(b)s(oundaries)37 b(of)i Fk(text)p Ft(,)j(whic)m(h)c(is)h(a)g(c)m
+(haracter)h(string.)65 b(If)38 b(this)h(function)f(exists)h(and)f
+(returns)390 4393 y Fs(NULL)p Ft(,)j(or)f(if)g(this)g(v)-5
+b(ariable)41 b(is)f(set)g(to)h Fs(NULL)p Ft(,)h(then)d
+Fs(rl_complete\(\))e Ft(will)j(call)h(the)f(v)-5 b(alue)41
+b(of)390 4502 y Fs(rl_completion_entry_func)o(tion)20
+b Ft(to)27 b(generate)h(matc)m(hes,)h(otherwise)e(completion)g(will)g
+(use)390 4612 y(the)38 b(arra)m(y)h(of)f(strings)f(this)h(function)g
+(returns.)62 b(If)38 b(this)f(function)h(sets)g(the)h
+Fs(rl_attempted_)390 4721 y(completion_over)26 b Ft(v)-5
+b(ariable)32 b(to)f(a)g(non-zero)g(v)-5 b(alue,)32 b(Readline)f(will)g
+(not)g(p)s(erform)e(its)i(default)390 4831 y(completion)h(ev)m(en)f(if)
+f(this)g(function)g(returns)g(no)g(matc)m(hes.)3371 5011
+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 5121 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
+5230 y(Readline)27 b(calls)g(this)f(function)g(during)f(\014lename)h
+(completion)i(if)e(one)h(of)f(the)g(c)m(haracters)i(in)e
+Fs(rl_)390 5340 y(filename_quote_character)o(s)16 b Ft(app)s(ears)21
+b(in)g(a)h(completed)h(\014lename.)38 b(The)21 b(function)h(is)g
+(called)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)390
+299 y(with)24 b Fk(text)p Ft(,)i Fk(matc)m(h)p 1050 299
+28 4 v 41 w(t)m(yp)s(e)p Ft(,)f(and)f Fk(quote)p 1705
+299 V 40 w(p)s(oin)m(ter)p Ft(.)39 b(The)23 b Fk(text)k
+Ft(is)d(the)g(\014lename)g(to)h(b)s(e)e(quoted.)38 b(The)390
+408 y Fk(matc)m(h)p 640 408 V 41 w(t)m(yp)s(e)e Ft(is)30
+b(either)h Fs(SINGLE_MATCH)p Ft(,)c(if)j(there)h(is)f(only)g(one)h
+(completion)h(matc)m(h,)f(or)f Fs(MULT_)390 518 y(MATCH)p
+Ft(.)61 b(Some)38 b(functions)g(use)f(this)h(to)g(decide)g(whether)f
+(or)h(not)g(to)h(insert)e(a)h(closing)h(quote)390 628
+y(c)m(haracter.)62 b(The)36 b Fk(quote)p 1260 628 V 41
+w(p)s(oin)m(ter)43 b Ft(is)37 b(a)g(p)s(oin)m(ter)g(to)h(an)m(y)f(op)s
+(ening)g(quote)g(c)m(haracter)i(the)e(user)390 737 y(t)m(yp)s(ed.)79
+b(Some)43 b(functions)f(c)m(ho)s(ose)i(to)g(reset)g(this)f(c)m
+(haracter)h(if)f(they)h(decide)f(to)h(quote)g(the)390
+847 y(\014lename)30 b(in)f(a)h(di\013eren)m(t)g(st)m(yle.)42
+b(It's)29 b(preferable)h(to)g(preserv)m(e)g(the)f(user's)g(quoting)h
+(as)g(m)m(uc)m(h)g(as)390 956 y(p)s(ossible)g({)h(it's)g(less)f
+(disruptiv)m(e.)3371 1148 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 1258 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 1367 y(a)38 b(\014lename)h(b)s(efore)f(attempting)h
+(completion,)j(so)c(those)g(c)m(haracters)i(do)e(not)g(in)m(terfere)h
+(with)390 1477 y(matc)m(hing)33 b(the)f(text)g(against)h(names)f(in)f
+(the)h(\014lesystem.)45 b(It)31 b(is)h(called)h(with)e
+Fk(text)p Ft(,)i(the)f(text)h(of)390 1586 y(the)24 b(w)m(ord)g(to)g(b)s
+(e)g(dequoted,)h(and)f Fk(quote)p 1788 1586 V 40 w(c)m(har)p
+Ft(,)i(whic)m(h)e(is)g(the)g(quoting)g(c)m(haracter)i(that)e(delimits)
+390 1696 y(the)f(\014lename)h(\(usually)f(`)p Fs(')p
+Ft(')g(or)g(`)p Fs(")p Ft('\).)39 b(If)23 b Fk(quote)p
+1961 1696 V 40 w(c)m(har)30 b Ft(is)23 b(zero,)j(the)d(\014lename)h(w)m
+(as)f(not)h(in)e(a)i(quoted)390 1806 y(string.)3371 1997
+y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57 b(*)c
+(rl_char_is_quoted_p)390 2107 y Ft(A)29 b(p)s(oin)m(ter)h(to)g(a)f
+(function)g(to)h(call)h(that)f(determines)f(whether)g(or)g(not)h(a)f
+(sp)s(eci\014c)g(c)m(haracter)i(in)390 2216 y(the)k(line)g(bu\013er)f
+(is)h(quoted,)h(according)g(to)g(whatev)m(er)f(quoting)g(mec)m(hanism)h
+(the)f(application)390 2326 y(uses.)k(The)26 b(function)g(is)h(called)h
+(with)e(t)m(w)m(o)i(argumen)m(ts:)39 b Fk(text)p Ft(,)28
+b(the)f(text)h(of)f(the)f(line,)i(and)e Fk(index)p Ft(,)390
+2435 y(the)31 b(index)e(of)i(the)f(c)m(haracter)i(in)e(the)h(line.)41
+b(It)30 b(is)h(used)e(to)i(decide)g(whether)f(a)g(c)m(haracter)i(found)
+390 2545 y(in)40 b Fs(rl_completer_word_break_ch)o(arac)o(ter)o(s)35
+b Ft(should)40 b(b)s(e)g(used)g(to)h(break)g(w)m(ords)f(for)h(the)390
+2655 y(completer.)3371 2846 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 2956 y Ft(Readline)39 b(calls)g(this)f(function,)
+h(if)f(de\014ned,)h(when)e(\014lename)h(completion)i(is)e(done,)i
+(after)e(all)390 3065 y(the)f(matc)m(hing)i(names)e(ha)m(v)m(e)h(b)s
+(een)f(generated.)62 b(It)38 b(is)f(passed)g(a)g Fs(NULL)f
+Ft(terminated)i(arra)m(y)g(of)390 3175 y(matc)m(hes.)65
+b(The)37 b(\014rst)h(elemen)m(t)h(\()p Fs(matches[0])p
+Ft(\))d(is)i(the)g(maximal)h(substring)e(common)h(to)h(all)390
+3285 y(matc)m(hes.)45 b(This)30 b(function)h(can)h(re-arrange)g(the)f
+(list)h(of)g(matc)m(hes)g(as)g(required,)f(but)g(m)m(ust)g(free)390
+3394 y(eac)m(h)h(elemen)m(t)f(it)g(deletes)h(from)e(the)g(arra)m(y)-8
+b(.)3371 3586 y([V)g(ariable])-3598 b Fh(rl_icppfunc_t)56
+b(*)d(rl_directory_completio)q(n_ho)q(ok)390 3695 y Ft(This)21
+b(function,)j(if)f(de\014ned,)f(is)h(allo)m(w)m(ed)h(to)f(mo)s(dify)e
+(the)i(directory)g(p)s(ortion)e(of)i(\014lenames)f(during)390
+3805 y(completion.)40 b(It)23 b(could)g(b)s(e)g(used)f(to)i(expand)f
+(sym)m(b)s(olic)g(links)g(or)h(shell)f(v)-5 b(ariables)24
+b(in)f(pathnames.)390 3914 y(It)29 b(is)f(called)i(with)f(the)g
+(address)e(of)i(a)g(string)g(\(the)g(curren)m(t)g(directory)g(name\))g
+(as)g(an)f(argumen)m(t,)390 4024 y(and)j(ma)m(y)g(mo)s(dify)g(that)g
+(string.)43 b(If)31 b(the)g(function)g(replaces)h(the)g(string)f(with)g
+(a)g(new)g(string,)g(it)390 4134 y(should)f(free)i(the)f(old)h(v)-5
+b(alue.)43 b(An)m(y)32 b(mo)s(di\014ed)e(directory)i(name)f(should)f
+(ha)m(v)m(e)j(a)e(trailing)i(slash.)390 4243 y(The)38
+b(mo)s(di\014ed)f(v)-5 b(alue)38 b(will)h(b)s(e)e(used)h(as)g(part)g
+(of)g(the)h(completion,)i(replacing)e(the)f(directory)390
+4353 y(p)s(ortion)h(of)g(the)g(pathname)h(the)f(user)f(t)m(yp)s(ed.)67
+b(A)m(t)40 b(the)g(least,)j(ev)m(en)c(if)h(no)f(other)g(expansion)390
+4462 y(is)g(p)s(erformed,)g(this)g(function)f(should)g(remo)m(v)m(e)i
+(an)m(y)f(quote)g(c)m(haracters)h(from)f(the)f(directory)390
+4572 y(name,)31 b(b)s(ecause)f(its)h(result)f(will)h(b)s(e)f(passed)f
+(directly)i(to)h Fs(opendir\(\))p Ft(.)390 4710 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 4820
+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
-1850 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 2052
+4929 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 5121
 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
-(rl_filename_stat_hook)390 2162 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 2271 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 2381 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
-2491 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 2600 y(from)30 b(the)g(\014lename.)390
-2744 y(The)40 b(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)h(that)g
+(rl_directory_rewrite_h)q(ook;)390 5230 y Ft(If)42 b(non-zero,)47
+b(this)c(is)g(the)g(address)f(of)h(a)g(function)g(to)g(call)h(when)e
+(completing)i(a)f(directory)390 5340 y(name.)60 b(This)36
+b(function)g(tak)m(es)i(the)f(address)f(of)h(the)g(directory)g(name)g
+(to)g(b)s(e)g(mo)s(di\014ed)e(as)i(an)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)390
+299 y(argumen)m(t.)67 b(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)h(directory)390
+408 y(name)f(used)e(in)h Fs(opendir\(\))p Ft(,)g(not)h(what)g(Readline)
+g(displa)m(ys)f(when)g(it)h(prin)m(ts)f(or)g(inserts)h(the)390
+518 y(p)s(ossible)j(completions.)76 b(Readline)42 b(calls)h(this)f(b)s
+(efore)f(rl)p 2453 518 28 4 v 40 w(directory)p 2849 518
+V 40 w(completion)p 3322 518 V 42 w(ho)s(ok.)74 b(A)m(t)390
+628 y(the)35 b(least,)j(ev)m(en)e(if)f(no)g(other)g(expansion)g(is)g(p)
+s(erformed,)g(this)g(function)g(should)f(remo)m(v)m(e)j(an)m(y)390
+737 y(quote)e(c)m(haracters)h(from)e(the)h(directory)f(name,)i(b)s
+(ecause)f(its)f(result)h(will)g(b)s(e)e(passed)h(directly)390
+847 y(to)d Fs(opendir\(\))p Ft(.)390 988 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 1098 y(tion)c(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 1207 y(argumen)m(t)d(if)f(it)h(returns)e
+(0.)3371 1405 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56
+b(*)d(rl_filename_stat_hook)390 1515 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 1625 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 1734
+y(name)g(argumen)m(t,)h(and)e(Readline)i(passes)f(the)g(mo)s(di\014ed)f
+(v)-5 b(alue)31 b(to)h Fs(stat\(\))d Ft(to)j(determine)f(the)390
+1844 y(\014le's)24 b(t)m(yp)s(e)g(and)f(c)m(haracteristics.)41
+b(This)23 b(function)g(do)s(es)g(not)h(need)g(to)g(remo)m(v)m(e)h
+(quote)f(c)m(haracters)390 1953 y(from)30 b(the)g(\014lename.)390
+2095 y(The)40 b(stat)h(ho)s(ok)f(returns)f(an)h(in)m(teger)h(that)g
 (should)e(b)s(e)h(non-zero)g(if)h(the)f(function)g(mo)s(di\014es)390
-2853 y(its)32 b(directory)f(argumen)m(t.)44 b(The)31
+2204 y(its)32 b(directory)f(argumen)m(t.)44 b(The)31
 b(function)f(should)h(not)g(mo)s(dify)g(the)g(directory)h(argumen)m(t)f
-(if)g(it)390 2963 y(returns)e(0.)3371 3165 y([V)-8 b(ariable])-3598
+(if)g(it)390 2314 y(returns)e(0.)3371 2512 y([V)-8 b(ariable])-3598
 b Fh(rl_dequote_func_t)57 b(*)c(rl_filename_rewrite_ho)q(ok)390
-3275 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
-3384 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
-3494 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
-3603 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 3713 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 3823 y(men)m(ts:)49 b Fj(fname)p Ft(,)36
+2621 y Ft(If)31 b(non-zero,)h(this)f(is)h(the)f(address)g(of)g(a)h
+(function)f(for)g(Readline)h(to)g(call)h(when)d(reading)i(direc-)390
+2731 y(tory)h(en)m(tries)h(from)f(the)g(\014lesystem)g(for)g
+(completion)h(and)f(comparing)g(them)g(to)h(the)f(\014lename)390
+2841 y(p)s(ortion)27 b(of)g(the)h(partial)g(w)m(ord)f(b)s(eing)g
+(completed.)40 b(It)28 b(mo)s(di\014es)e(the)i(\014lesystem)f(en)m
+(tries,)i(as)f(op-)390 2950 y(p)s(osed)33 b(to)h Fs
+(rl_completion_rewrite_h)o(ook)o Ft(,)29 b(whic)m(h)k(mo)s(di\014es)f
+(the)i(w)m(ord)f(b)s(eing)g(completed.)390 3060 y(The)h(function)g(tak)
+m(es)i(t)m(w)m(o)g(argumen)m(ts:)49 b Fk(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 3932 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 4042 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 4151 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 4261 y(the)j(allo)s(cated)h
-(string.)3371 4463 y([V)-8 b(ariable])-3598 b Fh(rl_compdisp_func_t)58
+Fk(fnlen)p Ft(,)390 3169 y(its)j(length)h(in)e(b)m(ytes.)61
+b(It)37 b(m)m(ust)g(either)g(return)f(its)i(\014rst)e(argumen)m(t)h
+(\(if)g(no)g(con)m(v)m(ersion)h(tak)m(es)390 3279 y(place\))k(or)e(the)
+h(con)m(v)m(erted)h(\014lename)f(in)f(newly-allo)s(cated)i(memory)-8
+b(.)72 b(The)40 b(function)g(should)390 3389 y(p)s(erform)25
+b(an)m(y)h(necessary)h(application)g(or)f(system-sp)s(eci\014c)h(con)m
+(v)m(ersion)g(on)f(the)h(\014lename,)g(suc)m(h)390 3498
+y(as)f(con)m(v)m(erting)h(b)s(et)m(w)m(een)f(c)m(haracter)h(sets)f(or)f
+(con)m(v)m(erting)j(from)d(a)h(\014lesystem)f(format)h(to)g(a)g(c)m
+(har-)390 3608 y(acter)39 b(input)d(format.)63 b(Readline)38
+b(compares)g(the)g(con)m(v)m(erted)h(form)e(against)i(the)f(w)m(ord)f
+(to)i(b)s(e)390 3717 y(completed,)f(and,)e(if)f(it)h(matc)m(hes,)i
+(adds)c(it)i(to)g(the)f(list)h(of)f(matc)m(hes.)57 b(Readline)36
+b(will)f(free)h(the)390 3827 y(allo)s(cated)c(string.)3371
+4025 y([V)-8 b(ariable])-3598 b Fh(rl_dequote_func_t)57
+b(*)c(rl_completion_rewrite_)q(hoo)q(k)390 4134 y Ft(If)27
+b(non-zero,)h(this)g(is)f(the)g(address)g(of)g(a)h(function)f(for)g
+(Readline)h(to)g(call)g(b)s(efore)f(comparing)h(the)390
+4244 y(\014lename)e(p)s(ortion)f(of)h(a)g(w)m(ord)f(to)h(b)s(e)f
+(completed)i(with)e(directory)h(en)m(tries)g(from)g(the)f
+(\014lesystem.)390 4354 y(It)38 b(mo)s(di\014es)g(the)h(w)m(ord)f(b)s
+(eing)g(completed,)j(as)e(opp)s(osed)e(to)i Fs
+(rl_filename_rewrite_hook)p Ft(,)390 4463 y(whic)m(h)j(mo)s(di\014es)f
+(\014lesystem)h(en)m(tries.)76 b(The)41 b(function)h(tak)m(es)h(t)m(w)m
+(o)g(argumen)m(ts:)64 b Fk(fname)p Ft(,)45 b(the)390
+4573 y(w)m(ord)d(to)h(b)s(e)f(con)m(v)m(erted,)47 b(after)c(an)m(y)g
+Fs(rl_filename_dequoting_f)o(unct)o(ion)36 b Ft(has)42
+b(b)s(een)g(ap-)390 4682 y(plied,)c(and)e Fk(fnlen)p
+Ft(,)h(its)g(length)g(in)f(b)m(ytes.)60 b(It)36 b(m)m(ust)h(either)g
+(return)e(its)i(\014rst)e(argumen)m(t)i(\(if)g(no)390
+4792 y(con)m(v)m(ersion)i(tak)m(es)h(place\))f(or)f(the)g(con)m(v)m
+(erted)h(\014lename)f(in)g(newly-allo)s(cated)i(memory)-8
+b(.)63 b(The)390 4902 y(function)37 b(should)f(p)s(erform)f(an)m(y)j
+(necessary)f(application)h(or)f(system-sp)s(eci\014c)h(con)m(v)m
+(ersion)g(on)390 5011 y(the)24 b(\014lename,)i(suc)m(h)d(as)i(con)m(v)m
+(erting)g(b)s(et)m(w)m(een)g(c)m(haracter)h(sets)e(or)g(con)m(v)m
+(erting)i(from)d(a)h(c)m(haracter)390 5121 y(input)35
+b(format)h(to)h(some)f(other)h(format.)58 b(Readline)36
+b(compares)h(the)f(con)m(v)m(erted)h(form)f(against)390
+5230 y(directory)e(en)m(tries,)h(after)f(their)f(p)s(oten)m(tial)i(mo)s
+(di\014cation)e(b)m(y)g Fs(rl_filename_rewrite_hook)p
+Ft(,)390 5340 y(and)d(adds)f(an)m(y)i(matc)m(hes)h(to)f(the)f(list)h
+(of)g(matc)m(hes.)42 b(Readline)31 b(will)f(free)h(the)g(allo)s(cated)h
+(string.)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)3371
+299 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
-4573 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 4682 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 4792 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 4792 V 40 w(matc)m(hes)p Ft(,)390 4902
-y Fs(int)26 b Fj(max)p 735 4902 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 4902 V 39 w(matc)m(hes)j
-Ft(is)c(the)390 5011 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 5011 V 40 w(length)h
-Ft(is)g(the)f(length)h(of)g(the)f(longest)i(string)390
-5121 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 5230 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 5340 y(function)d(from)g(this)g(ho)s(ok.)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)3371
-299 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 408 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
-518 y(routine.)61 b(The)37 b(default)g(v)-5 b(alue)37
+408 y Ft(If)39 b(non-zero,)j(then)c(this)h(is)g(the)h(address)e(of)h(a)
+h(function)e(to)i(call)g(when)f(completing)h(a)f(w)m(ord)390
+518 y(w)m(ould)44 b(normally)h(displa)m(y)g(the)f(list)h(of)g(p)s
+(ossible)f(matc)m(hes.)84 b(Readline)45 b(calls)h(this)e(function)390
+628 y(instead)j(of)f(displa)m(ying)h(the)g(list)g(itself.)89
+b(It)47 b(tak)m(es)h(three)e(argumen)m(ts:)74 b(\()p
+Fs(char)29 b(**)p Fk(matc)m(hes)p Ft(,)390 737 y Fs(int)h
+Fk(n)m(um)p 745 737 28 4 v 39 w(matc)m(hes)p Ft(,)j Fs(int)d
+Fk(max)p 1505 737 V 40 w(length)p Ft(\))i(where)e Fk(matc)m(hes)36
+b Ft(is)31 b(the)g(arra)m(y)h(of)f(matc)m(hing)h(strings,)390
+847 y Fk(n)m(um)p 571 847 V 39 w(matc)m(hes)43 b Ft(is)37
+b(the)h(n)m(um)m(b)s(er)f(of)g(strings)h(in)f(that)h(arra)m(y)-8
+b(,)41 b(and)c Fk(max)p 2921 847 V 40 w(length)h Ft(is)g(the)g(length)
+390 956 y(of)i(the)g(longest)h(string)e(in)g(that)i(arra)m(y)-8
+b(.)69 b(Readline)40 b(pro)m(vides)g(a)g(con)m(v)m(enience)i(function,)
+g Fs(rl_)390 1066 y(display_match_list)p Ft(,)49 b(that)h(tak)m(es)g
+(care)g(of)g(doing)f(the)g(displa)m(y)h(to)f(Readline's)h(output)390
+1176 y(stream.)41 b(Y)-8 b(ou)31 b(ma)m(y)g(call)h(that)f(function)f
+(from)g(this)g(ho)s(ok.)3371 1354 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
+1463 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
+1573 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 628 y(completion)c(in)e(Bash:)41
-b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 819
+(break)g(w)m(ords)f(for)390 1682 y(completion)c(in)e(Bash:)41
+b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 1861
 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_basic_quote_charact)q(ers)390 929 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
-1121 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 1230
-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
-1340 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 1532 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56
-b(*)d(rl_completion_word_brea)q(k_ho)q(ok)390 1641 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
-1751 y(to)k(separate)g(w)m(ords)f(for)g(w)m(ord)g(completion.)54
+(rl_basic_quote_charact)q(ers)390 1970 y Ft(A)32 b(list)g(of)g(quote)g
+(c)m(haracters)h(whic)m(h)f(can)g(cause)g(a)g(w)m(ord)g(break.)44
+b(The)31 b(default)h(v)-5 b(alue)32 b(includes)390 2080
+y(single)f(and)f(double)g(quotes.)3371 2258 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 2367 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
+2477 y(internal\(\))p Ft(.)i(These)39 b(c)m(haracters)i(determine)f(ho)
+m(w)f(Readline)i(decides)e(what)h(to)g(complete.)390
+2587 y(The)30 b(default)g(list)h(is)g(the)f(v)-5 b(alue)31
+b(of)g Fs(rl_basic_word_break_char)o(act)o(ers)p Ft(.)3371
+2765 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56 b(*)d
+(rl_completion_word_brea)q(k_ho)q(ok)390 2874 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 2984
+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 1861 y(completer_word_break_cha)o(ract)o(ers)26
+Fs(rl_)390 3093 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 1970 y(The)24 b(function)h(ma)m(y)g(c)m(ho)s(ose)h(to)
+(completion.)390 3203 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 2080 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 2271 y([V)-8 b(ariable])-3598
-b Fh(const)54 b(char)f(*)g(rl_completer_quote_cha)q(rac)q(ters)390
-2381 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 2491 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 2600 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 2710 y(list.)3371
-2902 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_filename_quote_char)q(act)q(ers)390 3011 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
-3121 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
-3313 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
-(rl_special_prefixes)390 3422 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 3532 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 3641 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 Ft(itself.)39 b(If)25 b(the)390 3313 y(function)30
+b(returns)f Fs(NULL)p Ft(,)h(Readline)h(uses)f Fs
+(rl_completer_word_break)o(_ch)o(arac)o(ters)o Ft(.)3371
+3491 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_completer_quote_cha)q(rac)q(ters)390 3600 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
+3710 y(o)s(ccurs)23 b(on)g(the)g(en)m(tire)h(substring,)g(and)f(within)
+f(the)i(substring,)g Fs(rl_completer_word_break)o(_)390
+3819 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
+3929 y(list.)3371 4107 y([V)-8 b(ariable])-3598 b Fh(const)54
+b(char)f(*)g(rl_filename_quote_char)q(act)q(ers)390 4217
+y Ft(A)35 b(list)h(of)f(c)m(haracters)h(that)g(cause)f(Readline)h(to)f
+(quote)h(a)f(\014lename)h(when)d(they)j(app)s(ear)e(in)h(a)390
+4326 y(completed)c(\014lename.)41 b(The)30 b(default)h(is)f(the)h(n)m
+(ull)f(string.)3371 4504 y([V)-8 b(ariable])-3598 b Fh(const)54
+b(char)f(*)g(rl_special_prefixes)390 4614 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 Fk(text)k
+Ft(when)390 4724 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 4833 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
-3751 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371
-3943 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q
-(tems)390 4052 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 4162 y(After)44 b(that,)49
-b(Readline)c(asks)f(the)h(user)e(for)h(con\014rmation)h(b)s(efore)e
-(displa)m(ying)i(them.)82 b(The)390 4271 y(default)36
-b(v)-5 b(alue)37 b(is)f(100.)58 b(A)36 b(negativ)m(e)i(v)-5
-b(alue)37 b(indicates)g(that)f(Readline)h(should)e(nev)m(er)h(ask)g
-(for)390 4381 y(con\014rmation.)3371 4573 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_completion_append_)q(char)q(act)q(er)390
-4682 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
-4792 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 4902 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 5011 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
-5121 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
-5230 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 5340 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.)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)3371
-299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)q
-(s_ap)q(pen)q(d)390 408 y Ft(If)33 b(non-zero,)i Fj(rl)p
-949 408 28 4 v 39 w(completion)p 1421 408 V 42 w(app)s(end)p
-1755 408 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 518 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 628
-y(completion)32 b(function)e(is)g(called,)i(and)e(ma)m(y)h(only)f(b)s
+4943 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371
+5121 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q
+(tems)390 5230 y Ft(This)24 b(determines)h(the)g(maxim)m(um)f(n)m(um)m
+(b)s(er)g(of)h(items)g(that)h(p)s(ossible-completions)g(will)f(displa)m
+(y)390 5340 y(unconditionally)-8 b(.)49 b(If)32 b(there)h(are)g(more)g
+(p)s(ossible)g(completions)g(than)g(this,)g(Readline)h(asks)f(the)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
+299 y(user)35 b(for)g(con\014rmation)g(b)s(efore)g(displa)m(ying)h
+(them.)56 b(The)35 b(default)g(v)-5 b(alue)36 b(is)f(100.)57
+b(A)36 b(negativ)m(e)390 408 y(v)-5 b(alue)31 b(indicates)g(that)g
+(Readline)g(should)e(nev)m(er)i(ask)g(for)f(con\014rmation.)3371
+587 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_append_)q
+(char)q(act)q(er)390 696 y Ft(When)48 b(a)h(single)g(completion)g
+(alternativ)m(e)i(matc)m(hes)e(at)g(the)g(end)e(of)i(the)f(command)g
+(line,)390 806 y(Readline)40 b(app)s(ends)d(this)i(c)m(haracter)i(to)f
+(the)f(inserted)g(completion)i(text.)68 b(The)39 b(default)g(is)h(a)390
+915 y(space)35 b(c)m(haracter)h(\(`)31 b('\).)54 b(Setting)35
+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(e-)390 1025
+y(ing)d(app)s(ended)f(automatically)-8 b(.)50 b(This)31
+b(can)h(b)s(e)g(c)m(hanged)h(in)f(application-sp)s(eci\014c)i
+(completion)390 1134 y(functions)k(to)h(pro)m(vide)g(the)g(\\most)g
+(sensible)g(w)m(ord)f(separator)h(c)m(haracter")i(according)f(to)f(an)
+390 1244 y(application-sp)s(eci\014c)31 b(command)f(line)h(syn)m(tax)f
+(sp)s(eci\014cation.)42 b(It)30 b(is)g(set)g(to)h(the)f(default)g(b)s
+(efore)390 1354 y(calling)f(an)m(y)e(application-sp)s(eci\014c)i
+(completion)f(function,)g(and)e(ma)m(y)i(only)f(b)s(e)g(c)m(hanged)g
+(within)390 1463 y(suc)m(h)j(a)h(function.)3371 1641
+y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)q(s_ap)q
+(pen)q(d)390 1751 y Ft(If)24 b(non-zero,)i(Readline)g(will)e(not)h(app)
+s(end)e(the)h Fk(rl)p 2087 1751 28 4 v 40 w(completion)p
+2560 1751 V 42 w(app)s(end)p 2894 1751 V 38 w(c)m(haracter)33
+b Ft(to)25 b(matc)m(hes)390 1861 y(at)32 b(the)g(end)f(of)g(the)h
+(command)f(line,)i(as)e(describ)s(ed)g(ab)s(o)m(v)m(e.)45
+b(It)32 b(is)f(set)h(to)h(0)e(b)s(efore)h(calling)h(an)m(y)390
+1970 y(application-sp)s(eci\014c)46 b(completion)g(function,)i(and)c
+(ma)m(y)i(only)f(b)s(e)f(c)m(hanged)h(within)f(suc)m(h)h(a)390
+2080 y(function.)3371 2258 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_completion_suppres)q(s_qu)q(ote)390 2367
+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
+2477 y(completion)38 b(on)e(a)h(quoted)g(string.)59 b(It)37
+b(is)f(set)h(to)g(0)g(b)s(efore)g(calling)h(an)m(y)e(application-sp)s
+(eci\014c)390 2587 y(completion)c(function,)e(and)g(ma)m(y)h(only)f(b)s
 (e)g(c)m(hanged)h(within)f(suc)m(h)g(a)h(function.)3371
-847 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_quote_c)q
-(hara)q(cte)q(r)390 956 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 1066 y Fj(rl)p 457 1066 V 40 w(completer)p
-885 1066 V 41 w(quote)p 1145 1066 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 1176 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 1395 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)
-q(s_qu)q(ote)390 1504 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 1614 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 1724 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 1943 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q)
-q(uote)390 2052 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f
+2765 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_found_q)q
+(uote)390 2874 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 2162 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h
+-5 b(alue)32 b(if)390 2984 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 2271 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 2491 y([V)-8
-b(ariable])-3598 b Fh(int)53 b(rl_completion_mark_sy)q(mlin)q(k_d)q
-(irs)390 2600 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 2710 y(to)25 b(directory)g(names,)g(sub)5
+(haracters,)i(including)390 3093 y(bac)m(kslashes.)42
+b(This)29 b(is)i(set)g(b)s(efore)f(calling)h(an)m(y)g(application-sp)s
+(eci\014c)h(completion)g(function.)3371 3271 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_completion_quote_c)q(hara)q(cte)q(r)
+390 3381 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
+3491 y Fk(rl)p 457 3491 V 40 w(completer)p 885 3491 V
+41 w(quote)p 1145 3491 V 41 w(c)m(haracters)p Ft(,)31
+b(it)f(sets)f(this)g(v)-5 b(ariable)30 b(to)g(the)g(quoting)f(c)m
+(haracter)i(it)f(found.)390 3600 y(This)g(is)g(set)h(b)s(efore)f
+(calling)i(an)m(y)e(application-sp)s(eci\014c)i(completion)g(function.)
+3371 3778 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_mark_sy)
+q(mlin)q(k_d)q(irs)390 3888 y Ft(If)29 b(non-zero,)i(Readline)g(app)s
+(ends)d(a)i(slash)g(to)g(completed)h(\014lenames)f(that)h(are)f(sym)m
+(b)s(olic)g(links)390 3998 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 2819 y(This)27
+Fk(mark-directories)k Ft(v)-5 b(ariable.)390 4107 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
-2929 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 3039 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 3148
-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 3258 y(user's)d(preferences)g(are)h(honored.)3371
-3477 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q
-(dupl)q(ica)q(tes)390 3587 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 3806 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_filename_completio)q(n_de)q(sir)q(ed)390
-3915 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 4025 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 4134 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 4244 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 4354 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 4463 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 4682 y([V)d(ariable])-3598
-b Fh(int)53 b(rl_filename_quoting_d)q(esir)q(ed)390 4792
-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
-4902 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
-5011 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 5121 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 5230 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 5340 y(quoting_function)p
-Ft(.)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)3371
-299 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_attempted_completi)q
-(on_o)q(ver)390 408 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
-518 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 628 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 737 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.)3371 922 y([V)-8 b(ariable])-3598
-b Fh(int)53 b(rl_sort_completion_ma)q(tche)q(s)390 1031
-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 1141 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 1250 y(1,)32
+4217 y(user's)i(global)i(preference)f(\(set)h(via)f(the)g
+Fk(mark-symlink)m(ed-directories)37 b Ft(Readline)32
+b(v)-5 b(ariable\))33 b(if)390 4326 y(appropriate.)38
+b(This)20 b(v)-5 b(ariable)22 b(is)f(set)h(to)g(the)f(user's)g
+(preference)g(b)s(efore)g(calling)i(an)m(y)e(application-)390
+4436 y(sp)s(eci\014c)28 b(completion)h(function,)f(so)h(unless)e(that)i
+(function)e(mo)s(di\014es)h(the)g(v)-5 b(alue,)29 b(Readline)g(will)390
+4545 y(honor)h(the)g(user's)g(preferences.)3371 4724
+y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q(dupl)q
+(ica)q(tes)390 4833 y Ft(If)28 b(non-zero,)h(then)f(Readline)g(remo)m
+(v)m(es)i(duplicates)e(in)g(the)g(set)h(of)f(p)s(ossible)f
+(completions.)41 b(The)390 4943 y(default)31 b(is)f(1.)3371
+5121 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_filename_completio)q
+(n_de)q(sir)q(ed)390 5230 y Ft(A)43 b(non-zero)g(v)-5
+b(alue)43 b(means)f(that)h(Readline)g(should)f(treat)i(the)e(results)h
+(of)f(the)h(matc)m(hes)h(as)390 5340 y(\014lenames.)38
+b(This)21 b(is)h Fj(always)31 b Ft(zero)23 b(when)e(completion)i(is)f
+(attempted,)j(and)d(can)g(only)g(b)s(e)f(c)m(hanged)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)390
+299 y(within)39 b(an)h(application-sp)s(eci\014c)i(completion)f
+(function.)69 b(If)39 b(it)i(is)f(set)g(to)h(a)f(non-zero)g(v)-5
+b(alue)390 408 y(b)m(y)40 b(suc)m(h)f(a)h(function,)i(Readline)e(app)s
+(ends)e(a)i(slash)f(to)i(directory)f(names)g(and)f(attempts)h(to)390
+518 y(quote)i(completed)h(\014lenames)f(if)g(they)g(con)m(tain)h(an)m
+(y)f(c)m(haracters)h(in)f Fs(rl_filename_quote_)390 628
+y(characters)28 b Ft(and)h Fs(rl_filename_quoting_desire)o(d)24
+b Ft(is)31 b(set)g(to)g(a)f(non-zero)h(v)-5 b(alue.)3371
+816 y([V)d(ariable])-3598 b Fh(int)53 b(rl_filename_quoting_d)q(esir)q
+(ed)390 925 y Ft(A)31 b(non-zero)g(v)-5 b(alue)31 b(means)g(that)g
+(Readline)g(should)f(quote)h(the)g(results)g(of)g(the)g(matc)m(hes)g
+(using)390 1035 y(double)37 b(quotes)g(\(or)h(an)f(application-sp)s
+(eci\014c)i(quoting)e(mec)m(hanism\))h(if)f(the)g(completed)i(\014le-)
+390 1144 y(name)25 b(con)m(tains)h(an)m(y)f(c)m(haracters)h(in)f
+Fs(rl_filename_quote_chars)p Ft(.)32 b(This)24 b(is)h
+Fj(always)34 b Ft(non-zero)390 1254 y(when)22 b(completion)i(is)f
+(attempted,)j(and)c(can)h(only)g(b)s(e)g(c)m(hanged)g(within)g(an)f
+(application-sp)s(eci\014c)390 1363 y(completion)34 b(function.)48
+b(The)32 b(quoting)h(is)g(p)s(erformed)e(via)i(a)h(call)g(to)f(the)g
+(function)g(p)s(oin)m(ted)f(to)390 1473 y(b)m(y)e Fs
+(rl_filename_quoting_funct)o(ion)p Ft(.)3371 1661 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_full_quoting_desir)q(ed)390
+1771 y Ft(A)28 b(non-zero)h(v)-5 b(alue)29 b(means)f(that)g(Readline)h
+(should)e(apply)h(\014lename-st)m(yle)i(quoting,)f(including)390
+1880 y(an)m(y)34 b(application-sp)s(eci\014ed)g(quoting)f(mec)m
+(hanism,)i(to)f(all)g(completion)h(matc)m(hes)f(ev)m(en)g(if)f(it)h(is)
+390 1990 y(not)h(otherwise)h(treating)h(the)e(matc)m(hes)i(as)e
+(\014lenames.)55 b(This)35 b(is)g Fj(always)45 b Ft(zero)36
+b(when)e(comple-)390 2099 y(tion)28 b(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 2209 y(function.)78 b(The)42 b(quoting)i(is)f(p)s
+(erformed)e(via)j(a)f(call)h(to)g(the)f(function)g(p)s(oin)m(ted)f(to)i
+(b)m(y)f Fs(rl_)390 2318 y(filename_quoting_functio)o(n)p
+Ft(.)3371 2506 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_attempted_completi)q(on_o)q(ver)390 2616 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 2725 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 2835 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 2945 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.)3371 3133 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_sort_completion_ma)q(tche)q(s)390
+3242 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 3352 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 3461 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 1360
+h(and,)f(dep)s(ending)f(on)h(the)g(v)-5 b(alue)390 3571
 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 1544 y([V)-8 b(ariable])-3598 b Fh(int)53
-b(rl_completion_type)390 1654 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 1763 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 1873 y(F)-8 b(unctions],)39 b(page)f(54\))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 1983 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 2092 y(to)g(presen)m(t)g(the)f
-(same)h(in)m(terface)h(as)e Fs(rl_complete\(\))p Ft(.)3371
-2276 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_invokin)q
-(g_ke)q(y)390 2386 y Ft(Set)41 b(to)g(the)g(\014nal)g(c)m(haracter)h
+(hes.)3371 3759 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_completion_type)390 3868 y Ft(Set)26 b(to)g(a)f(c)m(haracter)i
+(describing)e(the)h(t)m(yp)s(e)f(of)h(completion)h(Readline)f(is)f
+(curren)m(tly)g(attempting;)390 3978 y(see)h(the)f(description)g(of)g
+Fs(rl_complete_internal\(\))18 b Ft(\(see)26 b(Section)g(2.6.2)h
+([Completion)f(F)-8 b(unc-)390 4088 y(tions],)33 b(page)f(57\))h(for)f
+(the)f(list)i(of)e(c)m(haracters.)47 b(This)30 b(is)i(set)g(to)h(the)f
+(appropriate)f(v)-5 b(alue)32 b(b)s(efore)390 4197 y(calling)40
+b(an)m(y)g(application-sp)s(eci\014c)g(completion)g(function,)i(so)d
+(these)g(functions)g(can)g(presen)m(t)390 4307 y(the)31
+b(same)f(in)m(terface)i(as)f Fs(rl_complete\(\))p Ft(.)3371
+4495 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_invokin)q
+(g_ke)q(y)390 4604 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 2496 y(functions)c(that)h(call)h
+(the)g(completion)390 4714 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 2605 y(b)s(efore)30 b(an)m(y)h
-(application-sp)s(eci\014c)h(completion)f(function)f(is)h(called.)3371
-2790 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_inhibit_completion)390
-2899 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 3009 y(inserted)h(as)h(an)m(y)g(other)f(b)s(ound)e
-(to)k Fs(self-insert)p Ft(.)150 3208 y Fi(2.6.4)63 b(A)40
-b(Short)i(Completion)g(Example)150 3355 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
-3465 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 3574 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: 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
+(appropriate)f(v)-5 b(alue)390 4823 y(b)s(efore)30 b(calling)i(an)m(y)f
+(application-sp)s(eci\014c)g(completion)h(function.)3371
+5011 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_inhibit_completion)390
+5121 y Ft(If)44 b(this)g(v)-5 b(ariable)45 b(is)g(non-zero,)k(Readline)
+c(do)s(es)f(not)g(p)s(erform)f(completion,)50 b(ev)m(en)45
+b(if)f(a)h(k)m(ey)390 5230 y(binding)30 b(indicates)i(it)f(should.)41
+b(The)31 b(completion)h(c)m(haracter)g(is)f(inserted)g(as)g(if)g(it)h
+(w)m(ere)f(b)s(ound)390 5340 y(to)g Fs(self-insert)p
+Ft(.)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)150
+299 y Fi(2.6.4)63 b(A)40 b(Short)i(Completion)g(Example)150
+446 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 555 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 665 y(pro)m(vides)30
+b(command)g(name)h(completion,)h(line)f(editing)g(features,)f(and)g
+(access)i(to)f(the)g(history)f(list.)p eop end
+%%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)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)
@@ -11073,9 +11378,9 @@ y(int)e(com_cd)g(PARAMS\(\(char)i(*\)\);)390 4570 y(int)e(com_quit)h
 (call)i(to)e(do)h(the)g(job.)g(*/)468 5268 y(char)h(*doc;)f(/*)g
 (Documentation)i(for)e(this)g(function.)80 b(*/)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: 66 70
+TeXDict begin 66 69 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(66)390
 299 y Fe(})39 b(COMMAND;)390 473 y(COMMAND)i(commands[])g(=)f({)468
 560 y({)g("cd",)g(com_cd,)h("Change)g(to)f(directory)h(DIR")f(},)468
 648 y({)g("delete",)h(com_delete,)h("Delete)f(FILE")f(},)468
@@ -11091,237 +11396,233 @@ f(statistics)h(on)f(FILE")g(},)468 1432 y({)g("view",)h(com_view,)g
 ("View)f(the)g(contents)h(of)f(FILE")g(},)468 1519 y({)g(\(char)g
 (*\)NULL,)h(\(rl_icpfunc_t)h(*\)NULL,)f(\(char)f(*\)NULL)h(})390
 1606 y(};)390 1781 y(/*)f(Forward)g(declarations.)j(*/)390
-1868 y(char)d(*stripwhite)i(\(\);)390 1955 y(COMMAND)f(*find_command)h
-(\(\);)390 2130 y(/*)e(The)g(name)g(of)f(this)i(program,)g(as)e(taken)i
-(from)f(argv[0].)h(*/)390 2217 y(char)f(*progname;)390
-2391 y(/*)g(When)g(non-zero,)h(this)f(global)h(means)f(the)g(user)g(is)
-g(done)g(using)g(this)h(program.)g(*/)390 2478 y(int)f(done;)390
-2653 y(char)g(*)390 2740 y(dupstr)h(\(s\))586 2827 y(char)f(*s;)390
-2914 y({)468 3001 y(char)h(*r;)468 3176 y(r)f(=)f(xmalloc)i(\(strlen)g
-(\(s\))f(+)f(1\);)468 3263 y(strcpy)i(\(r,)f(s\);)468
-3350 y(return)h(\(r\);)390 3437 y(})390 3611 y(main)f(\(argc,)h(argv\))
-586 3699 y(int)f(argc;)586 3786 y(char)g(**argv;)390
-3873 y({)468 3960 y(char)h(*line,)f(*s;)468 4134 y(setlocale)i
-(\(LC_ALL,)f(""\);)468 4309 y(progname)g(=)f(argv[0];)468
-4483 y(initialize_readline)k(\(\);)c(/*)g(Bind)g(our)g(completer.)h(*/)
-468 4658 y(/*)f(Loop)g(reading)h(and)f(executing)h(lines)g(until)f(the)
-g(user)g(quits.)h(*/)468 4745 y(for)f(\()g(;)f(done)h(==)g(0;)g(\))547
-4832 y({)625 4919 y(line)g(=)g(readline)h(\("FileMan:)h("\);)625
-5093 y(if)e(\(!line\))704 5181 y(break;)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)625
-299 y Fe(/*)40 b(Remove)h(leading)f(and)g(trailing)h(whitespace)h(from)
-e(the)g(line.)743 386 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 473 y(and)f(execute)h(it.)f
-(*/)625 560 y(s)g(=)f(stripwhite)j(\(line\);)625 735
-y(if)e(\(*s\))704 822 y({)782 909 y(add_history)i(\(s\);)782
-996 y(execute_line)g(\(s\);)704 1083 y(})625 1258 y(free)e(\(line\);)
-547 1345 y(})468 1432 y(exit)h(\(0\);)390 1519 y(})390
-1694 y(/*)f(Execute)g(a)g(command)h(line.)f(*/)390 1781
-y(int)390 1868 y(execute_line)i(\(line\))586 1955 y(char)e(*line;)390
-2042 y({)468 2130 y(register)h(int)f(i;)468 2217 y(COMMAND)h(*command;)
-468 2304 y(char)g(*word;)468 2478 y(/*)f(Isolate)h(the)f(command)h
-(word.)f(*/)468 2565 y(i)g(=)f(0;)468 2653 y(while)i(\(line[i])g(&&)f
-(whitespace)h(\(line[i]\)\))547 2740 y(i++;)468 2827
-y(word)g(=)e(line)h(+)g(i;)468 3001 y(while)h(\(line[i])g(&&)f
-(!whitespace)h(\(line[i]\)\))547 3088 y(i++;)468 3263
-y(if)f(\(line[i]\))547 3350 y(line[i++])h(=)f('\\0';)468
-3524 y(command)h(=)f(find_command)i(\(word\);)468 3699
-y(if)e(\(!command\))547 3786 y({)625 3873 y(fprintf)h(\(stderr,)g
+1868 y(char)d(*stripwhite)i(\(char)e(*\);)390 1955 y(COMMAND)h
+(*find_command)h(\(char)e(*\);)390 2130 y(/*)g(The)g(name)g(of)f(this)i
+(program,)g(as)e(taken)i(from)f(argv[0].)h(*/)390 2217
+y(char)f(*progname;)390 2391 y(/*)g(When)g(non-zero,)h(this)f(global)h
+(means)f(the)g(user)g(is)g(done)g(using)g(this)h(program.)g(*/)390
+2478 y(int)f(done;)390 2653 y(char)g(*)390 2740 y(dupstr)h(\(char)f
+(*s\))390 2827 y({)468 2914 y(char)h(*r;)468 3088 y(r)f(=)f(xmalloc)i
+(\(strlen)g(\(s\))f(+)f(1\);)468 3176 y(strcpy)i(\(r,)f(s\);)468
+3263 y(return)h(\(r\);)390 3350 y(})390 3524 y(int)390
+3611 y(main)f(\(int)g(argc,)h(char)f(**argv\))390 3699
+y({)468 3786 y(char)h(*line,)f(*s;)468 3960 y(setlocale)i(\(LC_ALL,)f
+(""\);)468 4134 y(progname)g(=)f(argv[0];)468 4309 y
+(initialize_readline)k(\(\);)c(/*)g(Bind)g(our)g(completer.)h(*/)468
+4483 y(/*)f(Loop)g(reading)h(and)f(executing)h(lines)g(until)f(the)g
+(user)g(quits.)h(*/)468 4570 y(for)f(\()g(;)f(done)h(==)g(0;)g(\))547
+4658 y({)625 4745 y(line)g(=)g(readline)h(\("FileMan:)h("\);)625
+4919 y(if)e(\(!line\))704 5006 y(break;)625 5181 y(/*)g(Remove)h
+(leading)f(and)g(trailing)h(whitespace)h(from)e(the)g(line.)743
+5268 y(Then,)g(if)g(there)g(is)g(anything)h(left,)g(add)e(it)h(to)g
+(the)g(history)h(list)p eop end
+%%Page: 67 71
+TeXDict begin 67 70 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(67)743
+299 y Fe(and)40 b(execute)h(it.)f(*/)625 386 y(s)g(=)f(stripwhite)j
+(\(line\);)625 560 y(if)e(\(*s\))704 648 y({)782 735
+y(add_history)i(\(s\);)782 822 y(execute_line)g(\(s\);)704
+909 y(})625 1083 y(free)e(\(line\);)547 1171 y(})468
+1258 y(exit)h(\(0\);)390 1345 y(})390 1519 y(/*)f(Execute)g(a)g
+(command)h(line.)f(*/)390 1606 y(int)390 1694 y(execute_line)i(\(char)e
+(*line\))390 1781 y({)468 1868 y(register)h(int)f(i;)468
+1955 y(COMMAND)h(*command;)468 2042 y(char)g(*word;)468
+2217 y(/*)f(Isolate)h(the)f(command)h(word.)f(*/)468
+2304 y(i)g(=)f(0;)468 2391 y(while)i(\(line[i])g(&&)f(whitespace)h
+(\(line[i]\)\))547 2478 y(i++;)468 2565 y(word)g(=)e(line)h(+)g(i;)468
+2740 y(while)h(\(line[i])g(&&)f(!whitespace)h(\(line[i]\)\))547
+2827 y(i++;)468 3001 y(if)f(\(line[i]\))547 3088 y(line[i++])h(=)f
+('\\0';)468 3263 y(command)h(=)f(find_command)i(\(word\);)468
+3437 y(if)e(\(!command\))547 3524 y({)625 3611 y(fprintf)h(\(stderr,)g
 ("\045s:)f(No)g(such)g(command)h(for)f(FileMan.\\n",)i(word\);)625
-3960 y(return)f(\(-1\);)547 4047 y(})468 4222 y(/*)f(Get)g(argument)h
-(to)f(command,)h(if)f(any.)g(*/)468 4309 y(while)h(\(whitespace)h
-(\(line[i]\)\))547 4396 y(i++;)468 4570 y(word)f(=)e(line)h(+)g(i;)468
-4745 y(/*)g(Call)g(the)g(function.)h(*/)468 4832 y(return)g
-(\(\(*\(command->func\)\))j(\(word\)\);)390 4919 y(})390
-5093 y(/*)c(Look)g(up)f(NAME)i(as)e(the)h(name)g(of)g(a)g(command,)h
-(and)e(return)i(a)f(pointer)g(to)g(that)508 5181 y(command.)80
+3699 y(return)f(\(-1\);)547 3786 y(})468 3960 y(/*)f(Get)g(argument)h
+(to)f(command,)h(if)f(any.)g(*/)468 4047 y(while)h(\(whitespace)h
+(\(line[i]\)\))547 4134 y(i++;)468 4309 y(word)f(=)e(line)h(+)g(i;)468
+4483 y(/*)g(Call)g(the)g(function.)h(*/)468 4570 y(return)g
+(\(\(*\(command->func\)\))j(\(word\)\);)390 4658 y(})390
+4832 y(/*)c(Look)g(up)f(NAME)i(as)e(the)h(name)g(of)g(a)g(command,)h
+(and)e(return)i(a)f(pointer)g(to)g(that)508 4919 y(command.)80
 b(Return)41 b(a)e(NULL)h(pointer)h(if)f(NAME)g(isn't)g(a)g(command)g
-(name.)h(*/)390 5268 y(COMMAND)g(*)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)390
-299 y Fe(find_command)42 b(\(name\))586 386 y(char)e(*name;)390
-473 y({)468 560 y(register)h(int)f(i;)468 735 y(for)g(\(i)g(=)f(0;)h
-(commands[i].name;)j(i++\))547 822 y(if)d(\(strcmp)g(\(name,)h
-(commands[i].name\))i(==)d(0\))625 909 y(return)h(\(&commands[i]\);)468
-1083 y(return)g(\(\(COMMAND)g(*\)NULL\);)390 1171 y(})390
-1345 y(/*)f(Strip)g(whitespace)i(from)e(the)g(start)g(and)g(end)g(of)f
-(STRING.)81 b(Return)40 b(a)g(pointer)508 1432 y(into)g(STRING.)h(*/)
-390 1519 y(char)f(*)390 1606 y(stripwhite)h(\(string\))586
-1694 y(char)f(*string;)390 1781 y({)468 1868 y(register)h(char)g(*s,)f
-(*t;)468 2042 y(for)g(\(s)g(=)f(string;)i(whitespace)h(\(*s\);)e(s++\))
-547 2130 y(;)468 2304 y(if)g(\(*s)g(==)g(0\))547 2391
-y(return)g(\(s\);)468 2565 y(t)g(=)f(s)h(+)f(strlen)i(\(s\))f(-)f(1;)
-468 2653 y(while)i(\(t)e(>)h(s)f(&&)h(whitespace)i(\(*t\)\))547
-2740 y(t--;)468 2827 y(*++t)f(=)e('\\0';)468 3001 y(return)i(s;)390
-3088 y(})390 3263 y(/*)f(******************************)q(*****)q(****)
-q(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390
-3350 y(/*)2589 b(*/)390 3437 y(/*)707 b(Interface)41
-b(to)f(Readline)h(Completion)629 b(*/)390 3524 y(/*)2589
-b(*/)390 3611 y(/*)40 b(******************************)q(*****)q(****)q
-(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390
-3786 y(char)40 b(*command_generator)j(PARAMS\(\(const)g(char)d(*,)f
-(int\)\);)390 3873 y(char)h(**fileman_completion)k(PARAMS\(\(const)e
-(char)e(*,)g(int,)g(int\)\);)390 4047 y(/*)g(Tell)g(the)g(GNU)g
-(Readline)h(library)g(how)e(to)h(complete.)81 b(We)39
-b(want)h(to)g(try)g(to)g(complete)508 4134 y(on)f(command)i(names)g(if)
-e(this)h(is)g(the)g(first)g(word)g(in)g(the)g(line,)g(or)g(on)g
-(filenames)508 4222 y(if)f(not.)h(*/)390 4309 y(initialize_readline)k
-(\(\))390 4396 y({)468 4483 y(/*)c(Allow)g(conditional)i(parsing)f(of)f
-(the)g(~/.inputrc)h(file.)g(*/)468 4570 y(rl_readline_name)i(=)d
-("FileMan";)468 4745 y(/*)g(Tell)g(the)g(completer)h(that)g(we)e(want)h
-(a)g(crack)g(first.)h(*/)468 4832 y(rl_attempted_completion_fun)q(ctio)
-q(n)k(=)39 b(fileman_completion;)390 4919 y(})390 5093
-y(/*)h(Attempt)g(to)g(complete)h(on)f(the)g(contents)h(of)f(TEXT.)79
-b(START)41 b(and)e(END)h(bound)h(the)508 5181 y(region)f(of)g
-(rl_line_buffer)i(that)f(contains)g(the)e(word)i(to)e(complete.)81
-b(TEXT)40 b(is)508 5268 y(the)g(word)g(to)f(complete.)81
-b(We)40 b(can)g(use)f(the)h(entire)h(contents)g(of)f(rl_line_buffer)p
+(name.)h(*/)390 5006 y(COMMAND)g(*)390 5093 y(find_command)h(\(char)e
+(*name\))390 5181 y({)468 5268 y(register)h(int)f(i;)p
 eop end
-%%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)508
-299 y Fe(in)39 b(case)h(we)g(want)g(to)g(do)g(some)g(simple)g(parsing.)
-81 b(Return)40 b(the)g(array)h(of)e(matches,)508 386
-y(or)g(NULL)h(if)g(there)h(aren't)f(any.)g(*/)390 473
-y(char)g(**)390 560 y(fileman_completion)j(\(text,)e(start,)g(end\))586
-648 y(const)f(char)h(*text;)586 735 y(int)f(start,)h(end;)390
-822 y({)468 909 y(char)g(**matches;)468 1083 y(matches)g(=)f(\(char)g
-(**\)NULL;)468 1258 y(/*)g(If)g(this)g(word)g(is)g(at)f(the)h(start)h
-(of)e(the)h(line,)h(then)f(it)g(is)f(a)h(command)586
-1345 y(to)g(complete.)80 b(Otherwise)42 b(it)d(is)h(the)g(name)g(of)g
-(a)f(file)h(in)g(the)g(current)586 1432 y(directory.)i(*/)468
-1519 y(if)e(\(start)h(==)e(0\))547 1606 y(matches)i(=)e
-(rl_completion_matches)44 b(\(text,)d(command_generator\);)468
-1781 y(return)g(\(matches\);)390 1868 y(})390 2042 y(/*)f(Generator)h
-(function)g(for)f(command)h(completion.)81 b(STATE)40
-b(lets)g(us)g(know)g(whether)508 2130 y(to)f(start)i(from)f(scratch;)h
-(without)g(any)f(state)g(\(i.e.)g(STATE)h(==)e(0\),)h(then)g(we)508
-2217 y(start)g(at)g(the)g(top)g(of)f(the)h(list.)h(*/)390
-2304 y(char)f(*)390 2391 y(command_generator)j(\(text,)e(state\))586
-2478 y(const)f(char)h(*text;)586 2565 y(int)f(state;)390
-2653 y({)468 2740 y(static)h(int)f(list_index,)i(len;)468
-2827 y(char)f(*name;)468 3001 y(/*)f(If)g(this)g(is)g(a)f(new)h(word)g
-(to)g(complete,)h(initialize)h(now.)79 b(This)40 b(includes)586
-3088 y(saving)h(the)f(length)g(of)g(TEXT)g(for)g(efficiency,)i(and)e
-(initializing)i(the)d(index)586 3176 y(variable)i(to)f(0.)g(*/)468
-3263 y(if)g(\(!state\))547 3350 y({)625 3437 y(list_index)i(=)d(0;)625
-3524 y(len)h(=)g(strlen)g(\(text\);)547 3611 y(})468
-3786 y(/*)g(Return)h(the)f(next)g(name)g(which)g(partially)i(matches)e
-(from)h(the)e(command)i(list.)g(*/)468 3873 y(while)g(\(name)f(=)g
-(commands[list_index].name\))547 3960 y({)625 4047 y(list_index++;)625
-4222 y(if)g(\(strncmp)h(\(name,)g(text,)f(len\))g(==)g(0\))704
-4309 y(return)g(\(dupstr\(name\)\);)547 4396 y(})468
-4570 y(/*)g(If)g(no)f(names)i(matched,)g(then)f(return)h(NULL.)f(*/)468
-4658 y(return)h(\(\(char)g(*\)NULL\);)390 4745 y(})390
-4919 y(/*)f(******************************)q(*****)q(****)q(*****)q
-(****)q(****)q(*****)q(****)q(***)45 b(*/)390 5006 y(/*)2589
-b(*/)390 5093 y(/*)903 b(FileMan)41 b(Commands)1060 b(*/)390
-5181 y(/*)2589 b(*/)390 5268 y(/*)40 b(******************************)q
-(*****)q(****)q(*****)q(****)q(****)q(*****)q(****)q(***)45
-b(*/)p eop end
-%%Page: 66 70
-TeXDict begin 66 69 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(66)390
-386 y Fe(/*)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
-473 y(commands.)h(*/)390 560 y(static)g(char)f(syscom[1024];)390
-735 y(/*)g(List)g(the)g(file\(s\))h(named)f(in)g(arg.)g(*/)390
-822 y(com_list)h(\(arg\))586 909 y(char)f(*arg;)390 996
-y({)468 1083 y(if)g(\(!arg\))547 1171 y(arg)g(=)f("";)468
-1345 y(sprintf)i(\(syscom,)g("ls)f(-FClg)h(\045s",)f(arg\);)468
-1432 y(return)h(\(system)g(\(syscom\)\);)390 1519 y(})390
-1694 y(com_view)g(\(arg\))586 1781 y(char)f(*arg;)390
-1868 y({)468 1955 y(if)g(\(!valid_argument)j(\("view",)e(arg\)\))547
-2042 y(return)f(1;)390 2217 y(#if)g(defined)h(\(__MSDOS__\))468
-2304 y(/*)f(more.com)h(doesn't)g(grok)f(slashes)h(in)f(pathnames)h(*/)
-468 2391 y(sprintf)g(\(syscom,)g("less)g(\045s",)f(arg\);)390
-2478 y(#else)468 2565 y(sprintf)h(\(syscom,)g("more)g(\045s",)f(arg\);)
-390 2653 y(#endif)468 2740 y(return)h(\(system)g(\(syscom\)\);)390
-2827 y(})390 3001 y(com_rename)g(\(arg\))586 3088 y(char)f(*arg;)390
-3176 y({)468 3263 y(too_dangerous)j(\("rename"\);)468
-3350 y(return)e(\(1\);)390 3437 y(})390 3611 y(com_stat)g(\(arg\))586
-3699 y(char)f(*arg;)390 3786 y({)468 3873 y(struct)h(stat)f(finfo;)468
-4047 y(if)g(\(!valid_argument)j(\("stat",)e(arg\)\))547
-4134 y(return)f(\(1\);)468 4309 y(if)g(\(stat)g(\(arg,)h(&finfo\))g(==)
-e(-1\))547 4396 y({)625 4483 y(perror)i(\(arg\);)625
-4570 y(return)g(\(1\);)547 4658 y(})468 4832 y(printf)g(\("Statistics)h
-(for)e(`\045s':\\n",)h(arg\);)468 5006 y(printf)g(\("\045s)f(has)g
-(\045d)g(link\045s,)h(and)f(is)f(\045d)h(byte\045s)g(in)g(length.\\n",)
-468 5093 y(arg,)782 5181 y(finfo.st_nlink,)782 5268 y(\(finfo.st_nlink)
-j(==)d(1\))f(?)h("")f(:)h("s",)p eop end
-%%Page: 67 71
-TeXDict begin 67 70 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(67)782
-299 y Fe(finfo.st_size,)782 386 y(\(finfo.st_size)43
-b(==)c(1\))h(?)g("")f(:)h("s"\);)468 473 y(printf)h(\("Inode)g(Last)f
-(Change)h(at:)f(\045s",)g(ctime)g(\(&finfo.st_ctime\)\);)468
-560 y(printf)h(\(")236 b(Last)40 b(access)h(at:)f(\045s",)g(ctime)g
-(\(&finfo.st_atime\)\);)468 648 y(printf)h(\(")157 b(Last)41
-b(modified)g(at:)f(\045s",)g(ctime)g(\(&finfo.st_mtime\)\);)468
-735 y(return)h(\(0\);)390 822 y(})390 996 y(com_delete)g(\(arg\))586
-1083 y(char)f(*arg;)390 1171 y({)468 1258 y(too_dangerous)j
-(\("delete"\);)468 1345 y(return)e(\(1\);)390 1432 y(})390
-1606 y(/*)f(Print)g(out)g(help)g(for)g(ARG,)g(or)g(for)g(all)g(of)f
-(the)h(commands)h(if)f(ARG)g(is)508 1694 y(not)g(present.)h(*/)390
-1781 y(com_help)g(\(arg\))586 1868 y(char)f(*arg;)390
-1955 y({)468 2042 y(register)h(int)f(i;)468 2130 y(int)g(printed)h(=)f
-(0;)468 2304 y(for)g(\(i)g(=)f(0;)h(commands[i].name;)j(i++\))547
-2391 y({)625 2478 y(if)d(\(!*arg)h(||)e(\(strcmp)i(\(arg,)g
-(commands[i].name\))i(==)c(0\)\))704 2565 y({)782 2653
-y(printf)i(\("\045s\\t\\t\045s.\\n",)i(commands[i].name,)g
-(commands[i].doc\);)782 2740 y(printed++;)704 2827 y(})547
-2914 y(})468 3088 y(if)d(\(!printed\))547 3176 y({)625
-3263 y(printf)h(\("No)f(commands)h(match)g(`\045s'.)79
-b(Possibilities)42 b(are:\\n",)f(arg\);)625 3437 y(for)f(\(i)g(=)f(0;)h
-(commands[i].name;)j(i++\))704 3524 y({)782 3611 y(/*)d(Print)g(in)g
-(six)g(columns.)h(*/)782 3699 y(if)f(\(printed)h(==)f(6\))861
-3786 y({)939 3873 y(printed)h(=)e(0;)939 3960 y(printf)i(\("\\n"\);)861
-4047 y(})782 4222 y(printf)g(\("\045s\\t",)g(commands[i].name\);)782
-4309 y(printed++;)704 4396 y(})625 4570 y(if)f(\(printed\))704
-4658 y(printf)g(\("\\n"\);)547 4745 y(})468 4832 y(return)h(\(0\);)390
-4919 y(})390 5093 y(/*)f(Change)g(to)g(the)g(directory)h(ARG.)f(*/)390
-5181 y(com_cd)h(\(arg\))586 5268 y(char)f(*arg;)p eop
-end
 %%Page: 68 72
 TeXDict begin 68 71 bop 150 -116 a Ft(Chapter)30 b(2:)41
-b(Programming)30 b(with)g(GNU)h(Readline)1683 b(68)390
-299 y Fe({)468 386 y(if)40 b(\(chdir)h(\(arg\))f(==)g(-1\))547
-473 y({)625 560 y(perror)h(\(arg\);)625 648 y(return)g(1;)547
-735 y(})468 909 y(com_pwd)g(\(""\);)468 996 y(return)g(\(0\);)390
-1083 y(})390 1258 y(/*)f(Print)g(out)g(the)g(current)h(working)g
-(directory.)g(*/)390 1345 y(com_pwd)g(\(ignore\))586
-1432 y(char)f(*ignore;)390 1519 y({)468 1606 y(char)h(dir[1024],)g(*s;)
-468 1781 y(s)f(=)f(getcwd)i(\(dir,)f(sizeof\(dir\))i(-)e(1\);)468
-1868 y(if)g(\(s)g(==)f(0\))547 1955 y({)625 2042 y(printf)i(\("Error)g
-(getting)g(pwd:)f(\045s\\n",)g(dir\);)625 2130 y(return)h(1;)547
-2217 y(})468 2391 y(printf)g(\("Current)g(directory)h(is)d(\045s\\n",)i
-(dir\);)468 2478 y(return)g(0;)390 2565 y(})390 2740
-y(/*)f(The)g(user)g(wishes)g(to)g(quit)g(using)h(this)f(program.)80
-b(Just)40 b(set)g(DONE)g(non-zero.)h(*/)390 2827 y(com_quit)g(\(arg\))
-586 2914 y(char)f(*arg;)390 3001 y({)468 3088 y(done)h(=)e(1;)468
-3176 y(return)i(\(0\);)390 3263 y(})390 3437 y(/*)f(Function)h(which)f
-(tells)g(you)g(that)h(you)e(can't)i(do)e(this.)i(*/)390
-3524 y(too_dangerous)h(\(caller\))586 3611 y(char)e(*caller;)390
-3699 y({)468 3786 y(fprintf)h(\(stderr,)821 3873 y("\045s:)g(Too)f
-(dangerous)h(for)f(me)f(to)h(distribute.)81 b(Write)40
-b(it)g(yourself.\\n",)821 3960 y(caller\);)390 4047 y(})390
-4222 y(/*)g(Return)g(non-zero)h(if)f(ARG)g(is)g(a)f(valid)h(argument)h
-(for)f(CALLER,)h(else)f(print)508 4309 y(an)f(error)i(message)g(and)e
-(return)i(zero.)f(*/)390 4396 y(int)390 4483 y(valid_argument)i
-(\(caller,)f(arg\))586 4570 y(char)f(*caller,)h(*arg;)390
-4658 y({)468 4745 y(if)f(\(!arg)g(||)g(!*arg\))547 4832
-y({)625 4919 y(fprintf)h(\(stderr,)g("\045s:)f(Argument)h
-(required.\\n",)i(caller\);)625 5006 y(return)e(\(0\);)547
-5093 y(})468 5268 y(return)g(\(1\);)p eop end
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(68)468
+386 y Fe(for)40 b(\(i)g(=)f(0;)h(commands[i].name;)j(i++\))547
+473 y(if)d(\(strcmp)g(\(name,)h(commands[i].name\))i(==)d(0\))625
+560 y(return)h(\(&commands[i]\);)468 735 y(return)g(\(\(COMMAND)g
+(*\)NULL\);)390 822 y(})390 996 y(/*)f(Strip)g(whitespace)i(from)e(the)
+g(start)g(and)g(end)g(of)f(STRING.)81 b(Return)40 b(a)g(pointer)508
+1083 y(into)g(STRING.)h(*/)390 1171 y(char)f(*)390 1258
+y(stripwhite)h(\(char)g(*string\))390 1345 y({)468 1432
+y(register)g(char)g(*s,)f(*t;)468 1606 y(for)g(\(s)g(=)f(string;)i
+(whitespace)h(\(*s\);)e(s++\))547 1694 y(;)468 1868 y(if)g(\(*s)g(==)g
+(0\))547 1955 y(return)g(\(s\);)468 2130 y(t)g(=)f(s)h(+)f(strlen)i
+(\(s\))f(-)f(1;)468 2217 y(while)i(\(t)e(>)h(s)f(&&)h(whitespace)i
+(\(*t\)\))547 2304 y(t--;)468 2391 y(*++t)f(=)e('\\0';)468
+2565 y(return)i(s;)390 2653 y(})390 2827 y(/*)f
+(******************************)q(*****)q(****)q(*****)q(****)q(****)q
+(*****)q(****)q(***)45 b(*/)390 2914 y(/*)2589 b(*/)390
+3001 y(/*)707 b(Interface)41 b(to)f(Readline)h(Completion)629
+b(*/)390 3088 y(/*)2589 b(*/)390 3176 y(/*)40 b
+(******************************)q(*****)q(****)q(*****)q(****)q(****)q
+(*****)q(****)q(***)45 b(*/)390 3350 y(char)40 b(*command_generator)j
+(\(const)e(char)f(*,)g(int\);)390 3437 y(char)g(**fileman_completion)k
+(\(const)d(char)f(*,)f(int,)h(int\);)390 3611 y(/*)g(Tell)g(the)g(GNU)g
+(Readline)h(library)g(how)e(to)h(complete.)81 b(We)39
+b(want)h(to)g(try)g(to)g(complete)508 3699 y(on)f(command)i(names)g(if)
+e(this)h(is)g(the)g(first)g(word)g(in)g(the)g(line,)g(or)g(on)g
+(filenames)508 3786 y(if)f(not.)h(*/)390 3873 y(void)390
+3960 y(initialize_readline)k(\(void\))390 4047 y({)468
+4134 y(/*)c(Allow)g(conditional)i(parsing)f(of)f(the)g(~/.inputrc)h
+(file.)g(*/)468 4222 y(rl_readline_name)i(=)d("FileMan";)468
+4396 y(/*)g(Tell)g(the)g(completer)h(that)g(we)e(want)h(a)g(crack)g
+(first.)h(*/)468 4483 y(rl_attempted_completion_fun)q(ctio)q(n)k(=)39
+b(fileman_completion;)390 4570 y(})390 4745 y(/*)h(Attempt)g(to)g
+(complete)h(on)f(the)g(contents)h(of)f(TEXT.)79 b(START)41
+b(and)e(END)h(bound)h(the)508 4832 y(region)f(of)g(rl_line_buffer)i
+(that)f(contains)g(the)e(word)i(to)e(complete.)81 b(TEXT)40
+b(is)508 4919 y(the)g(word)g(to)f(complete.)81 b(We)40
+b(can)g(use)f(the)h(entire)h(contents)g(of)f(rl_line_buffer)508
+5006 y(in)f(case)h(we)g(want)g(to)g(do)g(some)g(simple)g(parsing.)81
+b(Return)40 b(the)g(array)h(of)e(matches,)508 5093 y(or)g(NULL)h(if)g
+(there)h(aren't)f(any.)g(*/)390 5181 y(char)g(**)390
+5268 y(fileman_completion)j(\(const)e(char)f(*text,)h(int)f(start,)g
+(int)g(end\))p eop end
 %%Page: 69 73
 TeXDict begin 69 72 bop 150 -116 a Ft(Chapter)30 b(2:)41
 b(Programming)30 b(with)g(GNU)h(Readline)1683 b(69)390
-299 y Fe(})p eop end
+299 y Fe({)468 386 y(char)41 b(**matches;)468 560 y(matches)g(=)f
+(\(char)g(**\)NULL;)468 735 y(/*)g(If)g(this)g(word)g(is)g(at)f(the)h
+(start)h(of)e(the)h(line,)h(then)f(it)g(is)f(a)h(command)586
+822 y(to)g(complete.)80 b(Otherwise)42 b(it)d(is)h(the)g(name)g(of)g(a)
+f(file)h(in)g(the)g(current)586 909 y(directory.)i(*/)468
+996 y(if)e(\(start)h(==)e(0\))547 1083 y(matches)i(=)e
+(rl_completion_matches)44 b(\(text,)d(command_generator\);)468
+1258 y(return)g(\(matches\);)390 1345 y(})390 1519 y(/*)f(Generator)h
+(function)g(for)f(command)h(completion.)81 b(STATE)40
+b(lets)g(us)g(know)g(whether)508 1606 y(to)f(start)i(from)f(scratch;)h
+(without)g(any)f(state)g(\(i.e.)g(STATE)h(==)e(0\),)h(then)g(we)508
+1694 y(start)g(at)g(the)g(top)g(of)f(the)h(list.)h(*/)390
+1781 y(char)f(*)390 1868 y(command_generator)j(\(const)e(char)f(*text,)
+g(int)g(state\))390 1955 y({)468 2042 y(static)h(int)f(list_index,)i
+(len;)468 2130 y(char)f(*name;)468 2304 y(/*)f(If)g(this)g(is)g(a)f
+(new)h(word)g(to)g(complete,)h(initialize)h(now.)79 b(This)40
+b(includes)586 2391 y(saving)h(the)f(length)g(of)g(TEXT)g(for)g
+(efficiency,)i(and)e(initializing)i(the)d(index)586 2478
+y(variable)i(to)f(0.)g(*/)468 2565 y(if)g(\(!state\))547
+2653 y({)625 2740 y(list_index)i(=)d(0;)625 2827 y(len)h(=)g(strlen)g
+(\(text\);)547 2914 y(})468 3088 y(/*)g(Return)h(the)f(next)g(name)g
+(which)g(partially)i(matches)e(from)h(the)e(command)i(list.)g(*/)468
+3176 y(while)g(\(name)f(=)g(commands[list_index].name\))547
+3263 y({)625 3350 y(list_index++;)625 3524 y(if)g(\(strncmp)h(\(name,)g
+(text,)f(len\))g(==)g(0\))704 3611 y(return)g(\(dupstr\(name\)\);)547
+3699 y(})468 3873 y(/*)g(If)g(no)f(names)i(matched,)g(then)f(return)h
+(NULL.)f(*/)468 3960 y(return)h(\(\(char)g(*\)NULL\);)390
+4047 y(})390 4222 y(/*)f(******************************)q(*****)q(****)
+q(*****)q(****)q(****)q(*****)q(****)q(***)45 b(*/)390
+4309 y(/*)2589 b(*/)390 4396 y(/*)903 b(FileMan)41 b(Commands)1060
+b(*/)390 4483 y(/*)2589 b(*/)390 4570 y(/*)40 b
+(******************************)q(*****)q(****)q(*****)q(****)q(****)q
+(*****)q(****)q(***)45 b(*/)390 4745 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 4832 y(commands.)h(*/)390 4919 y(static)g(char)f
+(syscom[1024];)390 5093 y(/*)g(List)g(the)g(file\(s\))h(named)f(in)g
+(arg.)g(*/)390 5181 y(int)390 5268 y(com_list)h(\(char)f(*arg\))p
+eop end
 %%Page: 70 74
-TeXDict begin 70 73 bop 3659 -116 a Ft(70)150 299 y Fp(App)t(endix)52
+TeXDict begin 70 73 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(70)390
+299 y Fe({)468 386 y(if)40 b(\(!arg\))547 473 y(arg)g(=)f("";)468
+648 y(snprintf)i(\(syscom,)h(sizeof)e(\(syscom\),)h("ls)f(-FClg)h
+(\045s",)f(arg\);)468 735 y(return)h(\(system)g(\(syscom\)\);)390
+822 y(})390 996 y(int)390 1083 y(com_view)g(\(char)f(*arg\))390
+1171 y({)468 1258 y(if)g(\(!valid_argument)j(\("view",)e(arg\)\))547
+1345 y(return)f(1;)390 1519 y(#if)g(defined)h(\(__MSDOS__\))468
+1606 y(/*)f(more.com)h(doesn't)g(grok)f(slashes)h(in)f(pathnames)h(*/)
+468 1694 y(snprintf)g(\(syscom,)h(sizeof)e(\(syscom\),)h("less)g
+(\045s",)f(arg\);)390 1781 y(#else)468 1868 y(snprintf)h(\(syscom,)h
+(sizeof)e(\(syscom\),)h("more)g(\045s",)f(arg\);)390
+1955 y(#endif)468 2042 y(return)h(\(system)g(\(syscom\)\);)390
+2130 y(})390 2304 y(int)390 2391 y(com_rename)g(\(char)g(*arg\))390
+2478 y({)468 2565 y(too_dangerous)i(\("rename"\);)468
+2653 y(return)e(\(1\);)390 2740 y(})390 2914 y(int)390
+3001 y(com_stat)g(\(char)f(*arg\))390 3088 y({)468 3176
+y(struct)h(stat)f(finfo;)468 3350 y(if)g(\(!valid_argument)j(\("stat",)
+e(arg\)\))547 3437 y(return)f(\(1\);)468 3611 y(if)g(\(stat)g(\(arg,)h
+(&finfo\))g(==)e(-1\))547 3699 y({)625 3786 y(perror)i(\(arg\);)625
+3873 y(return)g(\(1\);)547 3960 y(})468 4134 y(printf)g(\("Statistics)h
+(for)e(`\045s':\\n",)h(arg\);)468 4309 y(printf)g(\("\045s)f(has)g
+(\045d)g(link\045s,)h(and)f(is)f(\045d)h(byte\045s)g(in)g(length.\\n",)
+468 4396 y(arg,)782 4483 y(finfo.st_nlink,)782 4570 y(\(finfo.st_nlink)
+j(==)d(1\))f(?)h("")f(:)h("s",)782 4658 y(finfo.st_size,)782
+4745 y(\(finfo.st_size)j(==)c(1\))h(?)g("")f(:)h("s"\);)468
+4832 y(printf)h(\("Inode)g(Last)f(Change)h(at:)f(\045s",)g(ctime)g
+(\(&finfo.st_ctime\)\);)468 4919 y(printf)h(\(")236 b(Last)40
+b(access)h(at:)f(\045s",)g(ctime)g(\(&finfo.st_atime\)\);)468
+5006 y(printf)h(\(")157 b(Last)41 b(modified)g(at:)f(\045s",)g(ctime)g
+(\(&finfo.st_mtime\)\);)468 5093 y(return)h(\(0\);)390
+5181 y(})p eop end
+%%Page: 71 75
+TeXDict begin 71 74 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(71)390
+299 y Fe(int)390 386 y(com_delete)41 b(\(char)g(*arg\))390
+473 y({)468 560 y(too_dangerous)i(\("delete"\);)468 648
+y(return)e(\(1\);)390 735 y(})390 909 y(/*)f(Print)g(out)g(help)g(for)g
+(ARG,)g(or)g(for)g(all)g(of)f(the)h(commands)h(if)f(ARG)g(is)508
+996 y(not)g(present.)h(*/)390 1083 y(int)390 1171 y(com_help)g(\(char)f
+(*arg\))390 1258 y({)468 1345 y(register)h(int)f(i;)468
+1432 y(int)g(printed)h(=)f(0;)468 1606 y(for)g(\(i)g(=)f(0;)h
+(commands[i].name;)j(i++\))547 1694 y({)625 1781 y(if)d(\(!*arg)h(||)e
+(\(strcmp)i(\(arg,)g(commands[i].name\))i(==)c(0\)\))704
+1868 y({)782 1955 y(printf)i(\("\045s\\t\\t\045s.\\n",)i
+(commands[i].name,)g(commands[i].doc\);)782 2042 y(printed++;)704
+2130 y(})547 2217 y(})468 2391 y(if)d(\(!printed\))547
+2478 y({)625 2565 y(printf)h(\("No)f(commands)h(match)g(`\045s'.)79
+b(Possibilities)42 b(are:\\n",)f(arg\);)625 2740 y(for)f(\(i)g(=)f(0;)h
+(commands[i].name;)j(i++\))704 2827 y({)782 2914 y(/*)d(Print)g(in)g
+(six)g(columns.)h(*/)782 3001 y(if)f(\(printed)h(==)f(6\))861
+3088 y({)939 3176 y(printed)h(=)e(0;)939 3263 y(printf)i(\("\\n"\);)861
+3350 y(})782 3524 y(printf)g(\("\045s\\t",)g(commands[i].name\);)782
+3611 y(printed++;)704 3699 y(})625 3873 y(if)f(\(printed\))704
+3960 y(printf)g(\("\\n"\);)547 4047 y(})468 4134 y(return)h(\(0\);)390
+4222 y(})390 4396 y(/*)f(Change)g(to)g(the)g(directory)h(ARG.)f(*/)390
+4483 y(int)390 4570 y(com_cd)h(\(char)f(*arg\))390 4658
+y({)468 4745 y(if)g(\(chdir)h(\(arg\))f(==)g(-1\))547
+4832 y({)625 4919 y(perror)h(\(arg\);)625 5006 y(return)g(1;)547
+5093 y(})468 5268 y(com_pwd)g(\(""\);)p eop end
+%%Page: 72 76
+TeXDict begin 72 75 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(72)468
+299 y Fe(return)41 b(\(0\);)390 386 y(})390 560 y(/*)f(Print)g(out)g
+(the)g(current)h(working)g(directory.)g(*/)390 648 y(int)390
+735 y(com_pwd)g(\(char)f(*ignore\))390 822 y({)468 909
+y(char)h(dir[1024],)g(*s;)468 1083 y(s)f(=)f(getcwd)i(\(dir,)f
+(sizeof\(dir\))i(-)e(1\);)468 1171 y(if)g(\(s)g(==)f(0\))547
+1258 y({)625 1345 y(printf)i(\("Error)g(getting)g(pwd:)f(\045s\\n",)g
+(dir\);)625 1432 y(return)h(1;)547 1519 y(})468 1694
+y(printf)g(\("Current)g(directory)h(is)d(\045s\\n",)i(dir\);)468
+1781 y(return)g(0;)390 1868 y(})390 2042 y(/*)f(The)g(user)g(wishes)g
+(to)g(quit)g(using)h(this)f(program.)80 b(Just)40 b(set)g(DONE)g
+(non-zero.)h(*/)390 2130 y(int)390 2217 y(com_quit)g(\(char)f(*arg\))
+390 2304 y({)468 2391 y(done)h(=)e(1;)468 2478 y(return)i(\(0\);)390
+2565 y(})390 2740 y(/*)f(Function)h(which)f(tells)g(you)g(that)h(you)e
+(can't)i(do)e(this.)i(*/)390 2827 y(void)390 2914 y(too_dangerous)h
+(\(char)f(*caller\))390 3001 y({)468 3088 y(fprintf)g(\(stderr,)821
+3176 y("\045s:)g(Too)f(dangerous)h(for)f(me)f(to)h(distribute.)81
+b(Write)40 b(it)g(yourself.\\n",)821 3263 y(caller\);)390
+3350 y(})390 3524 y(/*)g(Return)g(non-zero)h(if)f(ARG)g(is)g(a)f(valid)
+h(argument)h(for)f(CALLER,)h(else)f(print)508 3611 y(an)f(error)i
+(message)g(and)e(return)i(zero.)f(*/)390 3699 y(int)390
+3786 y(valid_argument)i(\(char)f(*caller,)g(char)f(*arg\))390
+3873 y({)468 3960 y(if)g(\(!arg)g(||)g(!*arg\))547 4047
+y({)625 4134 y(fprintf)h(\(stderr,)g("\045s:)f(Argument)h
+(required.\\n",)i(caller\);)625 4222 y(return)e(\(0\);)547
+4309 y(})468 4483 y(return)g(\(1\);)390 4570 y(})p eop
+end
+%%Page: 73 77
+TeXDict begin 73 76 bop 3659 -116 a Ft(73)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
@@ -11333,7 +11634,7 @@ y Fs(http://fsf.org/)390 964 y Ft(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
 (is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330
 1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g
 (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
-1450 y(useful)29 b(do)s(cumen)m(t)h Fj(free)36 b Ft(in)29
+1450 y(useful)29 b(do)s(cumen)m(t)h Fk(free)36 b Ft(in)29
 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
 (the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f
 (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
@@ -11402,10 +11703,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: 71 75
-TeXDict begin 71 74 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 74 78
+TeXDict begin 74 77 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)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(74)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
@@ -11496,10 +11797,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: 72 76
-TeXDict begin 72 75 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 75 79
+TeXDict begin 75 78 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)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+b(75)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
@@ -11589,10 +11890,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: 73 77
-TeXDict begin 73 76 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 76 80
+TeXDict begin 76 79 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(73)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+b(76)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
@@ -11671,10 +11972,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: 74 78
-TeXDict begin 74 77 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 77 81
+TeXDict begin 77 80 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(74)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(77)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
@@ -11759,10 +12060,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: 75 79
-TeXDict begin 75 78 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 78 82
+TeXDict begin 78 81 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(75)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+b(78)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
@@ -11847,10 +12148,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: 76 80
-TeXDict begin 76 79 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 79 83
+TeXDict begin 79 82 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(76)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
+b(79)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
@@ -11914,10 +12215,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: 77 81
-TeXDict begin 77 80 bop 150 -116 a Ft(App)s(endix)29
+%%Page: 80 84
+TeXDict begin 80 83 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(77)150 299 y Fr(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+b(80)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
@@ -11952,17 +12253,17 @@ 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: 78 82
-TeXDict begin 78 81 bop 150 -116 a Ft(Concept)31 b(Index)2927
-b(78)150 100 y Fp(Concept)52 b(Index)146 434 y Fr(A)150
+%%Page: 81 85
+TeXDict begin 81 84 bop 150 -116 a Ft(Concept)31 b(Index)2927
+b(81)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(53)146 796 y
+Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(56)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
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(2)146 1159
 y Fr(E)150 1275 y Fb(editing)26 b(command)g(lines)c 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(:)36 b Fb(1)146 1522 y Fr(I)150
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(2)146 1522 y Fr(I)150
 1638 y Fb(initialization)28 b(\014le,)e(readline)c Fa(:)13
 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)g(:)h(:)f(:)g(:)36 b Fb(4)150 1726 y(in)n(teraction,)27
@@ -11971,68 +12272,68 @@ b(readline)12 b Fa(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
 b Fb(1)146 1972 y Fr(K)150 2088 y Fb(kill)g(ring)12 b
 Fa(:)h(:)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(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(2)150 2176 y(killing)g(text)11
+g(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(3)150 2176 y(killing)g(text)11
 b Fa(:)h(:)h(:)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(:)g
-(:)g(:)g(:)g(:)26 b Fb(2)2021 434 y Fr(N)2025 566 y Fb(notation,)g
+(:)g(:)g(:)g(:)26 b Fb(3)2021 434 y Fr(N)2025 566 y Fb(notation,)g
 (readline)17 b Fa(:)d(:)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(:)h(:)f(:)g(:)g(:)
-32 b Fb(1)2021 970 y Fr(R)2025 1102 y Fb(readline,)26
+32 b Fb(2)2021 970 y Fr(R)2025 1102 y Fb(readline,)26
 b(function)18 b Fa(:)c(:)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(:)33
-b Fb(26)2021 1507 y Fr(V)2025 1639 y Fb(v)l(ariables,)27
+b Fb(28)2021 1507 y Fr(V)2025 1639 y Fb(v)l(ariables,)27
 b(readline)11 b Fa(:)j(:)f(:)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(:)
-26 b Fb(4)2021 2043 y Fr(Y)2025 2176 y Fb(y)n(anking)f(text)17
+26 b Fb(5)2021 2043 y Fr(Y)2025 2176 y Fb(y)n(anking)f(text)17
 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: 79 83
-TeXDict begin 79 82 bop 3659 -116 a Ft(79)150 299 y Fp(F)-13
+f(:)g(:)32 b Fb(3)p eop end
+%%Page: 82 86
+TeXDict begin 82 85 bop 3659 -116 a Ft(82)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 860 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(44)150
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(47)150
 948 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(44)150 1036 y Fe(_rl_lowercase_p)17
+(:)g(:)g(:)32 b Fb(47)150 1036 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(44)150 1125 y Fe(_rl_to_lower)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)
+b Fb(47)150 1125 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(44)150
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(47)150
 1213 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(44)150 1300 y Fe(_rl_uppercase_p)17
+(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(47)150 1300 y Fe(_rl_uppercase_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(44)146 1569 y Fr(A)150 1689 y Fe(abort)27 b(\(C-g\))17
+b Fb(47)146 1569 y Fr(A)150 1689 y Fe(abort)27 b(\(C-g\))17
 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(23)150 1777 y Fe(accept-line)d(\(Newline)g(or)e(Return\))14
+(:)31 b Fb(25)150 1777 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(18)150 1866 y(activ)n(e-region-end-color)20 b Fa(:)13
+b Fb(19)150 1866 y(activ)n(e-region-end-color)20 b Fa(:)13
 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
 (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 b Fb(5)150 1953 y(activ)n
 (e-region-start-color)17 b Fa(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)31
 b Fb(5)146 2220 y Fr(B)150 2339 y Fe(backward-char)e(\(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(17)150 2428
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(18)150 2428
 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(20)150 2516
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(21)150 2516
 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(21)150 2604 y Fe(backward-kill-word)30 b(\(M-DEL\))13
+Fb(22)150 2604 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(21)150 2693 y Fe(backward-word)i(\(M-b\))14
+h(:)27 b Fb(22)150 2693 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(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(17)150 2781
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28 b Fb(18)150 2781
 y Fe(beginning-of-history)i(\(M-<\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(18)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(19)150
 2869 y Fe(beginning-of-line)i(\(C-a\))22 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(17)150 2958 y(b)r(ell-st)n(yle)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
+b Fb(18)150 2958 y(b)r(ell-st)n(yle)9 b Fa(:)14 b(:)f(:)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(:)h(:)f(:)24
 b Fb(5)150 3046 y(bind-tt)n(y-sp)r(ecial-c)n(hars)c Fa(:)13
@@ -12040,25 +12341,25 @@ b(:)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(:)36 b Fb(5)150 3134
 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 3222 y Fe(bracketed-paste-begin)30
+g(:)21 b Fb(6)150 3222 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(20)146 3491 y Fr(C)150
+(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(21)146 3491 y Fr(C)150
 3610 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(23)150
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(25)150
 3699 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(21)150 3787 y Fe(character-search)29 b(\(C-]\))6
+23 b Fb(22)150 3787 y Fe(character-search)29 b(\(C-]\))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(24)150 3875 y Fe
+(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(26)150 3875 y Fe
 (character-search-backward)31 b(\(M-C-]\))12 b Fa(:)j(:)e(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)27 b Fb(24)150 3964 y Fe(clear-display)i(\(M-C-l\))9
+(:)g(:)g(:)g(:)g(:)27 b Fb(26)150 3964 y Fe(clear-display)i(\(M-C-l\))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(17)150 4052 y
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(19)150 4052 y
 Fe(clear-screen)28 b(\(C-l\))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(18)150 4140 y(colored-completion-pre\014x)9
+(:)31 b Fb(19)150 4140 y(colored-completion-pre\014x)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(:)24 b Fb(5)150 4229 y(colored-stats)17
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24 b Fb(6)150 4229 y(colored-stats)17
 b Fa(:)d(:)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(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
 (:)h(:)31 b Fb(6)150 4317 y(commen)n(t-b)r(egin)6 b Fa(:)14
@@ -12066,7 +12367,7 @@ b(:)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(:)21
 b Fb(6)150 4405 y Fe(complete)27 b(\(TAB\))10 b Fa(:)k(:)f(:)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(22)150 4494
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(24)150 4494
 y(completion-displa)n(y-width)10 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)25
 b Fb(6)150 4582 y(completion-ignore-case)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)
@@ -12081,575 +12382,588 @@ h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
 (:)g(:)g(:)21 b Fb(6)150 4936 y(con)n(v)n(ert-meta)9
 b Fa(:)k(:)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(:)24 b Fb(6)150 5024 y Fe(copy-backward-word)30
+(:)h(:)24 b Fb(7)150 5024 y Fe(copy-backward-word)30
 b(\(\))9 b Fa(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(22)150
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)23 b Fb(23)150
 5112 y Fe(copy-forward-word)29 b(\(\))11 b Fa(:)j(:)f(:)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(22)150 5199 y Fe(copy-region-as-kill)k(\(\))6
+g(:)26 b Fb(23)150 5199 y Fe(copy-region-as-kill)k(\(\))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(:)g(:)21 b Fb(22)2021 817 y Fr(D)2025
-933 y Fe(delete-char)28 b(\(C-d\))20 b Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
+(:)g(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(23)2021 817 y Fr(D)2025
+937 y Fe(delete-char)28 b(\(C-d\))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(20)2025 1020 y Fe(delete-char-or-list)c(\(\))6
+(:)g(:)g(:)g(:)34 b Fb(21)2025 1025 y Fe(delete-char-or-list)c(\(\))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(23)2025 1108 y Fe
+(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(25)2025 1114 y Fe
 (delete-horizontal-space)31 b(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(22)2025
-1195 y Fe(digit-argument)h(\()p Fc(M-0)p Fe(,)d Fc(M-1)p
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(23)2025
+1202 y Fe(digit-argument)h(\()p Fc(M-0)p Fe(,)d Fc(M-1)p
 Fe(,)h(...)f Fc(M--)p Fe(\))13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)28 b Fb(22)2025 1282 y(disable-completion)20 b Fa(:)13
+(:)28 b Fb(23)2025 1291 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(7)2025
-1370 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(23)2025 1457
+1380 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(25)2025 1468
 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
-b Fb(20)2025 1544 y Fe(dump-functions)h(\(\))19 b Fa(:)13
+b Fb(22)2025 1557 y Fe(dump-functions)h(\(\))19 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(24)2025
-1631 y Fe(dump-macros)28 b(\(\))10 b Fa(:)j(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(26)2025
+1645 y Fe(dump-macros)28 b(\(\))10 b Fa(:)j(:)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(:)24 b Fb(25)2025 1719 y Fe(dump-variables)29
+g(:)g(:)h(:)f(:)g(:)g(:)24 b Fb(26)2025 1732 y Fe(dump-variables)29
 b(\(\))19 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(25)2021 1965 y Fr(E)2025 2081 y Fb(ec)n(ho-con)n(trol-c)n
+b Fb(26)2021 2005 y Fr(E)2025 2125 y Fb(ec)n(ho-con)n(trol-c)n
 (haracters)13 b Fa(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
 (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)29
-b Fb(7)2025 2169 y(editing-mo)r(de)10 b Fa(:)j(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(7)2025 2214 y(editing-mo)r(de)10 b Fa(:)j(:)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(:)g(:)25 b Fb(7)2025
-2256 y Fe(emacs-editing-mode)k(\(C-e\))18 b Fa(:)d(:)e(:)g(:)g(:)g(:)h
+2302 y Fe(emacs-editing-mode)k(\(C-e\))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(25)2025 2343 y(emacs-mo)r(de-string)18 b Fa(:)c(:)f(:)g(:)g(:)g(:)
+b Fb(26)2025 2391 y(emacs-mo)r(de-string)18 b Fa(:)c(:)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(:)33 b Fb(7)2025 2431 y(enable-activ)n
-(e-region)15 b Fa(:)f(:)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(:)30
-b Fb(7)2025 2518 y(enable-brac)n(k)n(eted-paste)18 b
+(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(7)2025 2479 y(enable-activ)n
+(e-region)26 b(The)c 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(:)36
+b Fb(7)2025 2568 y(enable-brac)n(k)n(eted-paste)18 b
 Fa(:)12 b(:)h(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)33 b Fb(7)2025
-2605 y(enable-k)n(eypad)7 b Fa(:)12 b(:)h(:)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(:)g(:)g(:)23 b Fb(7)2025 2692 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(23)2025 2780 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(19)2025 2867 y Fe(end-of-history)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(18)2025
-2954 y Fe(end-of-line)i(\(C-e\))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(17)2025 3042 y Fe(exchange-point-and-mark)d(\(C-x)
-26 b(C-x\))20 b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(24)2025 3129 y(expand-tilde)19 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(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(8)2021
-3373 y Fr(F)2025 3490 y Fe(fetch-history)28 b(\(\))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(:)36
-b Fb(19)2025 3577 y Fe(forward-backward-delete-char)c(\(\))17
-b Fa(:)d(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32
-b Fb(20)2025 3664 y Fe(forward-char)c(\(C-f\))16 b Fa(:)f(:)e(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)33 b Fb(8)2025
+2656 y(enable-k)n(eypad)7 b Fa(:)12 b(:)h(:)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(:)31 b Fb(17)2025 3751 y Fe(forward-search-history)f
-(\(C-s\))8 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)23 b Fb(18)2025 3839 y Fe(forward-word)28
-b(\(M-f\))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(17)2021 4075 y Fr(H)2025 4191 y Fb(history-preserv)n(e-p)r(oin)n
-(t)15 b Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30 b Fb(8)2025
-4278 y Fe(history-search-backward)h(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(8)2025 2745 y(enable-meta-k)n
+(ey)7 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(:)g(:)g(:)g(:)g(:)
+g(:)23 b Fb(8)2025 2833 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(25)2025 2922 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(21)2025 3010
+y Fe(end-of-history)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(19)2025 3099 y Fe(end-of-line)i(\(C-e\))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(18)2025
+3187 y Fe(exchange-point-and-mark)d(\(C-x)26 b(C-x\))20
+b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(25)2025
+3276 y Fe(execute-named-command)c(\(M-x\))11 b Fa(:)j(:)f(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25 b Fb(26)2025
+3364 y(expand-tilde)19 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(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35 b Fb(8)2025 3452 y
+Fe(export-completions)29 b(\(\))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(24)2021 3724 y Fr(F)2025 3844 y Fe(fetch-history)28
+b(\(\))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(:)36
+b Fb(21)2025 3933 y(force-meta-pre\014x)13 b Fa(:)f(:)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(:)28 b Fb(8)2025 4021 y
+Fe(forward-backward-delete-char)k(\(\))17 b Fa(:)d(:)f(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)32 b Fb(21)2025 4110 y Fe(forward-char)c
+(\(C-f\))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 4198 y Fe(forward-search-history)f(\(C-s\))8
+b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+23 b Fb(19)2025 4286 y Fe(forward-word)28 b(\(M-f\))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)2021
+4548 y Fr(H)2025 4668 y Fb(history-preserv)n(e-p)r(oin)n(t)15
+b Fa(:)d(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)30 b Fb(8)2025
+4757 y Fe(history-search-backward)h(\(\))13 b Fa(:)g(:)g(:)h(:)f(:)g(:)
 g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b
-Fb(18)2025 4366 y Fe(history-search-forward)i(\(\))16
+Fb(20)2025 4845 y Fe(history-search-forward)i(\(\))16
 b Fa(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)30 b Fb(18)2025 4453 y(history-size)22 b Fa(:)13
+f(:)g(:)30 b Fb(20)2025 4934 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(8)2025 4540 y Fe(history-substring-search-backw)q(ard)32
-b(\(\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)36 b Fb(19)2025
-4628 y Fe(history-substring-search-forwa)q(rd)c(\(\))7
-b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(19)2025
-4715 y(horizon)n(tal-scroll-mo)r(de)10 b Fa(:)15 b(:)e(:)h(:)f(:)g(:)g
+g(:)37 b Fb(9)2025 5022 y Fe(history-substring-search-backw)q(ard)32
+b(\(\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)36 b Fb(20)2025
+5111 y Fe(history-substring-search-forwa)q(rd)c(\(\))7
+b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(20)2025
+5198 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(8)2021 4950 y Fr(I)2025 5066 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(8)2025 5154 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(24)2025
-5241 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(23)2025 5328 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(8)p
-eop end
-%%Page: 80 84
-TeXDict begin 80 83 bop 150 -116 a Ft(F)-8 b(unction)31
-b(and)f(V)-8 b(ariable)32 b(Index)2370 b(80)146 294 y
-Fr(K)150 423 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 514 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(21)150 605 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(22)150 697 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(21)150 784 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(21)146 1106 y Fr(M)150 1235 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(9)150
-1326 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(9)150 1417 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(9)150 1509 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(23)150
-1600 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(23)150 1692 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(9)150 1779 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(8)146 2109 y Fr(N)150 2238 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(18)150 2329 y Fe(next-screen-line)e(\(\))14 b Fa(:)g(:)f(:)g(:)g
+g(:)g(:)h(:)25 b Fb(9)p eop end
+%%Page: 83 87
+TeXDict begin 83 86 bop 150 -116 a Ft(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(83)146 294 y
+Fr(I)150 414 y Fb(input-meta)9 b Fa(:)j(:)h(:)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(:)h(:)23 b Fb(9)150
+503 y Fe(insert-comment)29 b(\(M-#\))11 b Fa(:)j(:)f(:)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(26)150 592 y Fe(insert-completions)k(\(M-*\))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(24)150 679 y(isearc)n(h-terminators)9
+b Fa(:)15 b(:)e(:)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(:)24
+b Fb(9)146 943 y Fr(K)150 1064 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(9)150 1153 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(22)150 1241 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(23)150 1330
+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(22)150 1417 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(22)146 1683 y Fr(M)150 1804 y Fb(mark-mo)r(di\014ed-lines)15
+b Fa(:)e(:)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(:)29 b Fb(10)150
+1892 y(mark-symlink)n(ed-directories)12 b Fa(:)h(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26
+b Fb(10)150 1981 y(matc)n(h-hidden-\014les)21 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(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(10)150
+2070 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(24)150 2158 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(24)150 2247 y(men)n(u-complete-displa)n
+(y-pre\014x)8 b Fa(:)j(:)i(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(10)150 2334 y(meta-\015ag)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(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)36 b Fb(9)146 2608 y Fr(N)150 2729
+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(19)150 2817 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(18)150 2887
+y Fe(non-incremental-forward-)227 2974 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(19)150 3061 y Fe
+(non-incremental-reverse-)227 3148 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(19)146
+3433 y Fr(O)150 3554 y Fe(operate-and-get-next)30 b(\(C-o\))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 3642 y(output-meta)17 b Fa(:)12 b(:)h(:)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(:)31 b Fb(10)150
+3730 y Fe(overwrite-mode)e(\(\))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(:)g(:)28 b Fb(17)150 2401 y Fe(non-incremental-forward-)227
-2488 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(18)150 2576 y Fe(non-incremental-reverse-)227 2663
-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(18)146 3004 y Fr(O)150 3133 y Fe(operate-and-get-next)30
-b(\(C-o\))13 b Fa(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)27 b Fb(19)150 3224 y(output-meta)18
-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(:)h(:)f(:)
-g(:)g(:)34 b Fb(9)150 3311 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(21)146
-3633 y Fr(P)150 3762 y Fb(page-completions)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)20
-b Fb(10)150 3853 y Fe(possible-completions)30 b(\(M-?\))13
+g(:)h(:)f(:)33 b Fb(22)146 3995 y Fr(P)150 4116 y Fb(page-completions)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(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)20
+b Fb(10)150 4205 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(22)150 3945 y Fe(prefix-meta)h(\(ESC\))20
+h(:)27 b Fb(24)150 4293 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(24)150
-4036 y Fe(previous-history)c(\(C-p\))6 b Fa(:)15 b(:)e(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(25)150
+4382 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(18)150 4128 y Fe(previous-screen-line)30 b(\(\))21
+b Fb(19)150 4471 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(17)150 4215 y Fe(print-last-kbd-macro)30
+(:)h(:)f(:)g(:)g(:)35 b Fb(18)150 4558 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(23)146 4547 y
-Fr(Q)150 4672 y Fe(quoted-insert)29 b(\(C-q)d(or)g(C-v\))10
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(25)146 4834 y
+Fr(Q)150 4953 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(20)2021 294 y Fr(R)2025 410 y Fe(re-read-init-file)29
+g(:)g(:)24 b Fb(21)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(23)2025 498 y Fe(readline)18
+(:)f(:)g(:)g(:)g(:)32 b Fb(25)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(26)2025 585 y Fe(redraw-current-line)d(\(\))6
+(:)g(:)g(:)g(:)33 b Fb(28)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(18)2025 672 y Fe
+(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(19)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(18)2025
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(19)2025
 760 y(rev)n(ert-all-at-newline)8 b Fa(:)14 b(:)f(:)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(:)23 b Fb(10)2025 847 y Fe(revert-line)28 b(\(M-r\))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(24)2025
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(25)2025
 935 y Fe(rl_activate_mark)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(45)2025 1022 y Fe(rl_add_defun)8 b Fa(:)15
+h(:)f(:)29 b Fb(48)2025 1022 y Fe(rl_add_defun)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(35)2025 1109 y Fe(rl_add_funmap_entry)7 b Fa(:)17
+b Fb(37)2025 1109 y Fe(rl_add_funmap_entry)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(39)2025 1197 y
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(41)2025 1197 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(39)2025 1284 y Fe(rl_alphabetic)g
+g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(42)2025 1284 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(44)2025 1371 y Fe(rl_begin_undo_group)7 b Fa(:)17
+b Fb(46)2025 1371 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(39)2025 1459 y
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(42)2025 1459 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(36)2025 1546 y Fe
+g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(39)2025 1546 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(36)2025 1633 y Fe(rl_bind_key_if_unbound_in_map)16
+b Fb(39)2025 1633 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(36)2025 1721 y Fe(rl_bind_key_in_map)10 b Fa(:)17
+b Fb(39)2025 1721 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(36)2025 1808
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(39)2025 1808
 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(37)2025 1896 y Fe(rl_bind_keyseq_if_unbound)9
+h(:)f(:)34 b Fb(39)2025 1896 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(37)2025 1983 y Fe(rl_bind_keyseq_if_unbound_in_m)q
+(:)g(:)h(:)23 b Fb(40)2025 1983 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(37)2025 2070 y Fe(rl_bind_keyseq_in_map)h Fa(:)13
+b Fb(40)2025 2070 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(37)2025 2158 y Fe
+(:)g(:)g(:)g(:)g(:)34 b Fb(39)2025 2158 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(46)2025 2245 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(49)2025 2245 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(46)2025
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(49)2025
 2332 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(46)2025 2420 y Fe(rl_callback_sigcleanup)16 b Fa(:)i(:)13
+b Fb(49)2025 2420 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(46)2025 2507 y Fe(rl_check_signals)15
+(:)g(:)g(:)31 b Fb(49)2025 2507 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(52)2025 2595 y Fe(rl_cleanup_after_signal)14 b Fa(:)k(:)13
+Fb(55)2025 2595 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(52)2025 2682 y Fe(rl_clear_history)15
+(:)h(:)28 b Fb(55)2025 2682 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(45)2025 2769 y Fe(rl_clear_message)15 b Fa(:)h(:)d(:)g(:)h(:)f(:)g
+Fb(48)2025 2769 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(40)2025 2857 y Fe(rl_clear_pending_input)16
+g(:)g(:)g(:)h(:)f(:)29 b Fb(43)2025 2857 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(42)2025 2944 y Fe(rl_clear_signals)15
+(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(45)2025 2944 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(53)2025 3031 y Fe(rl_clear_visible_line)24 b Fa(:)13
+Fb(56)2025 3031 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(40)2025 3119 y Fe(rl_complete)10
+(:)g(:)g(:)g(:)g(:)34 b Fb(43)2025 3119 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(54)2025 3206 y Fe(rl_complete_internal)h
+g(:)25 b Fb(57)2025 3206 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(54)2025 3293 y
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(57)2025 3293 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(55)2025 3381 y Fe(rl_completion_mode)10 b Fa(:)17
+b Fb(58)2025 3381 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(55)2025 3468
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(58)2025 3468
 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(35)2025 3556 y Fe(rl_copy_text)8 b Fa(:)15
+h(:)f(:)34 b Fb(37)2025 3556 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(41)2025 3643 y Fe(rl_crlf)g Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(44)2025 3643 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(40)2025 3730 y Fe(rl_deactivate_mark)10 b Fa(:)17
+b Fb(43)2025 3730 y Fe(rl_deactivate_mark)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(45)2025 3818
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(48)2025 3818
 y Fe(rl_delete_text)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(41)2025 3905 y Fe(rl_deprep_terminal)10
+h(:)f(:)34 b Fb(44)2025 3905 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(43)2025
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(45)2025
 3992 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(44)2025
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(46)2025
 4080 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(35)2025 4167 y Fe(rl_display_match_list)d
+g(:)g(:)27 b Fb(38)2025 4167 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(44)2025 4255 y Fe(rl_do_undo)13
+(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(47)2025 4255 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(39)2025 4342 y Fe(rl_echo_signal_char)7
+(:)h(:)27 b Fb(42)2025 4342 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(52)2025
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(55)2025
 4429 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(35)2025 4517 y Fe(rl_end_undo_group)12
+g(:)g(:)g(:)32 b Fb(38)2025 4517 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(39)2025
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(42)2025
 4604 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(42)2025 4691 y Fe(rl_expand_prompt)15
+g(:)g(:)g(:)32 b Fb(45)2025 4691 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(41)2025 4779 y Fe(rl_extend_line_buffer)24 b Fa(:)13
+Fb(43)2025 4779 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(44)2025 4866 y Fe
+(:)g(:)g(:)g(:)g(:)34 b Fb(46)2025 4866 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(55)2025
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(58)2025
 4954 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(40)2025 5041 y Fe(rl_free)c Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
+(:)26 b Fb(42)2025 5041 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(43)2025 5128 y Fe(rl_free_keymap)23 b Fa(:)13 b(:)g(:)g(:)g(:)g(:)
+b Fb(46)2025 5128 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(35)p eop end
-%%Page: 81 85
-TeXDict begin 81 84 bop 150 -116 a Ft(F)-8 b(unction)31
-b(and)f(V)-8 b(ariable)32 b(Index)2370 b(81)150 260 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34 b Fb(38)p eop end
+%%Page: 84 88
+TeXDict begin 84 87 bop 150 -116 a Ft(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(84)150 260 y
 Fe(rl_free_line_state)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(52)150 348 y Fe(rl_free_undo_list)12 b Fa(:)17 b(:)c(:)g(:)h(:)f
+b Fb(55)150 348 y Fe(rl_free_undo_list)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(39)150 437 y Fe(rl_function_dumper)10
+g(:)g(:)g(:)g(:)h(:)26 b Fb(42)150 437 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(38)150
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(41)150
 525 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(38)150 614 y Fe(rl_function_of_keyseq_len)9 b Fa(:)19
+b Fb(40)150 614 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(38)150 702 y Fe(rl_funmap_names)17 b Fa(:)g(:)c(:)g(:)g(:)g
+g(:)23 b Fb(40)150 702 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(39)150 791 y Fe(rl_generic_bind)17
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(41)150 791 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(37)150 879 y Fe(rl_get_keymap)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+b Fb(40)150 879 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(35)150 968 y
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(38)150 968 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(36)150 1057 y Fe(rl_get_keymap_name)10 b Fa(:)17
+b Fb(38)150 1057 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(36)150 1145
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(38)150 1145
 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(53)150 1234 y Fe(rl_get_termcap)f Fa(:)13 b(:)g(:)g(:)g(:)h(:)f
+24 b Fb(56)150 1234 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(45)150 1322 y Fe(rl_getc)22
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(48)150 1322 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(42)150 1411 y Fe(rl_initialize)25
+h(:)f(:)g(:)g(:)g(:)35 b Fb(45)150 1411 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(44)150 1499 y Fe(rl_insert_completions)24 b Fa(:)13
+b Fb(46)150 1499 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(55)150 1588 y Fe(rl_insert_text)23
+(:)g(:)g(:)h(:)f(:)33 b Fb(57)150 1588 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(41)150 1676 y Fe(rl_invoking_keyseqs)7 b Fa(:)17
+b Fb(44)150 1676 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(38)150 1765 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(41)150 1765 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(38)150
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(41)150
 1853 y Fe(rl_keep_mark_active)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(46)150 1942 y Fe(rl_kill_text)8 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g
+21 b Fb(48)150 1942 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(41)150
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(44)150
 2030 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(38)150 2119 y Fe(rl_macro_bind)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+b Fb(41)150 2119 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(45)150 2207 y
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(47)150 2207 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(45)150 2296 y Fe(rl_make_bare_keymap)7 b
+g(:)32 b Fb(47)150 2296 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(35)150
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(37)150
 2384 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(35)150 2473 y Fe(rl_mark_active_p)15
+(:)f(:)g(:)g(:)34 b Fb(38)150 2473 y Fe(rl_mark_active_p)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(46)150 2561 y Fe(rl_message)13 b Fa(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
+Fb(48)150 2561 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(40)150
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(43)150
 2650 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(40)150 2738 y Fe(rl_named_function)
+(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(42)150 2738 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(38)150 2827 y Fe(rl_on_new_line)d Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)
+b Fb(40)150 2827 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(40)150 2915 y Fe
+(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(43)150 2915 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(40)150
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(43)150
 3004 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(37)150 3092 y Fe(rl_pending_signal)12
+g(:)h(:)26 b Fb(40)150 3092 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(52)150
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(55)150
 3181 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(55)150 3269 y Fe(rl_prep_terminal)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g
+b Fb(57)150 3269 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(43)150 3358 y Fe(rl_push_macro_input)7
+g(:)h(:)f(:)g(:)g(:)29 b Fb(45)150 3358 y Fe(rl_print_keybinding)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(41)150
-3446 y Fe(rl_read_init_file)12 b Fa(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g
+3446 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(44)150 3535 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(40)150
+3623 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(44)150 3712 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(:)h(:)26 b Fb(38)150 3535 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(42)150 3623 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(40)150
-3712 y Fe(rl_replace_line)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+g(:)g(:)h(:)f(:)g(:)22 b Fb(42)150 3801 y Fe(rl_reparse_colors)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
+3889 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(43)150 3801 y Fe(rl_reset_after_signal)24
+g(:)g(:)g(:)32 b Fb(44)150 3978 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(52)150 3889 y Fe
+(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(55)150 4066 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(40)150 3978 y Fe(rl_reset_screen_size)26 b Fa(:)13
+b Fb(43)150 4155 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(53)150 4066 y Fe(rl_reset_terminal)12
+(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(56)150 4243 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(43)150
-4155 y Fe(rl_resize_terminal)10 b Fa(:)17 b(:)c(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(46)150
+4332 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(53)150 4243 y Fe(rl_restore_prompt)12 b Fa(:)17
+g(:)24 b Fb(55)150 4420 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(41)150
-4332 y Fe(rl_restore_state)15 b Fa(:)h(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(43)150
+4509 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(43)150 4420 y Fe(rl_save_prompt)23 b
+g(:)g(:)29 b Fb(46)150 4597 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(41)150 4509 y Fe(rl_save_state)25 b Fa(:)13 b(:)h(:)f(:)g(:)g(:)g
+b Fb(43)150 4686 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(43)150 4597 y
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(46)150 4774 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(37)150 4686 y Fe
+g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(40)150 4863 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(42)150 4774 y Fe(rl_set_keymap)25
+(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(45)150 4951 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(35)150 4863 y Fe(rl_set_keymap_name)10 b Fa(:)17
+b Fb(38)150 5040 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(36)150 4951
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(38)150 5128
 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(45)150
-5040 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(41)150 5128 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(53)2025
-260 y Fe(rl_set_signals)f Fa(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(48)2025
+260 y Fe(rl_set_prompt)k 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(44)2025 348 y Fe(rl_set_screen_size)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(55)2025
+436 y Fe(rl_set_signals)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(53)2025 349 y Fe(rl_set_timeout)23
+g(:)h(:)f(:)34 b Fb(56)2025 524 y Fe(rl_set_timeout)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(42)2025 438 y Fe(rl_show_char)8 b Fa(:)15 b(:)f(:)f(:)g(:)g(:)g(:)
+b Fb(45)2025 612 y Fe(rl_show_char)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(40)2025
-527 y Fe(rl_stuff_char)j Fa(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(43)2025
+700 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(42)2025 615 y Fe(rl_timeout_remaining)26
+f(:)g(:)g(:)g(:)37 b Fb(45)2025 789 y Fe(rl_timeout_remaining)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(42)2025 704 y
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(45)2025 877 y
 Fe(rl_trim_arg_from_keyseq)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(38)2025 793 y Fe(rl_tty_set_default_bindings)f Fa(:)13
+b Fb(41)2025 965 y Fe(rl_tty_set_default_bindings)f Fa(:)13
 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
-b Fb(43)2025 882 y Fe(rl_tty_set_echoing)10 b Fa(:)17
+b Fb(46)2025 1053 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(43)2025 971
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(46)2025 1141
 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(43)2025 1060 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(46)2025 1229 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(37)2025 1149 y Fe(rl_unbind_function_in_map)9 b
+b Fb(39)2025 1317 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(37)2025 1238 y Fe(rl_unbind_key)i
+(:)g(:)h(:)23 b Fb(39)2025 1405 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(37)2025 1326 y Fe(rl_unbind_key_in_map)26 b Fa(:)13
+b Fb(39)2025 1494 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(37)2025 1415 y Fe
+(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(39)2025 1582 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(55)2025
-1504 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(58)2025
+1670 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(45)2025 1593 y Fe(rl_variable_dumper)10
+h(:)f(:)29 b Fb(47)2025 1758 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(45)2025
-1680 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(48)2025
+1845 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(45)2021 1951 y Fr(S)2025 2072 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(20)2025 2161 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(24)2025 2250 y Fe(shell-transpose-words)30 b(\(M-C-t\))24
-b Fa(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37
-b Fb(21)2025 2339 y(sho)n(w-all-if-am)n(biguous)18 b
-Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(10)2025 2428
-y(sho)n(w-all-if-unmo)r(di\014ed)9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f
+g(:)g(:)27 b Fb(48)2021 2100 y Fr(S)2025 2219 y Fb(searc)n
+(h-ignore-case)11 b Fa(:)k(:)e(:)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(11)2025 2307 y Fe(self-insert)i(\(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(21)2025 2395 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(25)2025 2483
+y(sho)n(w-all-if-am)n(biguous)18 b Fa(:)d(:)e(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+32 b Fb(11)2025 2571 y(sho)n(w-all-if-unmo)r(di\014ed)9
+b Fa(:)14 b(:)f(:)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(11)2025
+2660 y(sho)n(w-mo)r(de-in-prompt)12 b Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)27 b Fb(11)2025 2748 y(skip-completed-text)15 b Fa(:)c(:)i(:)h(:)f
 (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)24 b Fb(10)2025 2517 y(sho)n(w-mo)r(de-in-prompt)12
-b Fa(:)h(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27 b Fb(10)2025 2606
-y(skip-completed-text)15 b Fa(:)c(:)i(:)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(:)
-29 b Fb(10)2025 2695 y Fe(skip-csi-sequence)g(\(\))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(24)2025 2782
-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(23)2021 3052 y Fr(T)2025 3173 y Fe(tab-insert)j(\(M-TAB\))16
+g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(11)2025 2836 y Fe(skip-csi-sequence)g
+(\(\))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(26)2025
+2923 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(25)2021 3177 y Fr(T)2025 3296 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(20)2025
-3262 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(21)2025
+3384 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(24)2025 3351 y Fe(transpose-chars)e(\(C-t\))9
+(:)g(:)31 b Fb(25)2025 3472 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(20)2025 3438 y
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23 b Fb(21)2025 3559 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(20)2021 3718 y Fr(U)2025 3839 y Fe(undo)j(\(C-_)h(or)f(C-x)g
+b Fb(22)2021 3823 y Fr(U)2025 3942 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(24)2025
-3928 y Fe(universal-argument)i(\(\))9 b Fa(:)14 b(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27 b Fb(25)2025
+4030 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(22)2025 4017 y Fe(unix-filename-rubout)30 b(\(\))21
+23 b Fb(23)2025 4118 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(21)2025 4106 y Fe(unix-line-discard)29
+(:)g(:)g(:)h(:)f(:)35 b Fb(23)2025 4207 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(21)2025 4195
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(22)2025 4295
 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(21)2025 4282 y Fe(upcase-word)28 b(\(M-u\))20 b
+b Fb(23)2025 4382 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(20)2021
-4562 y Fr(V)2025 4683 y Fb(vi-cmd-mo)r(de-string)18 b
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(22)2021
+4646 y Fr(V)2025 4765 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(11)2025
-4772 y Fe(vi-editing-mode)c(\(M-C-j\))22 b Fa(:)13 b(:)g(:)g(:)h(:)f(:)
+4853 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(25)2025 4861 y(vi-ins-mo)r(de-string)8 b Fa(:)13
+b Fb(26)2025 4941 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(11)2025
-4948 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(:)g(:)23 b Fb(12)2025
+5028 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(11)p eop end
-%%Page: 82 86
-TeXDict begin 82 85 bop 150 -116 a Ft(F)-8 b(unction)31
-b(and)f(V)-8 b(ariable)32 b(Index)2370 b(82)146 294 y
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(12)p eop end
+%%Page: 85 89
+TeXDict begin 85 88 bop 150 -116 a Ft(F)-8 b(unction)31
+b(and)f(V)-8 b(ariable)32 b(Index)2370 b(85)146 294 y
 Fr(Y)150 410 y Fe(yank)27 b(\(C-y\))20 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(:)g(:)
 h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b
-Fb(22)150 497 y Fe(yank-last-arg)29 b(\(M-.)d(or)g(M-_\))10
+Fb(23)150 497 y Fe(yank-last-arg)29 b(\(M-.)d(or)g(M-_\))10
 b Fa(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)24 b Fb(19)150 584 y Fe(yank-nth-arg)k(\(M-C-y\))11
+g(:)g(:)24 b Fb(20)150 584 y Fe(yank-nth-arg)k(\(M-C-y\))11
 b Fa(:)k(:)e(:)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(19)150 671 y
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(20)150 671 y
 Fe(yank-pop)h(\(M-y\))10 b Fa(:)k(:)f(:)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(22)p eop end
+f(:)g(:)g(:)g(:)24 b Fb(23)p eop end
 %%Trailer
 
 userdict /end-hook known{end-hook}if
diff --git a/doc/readline_3.pdf b/doc/readline_3.pdf
new file mode 100644 (file)
index 0000000..bba85e9
Binary files /dev/null and b/doc/readline_3.pdf differ
index 91d94eff991adc6d33cd116ccd2728a564054471..d516db222e039d27424dd59fe295b4a05e66e1b2 100644 (file)
@@ -1,12 +1,13 @@
 %!PS-Adobe-3.0
-%%Creator: groff version 1.22.4
-%%CreationDate: Tue Sep 20 10:17:06 2022
-%%DocumentNeededResources: font Times-Roman
+%%Creator: groff version 1.23.0
+%%CreationDate: Wed Jun 25 16:09:16 2025
+%%DocumentNeededResources: font Times-Italic
+%%+ font Times-Roman
 %%+ font Times-Bold
-%%+ font Times-Italic
 %%+ font Courier
-%%DocumentSuppliedResources: procset grops 1.22 4
-%%Pages: 17
+%%+ font Courier-Bold
+%%DocumentSuppliedResources: procset grops 1.23 0
+%%Pages: 19
 %%PageOrder: Ascend
 %%DocumentMedia: Default 612 792 0 () ()
 %%Orientation: Portrait
@@ -15,7 +16,7 @@
 %%PageMedia: Default
 %%EndDefaults
 %%BeginProlog
-%%BeginResource: procset grops 1.22 4
+%%BeginResource: procset grops 1.23 0
 %!PS-Adobe-3.0 Resource-ProcSet
 /setpacking where{
 pop
@@ -23,6 +24,7 @@ currentpacking
 true setpacking
 }if
 /grops 120 dict dup begin
+% The ASCII code of the space character.
 /SC 32 def
 /A/show load def
 /B{0 SC 3 -1 roll widthshow}bind def
@@ -44,16 +46,18 @@ true setpacking
 /R{moveto 0 SC 3 -1 roll widthshow}bind def
 /S{moveto 0 exch ashow}bind def
 /T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+% name size font SF -
 /SF{
 findfont exch
 [exch dup 0 exch 0 exch neg 0 0]makefont
 dup setfont
 [exch/setfont cvx]cvx bind def
 }bind def
+% name a c d font MF -
 /MF{
 findfont
 [5 2 roll
-0 3 1 roll
+0 3 1 roll % b
 neg 0 0]makefont
 dup setfont
 [exch/setfont cvx]cvx bind def
@@ -62,13 +66,19 @@ dup setfont
 /RES 0 def
 /PL 0 def
 /LS 0 def
+% Enable manual feed.
+% MANUAL -
 /MANUAL{
 statusdict begin/manualfeed true store end
 }bind def
+% Guess the page length.
+% This assumes that the imageable area is vertically centered on the page.
+% PLG - length
 /PLG{
 gsave newpath clippath pathbbox grestore
 exch pop add exch pop
 }bind def
+% BP -
 /BP{
 /level0 save def
 1 setlinecap
@@ -86,47 +96,61 @@ LS{
 level0 restore
 showpage
 }def
+% centerx centery radius startangle endangle DA -
 /DA{
 newpath arcn stroke
 }bind def
+% x y SN - x' y'
+% round a position to nearest (pixel + (.25,.25))
 /SN{
 transform
 .25 sub exch .25 sub exch
 round .25 add exch round .25 add exch
 itransform
 }bind def
+% endx endy startx starty DL -
+% we round the endpoints of the line, so that parallel horizontal
+% and vertical lines will appear even
 /DL{
 SN
 moveto
 SN
 lineto stroke
 }bind def
+% centerx centery radius DC -
 /DC{
 newpath 0 360 arc closepath
 }bind def
 /TM matrix def
+%  width height centerx centery DE -
 /DE{
 TM currentmatrix pop
 translate scale newpath 0 0 .5 0 360 arc closepath
 TM setmatrix
 }bind def
+% these are for splines
 /RC/rcurveto load def
 /RL/rlineto load def
 /ST/stroke load def
 /MT/moveto load def
 /CL/closepath load def
+% fill the last path
+% r g b Fr -
 /Fr{
 setrgbcolor fill
 }bind def
+% c m y k Fk -
 /setcmykcolor where{
 pop
 /Fk{
 setcmykcolor fill
 }bind def
 }if
+% g Fg -
 /Fg{
 setgray fill
 }bind def
+% fill with the "current color"
 /FL/fill load def
 /LW/setlinewidth load def
 /Cr/setrgbcolor load def
@@ -135,6 +159,7 @@ pop
 /Ck/setcmykcolor load def
 }if
 /Cg/setgray load def
+% new_font_name encoding_vector old_font_name RE -
 /RE{
 findfont
 dup maxlength 1 index/FontName known not{1 add}if dict begin
@@ -149,6 +174,7 @@ dup/FontName exch def
 currentdict end definefont pop
 }bind def
 /DEFS 0 def
+% hpos vpos EBEGIN -
 /EBEGIN{
 moveto
 DEFS begin
@@ -156,11 +182,13 @@ DEFS begin
 /EEND/end load def
 /CNT 0 def
 /level1 0 def
+% llx lly newwid wid newht ht newllx newlly PBEGIN -
 /PBEGIN{
 /level1 save def
 translate
 div 3 1 roll div exch scale
 neg exch neg exch translate
+% set the graphics state to default values
 0 setgray
 0 setlinecap
 1 setlinewidth
@@ -179,6 +207,10 @@ newpath
 /CNT countdictstack def
 userdict begin
 /showpage{}def
+%
+%  Any included setpagedevice should be ignored.
+%  See: http://www.w-beer.de/doc/ps/.
+%
 /setpagedevice{}def
 mark
 }bind def
@@ -198,10 +230,11 @@ setpacking
 %%BeginFeature: *PageSize Default
 << /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice
 %%EndFeature
+%%IncludeResource: font Times-Italic
 %%IncludeResource: font Times-Roman
 %%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
 %%IncludeResource: font Courier
+%%IncludeResource: font Courier-Bold
 grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
 def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
 /scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
@@ -230,1553 +263,1821 @@ def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
 /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
 /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
 /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Courier@0 ENC0/Courier RE/Times-Italic@0 ENC0/Times-Italic RE
+/Courier-Bold@0 ENC0/Courier-Bold RE/Courier@0 ENC0/Courier RE
 /Times-Bold@0 ENC0/Times-Bold RE/Times-Roman@0 ENC0/Times-Roman RE
+/Times-Italic@0 ENC0/Times-Italic RE
 %%EndSetup
 %%Page: 1 1
 %%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
--.219(NA)72 84 S(ME).219 E F0
-(readline \255 get a line from a user with editing)108 96 Q F1(SYNOPSIS)
-72 112.8 Q/F2 10/Times-Bold@0 SF(#include <stdio.h>)108 124.8 Q
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10.95/Times-Bold@0 SF -.219(NA)72 84 S(ME).219 E F1
+(readline \255 get a line from a user with editing)108 96 Q F2(SYNOPSIS)
+72 112.8 Q/F3 10/Times-Bold@0 SF(#include <stdio.h>)108 124.8 Q
 (#include <r)108 136.8 Q(eadline/r)-.18 E(eadline.h>)-.18 E(#include <r)
-108 148.8 Q(eadline/history)-.18 E(.h>)-.7 E/F3 10/Times-Italic@0 SF
--.15(ch)108 165.6 S(ar *).15 E F2 -.18(re)108 177.6 S(adline).18 E F0
-(\()2.5 E F3(const c)A(har *pr)-.15 E(ompt)-.45 E F0(\);)A F1(COPYRIGHT)
-72 194.4 Q F0(Readline is Cop)108 206.4 Q
-(yright \251 1989\2552020 Free Softw)-.1 E(are F)-.1 E(oundation, Inc.)
--.15 E F1(DESCRIPTION)72 223.2 Q F2 -.18(re)108 235.2 S(adline).18 E F0
-.088(will read a line from the terminal and return it, using)2.588 F F2
-(pr)2.587 E(ompt)-.18 E F0 .087(as a prompt.)2.587 F(If)5.087 E F2(pr)
-2.587 E(ompt)-.18 E F0(is)2.587 E F2(NULL)2.587 E F0(or)2.587 E .399
-(the empty string, no prompt is issued.)108 247.2 R .399
-(The line returned is allocated with)5.399 F F3(malloc)3.28 E F0 .4
-(\(3\); the caller must free it).31 F(when \214nished.)108 259.2 Q
-(The line returned has the \214nal ne)5 E(wline remo)-.25 E -.15(ve)-.15
-G(d, so only the te).15 E(xt of the line remains.)-.15 E F2 -.18(re)108
-276 S(adline).18 E F0(of)3.79 E 1.29
+108 148.8 Q(eadline/history)-.18 E(.h>)-.7 E F0 -.15(ch)108 165.6 S
+(ar *).15 E F3 -.18(re)108 177.6 S(adline).18 E F1(\()2.5 E F0(const c)A
+(har *pr)-.15 E(ompt)-.45 E F1(\);)A F2(COPYRIGHT)72 194.4 Q F1
+(Readline is Cop)108 206.4 Q(yright \251 1989\2552025 Free Softw)-.1 E
+(are F)-.1 E(oundation, Inc.)-.15 E F2(DESCRIPTION)72 223.2 Q F3 -.18
+(re)108 235.2 S(adline).18 E F1 .06
+(reads a line from the terminal and return it, using)2.56 F F3(pr)2.56 E
+(ompt)-.18 E F1 .06(as a prompt.)2.56 F(If)5.06 E F3(pr)2.56 E(ompt)-.18
+E F1(is)2.56 E F3(NULL)2.56 E F1 .06(or the)2.56 F 1.016(empty string,)
+108 247.2 R F3 -.18(re)3.516 G(adline).18 E F1 1.016
+(does not issue a prompt.)3.516 F 1.016
+(The line returned is allocated with)6.016 F F0(malloc)3.897 E F1 1.017
+(\(3\); the caller).31 F .347(must free it when \214nished.)108 259.2 R
+.347(The line returned has the \214nal ne)5.347 F .346(wline remo)-.25 F
+-.15(ve)-.15 G .346(d, so only the te).15 F .346(xt of the line re-)-.15
+F 2.851(mains. Since)108 271.2 R(it')2.851 E 2.851(sp)-.55 G .351(ossib\
+le to enter characters into the line while quoting them to disable an)
+-2.851 F(y)-.15 E F3 -.18(re)2.852 G(adline).18 E F1(edit-)2.852 E .41
+(ing function the)108 283.2 R 2.91(ym)-.15 G .41(ight normally ha)-2.91
+F -.15(ve)-.2 G 2.91(,t).15 G .41(his line may include embedded ne)-2.91
+F .41(wlines and other special charac-)-.25 F(ters.)108 295.2 Q F3 -.18
+(re)108 312 S(adline).18 E F1(of)3.789 E 1.289
 (fers editing capabilities while the user is entering the line.)-.25 F
-1.289(By def)6.289 F 1.289(ault, the line editing com-)-.1 F
-(mands are similar to those of emacs.)108 288 Q 2.5(Av)5 G
+1.29(By def)6.29 F 1.29(ault, the line editing com-)-.1 F
+(mands are similar to those of emacs.)108 324 Q 2.5(Av)5 G
 (i\255style line editing interf)-2.5 E(ace is also a)-.1 E -.25(va)-.2 G
 (ilable.).25 E .272
-(This manual page describes only the most basic use of)108 304.8 R F2
--.18(re)2.772 G(adline).18 E F0 5.272(.M)C .272
-(uch more functionality is a)-5.272 F -.25(va)-.2 G .272(ilable; see).25
-F F3(The GNU Readline Libr)108 316.8 Q(ary)-.15 E F0(and)2.5 E F3
-(The GNU History Libr)2.5 E(ary)-.15 E F0(for additional information.)
-2.5 E F1(RETURN V)72 333.6 Q(ALUE)-1.478 E F2 -.18(re)108 345.6 S
-(adline).18 E F0 1.09(returns the te)3.59 F 1.09(xt of the line read.)
--.15 F 3.589(Ab)6.09 G 1.089(lank line returns the empty string.)-3.589
-F(If)6.089 E F2(EOF)3.589 E F0 1.089(is encountered)3.589 F .283
-(while reading a line, and the line is empty)108 357.6 R(,)-.65 E F2
-(NULL)2.783 E F0 .283(is returned.)2.783 F .283(If an)5.283 F F2(EOF)
-2.783 E F0 .283(is read with a non\255empty line, it)2.783 F
-(is treated as a ne)108 369.6 Q(wline.)-.25 E F1(NO)72 386.4 Q -.986(TA)
--.438 G(TION)-.054 E F0 .077
-(An Emacs-style notation is used to denote k)108 398.4 R -.15(ey)-.1 G
-(strok).15 E 2.576(es. Control)-.1 F -.1(ke)2.576 G .076
-(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0 2.576(,e)C .076
-(.g., C\255n means)-2.576 F 2.582(Control\255N. Similarly)108 410.4 R(,)
--.65 E F3(meta)2.962 E F0 -.1(ke)2.842 G .082(ys are denoted by M\255)
--.05 F F3 -.1(ke)C(y)-.2 E F0 2.583(,s)C 2.583(oM)-2.583 G .083
-(\255x means Meta\255X.)-2.583 F .083(\(On k)5.083 F -.15(ey)-.1 G .083
-(boards without a).15 F F3(meta)108.38 422.4 Q F0 -.1(ke)3.472 G 2.012
--.65(y, M)-.05 H<ad>.65 E F3(x)A F0 .712(means ESC)3.212 F F3(x)3.212 E
-F0 3.212(,i)C .712(.e., press the Escape k)-3.212 F 1.011 -.15(ey t)-.1
-H .711(hen the).15 F F3(x)3.981 E F0 -.1(ke)3.741 G 4.511 -.65(y. T)-.05
-H .711(his mak).65 F .711(es ESC the)-.1 F F3 .711(meta pr)3.211 F
-(e\214x)-.37 E F0(.)A .48(The combination M\255C\255)108 434.4 R F3(x)A
-F0 .48(means ESC\255Control\255)2.98 F F3(x)A F0 2.98(,o)C 2.98(rp)-2.98
-G .48(ress the Escape k)-2.98 F .78 -.15(ey t)-.1 H .48
-(hen hold the Control k).15 F .78 -.15(ey w)-.1 H(hile).15 E
-(pressing the)108 446.4 Q F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G
-(\)).65 E .596(Readline commands may be gi)108 463.2 R -.15(ve)-.25 G
-3.096(nn).15 G(umeric)-3.096 E F3(ar)3.426 E(guments)-.37 E F0 3.096(,w)
-.27 G .596(hich normally act as a repeat count.)-3.096 F(Sometimes,)
-5.595 E(ho)108 475.2 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H
-3.118(ti).4 G 3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619
+(This manual page describes only the most basic use of)108 340.8 R F3
+-.18(re)2.772 G(adline).18 E F1 5.272(.M)C .272
+(uch more functionality is a)-5.272 F -.25(va)-.2 G .271(ilable; see).25
+F F0(The GNU Readline Libr)108 352.8 Q(ary)-.15 E F1(and)2.5 E F0
+(The GNU History Libr)2.5 E(ary)-.15 E F1(for additional information.)
+2.5 E F2(RETURN V)72 369.6 Q(ALUE)-1.478 E F3 -.18(re)108 381.6 S
+(adline).18 E F1 1.089(returns the te)3.589 F 1.089
+(xt of the line read.)-.15 F 3.589(Ab)6.089 G 1.09
+(lank line returns the empty string.)-3.589 F(If)6.09 E F3(EOF)3.59 E F1
+1.09(is encountered)3.59 F .6
+(while reading a line, and the line is empty)108 393.6 R(,)-.65 E F3
+-.18(re)3.1 G(adline).18 E F1(returns)3.1 E F3(NULL)3.1 E F1 5.6(.I)C
+3.1(fa)-5.6 G(n)-3.1 E F3(EOF)3.1 E F1 .6(is read with a non\255empty)
+3.1 F(line, it is treated as a ne)108 405.6 Q(wline.)-.25 E F2(NO)72
+422.4 Q -.986(TA)-.438 G(TION)-.054 E F1 .862(This section uses Emacs-s\
+tyle editing concepts and uses its notation for k)108 434.4 R -.15(ey)
+-.1 G(strok).15 E 3.362(es. Control)-.1 F -.1(ke)3.362 G .862
+(ys are de-)-.05 F .55(noted by C\255)108 446.4 R F0 -.1(ke)C(y)-.2 E F1
+3.05(,e)C .55(.g., C\255n means Control\255N.)-3.05 F(Similarly)5.55 E
+(,)-.65 E F0(meta)3.43 E F1 -.1(ke)3.31 G .55(ys are denoted by M\255)
+-.05 F F0 -.1(ke)C(y)-.2 E F1 3.05(,s)C 3.05(oM)-3.05 G .55(\255x means)
+-3.05 F 2.5(Meta\255X. The)108 458.4 R(Meta k)2.5 E .3 -.15(ey i)-.1 H
+2.5(so).15 G(ften labeled \231)-2.5 E(Alt\232 or \231Option\232.)-.8 E
+.149(On k)108 475.2 R -.15(ey)-.1 G .149(boards without a).15 F F0(Meta)
+3.329 E F1 -.1(ke)2.909 G 1.449 -.65(y, M)-.05 H<ad>.65 E F0(x)A F1 .149
+(means ESC)2.649 F F0(x)2.649 E F1 2.649(,i)C .15
+(.e., press and release the Escape k)-2.649 F -.15(ey)-.1 G 2.65(,t)-.5
+G .15(hen press and)-2.65 F 1.217(release the)108 487.2 R F0(x)4.487 E
+F1 -.1(ke)4.247 G 2.517 -.65(y, i)-.05 H 3.716(ns).65 G 3.716
+(equence. This)-3.716 F(mak)3.716 E 1.216(es ESC the)-.1 F F0 1.216
+(meta pr)3.716 F(e\214x)-.37 E F1 6.216(.T)C 1.216
+(he combination M\255C\255)-6.216 F F0(x)A F1 1.216(means ESC)3.716 F
+(Control\255)108 499.2 Q F0(x)A F1 2.93(:p)C .43
+(ress and release the Escape k)-2.93 F -.15(ey)-.1 G 2.93(,t)-.5 G .43
+(hen press and hold the Control k)-2.93 F .73 -.15(ey w)-.1 H .43
+(hile pressing the).15 F F0(x)3.7 E F1 -.1(ke)3.46 G -.65(y,)-.05 G
+(then release both.)108 511.2 Q .217(On some k)108 528 R -.15(ey)-.1 G
+.217(boards, the Meta k).15 F .517 -.15(ey m)-.1 H .216
+(odi\214er produces characters with the eighth bit \(0200\) set.).15 F
+-1.1(Yo)5.216 G 2.716(uc)1.1 G .216(an use)-2.716 F(the)108 540 Q F3
+(enable\255meta\255k)3.315 E(ey)-.1 E F1 -.25(va)3.315 G .816
+(riable to control whether or not it does this, if the k).25 F -.15(ey)
+-.1 G .816(board allo).15 F .816(ws it.)-.25 F .816(On man)5.816 F(y)
+-.15 E .568(others, the terminal or terminal emulator con)108 552 R -.15
+(ve)-.4 G .568(rts the meta\214ed k).15 F .868 -.15(ey t)-.1 H 3.068
+(oak).15 G .868 -.15(ey s)-3.168 H .568(equence be).15 F .568
+(ginning with ESC)-.15 F(as described in the preceding paragraph.)108
+564 Q .029(If your)108 580.8 R F0(Meta)2.529 E F1 -.1(ke)2.529 G 2.529
+(yp)-.05 G .029(roduces a k)-2.529 F .329 -.15(ey s)-.1 H .03
+(equence with the ESC meta pre\214x, you can mak).15 F 2.53(eM)-.1 G(-)
+-2.53 E F0 -.1(ke)C(y)-.2 E F1 -.1(ke)2.53 G 2.53(yb)-.05 G .03
+(indings you)-2.53 F(specify \(see)108 592.8 Q F3(Readline K)2.5 E
+(ey Bindings)-.25 E F1(belo)2.5 E(w\) do the same thing by setting the)
+-.25 E F3 -.25(fo)2.5 G -.18(rc).25 G(e\255meta\255pr).18 E(e\214x)-.18
+E F1 -.25(va)2.5 G(riable.).25 E F3(Readline)108 609.6 Q F1 .437
+(commands may be gi)2.937 F -.15(ve)-.25 G 2.937(nn).15 G(umeric)-2.937
+E F0(ar)3.267 E(guments)-.37 E F1 2.936(,w).27 G .436
+(hich normally act as a repeat count.)-2.936 F(Sometimes,)5.436 E(ho)108
+621.6 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G
+3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619
 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne)
 .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619
-(ument to a command that).18 F 1.019(acts in the forw)108 487.2 R 1.018
-(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C
-1.018(auses that command to act in a backw)-3.518 F 1.018
-(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 499.2 Q
-(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo)
--.25 E -.65(w.)-.25 G .811(When a command is described as)108 516 R F3
-(killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811
-(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812
-(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F3
-(yank-)-3.312 E(ing)108 528 Q F0 2.529(\). The)B .029(killed te)2.529 F
-.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3
-.029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H
-.029(ills cause the te).15 F .029(xt to be accumulated into one unit,)
--.15 F .567(which can be yank)108 540 R .567(ed all at once.)-.1 F .567
-(Commands which do not kill te)5.567 F .567
+(ument to a command that).18 F .296(acts in the forw)108 633.6 R .296
+(ard direction \(e.g.,)-.1 F F3(kill\255line)2.796 E F1 2.796(\)m)C(ak)
+-2.796 E .296(es that command act in a backw)-.1 F .296(ard direction.)
+-.1 F(Commands)5.296 E(whose beha)108 645.6 Q(vior with ar)-.2 E
+(guments de)-.18 E(viates from this are noted belo)-.25 E -.65(w.)-.25 G
+(The)108 662.4 Q F0(point)3.245 E F1 .745
+(is the current cursor position, and)3.245 F F0(mark)3.245 E F1 .745
+(refers to a sa)3.245 F -.15(ve)-.2 G 3.245(dc).15 G .745
+(ursor position.)-3.245 F .745(The te)5.745 F .745(xt between the)-.15 F
+(point and mark is referred to as the)108 674.4 Q F0 -.37(re)2.5 G(gion)
+-.03 E F1(.)A .812(When a command is described as)108 691.2 R F0
+(killing)3.311 E F1(te)3.311 E .811(xt, the te)-.15 F .811
+(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811
+(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F0
+(yank-)-3.311 E(ing)108 703.2 Q F1 3.673(\). The)B 1.174(killed te)3.673
+F 1.174(xt is sa)-.15 F -.15(ve)-.2 G 3.674(di).15 G 3.674(na)-3.674 G
+F0 1.174(kill ring)B F1 6.174(.C)C(onsecuti)-6.174 E 1.474 -.15(ve k)
+-.25 H 1.174(ills accumulate the deleted te).15 F 1.174
+(xt into one unit,)-.15 F .567(which can be yank)108 715.2 R .567
+(ed all at once.)-.1 F .567(Commands which do not kill te)5.567 F .567
 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.)
-108 552 Q F1(INITIALIZA)72 568.8 Q(TION FILE)-1.04 E F0 .091(Readline i\
-s customized by putting commands in an initialization \214le \(the)108
-580.8 R F3(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091
-(name of this \214le)2.591 F .156(is tak)108 592.8 R .156(en from the v)
--.1 F .156(alue of the)-.25 F F2(INPUTRC)2.656 E F0(en)2.656 E .156
-(vironment v)-.4 F 2.656(ariable. If)-.25 F .156(that v)2.656 F .156
-(ariable is unset, the def)-.25 F .157(ault is)-.1 F F3(~/.in-)2.157 E
-(putr)108 604.8 Q(c)-.37 E F0 5.905(.I).31 G 3.405(ft)-5.905 G .905
-(hat \214le)-3.405 F .905(does not e)5.905 F .904
-(xist or cannot be read, the ultimate def)-.15 F .904(ault is)-.1 F F3
-(/etc/inputr)4.554 E(c)-.37 E F0 5.904(.W).31 G .904(hen a program)
--5.904 F 1.158(which uses the readline library starts up, the init \214\
-le is read, and the k)108 616.8 R 1.459 -.15(ey b)-.1 H 1.159
-(indings and v).15 F 1.159(ariables are set.)-.25 F .029
-(There are only a fe)108 628.8 R 2.529(wb)-.25 G .029
-(asic constructs allo)-2.529 F .028(wed in the readline init \214le.)
--.25 F .028(Blank lines are ignored.)5.028 F .028(Lines be)5.028 F(gin-)
--.15 E .553(ning with a)108 640.8 R F2(#)3.053 E F0 .554(are comments.)
-3.053 F .554(Lines be)5.554 F .554(ginning with a)-.15 F F2($)3.054 E F0
-.554(indicate conditional constructs.)3.054 F .554(Other lines denote)
-5.554 F -.1(ke)108 652.8 S 2.987(yb)-.05 G .487(indings and v)-2.987 F
-.487(ariable settings.)-.25 F .487
-(Each program using this library may add its o)5.487 F .486
-(wn commands and bind-)-.25 F(ings.)108 664.8 Q -.15(Fo)108 681.6 S 2.5
-(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 8.2)72 768 Q(2022 September 19)120.405 E(1)190.115 E
-0 Cg EP
+108 727.2 Q(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(1)
+190.955 E 0 Cg EP
 %%Page: 2 2
 %%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(into the)108 84 Q/F1 10
-/Times-Italic@0 SF(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E
-2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G
-(cute the readline command).15 E F1(univer)2.58 E(sal\255ar)-.1 E
-(gument)-.37 E F0(.).68 E 1.153(The follo)108 100.8 R 1.154
-(wing symbolic character names are recognized while processing k)-.25 F
-1.454 -.15(ey b)-.1 H(indings:).15 E F1(DEL)4.234 E F0(,).53 E F1(ESC)
-4.164 E F0(,).72 E F1(ES-)4.164 E(CAPE)108 112.8 Q F0(,).73 E F1(LFD)
-3.08 E F0(,).28 E F1(NEWLINE)3.2 E F0(,).73 E F1(RET)3.13 E F0(,)1.27 E
-F1(RETURN)3.13 E F0(,)1.1 E F1 -.4(RU)2.5 G(BOUT).4 E F0(,)1.27 E F1(SP)
-2.83 E -.3(AC)-.9 G(E).3 E F0(,).73 E F1(SPC)2.83 E F0 2.5(,a).72 G(nd)
--2.5 E F1 -.5(TA)2.5 G(B).5 E F0(.).27 E .209
-(In addition to command names, readline allo)108 129.6 R .209(ws k)-.25
-F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
-(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i)
--.1 H(s).15 E(pressed \(a)108 141.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A/F2
-10/Times-Bold@0 SF -.25(Ke)87 158.4 S 2.5(yB).25 G(indings)-2.5 E F0
-.366(The syntax for controlling k)108 170.4 R .666 -.15(ey b)-.1 H .366
-(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 .366
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10.95/Times-Bold@0 SF(INITIALIZA)72 84 Q(TION FILE)
+-1.04 E/F3 10/Times-Bold@0 SF(Readline)108 96 Q F1 .912
+(is customized by putting commands in an initialization \214le \(the)
+3.412 F F0(inputr)3.413 E(c)-.37 E F1 3.413(\214le\). The)3.413 F .913
+(name of this)3.413 F .514(\214le is tak)108 108 R .514(en from the v)
+-.1 F .514(alue of the)-.25 F F3(INPUTRC)3.014 E F1(en)3.014 E .514
+(vironment v)-.4 F 3.014(ariable. If)-.25 F .514(that v)3.014 F .514
+(ariable is unset, the def)-.25 F .513(ault is)-.1 F F0(\001/.inputr)
+108.1 120 Q(c)-.37 E F1 5.67(.I).31 G 3.17(ft)-5.67 G .67(hat \214le)
+-3.17 F .67(does not e)5.67 F .671(xist or cannot be read,)-.15 F F3
+-.18(re)3.171 G(adline).18 E F1 .671(looks for)3.171 F F0(/etc/inputr)
+4.321 E(c)-.37 E F1 5.671(.W).31 G .671(hen a program)-5.671 F .809
+(that uses the)108 132 R F3 -.18(re)3.309 G(adline).18 E F1 .809
+(library starts up,)3.309 F F3 -.18(re)3.309 G(adline).18 E F1 .809
+(reads the initialization \214le and sets the k)3.309 F 1.108 -.15(ey b)
+-.1 H .808(indings and).15 F -.25(va)108 144 S
+(riables found there, before reading an).25 E 2.5(yu)-.15 G(ser input.)
+-2.5 E .34(There are only a fe)108 160.8 R 2.84(wb)-.25 G .34
+(asic constructs allo)-2.84 F .34(wed in the inputrc \214le.)-.25 F .34
+(Blank lines are ignored.)5.34 F .34(Lines be)5.34 F(ginning)-.15 E .779
+(with a)108 172.8 R F3(#)3.279 E F1 .778(are comments.)3.278 F .778
+(Lines be)5.778 F .778(ginning with a)-.15 F F3($)3.278 E F1 .778
+(indicate conditional constructs.)3.278 F .778(Other lines denote k)
+5.778 F -.15(ey)-.1 G(bindings and v)108 184.8 Q(ariable settings.)-.25
+E .08(The def)108 201.6 R .08(ault k)-.1 F -.15(ey)-.1 G .08
+(-bindings in this document may be changed using k).15 F .381 -.15(ey b)
+-.1 H .081(inding commands in the).15 F F0(inputr)2.591 E(c)-.37 E F1
+(\214le.)2.891 E(Programs that use this library may add their o)108
+213.6 Q(wn commands and bindings.)-.25 E -.15(Fo)108 230.4 S 2.5(re).15
+G(xample, placing)-2.65 E(M\255Control\255u: uni)144 247.2 Q -.15(ve)
+-.25 G(rsal\255ar).15 E(gument)-.18 E(or)108 259.2 Q
+(C\255Meta\255u: uni)144 271.2 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)
+-.18 E(into the)108 288 Q F0(inputr)2.51 E(c)-.37 E F1 -.1(wo)2.81 G
+(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the)
+.15 E F3 -.18(re)2.5 G(adline).18 E F1(command)2.5 E F0(univer)2.58 E
+(sal\255ar)-.1 E(gument)-.37 E F1(.).68 E -2.15 -.25(Ke y)108 304.8 T
+1.443(bindings may contain the follo)4.193 F 1.442
+(wing symbolic character names:)-.25 F F0(DEL)4.522 E F1(,).53 E F0(ESC)
+4.452 E F1(,).72 E F0(ESCAPE)4.452 E F1(,).73 E F0(LFD)4.522 E F1(,).28
+E F0(NEW)4.642 E(-)-.37 E(LINE)108 316.8 Q F1(,).73 E F0(RET)3.13 E F1
+(,)1.27 E F0(RETURN)3.13 E F1(,)1.1 E F0 -.4(RU)2.5 G(BOUT).4 E F1
+(\(a destructi)3.77 E .3 -.15(ve b)-.25 H(ackspace\),).15 E F0(SP)2.83 E
+-.3(AC)-.9 G(E).3 E F1(,).73 E F0(SPC)2.83 E F1 2.5(,a).72 G(nd)-2.5 E
+F0 -.5(TA)2.5 G(B).5 E F1(.).27 E .078(In addition to command names,)108
+333.6 R F3 -.18(re)2.578 G(adline).18 E F1(allo)2.578 E .078(ws k)-.25 F
+-.15(ey)-.1 G 2.578(st).15 G 2.578(ob)-2.578 G 2.578(eb)-2.578 G .079
+(ound to a string that is inserted when the k)-2.578 F .379 -.15(ey i)
+-.1 H(s).15 E .193(pressed \(a)108 345.6 R F0(macr)2.693 E(o)-.45 E F1
+2.692(\). The)B(dif)2.692 E .192(ference between a macro and a command \
+is that a macro is enclosed in single or)-.25 F(double quotes.)108 357.6
+Q F3 -.25(Ke)87 374.4 S 2.5(yB).25 G(indings)-2.5 E F1 .366
+(The syntax for controlling k)108 386.4 R .666 -.15(ey b)-.1 H .366
+(indings in the).15 F F0(inputr)2.876 E(c)-.37 E F1 .366
 (\214le is simple.)3.176 F .366(All that is required is the name of the)
-5.366 F .264(command or the te)108 182.4 R .264(xt of a macro and a k)
--.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.)
-.15 F .263(The name may be speci-)5.264 F .138(\214ed in one of tw)108
-194.4 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15
-(ey n)-.1 H .138(ame, possibly with).15 F F1(Meta\255)2.638 E F0(or)
-2.638 E F1(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138
-(es, or as a k)-.15 F .439 -.15(ey s)-.1 H(e-).15 E 3.409(quence. The)
-108 206.4 R .909(name and k)3.409 F 1.209 -.15(ey s)-.1 H .909
-(equence are separated by a colon.).15 F .909
-(There can be no whitespace between the)5.909 F(name and the colon.)108
-218.4 Q .361(When using the form)108 235.2 R F2 -.1(ke)2.861 G(yname).1
-E F0(:)A F1(function-name).833 E F0(or)2.861 E F1(macr)2.861 E(o)-.45 E
-F0(,)A F1 -.1(ke)2.861 G(yname)-.2 E F0 .362(is the name of a k)3.042 F
-.662 -.15(ey s)-.1 H .362(pelled out in Eng-).15 F 2.5(lish. F)108 247.2
-R(or e)-.15 E(xample:)-.15 E(Control\255u: uni)144 271.2 Q -.15(ve)-.25
-G(rsal\255ar).15 E(gument)-.18 E(Meta\255Rubout: backw)144 283.2 Q
-(ard\255kill\255w)-.1 E(ord)-.1 E(Control\255o: "> output")144 295.2 Q
-.148(In the abo)108 312 R .448 -.15(ve ex)-.15 H(ample,).15 E F1(C\255u)
-2.488 E F0 .148(is bound to the function)2.898 F F2(uni)2.647 E -.1(ve)
--.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M-DEL)3.327 E F0 .147
-(is bound to the function)3.177 F F2(backward\255kill\255w)108 324 Q
-(ord)-.1 E F0 3.005(,a)C(nd)-3.005 E F1(C\255o)2.845 E F0 .505
-(is bound to run the macro e)3.185 F .506
-(xpressed on the right hand side \(that is, to in-)-.15 F(sert the te)
-108 336 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
-(into the line\).)2.5 E .056(In the second form,)108 352.8 R F2("k)2.556
-E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr)
-2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
-(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
-(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284
-(denoting an entire k)108 364.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
-ay be speci\214ed by placing the sequence within double quotes.).15 F
-(Some)6.284 E .386(GNU Emacs style k)108 376.8 R .686 -.15(ey e)-.1 H
-.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385
-(xample, b)-.15 F .385(ut the symbolic character names)-.2 F
-(are not recognized.)108 388.8 Q("\\C\255u": uni)144 412.8 Q -.15(ve)
--.25 G(rsal\255ar).15 E(gument)-.18 E
-("\\C\255x\\C\255r": re\255read\255init\255\214le)144 424.8 Q
-("\\e[11~": "Function K)144 436.8 Q .3 -.15(ey 1)-.25 H(").15 E .198
-(In this e)108 453.6 R(xample,)-.15 E F1(C-u)2.538 E F0 .199(is ag)2.949
-F .199(ain bound to the function)-.05 F F2(uni)2.699 E -.1(ve)-.1 G
-(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .199(C-x C-r)5.039 F F0 .199
-(is bound to the function)3.429 F F2 -.18(re)108 465.6 S<ad72>.18 E
-(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1(ESC [ 1 1 ~)3.01
-E F0(is bound to insert the te)3.94 E(xt)-.15 E F3(Function Key 1)2.5 E
-F0(.)A(The full set of GNU Emacs style escape sequences a)108 482.4 Q
--.25(va)-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H
-(equences is).15 E F2<5c43ad>144 494.4 Q F0(control pre\214x)180 494.4 Q
-F2<5c4dad>144 506.4 Q F0(meta pre\214x)180 506.4 Q F2(\\e)144 518.4 Q F0
-(an escape character)180 518.4 Q F2(\\\\)144 530.4 Q F0(backslash)180
-530.4 Q F2(\\")144 542.4 Q F0(literal ", a double quote)180 542.4 Q F2
-(\\')144 554.4 Q F0(literal ', a single quote)180 554.4 Q(In addition t\
-o the GNU Emacs style escape sequences, a second set of backslash escap\
-es is a)108 571.2 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 583.2 Q F0
-(alert \(bell\))180 583.2 Q F2(\\b)144 595.2 Q F0(backspace)180 595.2 Q
-F2(\\d)144 607.2 Q F0(delete)180 607.2 Q F2(\\f)144 619.2 Q F0
-(form feed)180 619.2 Q F2(\\n)144 631.2 Q F0(ne)180 631.2 Q(wline)-.25 E
-F2(\\r)144 643.2 Q F0(carriage return)180 643.2 Q F2(\\t)144 655.2 Q F0
-(horizontal tab)180 655.2 Q F2(\\v)144 667.2 Q F0 -.15(ve)180 667.2 S
-(rtical tab).15 E F2(\\)144 679.2 Q F1(nnn)A F0
-(the eight-bit character whose v)180 679.2 Q(alue is the octal v)-.25 E
-(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144
-691.2 Q F1(HH)A F0(the eight-bit character whose v)180 691.2 Q
-(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0
-(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E .74
-(When entering the te)108 708 R .74(xt of a macro, single or double quo\
-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 8.2)72 768 Q(2022 September 19)120.405 E(2)190.115 E 0 Cg
+5.366 F .012(command or the te)108 398.4 R .012(xt of a macro and a k)
+-.15 F .311 -.15(ey s)-.1 H .011(equence to which it should be bound.)
+.15 F .011(The k)5.011 F .311 -.15(ey s)-.1 H .011(equence may be).15 F
+.694(speci\214ed in one of tw)108 410.4 R 3.194(ow)-.1 G .695
+(ays: as a symbolic k)-3.294 F .995 -.15(ey n)-.1 H .695
+(ame, possibly with).15 F F0(Meta\255)3.195 E F1(or)3.195 E F0(Contr)
+3.195 E(ol\255)-.45 E F1(pre\214x)3.195 E .695(es, or as a)-.15 F -.1
+(ke)108 422.4 S 2.803(ys)-.05 G .303
+(equence composed of one or more characters enclosed in double quotes.)
+-2.803 F .302(The k)5.302 F .602 -.15(ey s)-.1 H .302(equence and name)
+.15 F(are separated by a colon.)108 434.4 Q
+(There can be no whitespace between the name and the colon.)5 E .16
+(When using the form)108 451.2 R F3 -.1(ke)2.66 G(yname).1 E F1(:)A F0
+(function\255name).833 E F1(or)2.66 E F0(macr)2.66 E(o)-.45 E F1(,)A F0
+-.1(ke)2.66 G(yname)-.2 E F1 .161(is the name of a k)2.84 F .461 -.15
+(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 463.2 R(or e)
+-.15 E(xample:)-.15 E/F4 10/Courier@0 SF
+(Control-u: universal\255argument)144 480 Q
+(Meta-Rubout: backward\255kill\255word)144 492 Q(Control-o: "> output")
+144 504 Q F1 .699(In the abo)108 520.8 R .998 -.15(ve ex)-.15 H(ample,)
+.15 E F0(C\255u)3.038 E F1 .698(is bound to the function)3.448 F F3(uni)
+3.198 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F1(,)A F0(M\255DEL)
+3.878 E F1 .698(is bound to the func-)3.728 F(tion)108 532.8 Q F3
+(backward\255kill\255w)2.758 E(ord)-.1 E F1 2.758(,a)C(nd)-2.758 E F0
+(C\255o)2.598 E F1 .258(is bound to run the macro e)2.938 F .259
+(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108
+544.8 Q(xt \231> output\232 into the line\).)-.15 E .056
+(In the second form,)108 561.6 R F3("k)2.556 E(eyseq")-.1 E F1(:)A F0
+(function\255name).833 E F1(or)2.556 E F0(macr)2.556 E(o)-.45 E F1(,)A
+F3 -.1(ke)2.556 G(yseq).1 E F1(dif)2.555 E .055(fers from)-.25 F F3 -.1
+(ke)2.555 G(yname).1 E F1(abo)2.555 E .355 -.15(ve i)-.15 H 2.555(nt).15
+G .055(hat strings)-2.555 F 1.284(denoting an entire k)108 573.6 R 1.584
+-.15(ey s)-.1 H 1.284(equence may be speci\214ed by placing the sequenc\
+e within double quotes.).15 F(Some)6.284 E .102(GNU Emacs style k)108
+585.6 R .402 -.15(ey e)-.1 H .102(scapes can be used, as in the follo)
+.15 F .102(wing e)-.25 F .101(xample, b)-.15 F .101
+(ut none of the symbolic character)-.2 F(names are recognized.)108 597.6
+Q F4("\\C\255u": universal\255argument)144 614.4 Q
+("\\C\255x\\C\255r": re\255read\255init\255file)144 626.4 Q
+("\\e[11\001": "Function Key 1")144 638.4 Q F1 .314(In this e)108 655.2
+R(xample,)-.15 E F0(C\255u)2.654 E F1 .314(is ag)3.064 F .315
+(ain bound to the function)-.05 F F3(uni)2.815 E -.1(ve)-.1 G
+(rsal\255ar).1 E(gument)-.1 E F1(.)A F0 .315(C\255x C\255r)5.155 F F1
+.315(is bound to the func-)3.545 F(tion)108 667.2 Q F3 -.18(re)2.5 G
+<ad72>.18 E(ead\255init\255\214le)-.18 E F1 2.5(,a)C(nd)-2.5 E F0
+(ESC [ 1 1 \001)3.01 E F1(is bound to insert the te)2.61 E
+(xt \231Function K)-.15 E .3 -.15(ey 1)-.25 H<9a2e>.15 E
+(The full set of GNU Emacs style escape sequences a)108 684 Q -.25(va)
+-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H(equences is).15
+E F3<5c43ad>144 696 Q F1 2.5(Ac)180 696 S(ontrol pre\214x.)-2.5 E
+(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(2)190.955 E 0 Cg
 EP
 %%Page: 3 3
 %%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(are e)108 84 Q 2.5
-(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G
-(ther character in the macro te)-2.5 E(xt, including " and '.)-.15 E/F1
-10/Times-Bold@0 SF(Bash)108 100.8 Q F0(allo)2.93 E .43
-(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429
-(indings to be displayed or modi\214ed with the).15 F F1(bind)2.929 E F0
--.2(bu)2.929 G .429(iltin command.).2 F 1.095
-(The editing mode may be switched during interacti)108 112.8 R 1.395
--.15(ve u)-.25 H 1.095(se by using the).15 F F1<ad6f>3.595 E F0 1.095
-(option to the)3.595 F F1(set)3.595 E F0 -.2(bu)3.595 G 1.095
-(iltin com-).2 F 3.076(mand. Other)108 124.8 R .576
-(programs using this library pro)3.076 F .575(vide similar mechanisms.)
--.15 F(The)5.575 E/F2 10/Times-Italic@0 SF(inputr)3.085 E(c)-.37 E F0
-.575(\214le may be edited and)3.385 F(re-read if a program does not pro)
-108 136.8 Q(vide an)-.15 E 2.5(yo)-.15 G(ther means to incorporate ne)
--2.5 E 2.5(wb)-.25 G(indings.)-2.5 E F1 -.92(Va)87 153.6 S(riables).92 E
-F0 .043(Readline has v)108 165.6 R .043
-(ariables that can be used to further customize its beha)-.25 F(vior)-.2
-E 5.043(.A)-.55 G -.25(va)-2.5 G .043(riable may be set in the).25 F F2
-(inpu-)2.554 E(tr)108 177.6 Q(c)-.37 E F0
-(\214le with a statement of the form)2.81 E F1(set)144 194.4 Q F2
-(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108
-211.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F
-(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79
-(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)
-5.79 E .448(nized v)108 223.2 R .448(ariable names are ignored.)-.25 F
-.448(When a v)5.448 F .448(ariable v)-.25 F .448
-(alue is read, empty or null v)-.25 F .449(alues, "on" \(case-insensi-)
--.25 F(ti)108 235.2 Q -.15(ve)-.25 G .468(\), and "1" are equi).15 F
--.25(va)-.25 G .468(lent to).25 F F1(On)2.968 E F0 5.468(.A)C .468
-(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468
-(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .467(he v)-5.468 F .467
-(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 247.2 S(lues are:)
-.25 E F1(acti)108 264 Q -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)
--.18 E F0 2.729(As)144 276 S .229(tring v)-2.729 F .229
-(ariable that controls the te)-.25 F .229
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF<5c4dad>144 84 Q F1 .747
+(Adding the meta pre\214x or con)180 84 R -.15(ve)-.4 G .747
+(rting the follo).15 F .747(wing character to a meta character)-.25 F
+3.247(,a)-.4 G 3.247(sd)-3.247 G(e-)-3.247 E(scribed belo)180 96 Q 2.5
+(wu)-.25 G(nder)-2.5 E F2 -.25(fo)2.5 G -.18(rc).25 G(e-meta-pr).18 E
+(e\214x)-.18 E F1(.)A F2(\\e)144 108 Q F1(An escape character)180 108 Q
+(.)-.55 E F2(\\\\)144 120 Q F1(Backslash.)180 120 Q F2(\\")144 132 Q F1
+(Literal ", a double quote.)180 132 Q F2<5c08>144 144 Q F1
+(Literal \010, a single quote.)180 144 Q(In addition to the GNU Emacs s\
+tyle escape sequences, a second set of backslash escapes is a)108 160.8
+Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 172.8 Q F1(alert \(bell\))180
+172.8 Q F2(\\b)144 184.8 Q F1(backspace)180 184.8 Q F2(\\d)144 196.8 Q
+F1(delete)180 196.8 Q F2(\\f)144 208.8 Q F1(form feed)180 208.8 Q F2
+(\\n)144 220.8 Q F1(ne)180 220.8 Q(wline)-.25 E F2(\\r)144 232.8 Q F1
+(carriage return)180 232.8 Q F2(\\t)144 244.8 Q F1(horizontal tab)180
+244.8 Q F2(\\v)144 256.8 Q F1 -.15(ve)180 256.8 S(rtical tab).15 E F2
+(\\)144 268.8 Q F0(nnn)A F1(The eight-bit character whose v)180 268.8 Q
+(alue is the octal v)-.25 E(alue)-.25 E F0(nnn)2.5 E F1
+(\(one to three digits\).)2.5 E F2(\\x)144 280.8 Q F0(HH)A F1
+(The eight-bit character whose v)180 280.8 Q(alue is the he)-.25 E
+(xadecimal v)-.15 E(alue)-.25 E F0(HH)2.5 E F1(\(one or tw)2.5 E 2.5(oh)
+-.1 G .3 -.15(ex d)-2.5 H(igits\).).15 E 1.141(When entering the te)108
+297.6 R 1.141(xt of a macro, single or double quotes must be used to in\
+dicate a macro de\214nition.)-.15 F .62(Unquoted te)108 309.6 R .62
+(xt is assumed to be a function name.)-.15 F .62
+(The backslash escapes described abo)5.62 F .92 -.15(ve a)-.15 H .62
+(re e).15 F .62(xpanded in)-.15 F(the macro body)108 321.6 Q 5(.B)-.65 G
+(ackslash quotes an)-5 E 2.5(yo)-.15 G(ther character in the macro te)
+-2.5 E(xt, including " and \010.)-.15 E F2(Bash)108 338.4 Q F1 1.196
+(will display or modify the current)3.696 F F2 -.18(re)3.696 G(adline)
+.18 E F1 -.1(ke)3.696 G 3.696(yb)-.05 G 1.196(indings with the)-3.696 F
+F2(bind)3.696 E F1 -.2(bu)3.697 G 1.197(iltin command.).2 F(The)6.197 E
+F2<ad6f>3.697 E(emacs)108 350.4 Q F1(or)3.22 E F2 .72(\255o vi)3.22 F F1
+.72(options to the)3.22 F F2(set)3.22 E F1 -.2(bu)3.219 G .719
+(iltin change the editing mode during interacti).2 F 1.019 -.15(ve u)
+-.25 H 3.219(se. Other).15 F(programs)3.219 E .706
+(using this library pro)108 362.4 R .706(vide similar mechanisms.)-.15 F
+3.206(Au)5.706 G .706(ser may al)-3.206 F -.1(wa)-.1 G .706(ys edit the)
+.1 F F0(inputr)3.216 E(c)-.37 E F1 .707(\214le and ha)3.517 F -.15(ve)
+-.2 G F2 -.18(re)3.357 G(adline).18 E F1
+(re-read it if a program does not pro)108 374.4 Q(vide an)-.15 E 2.5(yo)
+-.15 G(ther means to incorporate ne)-2.5 E 2.5(wb)-.25 G(indings.)-2.5 E
+F2 -.92(Va)87 391.2 S(riables).92 E(Readline)108 403.2 Q F1 .453(has v)
+2.953 F .452(ariables that can be used to further customize its beha)
+-.25 F(vior)-.2 E 5.452(.A)-.55 G -.25(va)-2.5 G .452
+(riable may be set in the).25 F F0(in-)2.962 E(putr)108 415.2 Q(c)-.37 E
+F1(\214le with a statement of the form)2.81 E F2(set)144 432 Q F0
+(variable\255name value)2.5 E F1 .626(Except where noted,)108 448.8 R F2
+-.18(re)3.127 G(adline).18 E F1 -.25(va)3.127 G .627(riables can tak).25
+F 3.127(et)-.1 G .627(he v)-3.127 F(alues)-.25 E F2(On)3.127 E F1(or)
+3.127 E F2(Off)3.127 E F1 .627(\(without re)3.127 F -.05(ga)-.15 G .627
+(rd to case\).).05 F(Unrecog-)5.627 E .345(nized v)108 460.8 R .345
+(ariable names are ignored.)-.25 F(When)5.345 E F2 -.18(re)2.845 G
+(adline).18 E F1 .345(reads a v)2.845 F .345(ariable v)-.25 F .345
+(alue, empty or null v)-.25 F .345(alues, \231on\232 \(case-)-.25 F
+(insensiti)108 472.8 Q -.15(ve)-.25 G(\), and \2311\232 are equi).15 E
+-.25(va)-.25 G(lent to).25 E F2(On)2.5 E F1 5(.A)C(ll other v)-5 E
+(alues are equi)-.25 E -.25(va)-.25 G(lent to).25 E F2(Off)2.5 E F1(.)A
+(The v)108 489.6 Q(ariables and their def)-.25 E(ault v)-.1 E
+(alues are:)-.25 E F2(acti)108 506.4 Q -.1(ve)-.1 G<ad72>.1 E
+(egion\255start\255color)-.18 E F1 2.729(As)144 518.4 S .229(tring v)
+-2.729 F .229(ariable that controls the te)-.25 F .229
 (xt color and background when displaying the te)-.15 F .23
-(xt in the acti)-.15 F -.15(ve)-.25 G(re)144 288 Q 1.527
-(gion \(see the description of)-.15 F F1(enable\255acti)4.026 E -.1(ve)
--.1 G<ad72>.1 E(egion)-.18 E F0(belo)4.026 E 4.026(w\). This)-.25 F
+(xt in the acti)-.15 F -.15(ve)-.25 G(re)144 530.4 Q 1.527
+(gion \(see the description of)-.15 F F2(enable\255acti)4.026 E -.1(ve)
+-.1 G<ad72>.1 E(egion)-.18 E F1(belo)4.026 E 4.026(w\). This)-.25 F
 1.526(string must not tak)4.026 F 4.026(eu)-.1 G 4.026(pa)-4.026 G -.15
-(ny)-4.026 G(ph)144 300 Q .283
+(ny)-4.026 G(ph)144 542.4 Q .283
 (ysical character positions on the display)-.05 F 2.783(,s)-.65 G 2.784
 (oi)-2.783 G 2.784(ts)-2.784 G .284
 (hould consist only of terminal escape sequences.)-2.784 F .45
-(It is output to the terminal before displaying the te)144 312 R .45
+(It is output to the terminal before displaying the te)144 554.4 R .45
 (xt in the acti)-.15 F .75 -.15(ve r)-.25 H -.15(eg).15 G 2.95
 (ion. This).15 F -.25(va)2.95 G .45(riable is reset to).25 F .378
-(the def)144 324 R .378(ault v)-.1 F .378(alue whene)-.25 F -.15(ve)-.25
-G 2.878(rt).15 G .379(he terminal type changes.)-2.878 F .379(The def)
-5.379 F .379(ault v)-.1 F .379(alue is the string that puts the)-.25 F
-.655(terminal in standout mode, as obtained from the terminal')144 336 R
+(the def)144 566.4 R .378(ault v)-.1 F .378(alue whene)-.25 F -.15(ve)
+-.25 G 2.878(rt).15 G .379(he terminal type changes.)-2.878 F .379
+(The def)5.379 F .379(ault v)-.1 F .379
+(alue is the string that puts the)-.25 F .655
+(terminal in standout mode, as obtained from the terminal')144 578.4 R
 3.154(st)-.55 G .654(erminfo description.)-3.154 F 3.154(As)5.654 G .654
-(ample v)-3.154 F(alue)-.25 E(might be)144 348 Q/F3 10/Courier@0 SF
-("\\e[01;33m")2.5 E F0(.)A F1(acti)108 360 Q -.1(ve)-.1 G<ad72>.1 E
-(egion\255end\255color)-.18 E F0 3.908(As)144 372 S 1.408(tring v)-3.908
-F 1.408(ariable that "undoes" the ef)-.25 F 1.408(fects of)-.25 F F1
-(acti)3.908 E -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18 E F0
-1.409(and restores "normal")3.908 F .216
-(terminal display appearance after displaying te)144 384 R .216
+(ample v)-3.154 F(alue)-.25 E(might be \231\\e[01;33m\232.)144 590.4 Q
+F2(acti)108 602.4 Q -.1(ve)-.1 G<ad72>.1 E(egion\255end\255color)-.18 E
+F1 3.777(As)144 614.4 S 1.277(tring v)-3.777 F 1.277
+(ariable that \231undoes\232 the ef)-.25 F 1.277(fects of)-.25 F F2
+(acti)3.777 E -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18 E F1
+1.278(and restores \231normal\232)3.778 F .216
+(terminal display appearance after displaying te)144 626.4 R .216
 (xt in the acti)-.15 F .516 -.15(ve r)-.25 H -.15(eg).15 G 2.716
 (ion. This).15 F .216(string must not tak)2.716 F 2.716(eu)-.1 G(p)
--2.716 E(an)144 396 Q 3.737(yp)-.15 G -.05(hy)-3.737 G 1.237
+-2.716 E(an)144 638.4 Q 3.737(yp)-.15 G -.05(hy)-3.737 G 1.237
 (sical character positions on the display).05 F 3.737(,s)-.65 G 3.737
 (oi)-3.737 G 3.737(ts)-3.737 G 1.238
 (hould consist only of terminal escape se-)-3.737 F 2.928(quences. It)
-144 408 R .428(is output to the terminal after displaying the te)2.928 F
-.427(xt in the acti)-.15 F .727 -.15(ve r)-.25 H -.15(eg).15 G 2.927
+144 650.4 R .428(is output to the terminal after displaying the te)2.928
+.427(xt in the acti)-.15 F .727 -.15(ve r)-.25 H -.15(eg).15 G 2.927
 (ion. This).15 F -.25(va)2.927 G .427(riable is).25 F .518
-(reset to the def)144 420 R .518(ault v)-.1 F .518(alue whene)-.25 F
+(reset to the def)144 662.4 R .518(ault v)-.1 F .518(alue whene)-.25 F
 -.15(ve)-.25 G 3.018(rt).15 G .518(he terminal type changes.)-3.018 F
 .518(The def)5.518 F .518(ault v)-.1 F .518(alue is the string that)-.25
 F .252(restores the terminal from standout mode, as obtained from the t\
-erminal')144 432 R 2.751(st)-.55 G .251(erminfo description.)-2.751 F(A)
-5.251 E(sample v)144 444 Q(alue might be)-.25 E F3("\\e[0m)2.5 E F0(".)A
-F1(bell\255style \(audible\))108 456 Q F0 .01
-(Controls what happens when readline w)144 468 R .011
-(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F1(none)
-2.511 E F0 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E
-.94(rings the bell.)144 480 R .94(If set to)5.94 F F1(visible)3.44 E F0
-3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va)
--.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A
-(readline attempts to ring the terminal')144 492 Q 2.5(sb)-.55 G(ell.)
--2.5 E F1(bind\255tty\255special\255chars \(On\))108 504 Q F0 .333
-(If set to)144 516 R F1(On)2.833 E F0 .334(\(the def)2.833 F .334
-(ault\), readline attempts to bind the control characters)-.1 F .334
-(treated specially by the)7.834 F -.1(ke)144 528 S(rnel').1 E 2.5(st)
--.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G
-(heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1
-(blink\255matching\255par)108 540 Q(en \(Off\))-.18 E F0 .21(If set to)
-144 552 R F1(On)2.71 E F0 2.71(,r)C .21
-(eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21
-(he cursor to an opening parenthesis when a closing).15 F
-(parenthesis is inserted.)144 564 Q F1(color)108 576 Q
-(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to)
-144 588 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\
-dline displays the common pre\214x of the set of possible)-3.015 F 2.936
-(completions using a dif)144 600 R 2.936(ferent color)-.25 F 7.936(.T)
--.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935
-(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 612 Q F0
-(en)3.076 E .577(vironment v)-.4 F 3.077(ariable. If)-.25 F .577
-(there is a color de\214nition in)3.077 F F1($LS_COLORS)3.077 E F0 .577
-(for the cus-)3.077 F .135(tom suf)144 624 R .135(\214x "readline-color\
-ed-completion-pre\214x", readline uses this color for the common pre\
-\214x in-)-.25 F(stead of its def)144 636 Q(ault.)-.1 E F1(color)108 648
-Q(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 660 R F1(On)4.079 E
-F0 4.079(,r)C 1.579(eadline displays possible completions using dif)
--4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5
-(type. The)144 672 R(color de\214nitions are tak)2.5 E(en from the v)-.1
-E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E
-(ariable.)-.25 E F1(comment\255begin \(`)108 684 Q(`#')-.63 E('\))-.63 E
-F0 .062(The string that is inserted in)144 696 R F1(vi)2.562 E F0 .062
-(mode when the)2.562 F F1(insert\255comment)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 708 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(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(3)190.115 E 0 Cg EP
+erminal')144 674.4 R 2.751(st)-.55 G .251(erminfo description.)-2.751 F
+(A)5.251 E(sample v)144 686.4 Q(alue might be \231\\e[0m\232.)-.25 E F2
+(bell\255style \(audible\))108 698.4 Q F1 1.284
+(Controls what happens when)144 710.4 R F2 -.18(re)3.784 G(adline).18 E
+F1 -.1(wa)3.784 G 1.284(nts to ring the terminal bell.).1 F 1.284
+(If set to)6.284 F F2(none)3.784 E F1(,)A F2 -.18(re)3.784 G(adline).18
+E F1(ne)144 722.4 Q -.15(ve)-.25 G 3.954(rr).15 G 1.454(ings the bell.)
+-3.954 F 1.454(If set to)6.454 F F2(visible)3.954 E F1(,)A F2 -.18(re)
+3.954 G(adline).18 E F1 1.454(uses a visible bell if one is a)3.954 F
+-.25(va)-.2 G 3.953(ilable. If).25 F 1.453(set to)3.953 F
+(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(3)190.955 E 0 Cg
+EP
 %%Page: 4 4
 %%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
-(completion\255display\255width \(\2551\))108 84 Q F0 1.453(The number \
-of screen columns used to display possible matches when performing comp\
-letion.)144 96 R .194(The v)144 108 R .193(alue is ignored if it is les\
-s 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 120 Q(The def)5 E
-(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 132 Q
-(e\255case \(Off\))-.18 E F0(If set to)144 144 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
-(completion\255map\255case \(Off\))108 156 Q F0 .093(If set to)144 168 R
-F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E
-(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093
-(yphens \()-.05 F/F2 10/Times-Italic@0 SF<ad>A F0 2.593(\)a)C .094
-(nd underscores)-2.593 F(\()144 180 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G
-(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E
-.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1
-(completion\255pr)108 192 Q(e\214x\255display\255length \(0\))-.18 E F0
-.829(The length in characters of the common pre\214x of a list of possi\
-ble completions that is displayed)144 204 R 1.274
-(without modi\214cation.)144 216 R 1.274(When set to a v)6.274 F 1.274
-(alue greater than zero, common pre\214x)-.25 F 1.275
-(es longer than this)-.15 F -.25(va)144 228 S(lue are replaced with an \
-ellipsis when displaying possible completions.).25 E F1
-(completion\255query\255items \(100\))108 240 Q F0 .53
-(This determines when the user is queried about vie)144 252 R .529
-(wing the number of possible completions gen-)-.25 F .56(erated by the)
-144 264 R F1(possible\255completions)3.06 E F0 3.06(command. It)3.06 F
-.561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)-3.061 E .561(ger v)
--.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 276 R
-.783(If the number of possible completions is greater than or equal to \
-the v)5.783 F .782(alue of this)-.25 F -.25(va)144 288 S .367
-(riable, readline will ask whether or not the user wishes to vie).25 F
-2.868(wt)-.25 G .368(hem; otherwise the)-2.868 F 2.868(ya)-.15 G .368
-(re simply)-2.868 F(listed on the terminal.)144 300 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
-F1(con)108 312 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)
-144 324 R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F
--.15(ve)-.4 G .613(rt characters with the eighth bit set to an ASCII k)
-.15 F .912 -.15(ey s)-.1 H .612(equence by).15 F 1.315(stripping the ei\
-ghth bit and pre\214xing it with an escape character \(in ef)144 336 R
-1.316(fect, using escape as the)-.25 F F2 .503(meta pr)144 348 R(e\214x)
--.37 E F0 3.003(\). The)B(def)3.003 E .503(ault is)-.1 F F2(On)3.003 E
-F0 3.003(,b)C .503(ut readline will set it to)-3.203 F F2(Of)3.003 E(f)
--.18 E F0 .502(if the locale contains eight-bit char)3.003 F(-)-.2 E
-3.049(acters. This)144 360 R -.25(va)3.049 G .549
-(riable is dependent on the).25 F F1(LC_CTYPE)3.049 E F0 .549
-(locale cate)3.049 F(gory)-.15 E 3.049(,a)-.65 G .55
-(nd may change if the lo-)-3.049 F(cale is changed.)144 372 Q F1
-(disable\255completion \(Off\))108 384 Q F0 .038(If set to)144 396 R F1
-(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038
-(ord completion.)-.1 F .038
-(Completion characters will be inserted into the)5.038 F(line as if the)
-144 408 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
-(.)A F1(echo\255contr)108 420 Q(ol\255characters \(On\))-.18 E F0 1.21
-(When set to)144 432 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211
-(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211
-(upport it, readline echoes a character)-3.711 F
-(corresponding to a signal generated from the k)144 444 Q -.15(ey)-.1 G
-(board.).15 E F1(editing\255mode \(emacs\))108 456 Q F0 .142
-(Controls whether readline be)144 468 R .141(gins with a set of k)-.15 F
-.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0
-(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0
-(can be set to either)144 480 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
-F0(.)A F1(emacs\255mode\255string \(@\))108 492 Q F0 .517(If the)144 504
-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 .622
-(last line of the primary prompt when emacs editing mode is acti)144 516
-R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .621(alue is e)-.25 F
-.621(xpanded lik)-.15 F 3.121(ea)-.1 G -.1(ke)144 528 S 3.339(yb)-.05 G
-.839(inding, so the standard set of meta- and control pre\214x)-3.339 F
-.84(es and backslash escape sequences is)-.15 F -.2(av)144 540 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 552 Q F1(enable\255acti)108 564 Q -.1(ve)-.1 G<ad72>.1 E
-(egion \(On\))-.18 E F0(The)144 576 Q F2(point)3.245 E F0 .746
-(is the current cursor position, and)3.245 F F2(mark)3.246 E F0 .746
-(refers to a sa)3.246 F -.15(ve)-.2 G 3.246(dc).15 G .746
-(ursor position.)-3.246 F .746(The te)5.746 F .746(xt be-)-.15 F .344
-(tween the point and mark is referred to as the)144 588 R F2 -.37(re)
-2.844 G(gion)-.03 E F0 5.344(.W)C .344(hen this v)-5.344 F .344
-(ariable is set to)-.25 F F2(On)2.844 E F0 2.844(,r)C .344(eadline al-)
--2.844 F(lo)144 600 Q .098(ws certain commands to designate the re)-.25
-F .098(gion as)-.15 F F2(active)2.598 E F0 5.098(.W)C .098(hen the re)
--5.098 F .098(gion is acti)-.15 F -.15(ve)-.25 G 2.598(,r).15 G .098
-(eadline high-)-2.598 F .971(lights the te)144 612 R .971(xt in the re)
--.15 F .971(gion using the v)-.15 F .971(alue of the)-.25 F F1(acti)3.47
-E -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18 E F0 3.47(,w)C .97
-(hich def)-3.47 F .97(aults to)-.1 F .484
-(the string that enables the terminal')144 624 R 2.985(ss)-.55 G .485
-(tandout mode.)-2.985 F .485(The acti)5.485 F .785 -.15(ve r)-.25 H -.15
-(eg).15 G .485(ion sho).15 F .485(ws the te)-.25 F .485(xt inserted by)
--.15 F(brack)144 636 Q(eted-paste and an)-.1 E 2.5(ym)-.15 G(atching te)
--2.5 E(xt found by incremental and non-incremental history searches.)
--.15 E F1(enable\255brack)108 648 Q(eted\255paste \(On\))-.1 E F0 .841
-(When set to)144 660 R F1(On)3.341 E F0 3.341(,r)C .841(eadline con\214\
-gures the terminal to insert each paste into the editing b)-3.341 F(uf)
--.2 E .84(fer as a)-.25 F .799(single string of characters, instead of \
-treating each character as if it had been read from the k)144 672 R -.15
-(ey)-.1 G(-).15 E 3.159(board. This)144 684 R(pre)3.159 E -.15(ve)-.25 G
-.659(nts readline from e).15 F -.15(xe)-.15 G .659(cuting an).15 F 3.158
-(ye)-.15 G .658(diting commands bound to k)-3.158 F .958 -.15(ey s)-.1 H
-.658(equences ap-).15 F(pearing in the pasted te)144 696 Q(xt.)-.15 E
-(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(4)190.115 E 0 Cg
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF(audible)144 84 Q F1(,)A F2 -.18(re)
+2.5 G(adline).18 E F1(attempts to ring the terminal')2.5 E 2.5(sb)-.55 G
+(ell.)-2.5 E F2(bind\255tty\255special\255chars \(On\))108 96 Q F1 .515
+(If set to)144 108 R F2(On)3.016 E F1(,)A F2 -.18(re)3.016 G(adline).18
+E F1 .516(attempts to bind the control characters that are treated spec\
+ially by the k)3.016 F(er)-.1 E(-)-.2 E(nel')144 120 Q 3.605(st)-.55 G
+1.105(erminal dri)-3.605 F -.15(ve)-.25 G 3.605(rt).15 G 3.605(ot)-3.605
+G(heir)-3.605 E F2 -.18(re)3.605 G(adline).18 E F1(equi)3.605 E -.25(va)
+-.25 G 3.605(lents. These).25 F -.15(ove)3.605 G 1.105(rride the def).15
+F(ault)-.1 E F2 -.18(re)3.605 G(adline).18 E F1(bindings)3.605 E .858
+(described here.)144 132 R -.8(Ty)5.858 G .858
+(pe \231stty \255a\232 at a).8 F F2(bash)3.359 E F1 .859
+(prompt to see your current terminal settings, including)3.359 F
+(the special control characters \(usually)144 144 Q F2(cchars)2.5 E F1
+(\).)A F2(blink\255matching\255par)108 156 Q(en \(Off\))-.18 E F1 .057
+(If set to)144 168 R F2(On)2.557 E F1(,)A F2 -.18(re)2.557 G(adline).18
+E F1 .057(attempts to brie\215y mo)2.557 F .356 -.15(ve t)-.15 H .056
+(he cursor to an opening parenthesis when a closing).15 F
+(parenthesis is inserted.)144 180 Q F2(color)108 192 Q
+(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F1 .351(If set to)
+144 204 R F2(On)2.852 E F1 2.852(,w)C .352(hen listing completions,)
+-2.852 F F2 -.18(re)2.852 G(adline).18 E F1 .352
+(displays the common pre\214x of the set of possible)2.852 F 2.936
+(completions using a dif)144 216 R 2.936(ferent color)-.25 F 7.936(.T)
+-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.935
+(en from the v)-.1 F 2.935(alue of the)-.25 F F2(LS_COLORS)144 228 Q F1
+(en)3.076 E .577(vironment v)-.4 F 3.077(ariable. If)-.25 F .577
+(there is a color de\214nition in)3.077 F F2($LS_COLORS)3.077 E F1 .577
+(for the cus-)3.077 F 1.176(tom suf)144 240 R 1.176
+(\214x \231readline-colored-completion-pre\214x\232,)-.25 F F2 -.18(re)
+3.676 G(adline).18 E F1 1.176(uses this color for the common pre\214x)
+3.676 F(instead of its def)144 252 Q(ault.)-.1 E F2(color)108 264 Q
+(ed\255stats \(Off\))-.18 E F1 1.392(If set to)144 276 R F2(On)3.893 E
+F1(,)A F2 -.18(re)3.893 G(adline).18 E F1 1.393
+(displays possible completions using dif)3.893 F 1.393
+(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 288 R
+(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)-.25
+E F2(LS_COLORS)2.5 E F1(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F2
+(comment\255begin \()108 300 Q F1<99>A F2(#)A F1<9a>A F2(\))A F1 .477
+(The string that the)144 312 R F2 -.18(re)2.977 G .477
+(adline insert\255comment).18 F F1 .477(command inserts.)2.977 F .477
+(This command is bound to)5.477 F F2(M\255#)2.976 E F1
+(in emacs mode and to)144 324 Q F2(#)2.5 E F1(in vi command mode.)2.5 E
+F2(completion\255display\255width \(\2551\))108 336 Q F1 1.453(The numb\
+er of screen columns used to display possible matches when performing c\
+ompletion.)144 348 R 1.106(The v)144 360 R 1.106(alue is ignored if it \
+is less than 0 or greater than the terminal screen width.)-.25 F 3.606
+(Av)6.106 G 1.106(alue of 0)-3.856 F
+(causes matches to be displayed one per line.)144 372 Q(The def)5 E
+(ault v)-.1 E(alue is \2551.)-.25 E F2(completion\255ignor)108 384 Q
+(e\255case \(Off\))-.18 E F1(If set to)144 396 Q F2(On)2.5 E F1(,)A F2
+-.18(re)2.5 G(adline).18 E F1
+(performs \214lename matching and completion in a case\255insensiti)2.5
+E .3 -.15(ve f)-.25 H(ashion.).05 E F2
+(completion\255map\255case \(Off\))108 408 Q F1 1.573(If set to)144 420
+R F2(On)4.074 E F1 4.074(,a)C(nd)-4.074 E F2(completion\255ignor)4.074 E
+(e\255case)-.18 E F1 1.574(is enabled,)4.074 F F2 -.18(re)4.074 G
+(adline).18 E F1 1.574(treats h)4.074 F 1.574(yphens \()-.05 F F0<ad>A
+F1 4.074(\)a)C 1.574(nd under)-4.074 F(-)-.2 E(scores \()144 432 Q F0(_)
+A F1 2.5(\)a)C 2.5(se)-2.5 G(qui)-2.5 E -.25(va)-.25 G
+(lent when performing case\255insensiti).25 E .3 -.15(ve \214)-.25 H
+(lename matching and completion.).15 E F2(completion\255pr)108 444 Q
+(e\214x\255display\255length \(0\))-.18 E F1 .689(The maximum length in\
+ characters of the common pre\214x of a list of possible completions th\
+at is)144 456 R .243(displayed without modi\214cation.)144 468 R .243
+(When set to a v)5.243 F .243(alue greater than zero,)-.25 F F2 -.18(re)
+2.743 G(adline).18 E F1 .244(replaces common)2.743 F(pre\214x)144 480 Q
+.103(es longer than this v)-.15 F .102
+(alue with an ellipsis when displaying possible completions.)-.25 F .102
+(If a comple-)5.102 F .134(tion be)144 492 R .134
+(gins with a period, and)-.15 F F2(eadline)2.635 E F1 .135
+(is completing \214lenames, it uses three underscores instead of)2.635 F
+(an ellipsis.)144 504 Q F2(completion\255query\255items \(100\))108 516
+Q F1 .53(This determines when the user is queried about vie)144 528 R
+.529(wing the number of possible completions gen-)-.25 F .56
+(erated by the)144 540 R F2(possible\255completions)3.06 E F1 3.06
+(command. It)3.06 F .561(may be set to an)3.061 F 3.061(yi)-.15 G(nte)
+-3.061 E .561(ger v)-.15 F .561(alue greater than or)-.25 F .783
+(equal to zero.)144 552 R .783(If the number of possible completions is\
+ greater than or equal to the v)5.783 F .782(alue of this)-.25 F -.25
+(va)144 564 S(riable,).25 E F2 -.18(re)3.528 G(adline).18 E F1 1.028
+(asks whether or not the user wishes to vie)3.528 F 3.529(wt)-.25 G
+1.029(hem; otherwise)-3.529 F F2 -.18(re)3.529 G(adline).18 E F1(simply)
+3.529 E 1.35(lists them on the terminal.)144 576 R 3.849(Az)6.35 G 1.349
+(ero v)-3.849 F 1.349(alue means)-.25 F F2 -.18(re)3.849 G(adline).18 E
+F1 1.349(should ne)3.849 F -.15(ve)-.25 G 3.849(ra).15 G 1.349(sk; ne)
+-3.849 F -.05(ga)-.15 G(ti).05 E 1.649 -.15(ve v)-.25 H 1.349(alues are)
+-.1 F(treated as zero.)144 588 Q F2(con)108 600 Q -.1(ve)-.4 G
+(rt\255meta \(On\)).1 E F1 .535(If set to)144 612 R F2(On)3.035 E F1(,)A
+F2 -.18(re)3.035 G(adline).18 E F1(con)3.035 E -.15(ve)-.4 G .535
+(rts characters it reads that ha).15 F .835 -.15(ve t)-.2 H .536
+(he eighth bit set to an ASCII k).15 F .836 -.15(ey s)-.1 H(e-).15 E
+.425(quence by clearing the eighth bit and pre\214xing it with an escap\
+e character \(con)144 624 R -.15(ve)-.4 G .425(rting the charac-).15 F
+1.043(ter to ha)144 636 R 1.343 -.15(ve t)-.2 H 1.043
+(he meta pre\214x\).).15 F 1.044(The def)6.043 F 1.044(ault is)-.1 F F0
+(On)3.544 E F1 3.544(,b)C(ut)-3.744 E F2 -.18(re)3.544 G(adline).18 E F1
+1.044(sets it to)3.544 F F0(Of)3.544 E(f)-.18 E F1 1.044
+(if the locale contains)3.544 F .53
+(characters whose encodings may include bytes with the eighth bit set.)
+144 648 R .53(This v)5.53 F .53(ariable is dependent)-.25 F .476(on the)
+144 660 R F2(LC_CTYPE)2.976 E F1 .476(locale cate)2.976 F(gory)-.15 E
+2.976(,a)-.65 G .476(nd may change if the locale changes.)-2.976 F .476
+(This v)5.476 F .476(ariable also af-)-.25 F(fects k)144 672 Q .3 -.15
+(ey b)-.1 H(indings; see the description of).15 E F2 -.25(fo)2.5 G -.18
+(rc).25 G(e\255meta\255pr).18 E(e\214x)-.18 E F1(belo)2.5 E -.65(w.)-.25
+G F2(disable\255completion \(Off\))108 684 Q F1 .709(If set to)144 696 R
+F2(On)3.209 E F1(,)A F2 -.18(re)3.209 G(adline).18 E F1 .709(inhibits w)
+3.209 F .709(ord completion.)-.1 F .708
+(Completion characters are inserted into the line)5.709 F(as if the)144
+708 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F2(self-insert)2.5 E F1(.)A
+(GNU Readline 8.3)72 768 Q(2024 December 30)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
-(enable\255k)108 84 Q(eypad \(Off\))-.1 E F0 .892(When set to)144 96 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 108 Q 2.5(wk)-.25 G -.15(ey)-2.6
-G(s.).15 E F1(enable\255meta\255k)108 120 Q(ey \(On\))-.1 E F0 .64
-(When set to)144 132 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 144 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 156 Q F0(If set to)144 168 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 180 Q(eser)-.18 E -.1
-(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 192 R F1(On)3.052
-E F0 3.052(,t)C .552(he history code attempts to place point at the sam\
-e location on each history line re-)-3.052 F(trie)144 204 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 216 Q F0 .949(Set the maximum number of history entries sa)144 228 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 240 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 252 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 .82(attempt is made to set)144 264 R/F2 10/Times-Italic@0
-SF(history\255size)3.32 E F0 .821(to a non-numeric v)3.321 F .821
-(alue, the maximum number of history en-)-.25 F
-(tries will be set to 500.)144 276 Q F1(horizontal\255scr)108 288 Q
-(oll\255mode \(Off\))-.18 E F0 .449(When set to)144 300 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 312 R(w)-.25 E 2.5(line. This)144 324 R
-(setting is automatically enabled for terminals of height 1.)2.5 E F1
-(input\255meta \(Off\))108 336 Q F0 .367(If set to)144 348 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 360 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 372 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 1.866(eight-bit characters.)144 384 R
-1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F1
-(LC_CTYPE)4.367 E F0 1.867(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65
-G 1.867(nd may)-4.367 F(change if the locale is changed.)144 396 Q F1
-(isear)108 408 Q(ch\255terminators \(`)-.18 E(`C\255[ C\255J')-.63 E
-('\))-.63 E F0 .439(The string of characters that should terminate an i\
-ncremental search without subsequently e)144 420 R -.15(xe)-.15 G(cut-)
-.15 E .934(ing the character as a command.)144 432 R .935(If this v)
-5.935 F .935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15
-G .935(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 444 Q F2
-(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke)
-108 456 S(ymap \(emacs\)).1 E F0 2.323(Set the current readline k)144
-468 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.323(emacs, emacs-standar)4.823 F(d,)-.37 E .781
-(emacs-meta, emacs-ctlx, vi, vi-mo)144 480 R(ve)-.1 E 3.282(,v)-.1 G
-(i-command)-3.282 E F0 3.282(,a)C(nd)-3.282 E F2(vi-insert)3.572 E F0(.)
-.68 E F2(vi)5.782 E F0 .782(is equi)3.282 F -.25(va)-.25 G .782(lent to)
-.25 F F2(vi-command)3.282 E F0(;)A F2(emacs)144 492 Q F0 .683(is equi)
-3.183 F -.25(va)-.25 G .683(lent to).25 F F2(emacs-standar)3.183 E(d)
--.37 E F0 5.682(.T)C .682(he def)-5.682 F .682(ault v)-.1 F .682
-(alue is)-.25 F F2(emacs)3.372 E F0 5.682(.T).27 G .682(he v)-5.682 F
-.682(alue of)-.25 F F1(editing\255mode)3.182 E F0(also af)144 504 Q
-(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)
-108 516 S(yseq\255timeout \(500\)).1 E F0 .367(Speci\214es the duration)
-144 528 R F2 -.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 .668 -.15(ey s)
--.1 H(equence).15 E .525(\(one that can form a complete k)144 540 R .825
--.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E
-3.024(,o)-.4 G 3.024(rc)-3.024 G .524(an tak)-3.024 F 3.024(ea)-.1 G
-.524(dditional in-)-3.024 F .806(put to complete a longer k)144 552 R
-1.106 -.15(ey s)-.1 H 3.306(equence\). If).15 F .806(no input is recei)
-3.306 F -.15(ve)-.25 G 3.306(dw).15 G .807(ithin the timeout,)-3.306 F
-F2 -.37(re)3.307 G(adline).37 E F0(will)3.307 E .907(use the shorter b)
-144 564 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 .906(alue of)-.25 F
-.05(1000 means that)144 576 R F2 -.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 588 R(alue,)-.25
-E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
-(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed)
--2.551 E(to decide which k)144 600 Q .3 -.15(ey s)-.1 H
-(equence to complete.).15 E F1(mark\255dir)108 612 Q(ectories \(On\))
--.18 E F0(If set to)144 624 Q F1(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 636 Q F0(If set to)144
-648 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 660 Q(ed\255dir)-.1 E
-(ectories \(Off\))-.18 E F0 .175(If set to)144 672 R F1(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 684
-Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1
-(match\255hidden\255\214les \(On\))108 696 Q F0 .193(This v)144 708 R
-.193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192
-(auses readline to match \214les whose names be)-2.693 F .192
-(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456
-(\214les\) when performing \214lename completion.)144 720 R .456
-(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
--2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F
-(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(5)190.115 E 0 Cg
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF(echo\255contr)108 84 Q
+(ol\255characters \(On\))-.18 E F1 1.036(When set to)144 96 R F2(On)
+3.536 E F1 3.536(,o)C 3.536(no)-3.536 G 1.037
+(perating systems that indicate the)-3.536 F 3.537(ys)-.15 G 1.037
+(upport it,)-3.537 F F2 -.18(re)3.537 G(adline).18 E F1 1.037
+(echoes a character)3.537 F
+(corresponding to a signal generated from the k)144 108 Q -.15(ey)-.1 G
+(board.).15 E F2(editing\255mode \(emacs\))108 120 Q F1 .014
+(Controls whether)144 132 R F2 -.18(re)2.514 G(adline).18 E F1 .013
+(uses a set of k)2.513 F .313 -.15(ey b)-.1 H .013(indings similar to)
+.15 F F0(Emacs)2.513 E F1(or)2.513 E F0(vi)2.513 E F1(.)A F2
+(editing\255mode)5.013 E F1 .013(can be)2.513 F(set to either)144 144 Q
+F2(emacs)2.5 E F1(or)2.5 E F2(vi)2.5 E F1(.)A F2
+(emacs\255mode\255string \(@\))108 156 Q F1 .517(If the)144 168 R F0
+(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F1 -.25(va)3.017 G .518
+(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 180 R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .621
+(alue is e)-.25 F .621(xpanded lik)-.15 F 3.121(ea)-.1 G -.1(ke)144 192
+S 3.117(yb)-.05 G .617
+(inding, so the standard set of meta- and control- pre\214x)-3.117 F
+.618(es and backslash escape sequences is)-.15 F -.2(av)144 204 S 2.577
+(ailable. The)-.05 F .077(\\1 and \\2 escapes be)2.577 F .076
+(gin and end sequences of non-printing characters, which can be)-.15 F
+(used to embed a terminal control sequence into the mode string.)144 216
+Q F2(enable\255acti)108 228 Q -.1(ve)-.1 G<ad72>.1 E(egion \(On\))-.18 E
+F1 .621(When this v)144 240 R .621(ariable is set to)-.25 F F0(On)3.121
+E F1(,)A F2 -.18(re)3.121 G(adline).18 E F1(allo)3.121 E .621
+(ws certain commands to designate the re)-.25 F .622(gion as)-.15 F F0
+(ac-)3.122 E(tive)144 252 Q F1 5.083(.W)C .083(hen the re)-5.083 F .083
+(gion is acti)-.15 F -.15(ve)-.25 G(,).15 E F2 -.18(re)2.583 G(adline)
+.18 E F1 .083(highlights the te)2.583 F .083(xt in the re)-.15 F .083
+(gion using the v)-.15 F .082(alue of the)-.25 F F2(ac-)2.582 E(ti)144
+264 Q -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18 E F1 -.25(va)
+2.774 G .274(riable, which def).25 F .275
+(aults to the string that enables the terminal')-.1 F 2.775(ss)-.55 G
+(tandout)-2.775 E 3.15(mode. The)144 276 R(acti)3.15 E .95 -.15(ve r)
+-.25 H -.15(eg).15 G .65(ion sho).15 F .649(ws the te)-.25 F .649
+(xt inserted by brack)-.15 F .649(eted-paste and an)-.1 F 3.149(ym)-.15
+G .649(atching te)-3.149 F .649(xt found)-.15 F
+(by incremental and non-incremental history searches.)144 288 Q F2
+(enable\255brack)108 300 Q(eted\255paste \(On\))-.1 E F1 .687
+(When set to)144 312 R F2(On)3.187 E F1(,)A F2 -.18(re)3.187 G(adline)
+.18 E F1 .687
+(con\214gures the terminal to insert each paste into the editing b)3.187
+F(uf)-.2 E .687(fer as a)-.25 F .799(single string of characters, inste\
+ad of treating each character as if it had been read from the k)144 324
+R -.15(ey)-.1 G(-).15 E 2.624(board. This)144 336 R .124(is called)2.624
+F F0(br)2.624 E(ac)-.15 E -.1(ke)-.2 G .124(ted\255paste mode).1 F F1
+2.625(;i)C 2.625(tp)-2.625 G(re)-2.625 E -.15(ve)-.25 G(nts).15 E F2
+-.18(re)2.625 G(adline).18 E F1 .125(from e)2.625 F -.15(xe)-.15 G .125
+(cuting an).15 F 2.625(ye)-.15 G .125(diting com-)-2.625 F
+(mands bound to k)144 348 Q .3 -.15(ey s)-.1 H
+(equences appearing in the pasted te).15 E(xt.)-.15 E F2(enable\255k)108
+360 Q(eypad \(Off\))-.1 E F1 .56(When set to)144 372 R F2(On)3.06 E F1
+(,)A F2 -.18(re)3.06 G(adline).18 E F1 .56
+(tries to enable the application k)3.06 F -.15(ey)-.1 G .56
+(pad when it is called.).15 F .56(Some systems)5.56 F
+(need this to enable the arro)144 384 Q 2.5(wk)-.25 G -.15(ey)-2.6 G(s.)
+.15 E F2(enable\255meta\255k)108 396 Q(ey \(On\))-.1 E F1 .029
+(When set to)144 408 R F2(On)2.529 E F1(,)A F2 -.18(re)2.529 G(adline)
+.18 E F1 .029(tries to enable an)2.529 F 2.529(ym)-.15 G .029
+(eta modi\214er k)-2.529 F .33 -.15(ey t)-.1 H .03
+(he terminal claims to support.).15 F(On)5.03 E(man)144 420 Q 2.985(yt)
+-.15 G .485(erminals, the Meta k)-2.985 F .785 -.15(ey i)-.1 H 2.985(su)
+.15 G .485(sed to send eight-bit characters; this v)-2.985 F .485
+(ariable checks for the ter)-.25 F(-)-.2 E .656(minal capability that i\
+ndicates the terminal can enable and disable a mode that sets the eight\
+h bit)144 432 R(of a character \(0200\) if the Meta k)144 444 Q .3 -.15
+(ey i)-.1 H 2.5(sh).15 G(eld do)-2.5 E
+(wn when the character is typed \(a meta character\).)-.25 E F2
+(expand\255tilde \(Off\))108 456 Q F1(If set to)144 468 Q F2(On)2.5 E F1
+(,)A F2 -.18(re)2.5 G(adline).18 E F1(performs tilde e)2.5 E
+(xpansion when it attempts w)-.15 E(ord completion.)-.1 E F2 -.25(fo)108
+480 S -.18(rc).25 G(e\255meta\255pr).18 E(e\214x \(Off\))-.18 E F1 .482
+(If set to)144 492 R F2(On)2.982 E F1(,)A F2 -.18(re)2.982 G(adline).18
+E F1 .481(modi\214es its beha)2.982 F .481(vior when binding k)-.2 F
+.781 -.15(ey s)-.1 H .481(equences containing \\M- or Meta-).15 F(\(see)
+144 504 Q F2 -.25(Ke)2.784 G 2.784(yB).25 G(indings)-2.784 E F1(abo)
+2.784 E -.15(ve)-.15 G 2.784(\)b).15 G 2.784(yc)-2.784 G(on)-2.784 E
+-.15(ve)-.4 G .284(rting a k).15 F .584 -.15(ey s)-.1 H .284
+(equence of the form \\M\255).15 F F0(C)A F1 .284(or Meta\255)2.784 F F0
+(C)A F1 .285(to the tw)2.784 F(o-)-.1 E .78(character sequence)144 516 R
+F2(ESC)3.28 E F0(C)3.28 E F1 .78(\(adding the meta pre\214x\).)3.28 F
+(If)5.78 E F2 -.25(fo)3.28 G -.18(rc).25 G(e\255meta\255pr).18 E(e\214x)
+-.18 E F1 .78(is set to)3.28 F F2(Off)3.28 E F1 .78(\(the de-)3.28 F -.1
+(fa)144 528 S(ult\),).1 E F2 -.18(re)2.916 G(adline).18 E F1 .416
+(uses the v)2.916 F .416(alue of the)-.25 F F2(con)2.916 E -.1(ve)-.4 G
+(rt\255meta).1 E F1 -.25(va)2.916 G .417
+(riable to determine whether to perform this).25 F(con)144 540 Q -.15
+(ve)-.4 G .095(rsion: if).15 F F2(con)2.595 E -.1(ve)-.4 G(rt\255meta).1
+E F1(is)2.595 E F2(On)2.595 E F1(,)A F2 -.18(re)2.595 G(adline).18 E F1
+.095(performs the con)2.595 F -.15(ve)-.4 G .095(rsion described abo).15
+F -.15(ve)-.15 G 2.595(;i).15 G 2.595(fi)-2.595 G 2.595(ti)-2.595 G(s)
+-2.595 E F2(Off)2.595 E F1(,)A F2 -.18(re)144 552 S(adline).18 E F1(con)
+2.5 E -.15(ve)-.4 G(rts).15 E F0(C)2.5 E F1
+(to a meta character by setting the eighth bit \(0200\).)2.5 E F2
+(history\255pr)108 564 Q(eser)-.18 E -.1(ve)-.1 G(\255point \(Off\)).1 E
+F1 .552(If set to)144 576 R F2(On)3.052 E F1 3.052(,t)C .552(he history\
+ code attempts to place point at the same location on each history line\
+ re-)-3.052 F(trie)144 588 Q -.15(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F2
+(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E F1(or)2.5 E F2(next-history)
+2.5 E F1(.)A F2(history\255size \(unset\))108 600 Q F1 .949
+(Set the maximum number of history entries sa)144 612 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 624 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 .523
+(ber of history entries is not limited.)144 636 R .523(By def)5.523 F
+.523(ault, the number of history entries is not limited.)-.1 F(Set-)
+5.522 E(ting)144 648 Q F0(history\255size)2.5 E F1(to a non-numeric v)
+2.5 E(alue will set the maximum number of history entries to 500.)-.25 E
+F2(horizontal\255scr)108 660 Q(oll\255mode \(Off\))-.18 E F1 .848
+(Setting this v)144 672 R .848(ariable to)-.25 F F2(On)3.348 E F1(mak)
+3.349 E(es)-.1 E F2 -.18(re)3.349 G(adline).18 E F1 .849
+(use a single line for display)3.349 F 3.349(,s)-.65 G .849
+(crolling the input hori-)-3.349 F .068(zontally on a single screen lin\
+e when it becomes longer than the screen width rather than wrapping)144
+684 R(to a ne)144 696 Q 2.5(wl)-.25 G 2.5(ine. This)-2.5 F
+(setting is automatically enabled for terminals of height 1.)2.5 E
+(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(5)190.955 E 0 Cg
 EP
 %%Page: 6 6
 %%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
-(user in the \214lename to be completed.)144 84 Q/F1 10/Times-Bold@0 SF
-(menu\255complete\255display\255pr)108 96 Q(e\214x \(Off\))-.18 E F0
-1.586(If set to)144 108 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF(input\255meta \(Off\))108 84 Q F1
+.371(If set to)144 96 R F2(On)2.871 E F1(,)A F2 -.18(re)2.871 G(adline)
+.18 E F1 .371(enables eight-bit input \(that is, it does not clear the \
+eighth bit in the charac-)2.871 F .718(ters it reads\), re)144 108 R
+-.05(ga)-.15 G .718(rdless of what the terminal claims it can support.)
+.05 F .717(The def)5.717 F .717(ault is)-.1 F F0(Of)3.217 E(f)-.18 E F1
+3.217(,b)C(ut)-3.417 E F2 -.18(re)3.217 G(ad-).18 E(line)144 120 Q F1
+1.246(sets it to)3.746 F F0(On)3.746 E F1 1.246(if the locale contains \
+characters whose encodings may include bytes with the)3.746 F .786
+(eighth bit set.)144 132 R .786(This v)5.786 F .786
+(ariable is dependent on the)-.25 F F2(LC_CTYPE)3.286 E F1 .786
+(locale cate)3.286 F(gory)-.15 E 3.286(,a)-.65 G .786(nd its v)-3.286 F
+.786(alue may)-.25 F(change if the locale changes.)144 144 Q(The name)5
+E F2(meta\255\215ag)2.5 E F1(is a synon)2.5 E(ym for)-.15 E F2
+(input\255meta)2.5 E F1(.)A F2(isear)108 156 Q(ch\255terminators \()-.18
+E F1<99>A F2(C\255[C\255j)A F1<9a>A F2(\))A F1 .439(The string of chara\
+cters that should terminate an incremental search without subsequently \
+e)144 168 R -.15(xe)-.15 G(cut-).15 E .935
+(ing the character as a command.)144 180 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 F0(ESC)3.434 E F1(and)144 192 Q F2
+(C\255j)2.5 E F1(terminate an incremental search.)2.5 E F2 -.1(ke)108
+204 S(ymap \(emacs\)).1 E F1 1.82(Set the current)144 216 R F2 -.18(re)
+4.32 G(adline).18 E F1 -.1(ke)4.32 G 4.32(ymap. The)-.05 F 1.82
+(set of v)4.32 F 1.82(alid k)-.25 F -.15(ey)-.1 G 1.82(map names is).15
+F F0 1.82(emacs, emacs\255standar)4.32 F(d,)-.37 E .042
+(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 228 R F1 2.542(,a)C
+(nd)-2.542 E F0(vi\255insert)2.832 E F1(.).68 E F0(vi)5.042 E F1 .042
+(is equi)2.542 F -.25(va)-.25 G .042(lent to).25 F F0(vi\255command)
+2.541 E F1(;)A F0(emacs)2.541 E F1 .481(is equi)144 240 R -.25(va)-.25 G
+.481(lent to).25 F F0(emacs\255standar)2.981 E(d)-.37 E F1 5.481(.T)C
+.481(he def)-5.481 F .481(ault v)-.1 F .481(alue is)-.25 F F0(emacs)
+2.981 E F1 2.982(;t)C .482(he v)-2.982 F .482(alue of)-.25 F F2
+(editing\255mode)2.982 E F1 .482(also af-)2.982 F(fects the def)144 252
+Q(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F2 -.1(ke)108 264 S
+(yseq\255timeout \(500\)).1 E F1 .235(Speci\214es the duration)144 276 R
+F2 -.18(re)2.735 G(adline).18 E F1 .234(will w)2.735 F .234
+(ait for a character when reading an ambiguous k)-.1 F .534 -.15(ey s)
+-.1 H(equence).15 E .524(\(one that can form a complete k)144 288 R .824
+-.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E
+3.025(,o)-.4 G 3.025(rc)-3.025 G .525(an tak)-3.025 F 3.025(ea)-.1 G
+.525(dditional in-)-3.025 F .18(put to complete a longer k)144 300 R .48
+-.15(ey s)-.1 H 2.679(equence\). If).15 F F2 -.18(re)2.679 G(adline).18
+E F1 .179(does not recei)2.679 F .479 -.15(ve a)-.25 H .479 -.15(ny i)
+.15 H .179(nput within the timeout,).15 F .15(it uses the shorter b)144
+312 R .15(ut complete k)-.2 F .45 -.15(ey s)-.1 H 2.651(equence. The).15
+F -.25(va)2.651 G .151(lue is speci\214ed in milliseconds, so a v).25 F
+.151(alue of)-.25 F 1.35(1000 means that)144 324 R F2 -.18(re)3.85 G
+(adline).18 E F1 1.35(will w)3.85 F 1.35
+(ait one second for additional input.)-.1 F 1.35(If this v)6.35 F 1.35
+(ariable is set to a)-.25 F -.25(va)144 336 S 1.283
+(lue less than or equal to zero, or to a non-numeric v).25 F(alue,)-.25
+E F2 -.18(re)3.783 G(adline).18 E F1 -.1(wa)3.783 G 1.283
+(its until another k).1 F 1.583 -.15(ey i)-.1 H(s).15 E
+(pressed to decide which k)144 348 Q .3 -.15(ey s)-.1 H
+(equence to complete.).15 E F2(mark\255dir)108 360 Q(ectories \(On\))
+-.18 E F1(If set to)144 372 Q F2(On)2.5 E F1 2.5(,c)C
+(ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.)
+.15 E F2(mark\255modi\214ed\255lines \(Off\))108 384 Q F1(If set to)144
+396 Q F2(On)2.5 E F1(,)A F2 -.18(re)2.5 G(adline).18 E F1
+(displays history lines that ha)2.5 E .3 -.15(ve b)-.2 H
+(een modi\214ed with a preceding asterisk \().15 E F2(*)A F1(\).)A F2
+(mark\255symlink)108 408 Q(ed\255dir)-.1 E(ectories \(Off\))-.18 E F1
+.227(If set to)144 420 R F2(On)2.727 E F1 2.727(,c)C .227
+(ompleted names which are symbolic links to directories ha)-2.727 F .527
+-.15(ve a s)-.2 H .226(lash appended, sub-).15 F(ject to the v)144 432 Q
+(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F1(.)A F2
+(match\255hidden\255\214les \(On\))108 444 Q F1 .512(This v)144 456 R
+.513(ariable, when set to)-.25 F F2(On)3.013 E F1 3.013(,f)C(orces)
+-3.013 E F2 -.18(re)3.013 G(adline).18 E F1 .513
+(to match \214les whose names be)3.013 F .513(gin with a \231.)-.15 F
+5.513<9a28>-.7 G(hid-)-5.513 E .737
+(den \214les\) when performing \214lename completion.)144 468 R .737
+(If set to)5.737 F F2(Off)3.237 E F1 3.237(,t)C .736
+(he user must include the leading)-3.237 F<992e>144 480 Q 5<9a69>-.7 G
+2.5(nt)-5 G(he \214lename to be completed.)-2.5 E F2
+(menu\255complete\255display\255pr)108 492 Q(e\214x \(Off\))-.18 E F1
+1.585(If set to)144 504 R F2(On)4.085 E F1 4.085(,m)C 1.585(enu complet\
 ion displays the common pre\214x of the list of possible completions)
--4.086 F(\(which may be empty\) before c)144 120 Q
-(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 132 Q F0
-.506(If set to)144 144 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \
-display characters with the eighth bit set directly rather than as a me\
-ta-)-3.006 F(pre\214x)144 156 Q .885(ed escape sequence.)-.15 F .884
-(The def)5.884 F .884(ault is)-.1 F/F2 10/Times-Italic@0 SF(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 .884(if the locale contains)3.384 F 1.866
-(eight-bit characters.)144 168 R 1.866(This v)6.866 F 1.867
-(ariable is dependent on the)-.25 F F1(LC_CTYPE)4.367 E F0 1.867
-(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65 G 1.867(nd may)-4.367 F
-(change if the locale is changed.)144 180 Q F1
-(page\255completions \(On\))108 192 Q F0 .809(If set to)144 204 R F1(On)
-3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(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 216 Q F1
-(print\255completions\255horizontally \(Off\))108 228 Q F0 .227
-(If set to)144 240 R F1(On)2.727 E F0 2.727(,r)C .227(eadline will disp\
-lay completions with matches sorted horizontally in alphabetical or)
--2.727 F(-)-.2 E(der)144 252 Q 2.5(,r)-.4 G(ather than do)-2.5 E
-(wn the screen.)-.25 E F1 -2.29 -.18(re v)108 264 T
-(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 276 R
-F1(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 288 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 300 S(adline)
-.18 E F0(.)A F1(sho)108 312 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
-F0 .304(This alters the def)144 324 R .304(ault beha)-.1 F .304
-(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(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 336 R(bell.)144 348 Q F1
-(sho)108 360 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
-(This alters the def)144 372 R 5.346(ault beha)-.1 F 5.345
+-4.085 F(\(which may be empty\) before c)144 516 Q
+(ycling through the list.)-.15 E F2(output\255meta \(Off\))108 528 Q F1
+.27(If set to)144 540 R F2(On)2.77 E F1(,)A F2 -.18(re)2.77 G(adline).18
+E F1 .269(displays characters with the eighth bit set directly rather t\
+han as a meta-pre-)2.77 F<8c78>144 552 Q .437(ed escape sequence.)-.15 F
+.437(The def)5.437 F .437(ault is)-.1 F F0(Of)2.937 E(f)-.18 E F1 2.938
+(,b)C(ut)-3.138 E F2 -.18(re)2.938 G(adline).18 E F1 .438(sets it to)
+2.938 F F0(On)2.938 E F1 .438(if the locale contains charac-)2.938 F
+.393(ters whose encodings may include bytes with the eighth bit set.)144
+564 R .393(This v)5.393 F .393(ariable is dependent on the)-.25 F F2
+(LC_CTYPE)144 576 Q F1(locale cate)2.5 E(gory)-.15 E 2.5(,a)-.65 G
+(nd its v)-2.5 E(alue may change if the locale changes.)-.25 E F2
+(page\255completions \(On\))108 588 Q F1 .291(If set to)144 600 R F2(On)
+2.791 E F1(,)A F2 -.18(re)2.791 G(adline).18 E F1 .291
+(uses an internal pager resembling)2.791 F F0(mor)3.171 E(e)-.37 E F1
+.292(\(1\) to display a screenful of possible).18 F
+(completions at a time.)144 612 Q F2(pr)108 624 Q
+(efer\255visible\255bell)-.18 E F1(See)144 636 Q F2(bell\255style)2.5 E
+F1(.)A F2(print\255completions\255horizontally \(Off\))108 648 Q F1 .231
+(If set to)144 660 R F2(On)2.731 E F1(,)A F2 -.18(re)2.731 G(adline).18
+E F1 .231(displays completions with matches sorted horizontally in alph\
+abetical order)2.731 F(,)-.4 E(rather than do)144 672 Q(wn the screen.)
+-.25 E F2 -2.29 -.18(re v)108 684 T(ert\255all\255at\255newline \(Off\))
+.08 E F1 .772(If set to)144 696 R F2(On)3.272 E F1(,)A F2 -.18(re)3.272
+G(adline).18 E F1 .773
+(will undo all changes to history lines before returning when e)3.272 F
+-.15(xe)-.15 G(cuting).15 E F2(ac-)3.273 E(cept\255line)144 708 Q F1
+5.663(.B)C 3.163(yd)-5.663 G(ef)-3.163 E .663
+(ault, history lines may be modi\214ed and retain indi)-.1 F .663
+(vidual undo lists across calls)-.25 F(to)144 720 Q F2 -.18(re)2.5 G
+(adline\(\)).18 E F1(.)A(GNU Readline 8.3)72 768 Q(2024 December 30)
+121.245 E(6)190.955 E 0 Cg EP
+%%Page: 7 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF(sear)108 84 Q(ch\255ignor)-.18 E
+(e\255case \(Off\))-.18 E F1 .102(If set to)144 96 R F2(On)2.603 E F1(,)
+A F2 -.18(re)2.603 G(adline).18 E F1 .103(performs incremental and non-\
+incremental history list searches in a case\255in-)2.603 F(sensiti)144
+108 Q .3 -.15(ve f)-.25 H(ashion.).05 E F2(sho)108 120 Q
+(w\255all\255if\255ambiguous \(Off\))-.1 E F1 .304(This alters the def)
+144 132 R .304(ault beha)-.1 F .304(vior of the completion functions.)
+-.2 F .304(If set to)5.304 F F2(On)2.804 E F1 2.803(,w)C .303
+(ords which ha)-2.903 F .603 -.15(ve m)-.2 H(ore).15 E 1.264(than one p\
+ossible completion cause the matches to be listed immediately instead o\
+f ringing the)144 144 R(bell.)144 156 Q F2(sho)108 168 Q
+(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F1 5.346
+(This alters the def)144 180 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 384 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 192 Q(w\255all\255if\255ambiguous)-.1 E F1 6.69(.I)C
+4.19(fs)-6.69 G 1.691(et to)-4.19 F F2(On)4.191 E F1 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 396 R 3.54
+(ore than one possible completion).15 F 1.04(without an)144 204 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 408 Q F1
-(sho)108 420 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
-(If set to)144 432 R F1(On)3.521 E F0 3.521(,a)C 1.022
+es to be listed immediately instead of ringing the bell.)144 216 Q F2
+(sho)108 228 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F1 1.021
+(If set to)144 240 R F2(On)3.521 E F1 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 444 Q(The mode strings are user)5 E
-(-settable \(e.g.,)-.2 E F2(emacs\255mode\255string)2.5 E F0(\).)A F1
-(skip\255completed\255text \(Off\))108 456 Q F0 .095(If set to)144 468 R
-F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095
+(command, or vi insertion.)144 252 Q(The mode strings are user)5 E
+(-settable \(e.g.,)-.2 E F0(emacs\255mode\255string)2.5 E F1(\).)A F2
+(skip\255completed\255text \(Off\))108 264 Q F1 .095(If set to)144 276 R
+F2(On)2.595 E F1 2.595(,t)C .095(his alters the def)-2.595 F .095
 (ault completion beha)-.1 F .094
-(vior when inserting a single match into the line.)-.2 F(It')144 480 Q
-2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046
-(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1
-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 492 R
-1.394(ord being com-)-.1 F(pleted, so portions of the w)144 504 Q
-(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1
-(vi\255cmd\255mode\255string \(\(cmd\)\))108 516 Q F0 .517(If the)144
-528 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G
+(vior when inserting a single match into the line.)-.2 F(It')144 288 Q
+3.393(so)-.55 G .893(nly acti)-3.393 F 1.193 -.15(ve w)-.25 H .893
+(hen performing completion in the middle of a w).15 F 3.394(ord. If)-.1
+F(enabled,)3.394 E F2 -.18(re)3.394 G(adline).18 E F1(does)3.394 E .283
+(not insert characters from the completion that match characters after \
+point in the w)144 300 R .282(ord being com-)-.1 F
+(pleted, so portions of the w)144 312 Q(ord follo)-.1 E
+(wing the cursor are not duplicated.)-.25 E F2
+(vi\255cmd\255mode\255string \(\(cmd\)\))108 324 Q F1 .517(If the)144
+336 R F0(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F1 -.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 540 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475
-(The v)5.475 F(alue)-.25 E .33(is e)144 552 R .33(xpanded lik)-.15 F
-2.83(eak)-.1 G .63 -.15(ey b)-2.93 H .33
-(inding, so the standard set of meta- and control pre\214x).15 F .33
-(es and backslash es-)-.15 F .245(cape sequences is a)144 564 R -.25(va)
--.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
-.244(gin and end sequences of non-printing)-.15 F(characters, which can\
- be used to embed a terminal control sequence into the mode string.)144
-576 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 588 Q F0 .517
-(If the)144 600 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0
+144 348 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475
+(The v)5.475 F(alue)-.25 E .134(is e)144 360 R .134(xpanded lik)-.15 F
+2.634(eak)-.1 G .434 -.15(ey b)-2.734 H .134
+(inding, so the standard set of meta- and control- pre\214x).15 F .135
+(es and backslash es-)-.15 F .405(cape sequences is a)144 372 R -.25(va)
+-.2 G 2.905(ilable. The).25 F .405(\\1 and \\2 escapes be)2.905 F .404
+(gin and end sequences of non-printing char)-.15 F(-)-.2 E(acters, whic\
+h can be used to embed a terminal control sequence into the mode string\
+.)144 384 Q F2(vi\255ins\255mode\255string \(\(ins\)\))108 396 Q F1 .517
+(If the)144 408 R F0(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F1
 -.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
-612 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 624 S .923(panded lik).15 F
-3.423(eak)-.1 G 1.223 -.15(ey b)-3.523 H .924
-(inding, so the standard set of meta- and control pre\214x).15 F .924
-(es and backslash es-)-.15 F .245(cape sequences is a)144 636 R -.25(va)
--.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
-.244(gin and end sequences of non-printing)-.15 F(characters, which can\
- be used to embed a terminal control sequence into the mode string.)144
-648 Q F1(visible\255stats \(Off\))108 660 Q F0 .846(If set to)144 672 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 684 Q F1(Conditional Constructs)
-87 700.8 Q F0 .05(Readline implements a f)108 712.8 R .05(acility simil\
-ar in spirit to the conditional compilation features of the C preproces\
-sor)-.1 F .096(which allo)108 724.8 R .096(ws k)-.25 F .396 -.15(ey b)
--.1 H .096(indings and v).15 F .096
-(ariable settings to be performed as the result of tests.)-.25 F .097
-(There are four parser)5.096 F(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(6)190.115 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(directi)108 84 Q -.15
-(ve)-.25 G 2.5(su).15 G(sed.)-2.5 E/F1 10/Times-Bold@0 SF($if)108 100.8
-Q F0(The)144 100.8 Q F1($if)2.963 E F0 .463(construct allo)2.963 F .462
-(ws bindings to be made based on the editing mode, the terminal being u\
-sed,)-.25 F .961(or the application using readline.)144 112.8 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 require\
-d to isolate it.)144 124.8 Q F1(mode)144 141.6 Q F0(The)180 141.6 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 153.6 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)
-3.065 F .03(set bindings in the)180 165.6 R/F2 10/Times-Italic@0 SF
-(emacs-standar)2.529 E(d)-.37 E F0(and)2.529 E F2(emacs-ctlx)2.529 E F0
--.1(ke)2.529 G .029(ymaps only if readline is starting out)-.05 F
-(in emacs mode.)180 177.6 Q F1(term)144 194.4 Q F0(The)180 194.4 Q F1
-(term=)3.196 E F0 .696
+420 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 432 S .715(panded lik).15 F
+3.215(eak)-.1 G 1.015 -.15(ey b)-3.315 H .716
+(inding, so the standard set of meta- and control- pre\214x).15 F .716
+(es and backslash es-)-.15 F .405(cape sequences is a)144 444 R -.25(va)
+-.2 G 2.905(ilable. The).25 F .405(\\1 and \\2 escapes be)2.905 F .404
+(gin and end sequences of non-printing char)-.15 F(-)-.2 E(acters, whic\
+h can be used to embed a terminal control sequence into the mode string\
+.)144 456 Q F2(visible\255stats \(Off\))108 468 Q F1 .846(If set to)144
+480 R F2(On)3.346 E F1 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 F0(stat)3.346
+E F1 .846(\(2\) is appended to the \214lename)B
+(when listing possible completions.)144 492 Q F2(Conditional Constructs)
+87 508.8 Q(Readline)108 520.8 Q F1 .494(implements a f)2.994 F .494(aci\
+lity similar in spirit to the conditional compilation features of the C\
+ preproces-)-.1 F .774(sor which allo)108 532.8 R .774(ws k)-.25 F 1.074
+-.15(ey b)-.1 H .774(indings and v).15 F .775
+(ariable settings to be performed as the result of tests.)-.25 F .775
+(There are four)5.775 F(parser directi)108 544.8 Q -.15(ve)-.25 G 2.5
+(sa).15 G -.25(va)-2.7 G(ilable.).25 E F2($if)108 561.6 Q F1(The)144
+561.6 Q F2($if)2.963 E F1 .463(construct allo)2.963 F .462(ws bindings \
+to be made based on the editing mode, the terminal being used,)-.25 F
+.787(or the application using)144 573.6 R F2 -.18(re)3.287 G(adline).18
+E F1 5.787(.T)C .787(he te)-5.787 F .787(xt of the test, after an)-.15 F
+3.288(yc)-.15 G .788(omparison operator)-3.288 F 3.288(,e)-.4 G .788
+(xtends to)-3.438 F(the end of the line; unless otherwise noted, no cha\
+racters are required to isolate it.)144 585.6 Q F2(mode)144 602.4 Q F1
+(The)180 602.4 Q F2(mode=)3.558 E F1 1.058(form of the)3.558 F F2($if)
+3.558 E F1(directi)3.558 E 1.358 -.15(ve i)-.25 H 3.558(su).15 G 1.058
+(sed to test whether)-3.558 F F2 -.18(re)3.557 G(adline).18 E F1 1.057
+(is in emacs or vi)3.557 F 3.065(mode. This)180 614.4 R .565
+(may be used in conjunction with the)3.065 F F2 .565(set k)3.065 F
+(eymap)-.1 E F1 .565(command, for instance, to)3.065 F .518
+(set bindings in the)180 626.4 R F0(emacs\255standar)3.018 E(d)-.37 E F1
+(and)3.018 E F0(emacs\255ctlx)3.018 E F1 -.1(ke)3.017 G .517
+(ymaps only if)-.05 F F2 -.18(re)3.017 G(adline).18 E F1 .517
+(is starting)3.017 F(out in emacs mode.)180 638.4 Q F2(term)144 655.2 Q
+F1(The)180 655.2 Q F2(term=)3.196 E F1 .696
 (form may be used to include terminal-speci\214c k)3.196 F .996 -.15
-(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 206.4 R
+(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 667.2 R
 .954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154
 (sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1
-(wo)3.154 G .654(rd on the right side of).1 F(the)180 218.4 Q F1(=)3.003
-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
-230.4 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.84 E
-F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 247.2 S(rsion).1 E F0
-(The)180 259.2 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 271.2 Q F1
--.1(ve)2.771 G(rsion).1 E F0 -.15(ex)2.771 G .271
-(pands to the current readline v).15 F 2.772(ersion. The)-.15 F .272
-(set of comparison operators in-)2.772 F(cludes)180 283.2 Q F1(=)3.064 E
-F0 3.064(,\()C(and)-3.064 E F1(==)3.064 E F0(\),)A F1(!=)3.064 E F0(,)A
-F1(<=)3.064 E F0(,)A F1(>=)3.064 E F0(,)A F1(<)3.064 E F0 3.064(,a)C(nd)
--3.064 E F1(>)3.064 E F0 5.563(.T)C .563(he v)-5.563 F .563
+(wo)3.154 G .654(rd on the right side of).1 F(the)180 679.2 Q F2(=)3.231
+E F1 .731(is tested ag)3.231 F .732(ainst both the full name of the ter\
+minal and the portion of the terminal)-.05 F .16
+(name before the \214rst)180 691.2 R F2<ad>2.66 E F1 5.159(.T)C .159
+(his allo)-5.159 F(ws)-.25 E F0(xterm)3.429 E F1 .159(to match both)
+2.979 F F0(xterm)3.429 E F1(and)2.979 E F0(xterm\255256color)3.429 E F1
+2.659(,f).73 G(or)-2.659 E(instance.)180 703.2 Q(GNU Readline 8.3)72 768
+Q(2024 December 30)121.245 E(7)190.955 E 0 Cg EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF -.1(ve)144 84 S(rsion).1 E F1(The)
+180 96 Q F2 -.1(ve)2.89 G(rsion).1 E F1 .391
+(test may be used to perform comparisons ag)2.89 F .391
+(ainst speci\214c)-.05 F F2 -.18(re)2.891 G(adline).18 E F1 -.15(ve)
+2.891 G(rsions.).15 E(The)180 108 Q F2 -.1(ve)2.571 G(rsion).1 E F1 -.15
+(ex)2.571 G .071(pands to the current).15 F F2 -.18(re)2.571 G(adline)
+.18 E F1 -.15(ve)2.571 G 2.571(rsion. The).15 F .07
+(set of comparison operators in-)2.571 F(cludes)180 120 Q F2(=)3.063 E
+F1 3.063(,\()C(and)-3.063 E F2(==)3.063 E F1(\),)A F2(!=)3.063 E F1(,)A
+F2(<=)3.063 E F1(,)A F2(>=)3.063 E F1(,)A F2(<)3.063 E F1 3.063(,a)C(nd)
+-3.063 E F2(>)3.064 E F1 5.564(.T)C .564(he v)-5.564 F .564
 (ersion number supplied on the right side)-.15 F .318
-(of the operator consists of a major v)180 295.2 R .318(ersion number)
--.15 F 2.818(,a)-.4 G 2.818(no)-2.818 G .318
-(ptional decimal point, and an op-)-2.818 F .101(tional minor v)180
-307.2 R .101(ersion \(e.g.,)-.15 F F1(7.1)2.601 E F0 .101
-(\). If the minor v)B .1(ersion is omitted, it is assumed to be)-.15 F
-F1(0)2.6 E F0 5.1(.T)C(he)-5.1 E .06
-(operator may be separated from the string)180 319.2 R F1 -.1(ve)2.56 G
-(rsion).1 E F0 .06(and from the v)2.56 F .06(ersion number ar)-.15 F
-(gument)-.18 E(by whitespace.)180 331.2 Q F1(application)144 348 Q F0
-(The)180 360 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
-372 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 384 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 396 R -.15(Fo)5.396 G 2.896(ri).15 G .396
+(of the operator consists of a major v)180 132 R .318(ersion number)-.15
+F 2.818(,a)-.4 G 2.818(no)-2.818 G .318
+(ptional decimal point, and an op-)-2.818 F .46(tional minor v)180 144 R
+.46(ersion \(e.g.,)-.15 F F2(7.1)2.96 E F1 2.96(\). If)B .461
+(the minor v)2.96 F .461(ersion is omitted, it def)-.15 F .461(aults to)
+-.1 F F2(0)2.961 E F1 5.461(.T)C .461(he op-)-5.461 F .83
+(erator may be separated from the string)180 156 R F2 -.1(ve)3.329 G
+(rsion).1 E F1 .829(and from the v)3.329 F .829(ersion number ar)-.15 F
+(gument)-.18 E(by whitespace.)180 168 Q F0(application)144.33 184.8 Q F1
+(The)180 196.8 Q F0(application)3.226 E F1 .726
+(construct is used to include application-speci\214c settings.)3.226 F
+.726(Each program)5.726 F .432(using the)180 208.8 R F2 -.18(re)2.932 G
+(adline).18 E F1 .432(library sets the)2.932 F F0 .431(application name)
+2.932 F F1 2.931(,a)C .431(nd an initialization \214le can test for)
+-2.931 F 2.535(ap)180 220.8 S .035(articular v)-2.535 F 2.535
+(alue. This)-.25 F .036(could be used to bind k)2.535 F .336 -.15(ey s)
+-.1 H .036(equences to functions useful for a spe-).15 F .397
+(ci\214c program.)180 232.8 R -.15(Fo)5.397 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 408 Q
-(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 432 Q F0
-(Bash)2.5 E 2.5(#Q)180 444 S(uote the current or pre)-2.5 E(vious w)-.25
-E(ord)-.1 E("\\C-xq": "\\eb\\"\\ef\\"")180 456 Q F1($endif)180 468 Q F2
-(variable)144 484.8 Q F0(The)180 496.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 508.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 operator by whitespace; the operator may be separated from)
-180 520.8 R .129(the v)180 532.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 544.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 561.6 Q F0(This command, as seen in the pre)
-144 561.6 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0
-(command.)2.5 E F1($else)108 578.4 Q F0(Commands in this branch of the)
-144 578.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
-595.2 Q F0 .357(This directi)144 607.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 619.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 643.2 Q F2(/etc/inputr)5.833 E(c)-.37 E/F3 10.95
-/Times-Bold@0 SF(SEARCHING)72 660 Q F0 1.003(Readline pro)108 672 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 684 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.86 E(emental)-.37 E F0(.).51 E .698
-(Incremental searches be)108 700.8 R .698
+(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 244.8
+Q(vious w)-.25 E(ord in)-.1 E F2(bash)2.5 E F1(:)A/F3 10/Courier-Bold@0
+SF($if)180 261.6 Q/F4 10/Courier@0 SF(Bash)6 E 6(#Q)180 273.6 S
+(uote the current or previous word)-6 E("\\C-xq": "\\eb\\"\\ef\\"")180
+285.6 Q F3($endif)180 297.6 Q F0(variable)144.29 314.4 Q F1(The)180
+326.4 Q F0(variable)3.539 E F1 1.039(construct pro)3.539 F 1.039
+(vides simple equality tests for)-.15 F F2 -.18(re)3.539 G(adline).18 E
+F1 -.25(va)3.539 G 1.039(riables and v).25 F(alues.)-.25 E .08
+(The permitted comparison operators are)180 338.4 R F0(=)2.579 E F1(,)A
+F0(==)2.579 E F1 2.579(,a)C(nd)-2.579 E F0(!=)2.579 E F1 5.079(.T)C .079
+(he v)-5.079 F .079(ariable name must be sepa-)-.25 F .98(rated from th\
+e comparison operator by whitespace; the operator may be separated from)
+180 350.4 R 1.588(the v)180 362.4 R 1.587
+(alue on the right hand side by whitespace.)-.25 F 1.587
+(String and boolean v)6.587 F 1.587(ariables may be)-.25 F 2.5
+(tested. Boolean)180 374.4 R -.25(va)2.5 G(riables must be tested ag).25
+E(ainst the v)-.05 E(alues)-.25 E F0(on)2.5 E F1(and)2.5 E F0(of)2.5 E
+(f)-.18 E F1(.)A F2($else)108 391.2 Q F1(Commands in this branch of the)
+144 391.2 Q F2($if)2.5 E F1(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 F2($endif)108 408 Q
+F1(This command, as seen in the pre)144 408 Q(vious e)-.25 E
+(xample, terminates an)-.15 E F2($if)2.5 E F1(command.)2.5 E F2
+($include)108 424.8 Q F1 .41(This directi)144 436.8 R .71 -.15(ve t)-.25
+H(ak).15 E .41(es a single \214lename as an ar)-.1 F .411
+(gument and reads commands and k)-.18 F .711 -.15(ey b)-.1 H .411
+(indings from).15 F(that \214le.)144 448.8 Q -.15(Fo)5 G 2.5(re).15 G
+(xample, the follo)-2.65 E(wing directi)-.25 E .3 -.15(ve w)-.25 H
+(ould read).05 E F0(/etc/inputr)2.5 E(c)-.37 E F1(:)A F2($include)144
+465.6 Q F0(/etc/inputr)5.833 E(c)-.37 E/F5 10.95/Times-Bold@0 SF
+(SEARCHING)72 482.4 Q F2(Readline)108 494.4 Q F1(pro)3.332 E .832(vides\
+ commands for searching through the command history for lines containin\
+g a speci\214ed)-.15 F 2.5(string. There)108 506.4 R(are tw)2.5 E 2.5
+(os)-.1 G(earch modes:)-2.5 E F0(incr)2.51 E(emental)-.37 E F1(and)3.01
+E F0(non-incr)2.86 E(emental)-.37 E F1(.).51 E .697
+(Incremental searches be)108 523.2 R .697
 (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 712.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 724.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(GNU Readline 8.2)72 768
-Q(2022 September 19)120.405 E(7)190.115 E 0 Cg EP
-%%Page: 8 8
+.698(As each character of the)5.698 F .979(search string is typed,)108
+535.2 R F2 -.18(re)3.479 G(adline).18 E F1 .978(displays the ne)3.478 F
+.978(xt entry from the history matching the string typed so f)-.15 F(ar)
+-.1 E(.)-.55 E .528(An incremental search requires only as man)108 547.2
+R 3.029(yc)-.15 G .529
+(haracters as needed to \214nd the desired history entry)-3.029 F 5.529
+(.W)-.65 G(hen)-5.529 E .517(using emacs editing mode, type)108 559.2 R
+F2(C\255r)3.017 E F1 .517(to search backw)3.017 F .517
+(ard in the history for a particular string.)-.1 F -.8(Ty)5.517 G(ping)
+.8 E F2(C\255s)3.017 E F1 .452(searches forw)108 571.2 R .452
+(ard through the history)-.1 F 5.452(.T)-.65 G .452
+(he characters present in the v)-5.452 F .452(alue of the)-.25 F F2
+(isear)2.953 E(ch-terminators)-.18 E F1 -.25(va)2.953 G(ri-).25 E .747
+(able are used to terminate an incremental search.)108 583.2 R .747
+(If that v)5.747 F .746(ariable has not been assigned a v)-.25 F(alue,)
+-.25 E F0(ESC)3.246 E F1(and)3.246 E F2(C\255j)108 595.2 Q F1 1.776
+(terminate an incremental search.)4.276 F F2(C\255g)6.776 E F1 1.777
+(aborts an incremental search and restores the original line.)4.276 F(W\
+hen the search is terminated, the history entry containing the search s\
+tring becomes the current line.)108 607.2 Q 2.052 -.8(To \214)108 624 T
+.452(nd other matching entries in the history list, type).8 F F2(C\255r)
+2.952 E F1(or)2.952 E F2(C\255s)2.952 E F1 .451(as appropriate.)2.952 F
+.451(This searches backw)5.451 F(ard)-.1 E .134(or forw)108 636 R .134
+(ard in the history for the ne)-.1 F .135
+(xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.135
+(.A)-.55 G .435 -.15(ny o)-5.135 H .135(ther k).15 F .435 -.15(ey s)-.1
+H(equence).15 E .716(bound to a)108 648 R F2 -.18(re)3.216 G(adline).18
+E F1 .715(command terminates the search and e)3.216 F -.15(xe)-.15 G
+.715(cutes that command.).15 F -.15(Fo)5.715 G 3.215(ri).15 G .715
+(nstance, a ne)-3.215 F(wline)-.25 E .601
+(terminates the search and accepts the line, thereby e)108 660 R -.15
+(xe)-.15 G .601(cuting the command from the history list.).15 F 3.102
+(Am)5.602 G -.15(ove)-3.102 G(-).15 E
+(ment command will terminate the search, mak)108 672 Q 2.5(et)-.1 G
+(he last line found the current line, and be)-2.5 E(gin editing.)-.15 E
+F2(Readline)108 688.8 Q F1 1.476
+(remembers the last incremental search string.)3.976 F 1.476(If tw)6.476
+F(o)-.1 E F2(C\255r)3.976 E F1 3.976(sa)C 1.475(re typed without an)
+-3.976 F 3.975(yi)-.15 G(nterv)-3.975 E(ening)-.15 E
+(characters de\214ning a ne)108 700.8 Q 2.5(ws)-.25 G(earch string,)-2.5
+E F2 -.18(re)2.5 G(adline).18 E F1(uses an)2.5 E 2.5(yr)-.15 G
+(emembered search string.)-2.5 E .012(Non-incremental searches read the\
+ entire search string before starting to search for matching history en\
+tries.)108 717.6 R(The search string may be typed by the user or be par\
+t of the contents of the current line.)108 729.6 Q(GNU Readline 8.3)72
+768 Q(2024 December 30)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(backw)108 84 Q .18
-(ard in the history for a particular string, type)-.1 F/F1 10
-/Times-Bold@0 SF(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 96 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 108 R .6(If that v)5.6 F .6
-(ariable has not been assigned a v)-.25 F .6(alue the)-.25 F/F2 10
-/Times-Italic@0 SF(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 120 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 132 Q 2.406 -.8
-(To \214)108 148.8 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 160.8 S .536(rd or forw)
-.1 F .536(ard in the history for the ne)-.1 F .535
-(xt line matching the search string typed so f)-.15 F(ar)-.1 E 5.535(.A)
--.55 G .835 -.15(ny o)-5.535 H .535(ther k).15 F .835 -.15(ey s)-.1 H
-(e-).15 E .384
-(quence bound to a readline command will terminate the search and e)108
-172.8 R -.15(xe)-.15 G .385(cute that command.).15 F -.15(Fo)5.385 G
-2.885(ri).15 G .385(nstance, a)-2.885 F(ne)108 184.8 Q .338
-(wline will terminate the search and accept the line, thereby e)-.25 F
--.15(xe)-.15 G .337(cuting the command from the history list.).15 F
-2.997(Am)108 196.8 S -.15(ove)-2.997 G .497
-(ment command will terminate the search, mak).15 F 2.997(et)-.1 G .497
-(he last line found the current line, and be)-2.997 F .498(gin edit-)
--.15 F(ing.)108 208.8 Q .567(Non-incremental searches read the entire s\
-earch string before starting to search for matching history lines.)108
-225.6 R(The search string may be typed by the user or be part of the co\
-ntents of the current line.)108 237.6 Q/F3 10.95/Times-Bold@0 SF
-(EDITING COMMANDS)72 254.4 Q F0 1.391(The follo)108 266.4 R 1.391
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10.95/Times-Bold@0 SF(EDITING COMMANDS)72 84 Q F1
+1.392(The follo)108 96 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 278.4 R
+3.891(ya)-.15 G(re)-3.891 E 2.5(bound. Command)108 108 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
-295.2 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 307.2 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 324 Q(or Mo)-.25 E(ving)-.1 E
-(beginning\255of\255line \(C\255a\))108 336 Q F0(Mo)144 348 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 360 Q F0(Mo)144 372 Q .3 -.15(ve t)
--.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 384 S
-(rward\255char \(C\255f\)).25 E F0(Mo)144 396 Q .3 -.15(ve f)-.15 H(orw)
-.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108
-408 Q F0(Mo)144 420 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E
-F1 -.25(fo)108 432 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 444
-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 456 Q F1(backward\255w)108 468 Q(ord \(M\255b\))
--.1 E F0(Mo)144 480 Q 1.71 -.15(ve b)-.15 H 1.41
+(equence are unbound by def).15 E(ault.)-.1 E .054(In the follo)108
+124.8 R .054(wing descriptions,)-.25 F F0(point)2.554 E F1 .055
+(refers to the current cursor position, and)2.554 F F0(mark)2.555 E F1
+.055(refers to a cursor position)2.555 F(sa)108 136.8 Q -.15(ve)-.2 G
+2.679(db).15 G 2.679(yt)-2.679 G(he)-2.679 E/F3 10/Times-Bold@0 SF
+(set\255mark)2.679 E F1 2.679(command. The)2.679 F(te)2.679 E .178
+(xt between the point and mark is referred to as the)-.15 F F0 -.37(re)
+2.678 G(gion)-.03 E F1(.)A F3(Read-)5.178 E(line)108 148.8 Q F1 .381
+(has the concept of an)2.881 F F0 .381(active r)2.881 F -.4(eg)-.37 G
+(ion).4 E F1 2.881(:w)C .381(hen the re)-2.881 F .381(gion is acti)-.15
+F -.15(ve)-.25 G(,).15 E F3 -.18(re)2.881 G(adline).18 E F1 .382
+(redisplay highlights the re)2.881 F(gion)-.15 E .74(using the v)108
+160.8 R .74(alue of the)-.25 F F3(acti)3.24 E -.1(ve)-.1 G<ad72>.1 E
+(egion\255start\255color)-.18 E F1 -.25(va)3.24 G 3.24(riable. The).25 F
+F3(enable\255acti)3.24 E -.1(ve)-.1 G<ad72>.1 E(egion)-.18 E F1 -.25(va)
+3.24 G .74(riable turns this).25 F(on and of)108 172.8 Q 2.5(f. Se)-.25
+F -.15(ve)-.25 G(ral commands set the re).15 E(gion to acti)-.15 E -.15
+(ve)-.25 G 2.5(;t).15 G(hose are noted belo)-2.5 E -.65(w.)-.25 G F3
+(Commands f)87 189.6 Q(or Mo)-.25 E(ving)-.1 E
+(beginning\255of\255line \(C\255a\))108 201.6 Q F1(Mo)144 213.6 Q .3
+-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E
+(This may also be bound to the Home k)5 E .3 -.15(ey o)-.1 H 2.5(ns).15
+G(ome k)-2.5 E -.15(ey)-.1 G(boards.).15 E F3
+(end\255of\255line \(C\255e\))108 225.6 Q F1(Mo)144 237.6 Q .3 -.15
+(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E
+(This may also be bound to the End k)5 E .3 -.15(ey o)-.1 H 2.5(ns).15 G
+(ome k)-2.5 E -.15(ey)-.1 G(boards.).15 E F3 -.25(fo)108 249.6 S
+(rward\255char \(C\255f\)).25 E F1(Mo)144 261.6 Q .3 -.15(ve f)-.15 H
+(orw).15 E(ard a character)-.1 E 5(.T)-.55 G
+(his may also be bound to the right arro)-5 E 2.5(wk)-.25 G .3 -.15
+(ey o)-2.6 H 2.5(ns).15 G(ome k)-2.5 E -.15(ey)-.1 G(boards.).15 E F3
+(backward\255char \(C\255b\))108 273.6 Q F1(Mo)144 285.6 Q .3 -.15(ve b)
+-.15 H(ack a character).15 E(.)-.55 E F3 -.25(fo)108 297.6 S(rward\255w)
+.25 E(ord \(M\255f\))-.1 E F1(Mo)144 309.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 321.6 Q F3(backward\255w)108 333.6 Q
+(ord \(M\255b\))-.1 E F1(Mo)144 345.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 492 Q F1(pr)108 504 Q -.15(ev)
--.18 G(ious\255scr).15 E(een\255line)-.18 E F0 .89(Attempt to mo)144 516
-R 1.19 -.15(ve p)-.15 H .89(oint to the same ph).15 F .891
+(characters \(letters and digits\).)144 357.6 Q F3(pr)108 369.6 Q -.15
+(ev)-.18 G(ious\255scr).15 E(een\255line)-.18 E F1 .89(Attempt to mo)144
+381.6 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 1.056(This will not ha)144 528 R 1.356 -.15
-(ve t)-.2 H 1.056(he desired ef).15 F 1.056
-(fect if the current readline line does not tak)-.25 F 3.555(eu)-.1 G
-3.555(pm)-3.555 G 1.055(ore than one)-3.555 F(ph)144 540 Q(ysical line \
-or if point is not greater than the length of the prompt plus the scree\
-n width.)-.05 E F1(next\255scr)108 552 Q(een\255line)-.18 E F0 .637
-(Attempt to mo)144 564 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 .195(will not ha)144 576 R .495 -.15
-(ve t)-.2 H .195(he desired ef).15 F .194
-(fect if the current readline line does not tak)-.25 F 2.694(eu)-.1 G
-2.694(pm)-2.694 G .194(ore than one ph)-2.694 F(ysical)-.05 E .164(line\
- or if the length of the current readline line is not greater than the \
-length of the prompt plus the)144 588 R(screen width.)144 600 Q F1
-(clear\255display \(M\255C\255l\))108 612 Q F0 1.499
-(Clear the screen and, if possible, the terminal')144 624 R 3.999(ss)
--.55 G 1.498(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.998(,t)-.4 G
-1.498(hen redra)-3.998 F 3.998(wt)-.15 G 1.498(he current line,)-3.998 F
-(lea)144 636 Q(ving the current line at the top of the screen.)-.2 E F1
-(clear\255scr)108 648 Q(een \(C\255l\))-.18 E F0 1.36
-(Clear the screen, then redra)144 660 R 3.86(wt)-.15 G 1.36
-(he current line, lea)-3.86 F 1.36
-(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 672 S
-(th an ar).4 E
-(gument, refresh the current line without clearing the screen.)-.18 E F1
--.18(re)108 684 S(draw\255curr).18 E(ent\255line)-.18 E F0
-(Refresh the current line.)144 696 Q(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(8)190.115 E 0 Cg EP
-%%Page: 9 9
+(ysical screen line.)-.05 F .911(This will not ha)144 393.6 R 1.211 -.15
+(ve t)-.2 H .911(he desired ef).15 F .911(fect if the current)-.25 F F3
+-.18(re)3.411 G(adline).18 E F1 .91(line does not tak)3.41 F 3.41(eu)-.1
+G 3.41(pm)-3.41 G .91(ore than one)-3.41 F(ph)144 405.6 Q(ysical line o\
+r if point is not greater than the length of the prompt plus the screen\
+ width.)-.05 E F3(next\255scr)108 417.6 Q(een\255line)-.18 E F1 .481
+(Attempt to mo)144 429.6 R .781 -.15(ve p)-.15 H .481
+(oint to the same ph).15 F .481(ysical screen column on the ne)-.05 F
+.482(xt ph)-.15 F .482(ysical screen line.)-.05 F(This)5.482 E .05
+(will not ha)144 441.6 R .35 -.15(ve t)-.2 H .05(he desired ef).15 F .05
+(fect if the current)-.25 F F3 -.18(re)2.549 G(adline).18 E F1 .049
+(line does not tak)2.549 F 2.549(eu)-.1 G 2.549(pm)-2.549 G .049
+(ore than one ph)-2.549 F(ysical)-.05 E .033
+(line or if the length of the current)144 453.6 R F3 -.18(re)2.533 G
+(adline).18 E F1 .034
+(line is not greater than the length of the prompt plus the)2.533 F
+(screen width.)144 465.6 Q F3(clear\255display \(M\255C\255l\))108 477.6
+Q F1 1.499(Clear the screen and, if possible, the terminal')144 489.6 R
+3.999(ss)-.55 G 1.498(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.998(,t)
+-.4 G 1.498(hen redra)-3.998 F 3.998(wt)-.15 G 1.498(he current line,)
+-3.998 F(lea)144 501.6 Q
+(ving the current line at the top of the screen.)-.2 E F3(clear\255scr)
+108 513.6 Q(een \(C\255l\))-.18 E F1 1.36(Clear the screen, then redra)
+144 525.6 R 3.86(wt)-.15 G 1.36(he current line, lea)-3.86 F 1.36
+(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 537.6
+S(th a numeric ar).4 E
+(gument, refresh the current line without clearing the screen.)-.18 E F3
+-.18(re)108 549.6 S(draw\255curr).18 E(ent\255line)-.18 E F1
+(Refresh the current line.)144 561.6 Q F3(Commands f)87 578.4 Q
+(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108
+590.4 Q(n\))-.15 E F1 .365(Accept the line re)144 602.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 .776
+(history list for future recall with)144 614.4 R F3(add_history\(\))
+3.276 E F1 5.776(.I)C 3.276(ft)-5.776 G .776
+(he line is a modi\214ed history line, restore the)-3.276 F
+(history line to its original state.)144 626.4 Q F3(pr)108 638.4 Q -.15
+(ev)-.18 G(ious\255history \(C\255p\)).15 E F1 1.669(Fetch the pre)144
+650.4 R 1.668(vious command from the history list, mo)-.25 F 1.668
+(ving back in the list.)-.15 F 1.668(This may also be)6.668 F
+(bound to the up arro)144 662.4 Q 2.5(wk)-.25 G .3 -.15(ey o)-2.6 H 2.5
+(ns).15 G(ome k)-2.5 E -.15(ey)-.1 G(boards.).15 E F3
+(next\255history \(C\255n\))108 674.4 Q F1 .214(Fetch the ne)144 686.4 R
+.214(xt command from the history list, mo)-.15 F .214(ving forw)-.15 F
+.214(ard in the list.)-.1 F .214(This may also be bound)5.214 F
+(to the do)144 698.4 Q(wn arro)-.25 E 2.5(wk)-.25 G .3 -.15(ey o)-2.6 H
+2.5(ns).15 G(ome k)-2.5 E -.15(ey)-.1 G(boards.).15 E(GNU Readline 8.3)
+72 768 Q(2024 December 30)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/F1 10/Times-Bold@0 SF
-(Commands f)87 84 Q(or Manipulating the History)-.25 E
-(accept\255line \(Newline, Retur)108 96 Q(n\))-.15 E F0 .365
-(Accept the line re)144 108 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 120 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 132 Q F1(pr)108 144 Q -.15
-(ev)-.18 G(ious\255history \(C\255p\)).15 E F0(Fetch the pre)144 156 Q
-(vious command from the history list, mo)-.25 E(ving back in the list.)
--.15 E F1(next\255history \(C\255n\))108 168 Q F0(Fetch the ne)144 180 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 192
-Q F0(Mo)144 204 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 216 Q F0(Mo)144 228 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
-(operate\255and\255get\255next \(C\255o\))108 240 Q F0 .733(Accept the \
-current line for return to the calling application as if a ne)144 252 R
-.733(wline had been entered, and)-.25 F .367(fetch the ne)144 264 R .367
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF
+(beginning\255of\255history \(M\255<\))108 84 Q F1(Mo)144 96 Q .3 -.15
+(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)-.65 E
+F2(end\255of\255history \(M\255>\))108 108 Q F1(Mo)144 120 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 F2
+(operate\255and\255get\255next \(C\255o\))108 132 Q F1 .733(Accept the \
+current line for return to the calling application as if a ne)144 144 R
+.733(wline had been entered, and)-.25 F .367(fetch the ne)144 156 R .367
 (xt line relati)-.15 F .667 -.15(ve t)-.25 H 2.867(ot).15 G .367
 (he current line from the history for editing.)-2.867 F 2.867(An)5.367 G
 .367(umeric ar)-2.867 F .368(gument, if)-.18 F(supplied, speci\214es th\
-e history entry to use instead of the current line.)144 276 Q F1
-(fetch\255history)108 288 Q F0 -.4(Wi)144 300 S .257(th a numeric ar).4
+e history entry to use instead of the current line.)144 168 Q F2
+(fetch\255history)108 180 Q F1 -.4(Wi)144 192 S .257(th a numeric ar).4
 F .257(gument, fetch that entry from the history list and mak)-.18 F
 2.756(ei)-.1 G 2.756(tt)-2.756 G .256(he current line.)-2.756 F -.4(Wi)
-5.256 G(th-).4 E(out an ar)144 312 Q(gument, mo)-.18 E .3 -.15(ve b)-.15
-H(ack to the \214rst entry in the history list.).15 E F1 -2.29 -.18
-(re v)108 324 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
-1.47(Search backw)144 336 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 348 Q F1 -.25(fo)108 360 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132
-(Search forw)144 372 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 384 Q F1(non\255incr)108
-396 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 408 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 420 S(tring supplied by the user)-2.5 E
-(.)-.55 E F1(non\255incr)108 432 Q(emental\255f)-.18 E(orward\255sear)
--.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 444 R
-1.354(ard through the history using a non-incremental search for a stri\
-ng supplied by the)-.1 F(user)144 456 Q(.)-.55 E F1(history\255sear)108
-468 Q(ch\255backward)-.18 E F0 .95(Search backw)144 480 R .951(ard thro\
-ugh the history for the string of characters between the start of the c\
-urrent)-.1 F .12(line and the current cursor position \(the)144 492 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 504 Q(This is a non-incremental search.)5 E F1
-(history\255sear)108 516 Q(ch\255f)-.18 E(orward)-.25 E F0 .248
-(Search forw)144 528 R .249(ard through the history for the string of c\
-haracters between the start of the current line)-.1 F .036
-(and the point.)144 540 R .036(The search string must match at the be)
+5.256 G(th-).4 E(out an ar)144 204 Q(gument, mo)-.18 E .3 -.15(ve b)-.15
+H(ack to the \214rst entry in the history list.).15 E F2 -2.29 -.18
+(re v)108 216 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F1
+1.312(Search backw)144 228 R 1.312
+(ard starting at the current line and mo)-.1 F 1.312
+(ving \231up\232 through the history as necessary)-.15 F(.)-.65 E .29
+(This is an incremental search.)144 240 R .29(This command sets the re)
+5.29 F .29(gion to the matched te)-.15 F .29(xt and acti)-.15 F -.25(va)
+-.25 G .29(tes the).25 F(re)144 252 Q(gion.)-.15 E F2 -.25(fo)108 264 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F1 .972
+(Search forw)144 276 R .973(ard starting at the current line and mo)-.1
+F .973(ving \231do)-.15 F .973(wn\232 through the history as necessary)
+-.25 F(.)-.65 E .29(This is an incremental search.)144 288 R .29
+(This command sets the re)5.29 F .29(gion to the matched te)-.15 F .29
+(xt and acti)-.15 F -.25(va)-.25 G .29(tes the).25 F(re)144 300 Q(gion.)
+-.15 E F2(non\255incr)108 312 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18
+H(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F1 .164
+(Search backw)144 324 R .164(ard through the history starting at the cu\
+rrent line using a non-incremental search for)-.1 F 2.5(as)144 336 S
+(tring supplied by the user)-2.5 E 5(.T)-.55 G
+(he search string may match an)-5 E(ywhere in a history line.)-.15 E F2
+(non\255incr)108 348 Q(emental\255f)-.18 E(orward\255sear)-.25 E
+(ch\255history \(M\255n\))-.18 E F1 1.354(Search forw)144 360 R 1.354(a\
+rd through the history using a non-incremental search for a string supp\
+lied by the)-.1 F(user)144 372 Q 5(.T)-.55 G
+(he search string may match an)-5 E(ywhere in a history line.)-.15 E F2
+(history\255sear)108 384 Q(ch\255backward)-.18 E F1 .95(Search backw)144
+396 R .951(ard through the history for the string of characters between\
+ the start of the current)-.1 F .34(line and the point.)144 408 R .34
+(The search string must match at the be)5.34 F .34
+(ginning of a history line.)-.15 F .34(This is a non-)5.34 F
+(incremental search.)144 420 Q(This may be bound to the P)5 E(age Up k)
+-.15 E .3 -.15(ey o)-.1 H 2.5(ns).15 G(ome k)-2.5 E -.15(ey)-.1 G
+(boards.).15 E F2(history\255sear)108 432 Q(ch\255f)-.18 E(orward)-.25 E
+F1 .248(Search forw)144 444 R .249(ard through the history for the stri\
+ng of characters between the start of the current line)-.1 F .036
+(and the point.)144 456 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 552 Q F1
-(history\255substring\255sear)108 564 Q(ch\255backward)-.18 E F0 .95
-(Search backw)144 576 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 588 R F2(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 600 R
-(is a non-incremental search.)2.5 E F1(history\255substring\255sear)108
-612 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 624 R .249(a\
-rd through the history for the string of characters between the start o\
-f the current line)-.1 F .319(and the point.)144 636 R .319
+(This is a non-incre-)5.035 F(mental search.)144 468 Q
+(This may be bound to the P)5 E(age Do)-.15 E(wn k)-.25 E .3 -.15(ey o)
+-.1 H 2.5(ns).15 G(ome k)-2.5 E -.15(ey)-.1 G(boards.).15 E F2
+(history\255substring\255sear)108 480 Q(ch\255backward)-.18 E F1 .95
+(Search backw)144 492 R .951(ard through the history for the string of \
+characters between the start of the current)-.1 F .676
+(line and the point.)144 504 R .676(The search string may match an)5.676
+F .676(ywhere in a history line.)-.15 F .675(This is a non-incre-)5.676
+F(mental search.)144 516 Q F2(history\255substring\255sear)108 528 Q
+(ch\255f)-.18 E(orward)-.25 E F1 .248(Search forw)144 540 R .249(ard th\
+rough the history for the string of characters between the start of the\
+ current line)-.1 F .319(and the point.)144 552 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 648 Q F1
-(yank\255nth\255ar)108 660 Q 2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622
-(Insert the \214rst ar)144 672 R .622(gument to the pre)-.18 F .622
+-.15 F .318(This is a non-incremental)5.318 F(search.)144 564 Q F2
+(yank\255nth\255ar)108 576 Q 2.5(g\()-.1 G<4dad43ad7929>-2.5 E F1 .622
+(Insert the \214rst ar)144 588 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 .773(at point.)144 684 R -.4(Wi)5.773 G .773
-(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0 3.273(,i).24 G .773
-(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773(ord from the pre)
+.622(vious line\))-.25 F .773(at point.)144 600 R -.4(Wi)5.773 G .773
+(th an ar).4 F(gument)-.18 E F0(n)3.633 E F1 3.273(,i).24 G .773
+(nsert the)-3.273 F F0(n)3.273 E F1 .773(th w)B .773(ord from the pre)
 -.1 F .773(vious command \(the w)-.25 F .773(ords in the)-.1 F(pre)144
-696 Q .291(vious command be)-.25 F .291(gin with w)-.15 F .291(ord 0\).)
+612 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 708 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 720 Q
-(xpansion had been speci\214ed.)-.15 E(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(9)190.115 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
-(yank\255last\255ar)108 84 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 96 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 108
-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 120 Q .806 -.15(ve b)-.15
-H .507(ack through the history list, inserting the last w).15 F .507
+-.25 H -.18(rg).15 G .291(ument inserts the).18 F F0(n)2.791 E F1 .291
+(th w)B .292(ord from the end of)-.1 F .699(the pre)144 624 R .699
+(vious command.)-.25 F .699(Once the ar)5.699 F(gument)-.18 E F0(n)3.199
+E F1 .698(is computed, this uses the history e)3.199 F .698(xpansion f)
+-.15 F(acili-)-.1 E(ties to e)144 636 Q(xtract the)-.15 E F0(n)2.5 E F1
+(th w)A(ord, as if the \231!)-.1 E F0(n)A F1 2.5<9a68>C(istory e)-2.5 E
+(xpansion had been speci\214ed.)-.15 E F2(yank\255last\255ar)108 648 Q
+2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F1 1.307
+(Insert the last ar)144 660 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 672 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 F2(yank\255nth\255ar)2.704 E(g)-.1 E F1 5.203(.S)C(uccessi)-5.203
+E .503 -.15(ve c)-.25 H .203(alls to).15 F F2(yank\255last\255ar)2.703 E
+(g)-.1 E F1(mo)144 684 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
-.416(to the \214rst call\) of each line in turn.)144 132 R(An)5.416 E
+.416(to the \214rst call\) of each line in turn.)144 696 R(An)5.416 E
 2.916(yn)-.15 G .416(umeric ar)-2.916 F .416
 (gument supplied to these successi)-.18 F .715 -.15(ve c)-.25 H .415
-(alls de-).15 F 1.217(termines the direction to mo)144 144 R 1.518 -.15
+(alls de-).15 F 1.217(termines the direction to mo)144 708 R 1.518 -.15
 (ve t)-.15 H 1.218(hrough the history).15 F 6.218(.A)-.65 G(ne)-2.5 E
 -.05(ga)-.15 G(ti).05 E 1.518 -.15(ve a)-.25 H -.18(rg).15 G 1.218
-(ument switches the direction).18 F .494
-(through the history \(back or forw)144 156 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 168 Q
-(gument, as if the "!$" history e)-.18 E(xpansion had been speci\214ed.)
--.15 E F1(Commands f)87 184.8 Q(or Changing T)-.25 E(ext)-.92 E/F2 10
-/Times-Italic@0 SF(end\255of\255\214le)108 196.8 Q F1
-(\(usually C\255d\))2.5 E F0 .798
-(The character indicating end-of-\214le as set, for e)144 208.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 .167
-(there are no characters on the line, and point is at the be)144 220.8 R
-.167(ginning of the line, readline interprets it as)-.15 F
-(the end of input and returns)144 232.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 244.8 Q F0
-.441(Delete the character at point.)144 256.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 268.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 280.8 Q F0 .553(Delete the character behind the cursor)144 292.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 304.8 Q F1
--.25(fo)108 316.8 S(rward\255backward\255delete\255char).25 E F0 .473
-(Delete the character under the cursor)144 328.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 340.8 Q F1
-(quoted\255insert \(C\255q, C\255v\))108 352.8 Q F0 1.229(Add the ne)144
-364.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 376.8
-Q F0 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F1(tab\255insert \(M-T)108
-388.8 Q(AB\))-.9 E F0(Insert a tab character)144 400.8 Q(.)-.55 E F1
-(self\255insert \(a, b, A, 1, !, ...\))108 412.8 Q F0
-(Insert the character typed.)144 424.8 Q F1
-(transpose\255chars \(C\255t\))108 436.8 Q F0 .321
-(Drag the character before point forw)144 448.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 .372
+(ument switches the direction).18 F .419
+(through the history \(back or forw)144 720 R 2.919(ard\). This)-.1 F
+.419(uses the history e)2.919 F .418(xpansion f)-.15 F .418
+(acilities to e)-.1 F .418(xtract the last)-.15 F(GNU Readline 8.3)72
+768 Q(2024 December 30)121.245 E(10)185.955 E 0 Cg EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E -.1(wo)144 84 S(rd, as if the \231!$\232 history e).1 E
+(xpansion had been speci\214ed.)-.15 E/F2 10/Times-Bold@0 SF(Commands f)
+87 100.8 Q(or Changing T)-.25 E(ext)-.92 E F0(end\255of\255\214le)108
+112.8 Q F2(\(usually C\255d\))2.5 E F1 .651
+(The character indicating end-of-\214le as set, for e)144 124.8 R .651
+(xample, by)-.15 F F0(stty)3.491 E F1 3.151(\(1\). If).32 F .652
+(this character is read when)3.152 F .03
+(there are no characters on the line, and point is at the be)144 136.8 R
+.029(ginning of the line,)-.15 F F2 -.18(re)2.529 G(adline).18 E F1 .029
+(interprets it as)2.529 F(the end of input and returns)144 148.8 Q/F3 9
+/Times-Bold@0 SF(EOF)2.5 E/F4 9/Times-Roman@0 SF(.)A F2
+(delete\255char \(C\255d\))108 160.8 Q F1 .441
+(Delete the character at point.)144 172.8 R .442
+(If this function is bound to the same character as the tty)5.441 F F2
+(EOF)2.942 E F1(char)2.942 E(-)-.2 E(acter)144 184.8 Q 2.539(,a)-.4 G(s)
+-2.539 E F2(C\255d)2.539 E F1 .039(commonly is, see abo)2.539 F .339
+-.15(ve f)-.15 H .039(or the ef).15 F 2.539(fects. This)-.25 F .039
+(may also be bound to the Delete k)2.539 F .338 -.15(ey o)-.1 H(n).15 E
+(some k)144 196.8 Q -.15(ey)-.1 G(boards.).15 E F2
+(backward\255delete\255char \(Rubout\))108 208.8 Q F1 .552
+(Delete the character behind the cursor)144 220.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
+.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 232.8 Q F2 -.25(fo)108 244.8 S
+(rward\255backward\255delete\255char).25 E F1 .474
+(Delete the character under the cursor)144 256.8 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 268.8 Q F2
+(quoted\255insert \(C\255q, C\255v\))108 280.8 Q F1 .778(Add the ne)144
+292.8 R .779(xt character typed to the line v)-.15 F 3.279
+(erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279
+G .779(nsert characters lik)-3.279 F(e)-.1 E F2(C\255q)3.279 E F1 3.279
+(,f)C(or)-3.279 E -.15(ex)144 304.8 S(ample.).15 E F2
+(tab\255insert \(M-T)108 316.8 Q(AB\))-.9 E F1(Insert a tab character)
+144 328.8 Q(.)-.55 E F2(self\255insert \(a, b, A, 1, !,)108 340.8 Q F1
+1.666(...)2.5 G F2(\))-1.666 E F1(Insert the character typed.)144 352.8
+Q F2(brack)108 364.8 Q(eted\255paste\255begin)-.1 E F1 .573
+(This function is intended to be bound to the \231brack)144 376.8 R .572
+(eted paste\232 escape sequence sent by some ter)-.1 F(-)-.2 E .45
+(minals, and such a binding is assigned by def)144 388.8 R 2.95
+(ault. It)-.1 F(allo)2.95 E(ws)-.25 E F2 -.18(re)2.95 G(adline).18 E F1
+.45(to insert the pasted te)2.95 F .45(xt as a)-.15 F .952(single unit \
+without treating each character as if it had been read from the k)144
+400.8 R -.15(ey)-.1 G 3.451(board. The).15 F(pasted)3.451 E 1.118
+(characters are inserted as if each one w)144 412.8 R 1.119(as bound to)
+-.1 F F2(self\255insert)3.619 E F1 1.119(instead of e)3.619 F -.15(xe)
+-.15 G 1.119(cuting an).15 F 3.619(ye)-.15 G(diting)-3.619 E(commands.)
+144 424.8 Q(Brack)144 436.8 Q(eted paste sets the re)-.1 E
+(gion to the inserted te)-.15 E(xt and acti)-.15 E -.25(va)-.25 G
+(tes the re).25 E(gion.)-.15 E F2(transpose\255chars \(C\255t\))108
+448.8 Q F1 .322(Drag the character before point forw)144 460.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 .321(ving point forw)-.15 F .321
+(ard as well.)-.1 F .372
 (If point is at the end of the line, then this transposes the tw)144
-460.8 R 2.872(oc)-.1 G .372(haracters before point.)-2.872 F(Ne)5.372 E
--.05(ga)-.15 G(ti).05 E .672 -.15(ve a)-.25 H -.2(r-).15 G(guments ha)
-144 472.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
-(transpose\255w)108 484.8 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
-496.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 508.8 Q 2.5
-(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 520.8 Q
-(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144
-532.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 544.8 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 556.8 Q
-(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 568.8 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 580.8 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 592.8 Q
-(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144
-604.8 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.974
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 616.8 S(rd, b)
-.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108
-628.8 S(rwrite\255mode).1 E F0 -.8(To)144 640.8 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 652.8 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
+472.8 R 2.872(oc)-.1 G .373(haracters before point.)-2.872 F(Ne)5.373 E
+-.05(ga)-.15 G(ti).05 E .673 -.15(ve a)-.25 H -.2(r-).15 G(guments ha)
+144 484.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F2
+(transpose\255w)108 496.8 Q(ords \(M\255t\))-.1 E F1 .099(Drag the w)144
+508.8 R .099(ord before point past the w)-.1 F .099(ord after point, mo)
+-.1 F .099(ving point past that w)-.15 F .099(ord as well.)-.1 F .098
+(If point)5.098 F
+(is at the end of the line, this transposes the last tw)144 520.8 Q 2.5
+(ow)-.1 G(ords on the line.)-2.6 E F2(upcase\255w)108 532.8 Q
+(ord \(M\255u\))-.1 E F1 1.698(Uppercase the current \(or follo)144
+544.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.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699
+(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 556.8 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F2(do)108 568.8 Q
+(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F1(Lo)144 580.8 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 592.8 S(rd, b).1 E(ut do not mo)-.2 E .3
+-.15(ve p)-.15 H(oint.).15 E F2(capitalize\255w)108 604.8 Q
+(ord \(M\255c\))-.1 E F1 1.974(Capitalize the current \(or follo)144
+616.8 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 628.8 S(rd, b)
+.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F2 -.1(ove)108
+640.8 S(rwrite\255mode).1 E F1 -.8(To)144 652.8 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 664.8 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 .78(This command af)5.781 F
-(fects)-.25 E(only)144 664.8 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 -.37(re)
-4.395 G(adline\(\)).37 E F0 1.895(starts in insert)4.395 F 3.969
-(mode. In)144 676.8 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 688.8 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 700.8
-Q(By def)5 E(ault, this command is unbound.)-.1 E(GNU Readline 8.2)72
-768 Q(2022 September 19)120.405 E(10)185.115 E 0 Cg EP
-%%Page: 11 11
+(gument, switches to insert mode.)-.18 F .781(This command af)5.781 F
+(fects)-.25 E(only)144 676.8 Q F2(emacs)4.395 E F1(mode;)4.395 E F2(vi)
+4.395 E F1 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 F0 -.37(re)
+4.394 G(adline\(\)).37 E F1 1.894(starts in insert)4.394 F(mode.)144
+688.8 Q .092(In o)144 700.8 R -.15(ve)-.15 G .092
+(rwrite mode, characters bound to).15 F F2(self\255insert)2.593 E F1
+.093(replace the te)2.593 F .093(xt at point rather than pushing the)
+-.15 F(te)144 712.8 Q .774(xt to the right.)-.15 F .773
+(Characters bound to)5.774 F F2(backward\255delete\255char)3.273 E F1
+.773(replace the character before point)3.273 F .52(with a space.)144
+724.8 R .52(By def)5.52 F .52(ault, this command is unbound, b)-.1 F .52
+(ut may be bound to the Insert k)-.2 F .82 -.15(ey o)-.1 H 3.02(ns).15 G
+(ome)-3.02 E(GNU Readline 8.3)72 768 Q(2024 December 30)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
-(Killing and Y)87 84 Q(anking)-.85 E(kill\255line \(C\255k\))108 96 Q F0
-(Kill the te)144 108 Q(xt from point to the end of the line.)-.15 E F1
-(backward\255kill\255line \(C\255x Rubout\))108 120 Q F0(Kill backw)144
-132 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
-(unix\255line\255discard \(C\255u\))108 144 Q F0(Kill backw)144 156 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 F1(kill\255whole\255line)108 168 Q F0
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E -.1(ke)144 84 S(yboards.)-.05 E/F2 10/Times-Bold@0 SF
+(Killing and Y)87 100.8 Q(anking)-.85 E(kill\255line \(C\255k\))108
+112.8 Q F1 1.415(Kill the te)144 124.8 R 1.414
+(xt from point to the end of the current line.)-.15 F -.4(Wi)6.414 G
+1.414(th a ne).4 F -.05(ga)-.15 G(ti).05 E 1.714 -.15(ve n)-.25 H 1.414
+(umeric ar).15 F 1.414(gument, kill)-.18 F(backw)144 136.8 Q
+(ard from the cursor to the be)-.1 E(ginning of the line.)-.15 E F2
+(backward\255kill\255line \(C\255x Rubout\))108 148.8 Q F1 .025
+(Kill backw)144 160.8 R .025(ard to the be)-.1 F .025
+(ginning of the current line.)-.15 F -.4(Wi)5.025 G .025(th a ne).4 F
+-.05(ga)-.15 G(ti).05 E .326 -.15(ve n)-.25 H .026(umeric ar).15 F .026
+(gument, kill forw)-.18 F(ard)-.1 E
+(from the cursor to the end of the line.)144 172.8 Q F2
+(unix\255line\255discard \(C\255u\))108 184.8 Q F1(Kill backw)144 196.8
+Q(ard from point to the be)-.1 E(ginning of the line, sa)-.15 E
+(ving the killed te)-.2 E(xt on the kill-ring.)-.15 E F2
+(kill\255whole\255line)108 208.8 Q F1
 (Kill all characters on the current line, no matter where point is.)144
-180 Q F1(kill\255w)108 192 Q(ord \(M\255d\))-.1 E F0 1.308
-(Kill from point the end of the current w)144 204 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 216 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 228 Q
-(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 240 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 252 Q
-(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 264 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
-276 Q F1(unix\255\214lename\255rubout)108 288 Q F0 .167(Kill the w)144
-300 R .166
+220.8 Q F2(kill\255w)108 232.8 Q(ord \(M\255d\))-.1 E F1 .729
+(Kill from point to the end of the current w)144 244.8 R .728
+(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 256.8 S
+(rd boundaries are the same as those used by).8 E F2 -.25(fo)2.5 G
+(rward\255w).25 E(ord)-.1 E F1(.)A F2(backward\255kill\255w)108 268.8 Q
+(ord \(M\255Rubout\))-.1 E F1(Kill the w)144 280.8 Q(ord behind point.)
+-.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F2
+(backward\255w)2.5 E(ord)-.1 E F1(.)A F2(unix\255w)108 292.8 Q
+(ord\255rubout \(C\255w\))-.1 E F1 1.062(Kill the w)144 304.8 R 1.063
+(ord behind point, using white space as a w)-.1 F 1.063(ord boundary)-.1
+F 3.563(,s)-.65 G -.2(av)-3.563 G 1.063(ing the killed te).2 F 1.063
+(xt on the)-.15 F(kill-ring.)144 316.8 Q F2
+(unix\255\214lename\255rubout)108 328.8 Q F1 .266(Kill the w)144 340.8 R
+.266
 (ord behind point, using white space and the slash character as the w)
--.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 312 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 324 Q F0
-(Delete all spaces and tabs around point.)144 336 Q F1(kill\255r)108 348
-Q(egion)-.18 E F0 .301(Kill the te)144 360 R .301
-(xt between the point and)-.15 F/F2 10/Times-Italic@0 SF(mark)2.801 E F0
-(\(sa)2.801 E -.15(ve)-.2 G 2.801(dc).15 G .301(ursor position\).)-2.801
-F .301(This te)5.301 F .301(xt is referred to as the)-.15 F F2 -.37(re)
-2.802 G(-).37 E(gion)144 372 Q F0(.)A F1(copy\255r)108 384 Q
-(egion\255as\255kill)-.18 E F0(Cop)144 396 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 408 Q(ord)-.1 E F0(Cop)144 420 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 432 Q
-(ord)-.1 E F0(.)A F1(copy\255f)108 444 Q(orward\255w)-.25 E(ord)-.1 E F0
-(Cop)144 456 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 468 Q(ord)-.1 E F0(.)A F1
-(yank \(C\255y\))108 480 Q F0 -1(Ya)144 492 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 504 Q F0
-(Rotate the kill ring, and yank the ne)144 516 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 532.8 Q
-(guments)-.1 E(digit\255ar)108 544.8 Q
-(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367
-(Add this digit to the ar)144 556.8 R .367
+-.1 F .265(ord boundaries, sa)-.1 F(v-)-.2 E(ing the killed te)144 352.8
+Q(xt on the kill-ring.)-.15 E F2
+(delete\255horizontal\255space \(M\255\\\))108 364.8 Q F1
+(Delete all spaces and tabs around point.)144 376.8 Q F2(kill\255r)108
+388.8 Q(egion)-.18 E F1(Kill the te)144 400.8 Q(xt in the current re)
+-.15 E(gion.)-.15 E F2(copy\255r)108 412.8 Q(egion\255as\255kill)-.18 E
+F1(Cop)144 424.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 2.5(,s)-.4 G 2.5(oi)-2.5
+G 2.5(tc)-2.5 G(an be yank)-2.5 E(ed immediately)-.1 E(.)-.65 E F2
+(copy\255backward\255w)108 436.8 Q(ord)-.1 E F1(Cop)144 448.8 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 F2(back-)4.801 E(ward\255w)144
+460.8 Q(ord)-.1 E F1(.)A F2(copy\255f)108 472.8 Q(orward\255w)-.25 E
+(ord)-.1 E F1(Cop)144 484.8 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 F2 -.25(fo)4.507 G -.37(r-).25 G
+(ward\255w)144 496.8 Q(ord)-.1 E F1(.)A F2(yank \(C\255y\))108 508.8 Q
+F1 -1(Ya)144 520.8 S(nk the top of the kill ring into the b)1 E(uf)-.2 E
+(fer at point.)-.25 E F2(yank\255pop \(M\255y\))108 532.8 Q F1
+(Rotate the kill ring, and yank the ne)144 544.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 F2(yank)2.5 E
+F1(or)2.5 E F2(yank\255pop)2.5 E F1(.)A F2(Numeric Ar)87 561.6 Q
+(guments)-.1 E(digit\255ar)108 573.6 Q(gument \(M\2550, M\2551,)-.1 E F1
+1.666(...)2.5 G F2 2.5(,M)-1.666 G<adad29>-2.5 E F1 .367
+(Add this digit to the ar)144 585.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 .366(starts a ne)2.867 F -.05
-(ga)-.15 G(-).05 E(ti)144 568.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
-(ument.).18 E F1(uni)108 580.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
-E F0 .778(This is another w)144 592.8 R .779(ay to specify an ar)-.1 F
-3.279(gument. If)-.18 F .779(this command is follo)3.279 F .779
+(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 597.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
+(ument.).18 E F2(uni)108 609.6 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
+E F1 .779(This is another w)144 621.6 R .779(ay to specify an ar)-.1 F
+3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778
 (wed by one or more digits,)-.25 F 1.376
 (optionally with a leading minus sign, those digits de\214ne the ar)144
-604.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-616.8 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
+633.6 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+645.6 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F2(uni)
+3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F1(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 .899(wise ignored.)144 628.8 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 640.8 R .243
-(gument count for the ne)-.18 F .243(xt command is multiplied by four)
--.15 F 5.243(.T)-.55 G(he)-5.243 E(ar)144 652.8 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 664.8 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 681.6 Q(complete \(T)108 693.6 Q(AB\))-.9 E F0 .681
-(Attempt to perform completion on the te)144 705.6 R .681
-(xt before point.)-.15 F .682(The actual completion performed is ap-)
-5.682 F(plication-speci\214c.)144 717.6 Q F1(Bash)6.244 E F0 3.744(,f)C
-1.244(or instance, attempts completion treating the te)-3.744 F 1.244
-(xt as a v)-.15 F 1.243(ariable \(if the)-.25 F(te)144 729.6 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.157 E F0 .657(\), or)B(GNU Readline 8.2)72 768
-Q(2022 September 19)120.405 E(11)185.115 E 0 Cg EP
-%%Page: 12 12
+-.2 F(-)-.2 E .898(wise ignored.)144 657.6 R .898
+(As a special case, if this command is immediately follo)5.898 F .898
+(wed by a character that is)-.25 F 1.23
+(neither a digit nor minus sign, the ar)144 669.6 R 1.23
+(gument count for the ne)-.18 F 1.23(xt command is multiplied by four)
+-.15 F(.)-.55 E .822(The ar)144 681.6 R .822
+(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823
+(cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F
+(gument)-.18 E(count four)144 693.6 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
+(GNU Readline 8.3)72 768 Q(2024 December 30)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 .93
-(command \(including aliases and functions\) in turn.)144 84 R .929
-(If none of these produces a match, \214lename)5.929 F 1.273
-(completion is attempted.)144 96 R/F1 10/Times-Bold@0 SF(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 108 S(riable\
-s, and only attempts \214lename completion under certain circumstances.)
-.25 E F1(possible\255completions \(M\255?\))108 120 Q F0 .262
-(List the possible completions of the te)144 132 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 144 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 156 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 168 Q F0 .783
-(Insert all completions of the te)144 180 R .783(xt before point that w)
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF(Completing)87 84 Q(complete \(T)108
+96 Q(AB\))-.9 E F1 .682(Attempt to perform completion on the te)144 108
+R .681(xt before point.)-.15 F .681
+(The actual completion performed is ap-)5.681 F(plication-speci\214c.)
+144 120 Q F2(Bash)5.485 E F1 2.985(,f)C .486(or instance, attempts prog\
+rammable completion \214rst, otherwise treating)-2.985 F .435(the te)144
+132 R .435(xt as a v)-.15 F .434(ariable \(if the te)-.25 F .434(xt be)
+-.15 F .434(gins with)-.15 F F2($)2.934 E F1 .434
+(\), username \(if the te)B .434(xt be)-.15 F .434(gins with)-.15 F F2
+<01>2.934 E F1 .434(\), hostname \(if)B .087(the te)144 144 R .087
+(xt be)-.15 F .087(gins with)-.15 F F2(@)2.587 E F1 .087
+(\), or command \(including aliases, functions, and b)B .088
+(uiltins\) in turn.)-.2 F .088(If none of)5.088 F .105
+(these produces a match, it f)144 156 R .104
+(alls back to \214lename completion.)-.1 F F2(Gdb)5.104 E F1 2.604(,o)C
+2.604(nt)-2.604 G .104(he other hand, allo)-2.604 F .104(ws com-)-.25 F
+.872(pletion of program functions and v)144 168 R .873
+(ariables, and only attempts \214lename completion under certain)-.25 F
+2.5(circumstances. The)144 180 R(def)2.5 E(ault)-.1 E F2 -.18(re)2.5 G
+(adline).18 E F1(completion is \214lename completion.)2.5 E F2
+(possible\255completions \(M\255?\))108 192 Q F1 .061
+(List the possible completions of the te)144 204 R .061
+(xt before point.)-.15 F .061(When displaying completions,)5.061 F F2
+-.18(re)2.56 G(adline).18 E F1(sets)2.56 E 1.002
+(the number of columns used for display to the v)144 216 R 1.002
+(alue of)-.25 F F2(completion-display-width)3.502 E F1 3.502(,t)C 1.003
+(he v)-3.502 F 1.003(alue of)-.25 F(the en)144 228 Q(vironment v)-.4 E
+(ariable)-.25 E F2(COLUMNS)2.5 E F1 2.5(,o)C 2.5(rt)-2.5 G
+(he screen width, in that order)-2.5 E(.)-.55 E F2
+(insert\255completions \(M\255*\))108 240 Q F1 .783
+(Insert all completions of the te)144 252 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.282 E(pletions)144 192 Q F0(.)A F1
-(menu\255complete)108 204 Q F0 .928(Similar to)144 216 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 228 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 240 R .828
-(At the end of the list of completions, the bell is rung)5.828 F .727
-(\(subject to the setting of)144 252 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 264 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 276 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 288 Q F0 .82(Identical to)144
-300 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 312 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5(nan)
+.15 F F2(possible\255com-)3.282 E(pletions)144 264 Q F1 2.5(,s)C
+(eparated by a space.)-2.5 E F2(menu\255complete)108 276 Q F1 .928
+(Similar to)144 288 R F2(complete)3.428 E F1 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.618
+(possible completions.)144 300 R 1.618(Repeatedly e)6.618 F -.15(xe)-.15
+G(cuting).15 E F2(menu\255complete)4.118 E F1 1.618
+(steps through the list of possible)4.118 F .42
+(completions, inserting each match in turn.)144 312 R .421
+(At the end of the list of completions,)5.421 F F2(menu\255complete)
+2.921 E F1 .22(rings the bell \(subject to the setting of)144 324 R F2
+(bell\255style)2.719 E F1 2.719(\)a)C .219(nd restores the original te)
+-2.719 F 2.719(xt. An)-.15 F(ar)2.719 E .219(gument of)-.18 F F0(n)2.719
+E F1(mo)144 336 Q -.15(ve)-.15 G(s).15 E F0(n)2.546 E F1 .046
+(positions forw)2.546 F .046(ard in the list of matches; a ne)-.1 F -.05
+(ga)-.15 G(ti).05 E .346 -.15(ve a)-.25 H -.18(rg).15 G .046(ument mo)
+.18 F -.15(ve)-.15 G 2.546(sb).15 G(ackw)-2.546 E .046(ard through the)
+-.1 F 2.5(list. This)144 348 R(command is intended to be bound to)2.5 E
+F2 -.9(TA)2.5 G(B).9 E F1 2.5(,b)C(ut is unbound by def)-2.7 E(ault.)-.1
+E F2(menu\255complete\255backward)108 360 Q F1 .82(Identical to)144 372
+R F2(menu\255complete)3.32 E F1 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 F2
+(menu\255complete)144 384 Q F1(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 324 Q F0 .373
-(Deletes the character under the cursor if not at the be)144 336 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 348 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 364.8 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108
-376.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F0(Be)144 388.8 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 400.8 Q 2.5(o\()
--.18 G(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 412.8 Q
+2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F2
+(export\255completions)108 396 Q F1 1.412(Perform completion on the w)
+144 408 R 1.412(ord before point as described abo)-.1 F 1.712 -.15(ve a)
+-.15 H 1.412(nd write the list of possible).15 F .56(completions to)144
+420 R F2 -.18(re)3.06 G(adline).18 E F1 1.66 -.55('s o)D .56
+(utput stream using the follo).55 F .56
+(wing format, writing information on sepa-)-.25 F(rate lines:)144 432 Q
+<83>144 448.8 Q(the number of matches)180 448.8 Q F0(N)2.5 E F1(;)A<83>
+144 460.8 Q(the w)180 460.8 Q(ord being completed;)-.1 E<83>144 472.8 Q
+F0(S)180 472.8 Q F1(:)A F0(E)A F1 3.283(,w)C(here)-3.283 E F0(S)3.283 E
+F1(and)3.284 E F0(E)3.284 E F1 .784(are the start and end of)3.284 F
+.784(fsets of the w)-.25 F .784(ord in the)-.1 F F2 -.18(re)3.284 G
+(adline).18 E F1 .784(line b)3.284 F(uf)-.2 E(fer;)-.25 E(then)180 484.8
+Q<83>144 496.8 Q(each match, one per line)180 496.8 Q .195(If there are\
+ no matches, the \214rst line will be \2310\232, and this command does \
+not print an)144 513.6 R 2.695(yo)-.15 G .195(utput after)-2.695 F(the)
+144 525.6 Q F0(S)2.704 E F1(:)A F0(E)A F1 5.204(.I)C 2.704(ft)-5.204 G
+.204
+(here is only a single match, this prints a single line containing it.)
+-2.704 F .205(If there is more than)5.205 F .233(one match, this prints\
+ the common pre\214x of the matches, which may be empty)144 537.6 R
+2.733(,o)-.65 G 2.732(nt)-2.733 G .232(he \214rst line af-)-2.732 F .097
+(ter the)144 549.6 R F0(S)2.597 E F1(:)A F0(E)A F1 2.598(,t)C .098
+(hen the matches on subsequent lines.)-2.598 F .098(In this case,)5.098
+F F0(N)2.598 E F1 .098(will include the \214rst line with the)2.598 F
+(common pre\214x.)144 561.6 Q .482(The user or application should be ab\
+le to accommodate the possibility of a blank line.)144 578.4 R .481
+(The intent)5.481 F .844(is that the user or application reads)144 590.4
+R F0(N)3.344 E F1 .844(lines after the line containing)3.344 F F0(S)
+3.345 E F1(:)A F0(E)A F1 .845(to obtain the match list.)3.345 F
+(This command is unbound by def)144 602.4 Q(ault.)-.1 E F2
+(delete\255char\255or\255list)108 619.2 Q F1 .234
+(Deletes the character under the cursor if not at the be)144 631.2 R
+.234(ginning or end of the line \(lik)-.15 F(e)-.1 E F2(delete\255char)
+2.734 E F1(\).)A .305(At the end of the line, it beha)144 643.2 R -.15
+(ve)-.2 G 2.805(si).15 G .305(dentically to)-2.805 F F2
+(possible\255completions)2.805 E F1 5.305(.T)C .305
+(his command is unbound)-5.305 F(by def)144 655.2 Q(ault.)-.1 E F2 -.25
+(Ke)87 672 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108 684 Q
+2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F1(Be)144 696 Q(gin sa)-.15 E
 (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 424.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 436.8 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 448.8 Q -.15(ey)-.1 G(board.).15 E F1
-(print\255last\255kbd\255macr)108 460.8 Q 2.5(o\()-.18 G(\))-2.5 E F0
-(Print the last k)144 472.8 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 489.6 Q -.18(re)108
-501.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 513.6 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
+(board macro.).15 E(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E
+(13)185.955 E 0 Cg EP
+%%Page: 14 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF(end\255kbd\255macr)108 84 Q 2.5
+(o\()-.18 G(C\255x \))-2.5 E(\)).833 E F1(Stop sa)144 96 Q
+(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
+(board macro and store the de\214nition.).15 E F2
+(call\255last\255kbd\255macr)108 108 Q 2.5(o\()-.18 G(C\255x e\))-2.5 E
+F1(Re-e)144 120 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 appea\
+r as if).15 F(typed at the k)144 132 Q -.15(ey)-.1 G(board.).15 E F2
+(print\255last\255kbd\255macr)108 144 Q 2.5(o\()-.18 G(\))-2.5 E F1
+(Print the last k)144 156 Q -.15(ey)-.1 G
+(board macro de\214ned in a format suitable for the).15 E F0(inputr)2.5
+E(c)-.37 E F1(\214le.)2.5 E F2(Miscellaneous)87 172.8 Q -.18(re)108
+184.8 S<ad72>.18 E(ead\255init\255\214le \(C\255x C\255r\))-.18 E F1
+1.776(Read in the contents of the)144 196.8 R F0(inputr)4.276 E(c)-.37 E
+F1 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
-525.6 Q F1(abort \(C\255g\))108 537.6 Q F0 3.249
-(Abort the current editing command and ring the terminal')144 549.6 R
-5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1
-(bell\255style)144 561.6 Q F0(\).)A F1(do\255lo)108 573.6 Q(wer)-.1 E
-(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F4(x)A F1 2.5(,.)
-C(..\))-2.5 E F0 1.738(If the meta\214ed character)144 585.6 R F4(x)
-4.238 E F0 1.739
+208.8 Q F2(abort \(C\255g\))108 220.8 Q F1 3.249
+(Abort the current editing command and ring the terminal')144 232.8 R
+5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F2
+(bell\255style)144 244.8 Q F1(\).)A F2(do\255lo)108 256.8 Q(wer)-.1 E
+(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F0(x)A F2(,)A F1
+1.666(...)2.5 G F2(\))-1.666 E F1 1.738(If the meta\214ed character)144
+268.8 R F0(x)4.238 E F1 1.739
 (is uppercase, run the command that is bound to the corresponding)4.238
-F(meta\214ed lo)144 597.6 Q(wercase character)-.25 E 5(.T)-.55 G
-(he beha)-5 E(vior is unde\214ned if)-.2 E F4(x)2.5 E F0(is already lo)
-2.5 E(wercase.)-.25 E F1(pr)108 609.6 Q(e\214x\255meta \(ESC\))-.18 E F0
-(Metafy the ne)144 621.6 Q(xt character typed.)-.15 E F2(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 633.6 Q F0
-(Incremental undo, separately remembered for each line.)144 645.6 Q F1
--2.29 -.18(re v)108 657.6 T(ert\255line \(M\255r\)).08 E F0 .231
-(Undo all changes made to this line.)144 669.6 R .231(This is lik)5.231
-F 2.731(ee)-.1 G -.15(xe)-2.881 G .23(cuting the).15 F F1(undo)2.73 E F0
+F(meta\214ed lo)144 280.8 Q(wercase character)-.25 E 5(.T)-.55 G
+(he beha)-5 E(vior is unde\214ned if)-.2 E F0(x)2.5 E F1(is already lo)
+2.5 E(wercase.)-.25 E F2(pr)108 292.8 Q(e\214x\255meta \(ESC\))-.18 E F1
+(Metafy the ne)144 304.8 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0
+SF(ESC)5 E F2(f)2.25 E F1(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2
+(Meta\255f)2.5 E F1(.)A F2(undo \(C\255_, C\255x C\255u\))108 316.8 Q F1
+(Incremental undo, separately remembered for each line.)144 328.8 Q F2
+-2.29 -.18(re v)108 340.8 T(ert\255line \(M\255r\)).08 E F1 .231
+(Undo all changes made to this line.)144 352.8 R .231(This is lik)5.231
+F 2.731(ee)-.1 G -.15(xe)-2.881 G .23(cuting the).15 F F2(undo)2.73 E F1
 .23(command enough times to re-)2.73 F
-(turn the line to its initial state.)144 681.6 Q F1
-(tilde\255expand \(M\255&\))108 693.6 Q F0(Perform tilde e)144 705.6 Q
-(xpansion on the current w)-.15 E(ord.)-.1 E(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(12)185.115 E 0 Cg EP
-%%Page: 13 13
+(turn the line to its initial state.)144 364.8 Q F2
+(tilde\255expand \(M\255~\))108 376.8 Q F1(Perform tilde e)144 388.8 Q
+(xpansion on the current w)-.15 E(ord.)-.1 E F2
+(set\255mark \(C\255@, M\255<space>\))108 400.8 Q F1
+(Set the mark to the point.)144 412.8 Q(If a numeric ar)5 E
+(gument is supplied, set the mark to that position.)-.18 E F2
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 424.8 Q F1(Sw)
+144 436.8 Q .871(ap the point with the mark.)-.1 F .871
+(Set the current cursor position to the sa)5.871 F -.15(ve)-.2 G 3.371
+(dp).15 G .872(osition, then set the)-3.371 F
+(mark to the old cursor position.)144 448.8 Q F2(character\255sear)108
+460.8 Q(ch \(C\255]\))-.18 E F1 1.101(Read a character and mo)144 472.8
+R 1.401 -.15(ve p)-.15 H 1.101(oint to the ne).15 F 1.101
+(xt occurrence of that character)-.15 F 6.1(.A)-.55 G(ne)-2.5 E -.05(ga)
+-.15 G(ti).05 E 1.4 -.15(ve a)-.25 H -.18(rg).15 G(ument).18 E
+(searches for pre)144 484.8 Q(vious occurrences.)-.25 E F2
+(character\255sear)108 496.8 Q(ch\255backward \(M\255C\255]\))-.18 E F1
+1.07(Read a character and mo)144 508.8 R 1.37 -.15(ve p)-.15 H 1.071
+(oint to the pre).15 F 1.071(vious occurrence of that character)-.25 F
+6.071(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E 1.371 -.15(ve a)-.25 H
+-.18(rg).15 G(u-).18 E(ment searches for subsequent occurrences.)144
+520.8 Q F2(skip\255csi\255sequence)108 532.8 Q F1 1.827
+(Read enough characters to consume a multi-k)144 544.8 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 .344(Home and End.)144 556.8 R
+.344(CSI sequences be)5.344 F .345
+(gin with a Control Sequence Indicator \(CSI\), usually)-.15 F F0 .345
+(ESC [)3.355 F F1 5.345(.I).52 G(f)-5.345 E 1.437
+(this sequence is bound to \231\\e[\232, k)144 568.8 R -.15(ey)-.1 G
+3.937(sp).15 G 1.437(roducing CSI sequences ha)-3.937 F 1.737 -.15(ve n)
+-.2 H 3.937(oe).15 G -.25(ff)-3.937 G 1.437(ect unless e).25 F
+(xplicitly)-.15 E .296(bound to a)144 580.8 R F2 -.18(re)2.796 G(adline)
+.18 E F1 .297
+(command, instead of inserting stray characters into the editing b)2.796
+F(uf)-.2 E(fer)-.25 E 5.297(.T)-.55 G .297(his is)-5.297 F
+(unbound by def)144 592.8 Q(ault, b)-.1 E(ut usually bound to)-.2 E F0
+(ESC [)3.01 E F1(.).52 E F2(insert\255comment \(M\255#\))108 604.8 Q F1
+-.4(Wi)144 616.8 S .533(thout a numeric ar).4 F .533
+(gument, insert the v)-.18 F .533(alue of the)-.25 F F2 -.18(re)3.033 G
+.533(adline comment\255begin).18 F F1 -.25(va)3.033 G .532
+(riable at the be-).25 F .791(ginning of the current line.)144 628.8 R
+.791(If a numeric ar)5.791 F .791
+(gument is supplied, this command acts as a toggle: if)-.18 F .864
+(the characters at the be)144 640.8 R .864
+(ginning of the line do not match the v)-.15 F .863(alue of)-.25 F F2
+(comment\255begin)3.363 E F1 3.363(,i)C .863(nsert the)-3.363 F -.25(va)
+144 652.8 S .304(lue; otherwise delete the characters in).25 F F2
+(comment-begin)2.804 E F1 .304(from the be)2.804 F .305
+(ginning of the line.)-.15 F .305(In either)5.305 F .948
+(case, the line is accepted as if a ne)144 664.8 R .947
+(wline had been typed.)-.25 F .947(The def)5.947 F .947(ault v)-.1 F
+.947(alue of)-.25 F F2(comment\255begin)3.447 E F1 .362
+(causes this command to mak)144 676.8 R 2.862(et)-.1 G .362
+(he current line a shell comment.)-2.862 F .363(If a numeric ar)5.363 F
+.363(gument causes the)-.18 F(comment character to be remo)144 688.8 Q
+-.15(ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G
+(cuted by the shell.).15 E F2(dump\255functions)108 700.8 Q F1 .473
+(Print all of the functions and their k)144 712.8 R .773 -.15(ey b)-.1 H
+.473(indings to the).15 F F2 -.18(re)2.973 G(adline).18 E F1 .473
+(output stream.)2.973 F .473(If a numeric ar)5.473 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 724.8 Q
+(ay that it can be made part of an)-.1 E F0(inputr)2.5 E(c)-.37 E F1
+(\214le.)2.5 E(GNU Readline 8.3)72 768 Q(2024 December 30)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/F1 10/Times-Bold@0 SF
-(set\255mark \(C\255@, M\255<space>\))108 84 Q F0
-(Set the mark to the point.)144 96 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 108 Q F0(Sw)144
-120 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 132 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 144 Q(ch \(C\255]\))-.18 E F0 3.112(Ac)144 156 S
-.612(haracter is read and point is mo)-3.112 F -.15(ve)-.15 G 3.112(dt)
-.15 G 3.112(ot)-3.112 G .612(he ne)-3.112 F .612
-(xt occurrence of that character)-.15 F 5.611(.A)-.55 G(ne)-2.5 E -.05
-(ga)-.15 G(ti).05 E .911 -.15(ve a)-.25 H -.18(rg).15 G(u-).18 E
-(ment searches for pre)144 168 Q(vious occurrences.)-.25 E F1
-(character\255sear)108 180 Q(ch\255backward \(M\255C\255]\))-.18 E F0
-2.694(Ac)144 192 S .194(haracter is read and point is mo)-2.694 F -.15
-(ve)-.15 G 2.694(dt).15 G 2.694(ot)-2.694 G .194(he pre)-2.694 F .194
-(vious occurrence of that character)-.25 F 5.194(.A)-.55 G(ne)-2.499 E
--.05(ga)-.15 G(ti).05 E .495 -.15(ve a)-.25 H -.2(r-).15 G
-(gument searches for subsequent occurrences.)144 204 Q F1
-(skip\255csi\255sequence)108 216 Q F0 1.827
-(Read enough characters to consume a multi-k)144 228 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 240 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 252 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 264 R(uf)-.2 E(fer)-.25 E 5.026(.T)
--.55 G(his)-5.026 E(is unbound by def)144 276 Q(ault, b)-.1 E
-(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108
-288 Q F0 -.4(Wi)144 300 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 312 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 324 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 336 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 348 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 360 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 372 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 384
-Q F0 .627(Print all of the functions and their k)144 396 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 408 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 420 Q(ariables)-.1 E F0
-.283(Print all of the settable v)144 432 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 444 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 456 Q(os)-.18 E F0 .593
-(Print all of the readline k)144 468 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 480 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 492 Q F1(emacs\255editing\255mode \(C\255e\))108 504 Q F0
-(When in)144 516 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 528 Q F0(When in)144 540 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 556.8 Q -.548(AU)
--.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F0 .065(The follo)
-108 568.8 R .065(wing is a list of the def)-.25 F .065
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10/Times-Bold@0 SF(dump\255v)108 84 Q(ariables)-.1 E
+F1 .129(Print all of the settable v)144 96 R .129(ariables and their v)
+-.25 F .129(alues to the)-.25 F F2 -.18(re)2.63 G(adline).18 E F1 .13
+(output stream.)2.63 F .13(If a numeric ar)5.13 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 108 Q
+(ay that it can be made part of an)-.1 E F0(inputr)2.5 E(c)-.37 E F1
+(\214le.)2.5 E F2(dump\255macr)108 120 Q(os)-.18 E F1 .089
+(Print all of the)144 132 R F2 -.18(re)2.589 G(adline).18 E F1 -.1(ke)
+2.589 G 2.589(ys)-.05 G .089
+(equences bound to macros and the strings the)-2.589 F 2.589(yo)-.15 G
+.088(utput to the)-2.589 F F2 -.18(re)2.588 G(adline).18 E F1 .243
+(output stream.)144 144 R .243(If a numeric ar)5.243 F .243
+(gument is supplied, the output is formatted in such a w)-.18 F .244
+(ay that it can)-.1 F(be made part of an)144 156 Q F0(inputr)2.5 E(c)
+-.37 E F1(\214le.)2.5 E F2(execute\255named\255command \(M-x\))108 168 Q
+F1 1.084(Read a bindable)144 180 R F2 -.18(re)3.584 G(adline).18 E F1
+1.083(command name from the input and e)3.584 F -.15(xe)-.15 G 1.083
+(cute the function to which it').15 F(s)-.55 E .278(bound, as if the k)
+144 192 R .578 -.15(ey s)-.1 H .278(equence to which it w).15 F .279
+(as bound appeared in the input.)-.1 F .279(If this function is sup-)
+5.279 F(plied with a numeric ar)144 204 Q(gument, it passes that ar)-.18
+E(gument to the function it e)-.18 E -.15(xe)-.15 G(cutes.).15 E F2
+(emacs\255editing\255mode \(C\255e\))108 216 Q F1(When in)144 228 Q F2
+(vi)2.5 E F1(command mode, this switches)2.5 E F2 -.18(re)2.5 G(adline)
+.18 E F1(to)2.5 E F2(emacs)2.5 E F1(editing mode.)2.5 E F2
+(vi\255editing\255mode \(M\255C\255j\))108 240 Q F1(When in)144 252 Q F2
+(emacs)2.5 E F1(editing mode, this switches to)2.5 E F2(vi)2.5 E F1
+(editing mode.)2.5 E/F3 10.95/Times-Bold@0 SF(DEF)72 268.8 Q -.548(AU)
+-.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F1 .065(The follo)
+108 280.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 580.8 R F2(meta\214ed)
-3.407 E F0 3.027(characters. The)3.797 F .527
+(M\255<character>, and are referred to as)108 292.8 R F0(meta\214ed)
+3.407 E F1 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 592.8 R F1
-(self\255insert)3.615 E F0 1.115(function, which just inserts the gi)
+(in the list of emacs standard bindings are bound to the)108 304.8 R F2
+(self\255insert)3.615 E F1 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
-604.8 R .945(In vi insertion mode, all characters not speci\214cally me\
-ntioned are bound to)5.945 F F1(self\255insert)108 616.8 Q F0 5.338(.C)C
-.338(haracters assigned to signal generation by)-5.338 F F2(stty)3.178 E
-F0 .337(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.137 -.4(r, s)
-.15 H .337(uch as C-Z or C-C,).4 F .187(retain that function.)108 628.8
+316.8 R .945(In vi insertion mode, all characters not speci\214cally me\
+ntioned are bound to)5.945 F F2(self\255insert)108 328.8 Q F1 5.338(.C)C
+.338(haracters assigned to signal generation by)-5.338 F F0(stty)3.178 E
+F1 .337(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.137 -.4(r, s)
+.15 H .337(uch as C-Z or C-C,).4 F .187(retain that function.)108 340.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 640.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 652.8 Q F1(bell\255style)2.5 E F0 -.25(va)2.5
-G(riable\).).25 E F1(Emacs Mode)87 669.6 Q F0(Emacs Standard bindings)
-151.2 681.6 Q 2.5("C-@" set-mark)151.2 705.6 R 2.5("C-A" be)151.2 717.6
-R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 729.6 R(ard-char)-.1 E
-(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(13)185.115 E 0 Cg
+nd to the same function in the emacs)-.25 F .131(mode meta k)108 352.8 R
+-.15(ey)-.1 G 2.631(map. The).15 F .131
+(remaining characters are unbound, which causes)2.631 F F2 -.18(re)2.631
+G(adline).18 E F1 .13(to ring the bell \(subject)2.63 F
+(to the setting of the)108 364.8 Q F2(bell\255style)2.5 E F1 -.25(va)2.5
+G(riable\).).25 E F2(Emacs Mode)87 381.6 Q F1(Emacs Standard bindings)
+151.2 393.6 Q 2.5("C-@" set-mark)151.2 410.4 R 2.5("C-A" be)151.2 422.4
+R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2 434.4 R(ard-char)-.1 E
+2.5("C-D" delete-char)151.2 446.4 R 2.5("C-E" end-of-line)151.2 458.4 R
+2.5("C-F" forw)151.2 470.4 R(ard-char)-.1 E 2.5("C-G" abort)151.2 482.4
+R 2.5("C-H" backw)151.2 494.4 R(ard-delete-char)-.1 E 2.5
+("C-I" complete)151.2 506.4 R 2.5("C-J" accept-line)151.2 518.4 R 2.5
+("C-K" kill-line)151.2 530.4 R 2.5("C-L" clear)151.2 542.4 R(-screen)-.2
+E 2.5("C-M" accept-line)151.2 554.4 R 2.5("C-N" ne)151.2 566.4 R
+(xt-history)-.15 E 2.5("C-P" pre)151.2 578.4 R(vious-history)-.25 E 2.5
+("C-Q" quoted-insert)151.2 590.4 R 2.5("C-R" re)151.2 602.4 R -.15(ve)
+-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 614.4 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 626.4 R 2.5
+("C-U" unix-line-discard)151.2 638.4 R 2.5("C-V" quoted-insert)151.2
+650.4 R 2.5("C-W" unix-w)151.2 662.4 R(ord-rubout)-.1 E 2.5("C-Y" yank)
+151.2 674.4 R 2.5("C-]" character)151.2 686.4 R(-search)-.2 E 2.5
+("C-_" undo)151.2 698.4 R 3.333("")151.2 710.4 S(to "/")-.833 E
+(self-insert)5 E 2.5("0" to)151.2 722.4 R 2.5("9" self-insert)2.5 F
+(GNU Readline 8.3)72 768 Q(2024 December 30)121.245 E(15)185.955 E 0 Cg
 EP
-%%Page: 14 14
+%%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("C-D" delete-char)
-151.2 84 R 2.5("C-E" end-of-line)151.2 96 R 2.5("C-F" forw)151.2 108 R
-(ard-char)-.1 E 2.5("C-G" abort)151.2 120 R 2.5("C-H" backw)151.2 132 R
-(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 144 R 2.5
-("C-J" accept-line)151.2 156 R 2.5("C-K" kill-line)151.2 168 R 2.5
-("C-L" clear)151.2 180 R(-screen)-.2 E 2.5("C-M" accept-line)151.2 192 R
-2.5("C-N" ne)151.2 204 R(xt-history)-.15 E 2.5("C-P" pre)151.2 216 R
-(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 228 R 2.5("C-R" re)
-151.2 240 R -.15(ve)-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2
-252 R(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 264 R 2.5
-("C-U" unix-line-discard)151.2 276 R 2.5("C-V" quoted-insert)151.2 288 R
-2.5("C-W" unix-w)151.2 300 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 312 R
-2.5("C-]" character)151.2 324 R(-search)-.2 E 2.5("C-_" undo)151.2 336 R
-3.333("")151.2 348 S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2 360
-R 2.5("9" self-insert)2.5 F 2.5(":" to)151.2 372 R 2.5("~" self-insert)
-2.5 F 2.5("C-?" backw)151.2 384 R(ard-delete-char)-.1 E
-(Emacs Meta bindings)151.2 400.8 Q 2.5("M-C-G" abort)151.2 424.8 R 2.5
-("M-C-H" backw)151.2 436.8 R(ard-kill-w)-.1 E(ord)-.1 E 2.5
-("M-C-I" tab-insert)151.2 448.8 R 2.5("M-C-J" vi-editing-mode)151.2
-460.8 R 2.5("M-C-L" clear)151.2 472.8 R(-display)-.2 E 2.5
-("M-C-M" vi-editing-mode)151.2 484.8 R 2.5("M-C-R" re)151.2 496.8 R -.15
-(ve)-.25 G(rt-line).15 E 2.5("M-C-Y" yank-nth-ar)151.2 508.8 R(g)-.18 E
-2.5("M-C-[" complete)151.2 520.8 R 2.5("M-C-]" character)151.2 532.8 R
-(-search-backw)-.2 E(ard)-.1 E 2.5("M-space" set-mark)151.2 544.8 R 2.5
-("M-#" insert-comment)151.2 556.8 R 2.5("M-&" tilde-e)151.2 568.8 R
-(xpand)-.15 E 2.5("M-*" insert-completions)151.2 580.8 R 2.5
-("M--" digit-ar)151.2 592.8 R(gument)-.18 E 2.5("M-." yank-last-ar)151.2
-604.8 R(g)-.18 E 2.5("M-0" digit-ar)151.2 616.8 R(gument)-.18 E 2.5
-("M-1" digit-ar)151.2 628.8 R(gument)-.18 E 2.5("M-2" digit-ar)151.2
-640.8 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 652.8 R(gument)-.18 E 2.5
-("M-4" digit-ar)151.2 664.8 R(gument)-.18 E 2.5("M-5" digit-ar)151.2
-676.8 R(gument)-.18 E 2.5("M-6" digit-ar)151.2 688.8 R(gument)-.18 E 2.5
-("M-7" digit-ar)151.2 700.8 R(gument)-.18 E 2.5("M-8" digit-ar)151.2
-712.8 R(gument)-.18 E 2.5("M-9" digit-ar)151.2 724.8 R(gument)-.18 E
-(GNU Readline 8.2)72 768 Q(2022 September 19)120.405 E(14)185.115 E 0 Cg
-EP
-%%Page: 15 15
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E 2.5(":" to)151.2 84 R 2.5("\001" self-insert)2.5 F 2.5
+("C-?" backw)151.2 96 R(ard-delete-char)-.1 E(Emacs Meta bindings)151.2
+112.8 Q 2.5("M-C-G" abort)151.2 129.6 R 2.5("M-C-H" backw)151.2 141.6 R
+(ard-kill-w)-.1 E(ord)-.1 E 2.5("M-C-I" tab-insert)151.2 153.6 R 2.5
+("M-C-J" vi-editing-mode)151.2 165.6 R 2.5("M-C-L" clear)151.2 177.6 R
+(-display)-.2 E 2.5("M-C-M" vi-editing-mode)151.2 189.6 R 2.5
+("M-C-R" re)151.2 201.6 R -.15(ve)-.25 G(rt-line).15 E 2.5
+("M-C-Y" yank-nth-ar)151.2 213.6 R(g)-.18 E 2.5("M-C-[" complete)151.2
+225.6 R 2.5("M-C-]" character)151.2 237.6 R(-search-backw)-.2 E(ard)-.1
+E 2.5("M-space" set-mark)151.2 249.6 R 2.5("M-#" insert-comment)151.2
+261.6 R 2.5("M-&" tilde-e)151.2 273.6 R(xpand)-.15 E 2.5
+("M-*" insert-completions)151.2 285.6 R 2.5("M--" digit-ar)151.2 297.6 R
+(gument)-.18 E 2.5("M-." yank-last-ar)151.2 309.6 R(g)-.18 E 2.5
+("M-0" digit-ar)151.2 321.6 R(gument)-.18 E 2.5("M-1" digit-ar)151.2
+333.6 R(gument)-.18 E 2.5("M-2" digit-ar)151.2 345.6 R(gument)-.18 E 2.5
+("M-3" digit-ar)151.2 357.6 R(gument)-.18 E 2.5("M-4" digit-ar)151.2
+369.6 R(gument)-.18 E 2.5("M-5" digit-ar)151.2 381.6 R(gument)-.18 E 2.5
+("M-6" digit-ar)151.2 393.6 R(gument)-.18 E 2.5("M-7" digit-ar)151.2
+405.6 R(gument)-.18 E 2.5("M-8" digit-ar)151.2 417.6 R(gument)-.18 E 2.5
+("M-9" digit-ar)151.2 429.6 R(gument)-.18 E 2.5("M-<" be)151.2 441.6 R
+(ginning-of-history)-.15 E 2.5("M-=" possible-completions)151.2 453.6 R
+2.5("M->" end-of-history)151.2 465.6 R 2.5("M-?" possible-completions)
+151.2 477.6 R 2.5("M-B" backw)151.2 489.6 R(ard-w)-.1 E(ord)-.1 E 2.5
+("M-C" capitalize-w)151.2 501.6 R(ord)-.1 E 2.5("M-D" kill-w)151.2 513.6
+R(ord)-.1 E 2.5("M-F" forw)151.2 525.6 R(ard-w)-.1 E(ord)-.1 E 2.5
+("M-L" do)151.2 537.6 R(wncase-w)-.25 E(ord)-.1 E 2.5
+("M-N" non-incremental-forw)151.2 549.6 R(ard-search-history)-.1 E 2.5
+("M-P" non-incremental-re)151.2 561.6 R -.15(ve)-.25 G
+(rse-search-history).15 E 2.5("M-R" re)151.2 573.6 R -.15(ve)-.25 G
+(rt-line).15 E 2.5("M-T" transpose-w)151.2 585.6 R(ords)-.1 E 2.5
+("M-U" upcase-w)151.2 597.6 R(ord)-.1 E 2.5("M-X" e)151.2 609.6 R -.15
+(xe)-.15 G(cute-named-command).15 E 2.5("M-Y" yank-pop)151.2 621.6 R 2.5
+("M-\\" delete-horizontal-space)151.2 633.6 R 2.5("M-\001" tilde-e)151.2
+645.6 R(xpand)-.15 E 2.5("M-C-?" backw)151.2 657.6 R(ard-kill-w)-.1 E
+(ord)-.1 E 2.5("M-_" yank-last-ar)151.2 669.6 R(g)-.18 E
+(Emacs Control-X bindings)151.2 686.4 Q 2.5("C-XC-G" abort)151.2 703.2 R
+2.5("C-XC-R" re-read-init-\214le)151.2 715.2 R 2.5("C-XC-U" undo)151.2
+727.2 R(GNU Readline 8.3)72 768 Q(2024 December 30)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 2.5("M-<" be)151.2 84 R
-(ginning-of-history)-.15 E 2.5("M-=" possible-completions)151.2 96 R 2.5
-("M->" end-of-history)151.2 108 R 2.5("M-?" possible-completions)151.2
-120 R 2.5("M-B" backw)151.2 132 R(ard-w)-.1 E(ord)-.1 E 2.5
-("M-C" capitalize-w)151.2 144 R(ord)-.1 E 2.5("M-D" kill-w)151.2 156 R
-(ord)-.1 E 2.5("M-F" forw)151.2 168 R(ard-w)-.1 E(ord)-.1 E 2.5
-("M-L" do)151.2 180 R(wncase-w)-.25 E(ord)-.1 E 2.5
-("M-N" non-incremental-forw)151.2 192 R(ard-search-history)-.1 E 2.5
-("M-P" non-incremental-re)151.2 204 R -.15(ve)-.25 G(rse-search-history)
-.15 E 2.5("M-R" re)151.2 216 R -.15(ve)-.25 G(rt-line).15 E 2.5
-("M-T" transpose-w)151.2 228 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 240 R
-(ord)-.1 E 2.5("M-Y" yank-pop)151.2 252 R 2.5
-("M-\\" delete-horizontal-space)151.2 264 R 2.5("M-~" tilde-e)151.2 276
-R(xpand)-.15 E 2.5("M-C-?" backw)151.2 288 R(ard-kill-w)-.1 E(ord)-.1 E
-2.5("M-_" yank-last-ar)151.2 300 R(g)-.18 E(Emacs Control-X bindings)
-151.2 316.8 Q 2.5("C-XC-G" abort)151.2 340.8 R 2.5
-("C-XC-R" re-read-init-\214le)151.2 352.8 R 2.5("C-XC-U" undo)151.2
-364.8 R 2.5("C-XC-X" e)151.2 376.8 R(xchange-point-and-mark)-.15 E 2.5
-("C-X\(" start-kbd-macro)151.2 388.8 R 2.5("C-X\)" end-kbd-macro)151.2
-400.8 R 2.5("C-XE" call-last-kbd-macro)151.2 412.8 R 2.5("C-XC-?" backw)
-151.2 424.8 R(ard-kill-line)-.1 E/F1 10/Times-Bold@0 SF
-(VI Mode bindings)87 453.6 Q F0(VI Insert Mode functions)151.2 465.6 Q
-2.5("C-D" vi-eof-maybe)151.2 489.6 R 2.5("C-H" backw)151.2 501.6 R
-(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 513.6 R 2.5
-("C-J" accept-line)151.2 525.6 R 2.5("C-M" accept-line)151.2 537.6 R 2.5
-("C-R" re)151.2 549.6 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
-("C-S" forw)151.2 561.6 R(ard-search-history)-.1 E 2.5
-("C-T" transpose-chars)151.2 573.6 R 2.5("C-U" unix-line-discard)151.2
-585.6 R 2.5("C-V" quoted-insert)151.2 597.6 R 2.5("C-W" unix-w)151.2
-609.6 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 621.6 R 2.5("C-[" vi-mo)
-151.2 633.6 R -.15(ve)-.15 G(ment-mode).15 E 2.5("C-_" undo)151.2 645.6
-R 3.333("")151.2 657.6 S(to "~")-.833 E(self-insert)5 E 2.5("C-?" backw)
-151.2 669.6 R(ard-delete-char)-.1 E(VI Command Mode functions)151.2
-686.4 Q 2.5("C-D" vi-eof-maybe)151.2 710.4 R 2.5
-("C-E" emacs-editing-mode)151.2 722.4 R(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(15)185.115 E 0 Cg EP
-%%Page: 16 16
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E 2.5("C-XC-X" e)151.2 84 R(xchange-point-and-mark)-.15 E
+2.5("C-X\(" start-kbd-macro)151.2 96 R 2.5("C-X\)" end-kbd-macro)151.2
+108 R 2.5("C-XE" call-last-kbd-macro)151.2 120 R 2.5("C-XC-?" backw)
+151.2 132 R(ard-kill-line)-.1 E/F2 10/Times-Bold@0 SF(VI Mode bindings)
+87 148.8 Q F1(VI Insert Mode functions)151.2 160.8 Q 2.5
+("C-D" vi-eof-maybe)151.2 177.6 R 2.5("C-H" backw)151.2 189.6 R
+(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 201.6 R 2.5
+("C-J" accept-line)151.2 213.6 R 2.5("C-M" accept-line)151.2 225.6 R 2.5
+("C-N" menu-complete)151.2 237.6 R 2.5("C-P" menu-complete-backw)151.2
+249.6 R(ard)-.1 E 2.5("C-R" re)151.2 261.6 R -.15(ve)-.25 G
+(rse-search-history).15 E 2.5("C-S" forw)151.2 273.6 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 285.6 R 2.5
+("C-U" unix-line-discard)151.2 297.6 R 2.5("C-V" quoted-insert)151.2
+309.6 R 2.5("C-W" vi-unix-w)151.2 321.6 R(ord-rubout)-.1 E 2.5
+("C-Y" yank)151.2 333.6 R 2.5("C-[" vi-mo)151.2 345.6 R -.15(ve)-.15 G
+(ment-mode).15 E 2.5("C-_" vi-undo)151.2 357.6 R 3.333("")151.2 369.6 S
+(to "\001")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 381.6 R
+(ard-delete-char)-.1 E(VI Command Mode functions)151.2 398.4 Q 2.5
+("C-D" vi-eof-maybe)151.2 415.2 R 2.5("C-E" emacs-editing-mode)151.2
+427.2 R 2.5("C-G" abort)151.2 439.2 R 2.5("C-H" backw)151.2 451.2 R
+(ard-char)-.1 E 2.5("C-J" accept-line)151.2 463.2 R 2.5("C-K" kill-line)
+151.2 475.2 R 2.5("C-L" clear)151.2 487.2 R(-screen)-.2 E 2.5
+("C-M" accept-line)151.2 499.2 R 2.5("C-N" ne)151.2 511.2 R(xt-history)
+-.15 E 2.5("C-P" pre)151.2 523.2 R(vious-history)-.25 E 2.5
+("C-Q" quoted-insert)151.2 535.2 R 2.5("C-R" re)151.2 547.2 R -.15(ve)
+-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 559.2 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 571.2 R 2.5
+("C-U" unix-line-discard)151.2 583.2 R 2.5("C-V" quoted-insert)151.2
+595.2 R 2.5("C-W" vi-unix-w)151.2 607.2 R(ord-rubout)-.1 E 2.5
+("C-Y" yank)151.2 619.2 R 2.5("C-_" vi-undo)151.2 631.2 R -4.166 3.333
+("" f)151.2 643.2 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)
+151.2 655.2 R 2.5("$" end-of-line)151.2 667.2 R 2.5("%" vi-match)151.2
+679.2 R 2.5("&" vi-tilde-e)151.2 691.2 R(xpand)-.15 E 2.5
+("*" vi-complete)151.2 703.2 R 2.5("+" ne)151.2 715.2 R(xt-history)-.15
+E 2.5("," vi-char)151.2 727.2 R(-search)-.2 E(GNU Readline 8.3)72 768 Q
+(2024 December 30)121.245 E(17)185.955 E 0 Cg EP
+%%Page: 18 18
 %%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-G" abort)151.2 84
-R 2.5("C-H" backw)151.2 96 R(ard-char)-.1 E 2.5("C-J" accept-line)151.2
-108 R 2.5("C-K" kill-line)151.2 120 R 2.5("C-L" clear)151.2 132 R
-(-screen)-.2 E 2.5("C-M" accept-line)151.2 144 R 2.5("C-N" ne)151.2 156
-R(xt-history)-.15 E 2.5("C-P" pre)151.2 168 R(vious-history)-.25 E 2.5
-("C-Q" quoted-insert)151.2 180 R 2.5("C-R" re)151.2 192 R -.15(ve)-.25 G
-(rse-search-history).15 E 2.5("C-S" forw)151.2 204 R(ard-search-history)
--.1 E 2.5("C-T" transpose-chars)151.2 216 R 2.5("C-U" unix-line-discard)
-151.2 228 R 2.5("C-V" quoted-insert)151.2 240 R 2.5("C-W" unix-w)151.2
-252 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 264 R 2.5("C-_" vi-undo)
-151.2 276 R -4.166 3.333("" f)151.2 288 T(orw)-3.333 E(ard-char)-.1 E
-2.5("#" insert-comment)151.2 300 R 2.5("$" end-of-line)151.2 312 R 2.5
-("%" vi-match)151.2 324 R 2.5("&" vi-tilde-e)151.2 336 R(xpand)-.15 E
-2.5("*" vi-complete)151.2 348 R 2.5("+" ne)151.2 360 R(xt-history)-.15 E
-2.5("," vi-char)151.2 372 R(-search)-.2 E 2.5("-" pre)151.2 384 R
-(vious-history)-.25 E 2.5("." vi-redo)151.2 396 R 2.5("/" vi-search)
-151.2 408 R 2.5("0" be)151.2 420 R(ginning-of-line)-.15 E("1" to "9")
-151.2 432 Q(vi-ar)5 E(g-digit)-.18 E 2.5(";" vi-char)151.2 444 R
-(-search)-.2 E 2.5("=" vi-complete)151.2 456 R 2.5("?" vi-search)151.2
-468 R 2.5("A" vi-append-eol)151.2 480 R 2.5("B" vi-pre)151.2 492 R(v-w)
--.25 E(ord)-.1 E 2.5("C" vi-change-to)151.2 504 R 2.5("D" vi-delete-to)
-151.2 516 R 2.5("E" vi-end-w)151.2 528 R(ord)-.1 E 2.5("F" vi-char)151.2
-540 R(-search)-.2 E 2.5("G" vi-fetch-history)151.2 552 R 2.5
-("I" vi-insert-be)151.2 564 R(g)-.15 E 2.5("N" vi-search-ag)151.2 576 R
-(ain)-.05 E 2.5("P" vi-put)151.2 588 R 2.5("R" vi-replace)151.2 600 R
-2.5("S" vi-subst)151.2 612 R 2.5("T" vi-char)151.2 624 R(-search)-.2 E
-2.5("U" re)151.2 636 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2
-648 R(xt-w)-.15 E(ord)-.1 E 2.5("X" backw)151.2 660 R(ard-delete-char)
--.1 E 2.5("Y" vi-yank-to)151.2 672 R 2.5("\\" vi-complete)151.2 684 R
-2.5("^" vi-\214rst-print)151.2 696 R 2.5("_" vi-yank-ar)151.2 708 R(g)
--.18 E 2.5("`" vi-goto-mark)151.2 720 R(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(16)185.115 E 0 Cg EP
-%%Page: 17 17
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E 2.5("-" pre)151.2 84 R(vious-history)-.25 E 2.5
+("." vi-redo)151.2 96 R 2.5("/" vi-search)151.2 108 R 2.5("0" be)151.2
+120 R(ginning-of-line)-.15 E("1" to "9")151.2 132 Q(vi-ar)5 E(g-digit)
+-.18 E 2.5(";" vi-char)151.2 144 R(-search)-.2 E 2.5("=" vi-complete)
+151.2 156 R 2.5("?" vi-search)151.2 168 R 2.5("A" vi-append-eol)151.2
+180 R 2.5("B" vi-pre)151.2 192 R(v-w)-.25 E(ord)-.1 E 2.5
+("C" vi-change-to)151.2 204 R 2.5("D" vi-delete-to)151.2 216 R 2.5
+("E" vi-end-w)151.2 228 R(ord)-.1 E 2.5("F" vi-char)151.2 240 R(-search)
+-.2 E 2.5("G" vi-fetch-history)151.2 252 R 2.5("I" vi-insert-be)151.2
+264 R(g)-.15 E 2.5("N" vi-search-ag)151.2 276 R(ain)-.05 E 2.5
+("P" vi-put)151.2 288 R 2.5("R" vi-replace)151.2 300 R 2.5("S" vi-subst)
+151.2 312 R 2.5("T" vi-char)151.2 324 R(-search)-.2 E 2.5("U" re)151.2
+336 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 348 R(xt-w)-.15 E
+(ord)-.1 E 2.5("X" vi-rubout)151.2 360 R 2.5("Y" vi-yank-to)151.2 372 R
+2.5("\\" vi-complete)151.2 384 R 2.5("\000" vi-\214rst-print)151.2 396 R
+2.5("_" vi-yank-ar)151.2 408 R(g)-.18 E 2.5("`" vi-goto-mark)151.2 420 R
+2.5("a" vi-append-mode)151.2 432 R 2.5("b" vi-pre)151.2 444 R(v-w)-.25 E
+(ord)-.1 E 2.5("c" vi-change-to)151.2 456 R 2.5("d" vi-delete-to)151.2
+468 R 2.5("e" vi-end-w)151.2 480 R(ord)-.1 E 2.5("f" vi-char)151.2 492 R
+(-search)-.2 E 2.5("h" backw)151.2 504 R(ard-char)-.1 E 2.5
+("i" vi-insertion-mode)151.2 516 R 2.5("j" ne)151.2 528 R(xt-history)
+-.15 E 2.5("k" pre)151.2 540 R(vious-history)-.25 E 2.5("l" forw)151.2
+552 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 564 R 2.5
+("n" vi-search-ag)151.2 576 R(ain)-.05 E 2.5("p" vi-put)151.2 588 R 2.5
+("r" vi-change-char)151.2 600 R 2.5("s" vi-subst)151.2 612 R 2.5
+("t" vi-char)151.2 624 R(-search)-.2 E 2.5("u" vi-undo)151.2 636 R 2.5
+("w" vi-ne)151.2 648 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 660
+R 2.5("y" vi-yank-to)151.2 672 R 2.5("|" vi-column)151.2 684 R 2.5
+("\001" vi-change-case)151.2 696 R(GNU Readline 8.3)72 768 Q
+(2024 December 30)121.245 E(18)185.955 E 0 Cg EP
+%%Page: 19 19
 %%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("a" vi-append-mode)
-151.2 84 R 2.5("b" vi-pre)151.2 96 R(v-w)-.25 E(ord)-.1 E 2.5
-("c" vi-change-to)151.2 108 R 2.5("d" vi-delete-to)151.2 120 R 2.5
-("e" vi-end-w)151.2 132 R(ord)-.1 E 2.5("f" vi-char)151.2 144 R(-search)
--.2 E 2.5("h" backw)151.2 156 R(ard-char)-.1 E 2.5
-("i" vi-insertion-mode)151.2 168 R 2.5("j" ne)151.2 180 R(xt-history)
--.15 E 2.5("k" pre)151.2 192 R(v-history)-.25 E 2.5("l" forw)151.2 204 R
-(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 216 R 2.5("n" vi-search-ag)
-151.2 228 R(ain)-.05 E 2.5("p" vi-put)151.2 240 R 2.5
-("r" vi-change-char)151.2 252 R 2.5("s" vi-subst)151.2 264 R 2.5
-("t" vi-char)151.2 276 R(-search)-.2 E 2.5("u" vi-undo)151.2 288 R 2.5
-("w" vi-ne)151.2 300 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 312
-R 2.5("y" vi-yank-to)151.2 324 R 2.5("|" vi-column)151.2 336 R 2.5
-("~" vi-change-case)151.2 348 R/F1 10.95/Times-Bold@0 SF(SEE ALSO)72
-364.8 Q/F2 10/Times-Italic@0 SF(The Gnu Readline Libr)108 376.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 388.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 400.8 Q F0(\(1\))A F1
-(FILES)72 417.6 Q F2(~/.inputr)109.666 429.6 Q(c)-.37 E F0(Indi)144
-441.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 458.4 S(THORS).548 E F0
-(Brian F)108 470.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E
-(bfox@gnu.or)108 482.4 Q(g)-.18 E(Chet Rame)108 499.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 511.2 Q(y@case.edu)-.15 E F1 -.11(BU)72
-528 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .69(If you \214nd a b)
-108 540 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 552 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 568.8 R 1.005 -.15(ve d)-.2 H .705
+/F0 10/Times-Italic@0 SF(READLINE)72.63 48 Q/F1 10/Times-Roman@0 SF
+118.765(\(3\) Library).73 F(Functions Manual)2.5 E F0(READLINE)121.895 E
+F1(\(3\)).73 E/F2 10.95/Times-Bold@0 SF(SEE ALSO)72 84 Q F0
+(The Gnu Readline Libr)108 96 Q(ary)-.15 E F1 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F0(The Gnu History Libr)108 108 Q(ary)
+-.15 E F1 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F0
+(bash)108 120 Q F1(\(1\))A F2(FILES)72 136.8 Q F0(\001/.inputr)109.666
+148.8 Q(c)-.37 E F1(Indi)144 160.8 Q(vidual)-.25 E/F3 10/Times-Bold@0 SF
+-.18(re)2.5 G(adline).18 E F1(initialization \214le)2.5 E F2 -.548(AU)72
+177.6 S(THORS).548 E F1(Brian F)108 189.6 Q(ox, Free Softw)-.15 E(are F)
+-.1 E(oundation)-.15 E(bfox@gnu.or)108 201.6 Q(g)-.18 E(Chet Rame)108
+218.4 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 230.4 Q(y@case.edu)
+-.15 E F2 -.11(BU)72 247.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F1
+.69(If you \214nd a b)108 259.2 R .69(ug in)-.2 F F3 -.18(re)3.19 G
+(adline).18 E F1 3.19(,y)C .69(ou 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 271.2 Q(ersion of the)-.15 E F3
+-.18(re)2.5 G(adline).18 E F1(library that you ha)2.5 E -.15(ve)-.2 G(.)
+.15 E .705(Once you ha)108 288 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 580.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 592.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 609.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 626.4 S(GS).11 E F0(It')108 638.4 Q 2.5(st)-.55 G
-(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 8.2)72 768 Q
-(2022 September 19)120.405 E(17)185.115 E 0 Cg EP
+-.15 F .704(ug report to)-.2 F F0 -.2(bu)3.204 G(g\255r).2 E(eadline)
+-.37 E F1(@)A F0(gnu.or)A(g)-.37 E F1 5.704(.I)C 3.204(fy)-5.704 G(ou)
+-3.204 E(ha)108 300 Q 1.678 -.15(ve a \214)-.2 H 1.379
+(x, you are welcome to mail that as well!).15 F 1.379
+(Suggestions and \231philosophical\232 b)6.379 F 1.379
+(ug reports may be)-.2 F(mailed to)108 312 Q F0 -.2(bu)2.5 G(g-r).2 E
+(eadline)-.37 E F1(@)A F0(gnu.or)A(g)-.37 E F1
+(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3(gnu.bash.b)2.5 E(ug)
+-.2 E F1(.)A(Comments and b)108 328.8 Q
+(ug reports concerning this manual page should be directed to)-.2 E F0
+-.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F1(.).25 E
+F2 -.11(BU)72 345.6 S(GS).11 E F1(It')108 357.6 Q 2.5(st)-.55 G
+(oo big and too slo)-2.5 E -.65(w.)-.25 G(GNU Readline 8.3)72 768 Q
+(2024 December 30)121.245 E(19)185.955 E 0 Cg EP
 %%Trailer
 end
 %%EOF
index d046b87d1fbdfa5bcfe15cd8f64979104b56cadb..904970935cf92e6738f55ec8fd1d986e8a2051e3 100644 (file)
@@ -13,7 +13,7 @@ This manual describes the GNU Readline Library
 consistency of user interface across discrete programs which provide
 a command line interface.
 
-Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2025 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
index a93f77dabf81de0d9575aaf0947747f3f0bc96d5..c8965ef640499e9b40fe1442dfec8166cd532d79 100644 (file)
@@ -7,7 +7,7 @@ This document describes the GNU Readline Library, a utility for aiding
 in the consistency of user interface across discrete programs that need
 to provide a command line interface.
 
-Copyright (C) 1988--2022 Free Software Foundation, Inc.
+Copyright (C) 1988--2025 Free Software Foundation, Inc.
 
 Permission is granted to make and distribute verbatim copies of
 this manual provided the copyright notice and this permission notice
@@ -57,18 +57,23 @@ in your own programs, this section is for you.
 @section Basic Behavior
 
 Many programs provide a command line interface, such as @code{mail},
-@code{ftp}, and @code{sh}.  For such programs, the default behaviour of
-Readline is sufficient.  This section describes how to use Readline in
+@code{ftp}, and @code{sh}.
+For such programs, the default behavior of Readline is sufficient.
+This section describes how to use Readline in
 the simplest way possible, perhaps to replace calls in your code to
-@code{gets()} or @code{fgets()}.
+@code{fgets()}.
 
 @findex readline
 @cindex readline, function
 
 The function @code{readline()} prints a prompt @var{prompt}
 and then reads and returns a single line of text from the user.
-If @var{prompt} is @code{NULL} or the empty string, no prompt is displayed.
-The line @code{readline} returns is allocated with @code{malloc()};
+Since it's possible to enter characters into the line while quoting
+them to disable any Readline editing function they might normally have,
+this line may include embedded newlines and other special characters.
+If @var{prompt} is @code{NULL} or the empty string,
+@code{readline()} does not display a prompt.
+The line @code{readline()} returns is allocated with @code{malloc()};
 the caller should @code{free()} the line when it has finished with it.
 The declaration for @code{readline} in ANSI C is
 
@@ -85,13 +90,16 @@ So, one might say
 in order to read a line of text from the user.
 The line returned has the final newline removed, so only the
 text remains.
+This means that lines consisting of a newline return the empty string.
 
-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.
+If Readline encounters an @code{EOF} while reading the line,
+and the line is empty at that point,
+then @code{readline()} returns @code{(char *)NULL}.
 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}
+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.
@@ -108,8 +116,8 @@ line away in a @dfn{history} list of such lines.
 For full details on the GNU History Library, see the associated manual.
 
 It is preferable to avoid saving empty lines on the history list, since
-users rarely have a burning need to reuse a blank line.  Here is
-a function which usefully replaces the standard @code{gets()} library
+users rarely have a burning need to reuse a blank line.
+Here is a function which usefully replaces the standard @code{gets()} library
 function, and has the advantage of no static buffer to overflow:
 
 @example
@@ -141,9 +149,10 @@ rl_gets ()
 @}
 @end example
 
-This function gives the user the default behaviour of @key{TAB}
-completion: completion on file names.  If you do not want Readline to
-complete on filenames, you can change the binding of the @key{TAB} key
+This function gives the user the default behavior of @key{TAB}
+completion: filename completion.
+If you do not want Readline to
+complete filenames, you can change the binding of the @key{TAB} key
 with @code{rl_bind_key()}.
 
 @example
@@ -152,8 +161,8 @@ with @code{rl_bind_key()}.
 
 @code{rl_bind_key()} takes two arguments: @var{key} is the character that
 you want to bind, and @var{function} is the address of the function to
-call when @var{key} is pressed.  Binding @key{TAB} to @code{rl_insert()}
-makes @key{TAB} insert itself.
+call when @var{key} is pressed.
+Binding @key{TAB} to @code{rl_insert()} makes @key{TAB} insert itself.
 @code{rl_bind_key()} returns non-zero if @var{key} is not a valid
 ASCII character code (between 0 and 255).
 
@@ -172,21 +181,25 @@ custom completers (@pxref{Custom Completers}).
 
 Readline provides many functions for manipulating the text of
 the line, but it isn't possible to anticipate the needs of all
-programs.  This section describes the various functions and variables
-defined within the Readline library which allow a user program to add
+programs.
+This section describes the various functions and variables
+defined within the Readline library which allow a program to add
 customized functionality to Readline.
 
 Before declaring any functions that customize Readline's behavior, or
 using any functionality Readline provides in other code, an
 application writer should include the file @code{<readline/readline.h>}
-in any file that uses Readline's features.  Since some of the definitions
-in @code{readline.h} use the @code{stdio} library, the file
-@code{<stdio.h>} should be included before @code{readline.h}.
+in any file that uses Readline's features.
+Since some of the definitions
+in @code{readline.h} use the @code{stdio} library, the program
+should include the file @code{<stdio.h>}
+before @code{readline.h}.
 
 @code{readline.h} defines a C preprocessor variable that should
 be treated as an integer, @code{RL_READLINE_VERSION}, which may
 be used to conditionally compile application code depending on
-the installed Readline version.  The value is a hexadecimal
+the installed Readline version.
+The value is a hexadecimal
 encoding of the major and minor version numbers of the library,
 of the form 0x@var{MMmm}.  @var{MM} is the two-digit major
 version number; @var{mm} is the two-digit minor version number. 
@@ -242,6 +255,8 @@ The full list of function pointer types available is
 
 @item typedef void rl_compdisp_func_t (char **, int, int);
 
+@item typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);
+
 @item typedef int rl_hook_func_t (void);
 
 @item typedef int rl_getc_func_t (FILE *);
@@ -260,6 +275,9 @@ The full list of function pointer types available is
 
 @end table
 
+@noindent
+The @file{rltypedefs.h} file has more documentation for these types.
+
 @node Function Writing
 @subsection Writing a New Function
 
@@ -278,10 +296,12 @@ where @var{count} is the numeric argument (or 1 if defaulted) and
 @var{key} is the key that invoked this function.
 
 It is completely up to the function as to what should be done with the
-numeric argument.  Some functions use it as a repeat count, some
+numeric argument.
+Some functions use it as a repeat count, some
 as a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example).  Some choose to
-ignore it.  In general, if a
+line as opposed to refreshing the screen, for example).
+Some choose to ignore it.
+In general, if a
 function uses the numeric argument as a repeat count, it should be able
 to do something useful with both negative and positive arguments.
 At the very least, it should be aware that it can be passed a
@@ -289,8 +309,8 @@ negative argument.
 
 A command function should return 0 if its action completes successfully,
 and a value greater than zero if some error occurs.
-This is the convention obeyed by all of the builtin Readline bindable
-command functions.
+All of the builtin Readline bindable command functions
+obey this convention.
 
 @node Readline Variables
 @section Readline Variables
@@ -298,9 +318,10 @@ command functions.
 These variables are available to function writers.
 
 @deftypevar {char *} rl_line_buffer
-This is the line gathered so far.  You are welcome to modify the
-contents of the line, but see @ref{Allowing Undoing}.  The
-function @code{rl_extend_line_buffer} is available to increase
+This is the line gathered so far.
+You are welcome to modify the contents of the line,
+but see @ref{Allowing Undoing}.
+The function @code{rl_extend_line_buffer} will increase
 the memory allocated to @code{rl_line_buffer}.
 @end deftypevar
 
@@ -310,14 +331,16 @@ The offset of the current cursor position in @code{rl_line_buffer}
 @end deftypevar
 
 @deftypevar int rl_end
-The number of characters present in @code{rl_line_buffer}.  When
-@code{rl_point} is at the end of the line, @code{rl_point} and
-@code{rl_end} are equal.
+The number of characters present in @code{rl_line_buffer}.
+When @code{rl_point} is at the end of the line,
+@code{rl_point} and @code{rl_end} are equal.
 @end deftypevar
 
 @deftypevar int rl_mark
-The @var{mark} (saved position) in the current line.  If set, the mark
-and point define a @emph{region}.
+The @var{mark} (saved position) in the current line.
+If set, the mark and point define a @emph{region}.
+Some Readline commands set the mark as part of operating;
+users can also set the mark explicitly.
 @end deftypevar
 
 @deftypevar int rl_done
@@ -328,8 +351,9 @@ to @code{accept-line} and is about to return the line to the caller.
 @end deftypevar
 
 @deftypevar int rl_eof_found
-Readline will set this variable when it has read an EOF character (e.g., the
-stty @samp{EOF} character) on an empty line or encountered a read error and
+Readline will set this variable when it has read an EOF character
+(e.g., the stty @samp{EOF} character) on an empty line
+or has encountered a read error or EOF and 
 is about to return a NULL line to the caller.
 @end deftypevar
 
@@ -340,32 +364,37 @@ than reading up to a character bound to @code{accept-line}.
 @end deftypevar
 
 @deftypevar int rl_pending_input
-Setting this to a value makes it the next keystroke read.  This is a
-way to stuff a single character into the input stream.
+Setting this to a value makes it the next keystroke read.
+This is a way to stuff a single character into the input stream.
 @end deftypevar
 
 @deftypevar int rl_dispatching
 Set to a non-zero value if a function is being called from a key binding;
-zero otherwise.  Application functions can test this to discover whether
+zero otherwise.
+Application functions can test this to discover whether
 they were called directly or by Readline's dispatching mechanism.
 @end deftypevar
 
 @deftypevar int rl_erase_empty_line
 Setting this to a non-zero value causes Readline to completely erase
 the current line, including any prompt, any time a newline is typed as
-the only character on an otherwise-empty line.  The cursor is moved to
-the beginning of the newly-blank line.
+the only character on an otherwise-empty line.
+This moves the cursor to the beginning of the newly-blank line.
 @end deftypevar
 
 @deftypevar {char *} rl_prompt
-The prompt Readline uses.  This is set from the argument to
+The prompt Readline uses.
+This is set from the argument to
 @code{readline()}, and should not be assigned to directly.
 The @code{rl_set_prompt()} function (@pxref{Redisplay}) may
 be used to modify the prompt string after calling @code{readline()}.
+Readline performs some prompt expansions and analyzes the prompt for
+line breaks, so @code{rl_set_prompt()} is preferred.
 @end deftypevar
 
 @deftypevar {char *} rl_display_prompt
-The string displayed as the prompt.  This is usually identical to
+The string displayed as the prompt.
+This is usually identical to
 @var{rl_prompt}, but may be changed temporarily by functions that
 use the prompt string as a message area, such as incremental search.
 @end deftypevar
@@ -381,13 +410,15 @@ never sets it.
 @end deftypevar
 
 @deftypevar {const char *} rl_library_version
-The version number of this revision of the library.
+The version number of this revision of the Readline library, as a string
+(e.g., "4.2").
 @end deftypevar
 
-@deftypevar int rl_readline_version
-An integer encoding the current version of the library.  The encoding is
-of the form 0x@var{MMmm}, where @var{MM} is the two-digit major version
-number, and @var{mm} is the two-digit minor version number.
+@deftypevar {int} rl_readline_version
+An integer encoding the current version of the library.
+The encoding is of the form 0x@var{MMmm},
+where @var{MM} is the two-digit major version number,
+and @var{mm} is the two-digit minor version number.
 For example, for Readline-4.2, @code{rl_readline_version} would have the
 value 0x0402.
 @end deftypevar
@@ -398,9 +429,12 @@ emulation.
 @end deftypevar
 
 @deftypevar {const char *} rl_terminal_name
-The terminal type, used for initialization.  If not set by the application,
+The terminal type, used for initialization.
+If not set by the application,
 Readline sets this to the value of the @env{TERM} environment variable
 the first time it is called.
+Readline uses this to look up the terminal capabilities it needs in
+the terminfo database.
 @end deftypevar
 
 @deftypevar {const char *} rl_readline_name
@@ -426,19 +460,19 @@ from the kernel when computing the screen dimensions.
 @end deftypevar
 
 @deftypevar {rl_command_func_t *} rl_last_func
-The address of the last command function Readline executed.  May be used to
-test whether or not a function is being executed twice in succession, for
-example.
+The address of the last command function Readline executed.
+This may be used to test whether or not a function is being executed
+twice in succession, for example.
 @end deftypevar
 
 @deftypevar {rl_hook_func_t *} rl_startup_hook
 If non-zero, this is the address of a function to call just
-before @code{readline} prints the first prompt.
+before Readline prints the first prompt.
 @end deftypevar
 
 @deftypevar {rl_hook_func_t *} rl_pre_input_hook
 If non-zero, this is the address of a function to call after
-the first prompt has been printed and just before @code{readline}
+the first prompt has been printed and just before Readline
 starts reading input characters.
 @end deftypevar
 
@@ -451,16 +485,16 @@ is no keyboard input.
 
 @deftypevar {rl_getc_func_t *} rl_getc_function
 If non-zero, Readline will call indirectly through this pointer
-to get a character from the input stream.  By default, it is set to
-@code{rl_getc}, the default Readline character input function
-(@pxref{Character Input}).
+to get a character from the input stream.
+By default, it is set to @code{rl_getc}, the Readline character
+input function (@pxref{Character Input}).
 In general, an application that sets @var{rl_getc_function} should consider
 setting @var{rl_input_available_hook} as well.
 @end deftypevar
 
 @deftypevar {rl_hook_func_t *} rl_signal_event_hook
 If non-zero, this is the address of a function to call if a read system
-call is interrupted when Readline is reading terminal input.
+call is interrupted by a signal when Readline is reading terminal input.
 @end deftypevar
 
 @deftypevar {rl_hook_func_t *} rl_timeout_event_hook
@@ -476,6 +510,8 @@ The default hook checks @code{rl_instream}; if an application is using a
 different input source, it should set the hook appropriately.
 Readline queries for available input when implementing intra-key-sequence
 timeouts during input and incremental searches.
+This function must return zero if there is no input available, and non-zero
+if input is available.
 This may use an application-specific timeout before returning a value;
 Readline uses the value passed to @code{rl_set_keyboard_input_timeout()}
 or the value of the user-settable @var{keyseq-timeout} variable.
@@ -491,7 +527,7 @@ setting @var{rl_input_available_hook} as well.
 @end deftypevar
 
 @deftypevar {rl_voidfunc_t *} rl_redisplay_function
-If non-zero, Readline will call indirectly through this pointer
+Readline will call indirectly through this pointer
 to update the display with the current contents of the editing buffer.
 By default, it is set to @code{rl_redisplay}, the default Readline
 redisplay function (@pxref{Redisplay}).
@@ -499,7 +535,8 @@ redisplay function (@pxref{Redisplay}).
 
 @deftypevar {rl_vintfunc_t *} rl_prep_term_function
 If non-zero, Readline will call indirectly through this pointer
-to initialize the terminal.  The function takes a single argument, an
+to initialize the terminal.
+The function takes a single argument, an
 @code{int} flag that says whether or not to use eight-bit characters.
 By default, this is set to @code{rl_prep_terminal}
 (@pxref{Terminal Management}).
@@ -507,12 +544,21 @@ By default, this is set to @code{rl_prep_terminal}
 
 @deftypevar {rl_voidfunc_t *} rl_deprep_term_function
 If non-zero, Readline will call indirectly through this pointer
-to reset the terminal.  This function should undo the effects of
-@code{rl_prep_term_function}.
+to reset the terminal.
+This function should undo the effects of @code{rl_prep_term_function}.
 By default, this is set to @code{rl_deprep_terminal}
 (@pxref{Terminal Management}).
 @end deftypevar
 
+@deftypevar {void} rl_macro_display_hook 
+If set, this points to a function that @code{rl_macro_dumper} will call to
+display a key sequence bound to a macro.
+It is called with the key sequence, the "untranslated" macro value (i.e.,
+with backslash escapes included, as when passed to @code{rl_macro_bind}),
+the @code{readable} argument passed to @code{rl_macro_dumper}, and any
+prefix to display before the key sequence.
+@end deftypevar
+
 @deftypevar {Keymap} rl_executing_keymap
 This variable is set to the keymap (@pxref{Keymaps}) in which the
 currently executing Readline function was found.
@@ -543,8 +589,10 @@ The number of characters in @var{rl_executing_keyseq}.
 @deftypevar {int} rl_readline_state
 A variable with bit values that encapsulate the current Readline state.
 A bit is set with the @code{RL_SETSTATE} macro, and unset with the
-@code{RL_UNSETSTATE} macro.  Use the @code{RL_ISSTATE} macro to test
-whether a particular state bit is set.  Current state bits include:
+@code{RL_UNSETSTATE} macro.
+Use the @code{RL_ISSTATE} macro to test whether a particular state
+bit is set.
+Current state bits include:
 
 @table @code
 @item RL_STATE_NONE
@@ -581,7 +629,7 @@ Readline is in overwrite mode.
 @item RL_STATE_COMPLETING
 Readline is performing word completion.
 @item RL_STATE_SIGHANDLER
-Readline is currently executing the readline signal handler.
+Readline is currently executing the Readline signal handler.
 @item RL_STATE_UNDOING
 Readline is performing an undo.
 @item RL_STATE_INPUTPENDING
@@ -607,29 +655,31 @@ characters before the timeout duration specified by @code{rl_set_timeout}
 elapsed) and is returning that status to the caller.
 @item RL_STATE_EOF
 Readline has read an EOF character (e.g., the stty @samp{EOF} character)
-or encountered a read error and is about to return a NULL line to the caller.
+or encountered a read error or EOF
+and is about to return a NULL line to the caller.
 @end table
 
 @end deftypevar
 
 @deftypevar {int} rl_explicit_arg
 Set to a non-zero value if an explicit numeric argument was specified by
-the user.  Only valid in a bindable command function.
+the user.
+It is only valid in a bindable command function.
 @end deftypevar
 
 @deftypevar {int} rl_numeric_arg
 Set to the value of any numeric argument explicitly specified by the user
-before executing the current Readline function.  Only valid in a bindable
-command function.
+before executing the current Readline function.
+It is only valid in a bindable command function.
 @end deftypevar
 
 @deftypevar {int} rl_editing_mode
-Set to a value denoting Readline's current editing mode.  A value of
-@var{1} means Readline is currently in emacs mode; @var{0}
-means that vi mode is active.
+Set to a value denoting Readline's current editing mode.
+A value of @var{1} means Readline is currently in emacs mode;
+@var{0} means that vi mode is active.
+This determines the current keymap and key bindings.
 @end deftypevar
 
-
 @node Readline Convenience Functions
 @section Readline Convenience Functions
 
@@ -654,23 +704,28 @@ means that vi mode is active.
 @node Function Naming
 @subsection Naming a Function
 
-The user can dynamically change the bindings of keys while using
-Readline.  This is done by representing the function with a descriptive
-name.  The user is able to type the descriptive name when referring to
-the function.  Thus, in an init file, one might find
+Readline has a descriptive
+string name for every function a user can bind to a key sequence,
+so users can dynamically change the bindings associated with key
+sequences while using Readline,
+using the descriptive name when referring to the function.
+Thus, in an init file, one might find
 
 @example
 Meta-Rubout:   backward-kill-word
 @end example
 
 This binds the keystroke @key{Meta-Rubout} to the function
-@emph{descriptively} named @code{backward-kill-word}.  You, as the
-programmer, should bind the functions you write to descriptive names as
-well.  Readline provides a function for doing that:
+@emph{descriptively} named @code{backward-kill-word}.
+As the programmer, you
+should bind the functions you write to descriptive names as well.
+Readline provides a function for doing that:
 
 @deftypefun int rl_add_defun (const char *name, rl_command_func_t *function, int key)
-Add @var{name} to the list of named functions.  Make @var{function} be
-the function that gets called.  If @var{key} is not -1, then bind it to
+Add @var{name} to the list of named functions.
+Make @var{function} be the function that gets called by key sequences
+that bind to @var{name}.
+If @var{key} is not -1, then bind it to
 @var{function} using @code{rl_bind_key()}.
 @end deftypefun
 
@@ -683,13 +738,15 @@ you may need to use the underlying functions described below.
 @node Keymaps
 @subsection Selecting a Keymap
 
-Key bindings take place on a @dfn{keymap}.  The keymap is the
-association between the keys that the user types and the functions that
-get run.  You can make your own keymaps, copy existing keymaps, and tell
+Key bindings take place on a @dfn{keymap}.
+The keymap is the association between the keys that the user types and
+the functions that get run.
+You can make your own keymaps, copy existing keymaps, and tell
 Readline which keymap to use.
 
 @deftypefun Keymap rl_make_bare_keymap (void)
-Returns a new, empty keymap.  The space for the keymap is allocated with
+Returns a new, empty keymap.
+The space for the keymap is allocated with
 @code{malloc()}; the caller should free it by calling
 @code{rl_free_keymap()} when done.
 @end deftypefun
@@ -710,8 +767,9 @@ The caller should free @var{keymap}.
 @end deftypefun
 
 @deftypefun void rl_free_keymap (Keymap keymap)
-Free all storage associated with @var{keymap}.  This calls
-@code{rl_discard_keymap} to free subordindate keymaps and macros.
+Free all storage associated with @var{keymap}.
+This calls @code{rl_discard_keymap} to free subordinate
+keymaps and macros.
 @end deftypefun
 
 @deftypefun int rl_empty_keymap (Keymap keymap)
@@ -719,8 +777,9 @@ 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.
+Readline has several internal keymaps.
+These functions allow you to change which keymap is active.
+This is one way to switch editing modes, for example.
 
 @deftypefun Keymap rl_get_keymap (void)
 Returns the currently active keymap.
@@ -731,17 +790,20 @@ Makes @var{keymap} the currently active keymap.
 @end deftypefun
 
 @deftypefun Keymap rl_get_keymap_by_name (const char *name)
-Return the keymap matching @var{name}.  @var{name} is one which would
-be supplied in a @code{set keymap} inputrc line (@pxref{Readline Init File}).
+Return the keymap matching @var{name}.
+@var{name} is one which would be supplied in a
+@code{set keymap} inputrc line (@pxref{Readline Init File}).
 @end deftypefun
 
 @deftypefun {char *} rl_get_keymap_name (Keymap keymap)
-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}).
+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
+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;
@@ -761,7 +823,7 @@ builtin keymaps.
 @node Binding Keys
 @subsection Binding Keys
 
-Key sequences are associate with functions through the keymap.
+Key sequences are associated with functions through the keymap.
 Readline has several internal keymaps: @code{emacs_standard_keymap},
 @code{emacs_meta_keymap}, @code{emacs_ctlx_keymap},
 @code{vi_movement_keymap}, and @code{vi_insertion_keymap}.
@@ -771,7 +833,8 @@ this manual assume that.
 Since @code{readline()} installs a set of default key bindings the first
 time it is called, there is always the danger that a custom binding
 installed before the first call to @code{readline()} will be overridden.
-An alternate mechanism is to install custom key bindings in an
+An alternate mechanism that can avoid this
+is to install custom key bindings in an
 initialization function assigned to the @code{rl_startup_hook} variable
 (@pxref{Readline Variables}).
 
@@ -802,11 +865,13 @@ already bound.
 
 @deftypefun int rl_unbind_key (int key)
 Bind @var{key} to the null function in the currently active keymap.
+This is not the same as binding it to @code{self-insert}.
 Returns non-zero in case of error.
 @end deftypefun
 
 @deftypefun int rl_unbind_key_in_map (int key, Keymap map)
 Bind @var{key} to the null function in @var{map}.
+This is not the same as binding it to @code{self-insert}.
 Returns non-zero in case of error.
 @end deftypefun
 
@@ -827,7 +892,8 @@ The return value is non-zero if @var{keyseq} is invalid.
 
 @deftypefun int rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)
 Bind the key sequence represented by the string @var{keyseq} to the function
-@var{function}.  This makes new keymaps as necessary.
+@var{function} in @var{map}.
+This makes new keymaps as necessary.
 Initial bindings are performed in @var{map}.
 The return value is non-zero if @var{keyseq} is invalid.
 @end deftypefun
@@ -851,10 +917,14 @@ already bound.
 
 @deftypefun int rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
 Bind the key sequence represented by the string @var{keyseq} to the arbitrary
-pointer @var{data}.  @var{type} says what kind of data is pointed to by
-@var{data}; this can be a function (@code{ISFUNC}), a macro
-(@code{ISMACR}), or a keymap (@code{ISKMAP}).  This makes new keymaps as
-necessary.  The initial keymap in which to do bindings is @var{map}.
+pointer @var{data}.
+@var{type} says what kind of data is pointed to by @var{data}; this can be
+a function (@code{ISFUNC}),
+a macro (@code{ISMACR}),
+or a keymap (@code{ISKMAP}).
+This makes new keymaps as necessary.
+The initial keymap in which to do bindings is @var{map}.
+Returns non-zero in the case of an invalid @var{keyseq}, zero otherwise.
 @end deftypefun
 
 @deftypefun int rl_parse_and_bind (char *line)
@@ -872,28 +942,31 @@ Read keybindings and variable assignments from @var{filename}
 @subsection Associating Function Names and Bindings
 
 These functions allow you to find out what keys invoke named functions
-and the functions invoked by a particular key sequence.  You may also
-associate a new function name with an arbitrary function.
+and the functions invoked by a particular key sequence.
+You may also associate a new function name with an arbitrary function.
 
 @deftypefun {rl_command_func_t *} rl_named_function (const char *name)
 Return the function with name @var{name}.
+@var{name} is a descriptive name users might use in a key binding.
 @end deftypefun
 
 @deftypefun {rl_command_func_t *} rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)
 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.
+If @var{map} is @code{NULL}, this uses the current keymap.
+If @var{type} is not @code{NULL}, this returns the type of the object
+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.
+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 {int} rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map)
@@ -901,7 +974,7 @@ If there is a numeric argument at the beginning of @var{keyseq}, possibly
 including digits, return the index of the first character in @var{keyseq}
 following the numeric argument.
 This can be used to skip over the numeric argument (which is available as
-@code{rl_numeric_arg} while traversing the key sequence that invoked the
+@code{rl_numeric_arg}) while traversing the key sequence that invoked the
 current command.
 @end deftypefun
 
@@ -915,9 +988,19 @@ Return an array of strings representing the key sequences used to
 invoke @var{function} in the keymap @var{map}.
 @end deftypefun
 
+@deftypefun void rl_print_keybinding (const char *name, Keymap map, int readable)
+Print key sequences bound to Readline function name @var{name} in
+keymap @var{map}.
+If @var{map} is NULL, this uses the current keymap.
+If @var{readable} is non-zero,
+the list is formatted in such a way that it can be made part of an
+@code{inputrc} file and re-read to recreate the key binding.
+@end deftypefun
+
 @deftypefun void rl_function_dumper (int readable)
 Print the Readline function names and the key sequences currently
-bound to them to @code{rl_outstream}.  If @var{readable} is non-zero,
+bound to them to @code{rl_outstream}.
+If @var{readable} is non-zero,
 the list is formatted in such a way that it can be made part of an
 @code{inputrc} file and re-read.
 @end deftypefun
@@ -927,61 +1010,67 @@ Print the names of all bindable Readline functions to @code{rl_outstream}.
 @end deftypefun
 
 @deftypefun {const char **} rl_funmap_names (void)
-Return a NULL terminated array of known function names.  The array is
-sorted.  The array itself is allocated, but not the strings inside.  You
-should free the array, but not the pointers, using @code{free} or
-@code{rl_free} when you are done.
+Return a NULL terminated array of known function names.
+The array is sorted. 
+The array itself is allocated, but not the strings inside.
+You should free the array, but not the pointers, using @code{free}
+or @code{rl_free} when you are done.
 @end deftypefun
 
 @deftypefun int rl_add_funmap_entry (const char *name, rl_command_func_t *function)
 Add @var{name} to the list of bindable Readline command names, and make
 @var{function} the function to be called when @var{name} is invoked.
+This returns the index of the newly-added @var{name} in the array of
+function names.
 @end deftypefun
 
 @node Allowing Undoing
 @subsection Allowing Undoing
 
 Supporting the undo command is a painless thing, and makes your
-functions much more useful.  It is certainly easy to try
-something if you know you can undo it.
+functions much more useful.
+It is certainly easier to try something if you know you can undo it.
 
-If your function simply inserts text once, or deletes text once, and
-uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it, then
-undoing is already done for you automatically.
+If your function simply inserts text once, or deletes text once,
+and uses @code{rl_insert_text()} or @code{rl_delete_text()} to do it,
+then Readline does the undoing for you automatically.
 
 If you do multiple insertions or multiple deletions, or any combination
 of these operations, you should group them together into one operation.
 This is done with @code{rl_begin_undo_group()} and
 @code{rl_end_undo_group()}.
 
-The types of events that can be undone are:
+The types of events Readline can undo are:
 
 @smallexample
 enum undo_code @{ UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END @}; 
 @end smallexample
 
 Notice that @code{UNDO_DELETE} means to insert some text, and
-@code{UNDO_INSERT} means to delete some text.  That is, the undo code
-tells what to undo, not how to undo it.  @code{UNDO_BEGIN} and
-@code{UNDO_END} are tags added by @code{rl_begin_undo_group()} and
-@code{rl_end_undo_group()}.
+@code{UNDO_INSERT} means to delete some text.
+That is, the undo code tells what to undo, not how to undo it.
+@code{UNDO_BEGIN} and @code{UNDO_END} are tags
+added by @code{rl_begin_undo_group()} and @code{rl_end_undo_group()};
+they are how Readline delimits groups of commands that should be
+undone together.
 
 @deftypefun int rl_begin_undo_group (void)
-Begins saving undo information in a group construct.  The undo
-information usually comes from calls to @code{rl_insert_text()} and
-@code{rl_delete_text()}, but could be the result of calls to
+Begins saving undo information in a group construct.
+The undo information usually comes from calls to @code{rl_insert_text()}
+and @code{rl_delete_text()}, but could be the result of calls to
 @code{rl_add_undo()}.
 @end deftypefun
 
 @deftypefun int rl_end_undo_group (void)
-Closes the current undo group started with @code{rl_begin_undo_group
-()}.  There should be one call to @code{rl_end_undo_group()}
+Closes the current undo group started with @code{rl_begin_undo_group()}.
+There should be one call to @code{rl_end_undo_group()}
 for each call to @code{rl_begin_undo_group()}.
 @end deftypefun
 
 @deftypefun void rl_add_undo (enum undo_code what, int start, int end, char *text)
-Remember how to undo an event (according to @var{what}).  The affected
-text runs from @var{start} to @var{end}, and encompasses @var{text}.
+Remember how to undo an event (according to @var{what}).
+The affected text runs from @var{start} to @var{end},
+and encompasses @var{text}.
 @end deftypefun
 
 @deftypefun void rl_free_undo_list (void)
@@ -989,19 +1078,21 @@ Free the existing undo list.
 @end deftypefun
 
 @deftypefun int rl_do_undo (void)
-Undo the first thing on the undo list.  Returns @code{0} if there was
-nothing to undo, non-zero if something was undone.
+Undo the first thing on the undo list.
+Returns @code{0} if there was nothing to undo,
+non-zero if something was undone.
 @end deftypefun
 
 Finally, if you neither insert nor delete text, but directly modify the
 existing text (e.g., change its case), call @code{rl_modifying()}
-once, just before you modify the text.  You must supply the indices of
-the text range that you are going to modify.
+once, just before you modify the text.
+You must supply the indices of the text range that you are going to modify.
+Readline will create an undo group for you.
 
 @deftypefun int rl_modifying (int start, int end)
 Tell Readline to save the text between @var{start} and @var{end} as a
-single undo unit.  It is assumed that you will subsequently modify
-that text.
+single undo unit.
+It is assumed that you will subsequently modify that text.
 @end deftypefun
 
 @node Redisplay
@@ -1056,16 +1147,17 @@ redisplay.
 The arguments are a format string as would be supplied to @code{printf},
 possibly containing conversion specifications such as @samp{%d}, and
 any additional arguments necessary to satisfy the conversion specifications.
-The resulting string is displayed in the @dfn{echo area}.  The echo area
-is also used to display numeric arguments and search strings.
+The resulting string is displayed in the @dfn{echo area}.
+The echo area is also used to display numeric arguments and search strings.
 You should call @code{rl_save_prompt} to save the prompt information
 before calling this function.
 @end deftypefun
 
 @deftypefun int rl_clear_message (void)
-Clear the message in the echo area.  If the prompt was saved with a call to
+Clear the message in the echo area.
+If the prompt was saved with a call to
 @code{rl_save_prompt} before the last call to @code{rl_message},
-call @code{rl_restore_prompt} before calling this function.
+you must call @code{rl_restore_prompt} before calling this function.
 @end deftypefun
 
 @deftypefun void rl_save_prompt (void)
@@ -1076,17 +1168,19 @@ displaying a new message in the message area with @code{rl_message()}.
 @deftypefun void rl_restore_prompt (void)
 Restore the local Readline prompt display state saved by the most
 recent call to @code{rl_save_prompt}.
-if @code{rl_save_prompt} was called to save the prompt before a call
-to @code{rl_message}, this function should be called before the
+If you called @code{rl_save_prompt} to save the prompt before a call
+to @code{rl_message}, you should call this function before the
 corresponding call to @code{rl_clear_message}.
 @end deftypefun
 
 @deftypefun int rl_expand_prompt (char *prompt)
 Expand any special character sequences in @var{prompt} and set up the
 local Readline prompt redisplay variables.
-This function is called by @code{readline()}.  It may also be called to
-expand the primary prompt if the @code{rl_on_new_line_with_prompt()}
-function or @code{rl_already_prompted} variable is used.
+This function is called by @code{readline()}.
+It may also be called to
+expand the primary prompt if the application uses the
+@code{rl_on_new_line_with_prompt()} function or
+@code{rl_already_prompted} variable.
 It returns the number of visible characters on the last line of the
 (possibly multi-line) prompt.
 Applications may indicate that the prompt contains characters that take
@@ -1095,12 +1189,14 @@ such characters with the special markers @code{RL_PROMPT_START_IGNORE}
 and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h} as
 @samp{\001} and @samp{\002}, respectively).
 This may be used to embed terminal-specific escape sequences in prompts.
+If you don't use these indicators, redisplay will likely produce screen
+contents that don't match the line buffer.
 @end deftypefun
 
 @deftypefun int rl_set_prompt (const char *prompt)
-Make Readline use @var{prompt} for subsequent redisplay.  This calls
-@code{rl_expand_prompt()} to expand the prompt and sets @code{rl_prompt}
-to the result.
+Make Readline use @var{prompt} for subsequent redisplay.
+This calls @code{rl_expand_prompt()} to expand the prompt
+and sets @code{rl_prompt} to the result.
 @end deftypefun
 
 @node Modifying Text
@@ -1124,16 +1220,24 @@ the current line.
 @deftypefun int rl_kill_text (int start, int end)
 Copy the text between @var{start} and @var{end} in the current line
 to the kill ring, appending or prepending to the last kill if the
-last command was a kill command.  The text is deleted.
-If @var{start} is less than @var{end},
-the text is appended, otherwise prepended.  If the last command was
-not a kill, a new kill ring slot is used.
+last command was a kill command.
+This deletes the text from the line.
+If @var{start} is less than @var{end}, the text is appended,
+otherwise it is prepended.
+If the last command was not a kill, this uses a new kill ring slot.
 @end deftypefun
 
+@deftypefun void rl_replace_line (const char *text, int clear_undo)
+Replace the contents of @code{rl_line_buffer} with @var{text}.
+This preserves the point and mark, if possible.
+If @var{clear_undo} is non-zero, this clears the undo list associated
+with the current line.
+@end deftypefun 
+
 @deftypefun int rl_push_macro_input (char *macro)
-Cause @var{macro} to be inserted into the line, as if it had been invoked
-by a key bound to a macro.  Not especially useful; use
-@code{rl_insert_text()} instead.
+Insert @var{macro} into the line, as if it had been invoked
+by a key bound to a macro.
+Not especially useful; use @code{rl_insert_text()} instead.
 @end deftypefun
 
 @node Character Input
@@ -1154,38 +1258,43 @@ be the keyboard.
 @end deftypefun
 
 @deftypefun int rl_stuff_char (int c)
-Insert @var{c} into the Readline input stream.  It will be "read"
-before Readline attempts to read characters from the terminal with
-@code{rl_read_key()}.  Up to 512 characters may be pushed back.
+Insert @var{c} into the Readline input stream.
+It will be "read" before Readline attempts to read characters
+from the terminal with @code{rl_read_key()}.
+Applications can push back up to 512 characters.
 @code{rl_stuff_char} returns 1 if the character was successfully inserted;
 0 otherwise.
 @end deftypefun
 
 @deftypefun int rl_execute_next (int c)
 Make @var{c} be the next command to be executed when @code{rl_read_key()}
-is called.  This sets @var{rl_pending_input}.
+is called.
+This sets @var{rl_pending_input}.
 @end deftypefun
 
 @deftypefun int rl_clear_pending_input (void)
 Unset @var{rl_pending_input}, effectively negating the effect of any
-previous call to @code{rl_execute_next()}.  This works only if the
-pending input has not already been read with @code{rl_read_key()}.
+previous call to @code{rl_execute_next()}.
+This works only if the pending input has not already been read
+with @code{rl_read_key()}.
 @end deftypefun
 
 @deftypefun int rl_set_keyboard_input_timeout (int u)
 While waiting for keyboard input in @code{rl_read_key()}, Readline will
 wait for @var{u} microseconds for input before calling any function
-assigned to @code{rl_event_hook}.  @var{u} must be greater than or equal
+assigned to @code{rl_event_hook}.
+@var{u} must be greater than or equal
 to zero (a zero-length timeout is equivalent to a poll).
 The default waiting period is one-tenth of a second.
 Returns the old timeout value.
 @end deftypefun
 
 @deftypefun int rl_set_timeout (unsigned int secs, unsigned int usecs)
-Set a timeout for subsequent calls to @code{readline()}. If Readline does
-not read a complete line, or the number of characters specified by
-@code{rl_num_chars_to_read}, before the duration specified by @var{secs}
-(in seconds) and @var{usecs} (microseconds), it returns and sets
+Set a timeout for subsequent calls to @code{readline()}.
+If Readline does not read a complete line, or the number of characters
+specified by @code{rl_num_chars_to_read},
+before the duration specified by @var{secs} (in seconds)
+and @var{usecs} (microseconds), it returns and sets
 @code{RL_STATE_TIMEOUT} in @code{rl_readline_state}.
 Passing 0 for @code{secs} and @code{usecs} cancels any previously set
 timeout; the convenience macro @code{rl_clear_timeout()} is shorthand
@@ -1210,7 +1319,8 @@ the return value indicates whether the timeout has expired.
 
 @deftypefun void rl_prep_terminal (int meta_flag)
 Modify the terminal settings for Readline's use, so @code{readline()}
-can read a single character at a time from the keyboard.
+can read a single character at a time from the keyboard
+and perform redisplay.
 The @var{meta_flag} argument should be non-zero if Readline should
 read eight-bit input.
 @end deftypefun
@@ -1231,62 +1341,57 @@ The bindings are performed in @var{kmap}.
 Reset the bindings manipulated by @code{rl_tty_set_default_bindings} so
 that the terminal editing characters are bound to @code{rl_insert}.
 The bindings are performed in @var{kmap}.
-@end deftypefun
+@end deftypefun 
 
 @deftypefun int rl_tty_set_echoing (int value)
-Set Readline's idea of whether or not it is echoing output to its output
-stream (@var{rl_outstream}).  If @var{value} is 0, Readline does not display
-output to @var{rl_outstream}; any other value enables output.  The initial
-value is set when Readline initializes the terminal settings.
+Set Readline's idea of whether or not it is
+echoing output to its output stream (@var{rl_outstream}).
+If @var{value} is 0,
+Readline does not display output to @var{rl_outstream}; any other
+value enables output.
+The initial value is set when Readline initializes the terminal settings.
 This function returns the previous value.
-@end deftypefun
+@end deftypefun 
 
 @deftypefun int rl_reset_terminal (const char *terminal_name)
 Reinitialize Readline's idea of the terminal settings using
-@var{terminal_name} as the terminal type (e.g., @code{vt100}).
-If @var{terminal_name} is @code{NULL}, the value of the @code{TERM}
-environment variable is used.
+@var{terminal_name} as the terminal type (e.g., @code{xterm}).
+If @var{terminal_name} is @code{NULL}, Readline uses the value of the
+@code{TERM} environment variable.
 @end deftypefun
 
 @node Utility Functions
-@subsection Utility Functions
+@subsection Utility Functions 
 
 @deftypefun int rl_save_state (struct readline_state *sp)
 Save a snapshot of Readline's internal state to @var{sp}.
-The contents of the @var{readline_state} structure are documented
-in @file{readline.h}.
+The contents of the @var{readline_state} structure are
+documented in @file{readline.h}.
 The caller is responsible for allocating the structure.
-@end deftypefun
+@end deftypefun 
 
 @deftypefun int rl_restore_state (struct readline_state *sp)
-Restore Readline's internal state to that stored in @var{sp}, which must
-have been saved by a call to @code{rl_save_state}.
-The contents of the @var{readline_state} structure are documented
-in @file{readline.h}.
-The caller is responsible for freeing the structure.
-@end deftypefun
+Restore Readline's internal state to that stored in @var{sp},
+which must have been saved by a call to @code{rl_save_state}. 
+The contents of the @var{readline_state} structure are documented in
+@file{readline.h}.
+The caller is responsible for freeing the structure. 
+@end deftypefun 
 
 @deftypefun void rl_free (void *mem)
-Deallocate the memory pointed to by @var{mem}.  @var{mem} must have been
-allocated by @code{malloc}.
-@end deftypefun
-
-@deftypefun void rl_replace_line (const char *text, int clear_undo)
-Replace the contents of @code{rl_line_buffer} with @var{text}.
-The point and mark are preserved, if possible.
-If @var{clear_undo} is non-zero, the undo list associated with the
-current line is cleared.
-@end deftypefun
+Deallocate the memory pointed to by @var{mem}.
+@var{mem} must have been allocated by @code{malloc}.
+@end deftypefun 
 
 @deftypefun void rl_extend_line_buffer (int len)
 Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
-characters, possibly reallocating it if necessary.
+characters, reallocating it if necessary. 
 @end deftypefun
 
 @deftypefun int rl_initialize (void)
 Initialize or re-initialize Readline's internal state.
-It's not strictly necessary to call this; @code{readline()} calls it before
-reading any input.
+It's not strictly necessary to call this;
+@code{readline()} calls it before reading any input.
 @end deftypefun
 
 @deftypefun int rl_ding (void)
@@ -1299,12 +1404,13 @@ Return 1 if @var{c} is an alphabetic character.
 
 @deftypefun void rl_display_match_list (char **matches, int len, int max)
 A convenience function for displaying a list of strings in
-columnar format on Readline's output stream.  @code{matches} is the list
-of strings, in argv format, such as a list of completion matches.
+columnar format on Readline's output stream.
+@code{matches} is the list of strings, in argv format,
+such as a list of completion matches.
 @code{len} is the number of strings in @code{matches}, and @code{max}
-is the length of the longest string in @code{matches}.  This function uses
-the setting of @code{print-completions-horizontally} to select how the
-matches are displayed (@pxref{Readline Init File Syntax}).
+is the length of the longest string in @code{matches}.
+This function uses the setting of @code{print-completions-horizontally}
+to select how the matches are displayed (@pxref{Readline Init File Syntax}).
 When displaying completions, this function sets the number of columns used
 for display to the value of @code{completion-display-width}, the value of
 the environment variable @env{COLUMNS}, or the screen width, in that order.
@@ -1344,15 +1450,17 @@ If @var{c} is a number, return the value it represents.
 
 @deftypefun int rl_macro_bind (const char *keyseq, const char *macro, Keymap map)
 Bind the key sequence @var{keyseq} to invoke the macro @var{macro}.
-The binding is performed in @var{map}.  When @var{keyseq} is invoked, the
-@var{macro} will be inserted into the line.  This function is deprecated;
-use @code{rl_generic_bind()} instead.
+The binding is performed in @var{map}.
+When @var{keyseq} is invoked, the @var{macro} will be inserted into the line.
+This function is deprecated; use @code{rl_generic_bind} instead.
 @end deftypefun
 
 @deftypefun void rl_macro_dumper (int readable)
 Print the key sequences bound to macros and their values, using
 the current keymap, to @code{rl_outstream}.
-If @var{readable} is non-zero, the list is formatted in such a way
+If the application has assigned a value to @code{rl_macro_display_hook},
+@code{rl_macro_dumper} calls it instead of printing anything.
+If @var{readable} is greater than zero, the list is formatted in such a way
 that it can be made part of an @code{inputrc} file and re-read.
 @end deftypefun
 
@@ -1360,7 +1468,8 @@ that it can be made part of an @code{inputrc} file and re-read.
 Make the Readline variable @var{variable} have @var{value}.
 This behaves as if the Readline command
 @samp{set @var{variable} @var{value}} had been executed in an @code{inputrc}
-file (@pxref{Readline Init File Syntax}).
+file (@pxref{Readline Init File Syntax})
+or by @code{rl_parse_and_bind}.
 @end deftypefun
 
 @deftypefun {char *} rl_variable_value (const char *variable)
@@ -1384,9 +1493,14 @@ a balancing character when @code{blink-matching-paren} has been enabled.
 Retrieve the string value of the termcap capability @var{cap}.
 Readline fetches the termcap entry for the current terminal name and
 uses those capabilities to move around the screen line and perform other
-terminal-specific operations, like erasing a line.  Readline does not
-use all of a terminal's capabilities, and this function will return
-values for only those capabilities Readline uses.
+terminal-specific operations, like erasing a line.
+Readline does not fetch or use all of a terminal's capabilities,
+and this function will return
+values for only those capabilities Readline fetches.
+@end deftypefun
+
+@deftypefun {void} rl_reparse_colors (void)
+Read or re-read color definitions from @env{LS_COLORS}.
 @end deftypefun
 
 @deftypefun {void} rl_clear_history (void)
@@ -1397,15 +1511,17 @@ Readline saves in the history list.
 @end deftypefun
 
 @deftypefun {void} rl_activate_mark (void)
-Enable an @emph{active} mark.
+Enable an @emph{active} region.
 When this is enabled, the text between point and mark (the @var{region}) is
-displayed in the terminal's standout mode (a @var{face}).
+displayed using the color specified by the value of the
+@code{active-region-start-color} variable (a @var{face}).
+The default face is the terminal's standout mode.
 This is called by various Readline functions that set the mark and insert
 text, and is available for applications to call.
 @end deftypefun
 
 @deftypefun {void} rl_deactivate_mark (void)
-Turn off the active mark.
+Turn off the active region.
 @end deftypefun
 
 @deftypefun {void} rl_keep_mark_active (void)
@@ -1422,16 +1538,20 @@ Return a non-zero value if the mark is currently active; zero otherwise.
 @node Alternate Interface
 @subsection Alternate Interface
 
-An alternate interface is available to plain @code{readline()}.  Some
-applications need to interleave keyboard I/O with file, device, or
-window system I/O, typically by using a main loop to @code{select()}
-on various file descriptors.  To accommodate this need, Readline can
-also be invoked as a `callback' function from an event loop.  There
-are functions available to make this easy.
-
-@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
+For applications that need more granular control than
+plain @code{readline()} provides, there is
+an alternate interface.
+Some applications need to interleave keyboard I/O with file, device,
+or window system I/O, typically by using a main loop to @code{select()}
+on various file descriptors.
+To accommodate this use case, Readline can
+also be invoked as a `callback' function from an event loop.
+There are functions available to make this easy.
+
+@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *line_handler)
 Set up the terminal for Readline I/O and display the initial
-expanded value of @var{prompt}.  Save the value of @var{lhandler} to
+expanded value of @var{prompt}.
+Save the value of @var{line_handler} to
 use as a handler function to call when a complete line of input has been
 entered.
 The handler function receives the text of the line as an argument.
@@ -1444,43 +1564,46 @@ Whenever an application determines that keyboard input is available, it
 should call @code{rl_callback_read_char()}, which will read the next
 character from the current input source.
 If that character completes the line, @code{rl_callback_read_char} will
-invoke the @var{lhandler} function installed by
+invoke the @var{line_handler} function installed by
 @code{rl_callback_handler_install} to process the line.
-Before calling the @var{lhandler} function, the terminal settings are
-reset to the values they had before calling
+Before calling the @var{line_handler} function, Readline resets
+the terminal settings to the values they had before calling
 @code{rl_callback_handler_install}.
-If the @var{lhandler} function returns,
+If the @var{line_handler} function returns,
 and the line handler remains installed,
-the terminal settings are modified for Readline's use again.
-@code{EOF} is indicated by calling @var{lhandler} with a
+Readline modifies the terminal settings for its use again.
+@code{EOF} is indicated by calling @var{line_handler} with a
 @code{NULL} line.
 @end deftypefun
 
 @deftypefun void rl_callback_sigcleanup (void)
 Clean up any internal state the callback interface uses to maintain state
 between calls to rl_callback_read_char (e.g., the state of any active
-incremental searches).  This is intended to be used by applications that
-wish to perform their own signal handling; Readline's internal signal handler
-calls this when appropriate.
+incremental searches).
+This is intended to be used by applications that
+wish to perform their own signal handling;
+Readline's internal signal handler calls this when appropriate.
 @end deftypefun
 
 @deftypefun void rl_callback_handler_remove (void)
 Restore the terminal to its initial state and remove the line handler.
 You may call this function from within a callback as well as independently.
-If the @var{lhandler} installed by @code{rl_callback_handler_install}
-does not exit the program, either this function or the function referred
-to by the value of @code{rl_deprep_term_function} should be called before
-the program exits to reset the terminal settings.
+If the @var{line_handler} installed by @code{rl_callback_handler_install}
+does not exit the program, your program should call
+either this function or the function referred
+to by the value of @code{rl_deprep_term_function}
+before the program exits to reset the terminal settings.
 @end deftypefun
 
 @node A Readline Example
 @subsection A Readline Example
 
 Here is a function which changes lowercase characters to their uppercase
-equivalents, and uppercase characters to lowercase.  If
-this function was bound to @samp{M-c}, then typing @samp{M-c} would
-change the case of the character under point.  Typing @samp{M-1 0 M-c}
-would change the case of the following 10 characters, leaving the cursor on
+equivalents, and uppercase characters to lowercase.
+If this function was bound to @samp{M-c}, then typing @samp{M-c} would
+change the case of the character under point.
+Typing @samp{M-1 0 M-c} would change the case
+of the following 10 characters, leaving the cursor on
 the last character changed.
 
 @example
@@ -1489,23 +1612,15 @@ int
 invert_case_line (count, key)
      int count, key;
 @{
-  register int start, end, i;
+  int start, end, i;
 
   start = rl_point;
 
   if (rl_point >= rl_end)
     return (0);
 
-  if (count < 0)
-    @{
-      direction = -1;
-      count = -count;
-    @}
-  else
-    direction = 1;
-      
   /* Find the end of the range to modify. */
-  end = start + (count * direction);
+  end = start + count;
 
   /* Force it to be within range. */
   if (end > rl_end)
@@ -1516,6 +1631,11 @@ invert_case_line (count, key)
   if (start == end)
     return (0);
 
+  /* For positive arguments, put point after the last changed character. For
+     negative arguments, put point before the last changed character. */
+  rl_point = end;
+
+  /* Swap start and end if we are moving backwards */
   if (start > end)
     @{
       int temp = start;
@@ -1534,8 +1654,7 @@ invert_case_line (count, key)
       else if (_rl_lowercase_p (rl_line_buffer[i]))
         rl_line_buffer[i] = _rl_to_upper (rl_line_buffer[i]);
     @}
-  /* Move point to on top of the last character changed. */
-  rl_point = (direction == 1) ? end - 1 : start;
+
   return (0);
 @}
 @end example
@@ -1553,7 +1672,6 @@ It understands the EOF character or "exit" to exit the program.
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <locale.h>
 
 /* Used for select(2) */
 #include <sys/types.h>
@@ -1561,12 +1679,19 @@ It understands the EOF character or "exit" to exit the program.
 
 #include <signal.h>
 
+#include <errno.h>
 #include <stdio.h>
 
+#include <locale.h>
+
 /* Standard readline include files. */
 #include <readline/readline.h>
 #include <readline/history.h>
 
+#if !defined (errno)
+extern int errno;
+#endif
+
 static void cb_linehandler (char *);
 static void sighandler (int);
 
@@ -1634,7 +1759,7 @@ main (int c, char **v)
   while (running)
     @{
       FD_ZERO (&fds);
-      FD_SET (fileno (rl_instream), &fds);    
+      FD_SET (fileno (rl_instream), &fds);
 
       r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
       if (r < 0 && errno != EINTR)
@@ -1664,20 +1789,22 @@ main (int c, char **v)
 @section Readline Signal Handling
 
 Signals are asynchronous events sent to a process by the Unix kernel,
-sometimes on behalf of another process.  They are intended to indicate
-exceptional events, like a user pressing the terminal's interrupt key,
-or a network connection being broken.  There is a class of signals that can
-be sent to the process currently reading input from the keyboard.  Since
-Readline changes the terminal attributes when it is called, it needs to
-perform special processing when such a signal is received in order to
-restore the terminal to a sane state, or provide application writers with
-functions to do so manually. 
+sometimes on behalf of another process.
+They are intended to indicate exceptional events,
+like a user pressing the terminal's interrupt key,
+or a network connection being broken.
+There is a class of signals that can
+be sent to the process currently reading input from the keyboard.
+Since Readline changes the terminal attributes when it is called, it needs
+to perform special processing when such a signal is received in order to
+restore the terminal to a sane state, or provide applications using
+Readline with functions to do so manually. 
 
 Readline contains an internal signal handler that is installed for a
 number of signals (@code{SIGINT}, @code{SIGQUIT}, @code{SIGTERM},
 @code{SIGHUP}, 
 @code{SIGALRM}, @code{SIGTSTP}, @code{SIGTTIN}, and @code{SIGTTOU}).
-When one of these signals is received, the signal handler
+When Readline receives one of these signals, the signal handler
 will reset the terminal attributes to those that were in effect before
 @code{readline()} was called, reset the signal handling to what it was
 before @code{readline()} was called, and resend the signal to the calling
@@ -1690,22 +1817,24 @@ aborted (see the description of @code{rl_free_line_state()} below).
 
 There is an additional Readline signal handler, for @code{SIGWINCH}, which
 the kernel sends to a process whenever the terminal's size changes (for
-example, if a user resizes an @code{xterm}).  The Readline @code{SIGWINCH}
-handler updates Readline's internal screen size information, and then calls
-any @code{SIGWINCH} signal handler the calling application has installed. 
+example, if a user resizes an @code{xterm}).
+The Readline @code{SIGWINCH} handler updates
+Readline's internal screen size information, and then calls any
+@code{SIGWINCH} signal handler the calling application has installed. 
 Readline calls the application's @code{SIGWINCH} signal handler without
-resetting the terminal to its original state.  If the application's signal
-handler does more than update its idea of the terminal size and return (for
-example, a @code{longjmp} back to a main processing loop), it @emph{must}
-call @code{rl_cleanup_after_signal()} (described below), to restore the
-terminal state.
+resetting the terminal to its original state.
+If the application's signal
+handler does more than update its idea of the terminal size and return
+(for example, a @code{longjmp} back to a main processing loop),
+it @emph{must} call @code{rl_cleanup_after_signal()} (described below),
+to restore the terminal state.
 
 When an application is using the callback interface
 (@pxref{Alternate Interface}), Readline installs signal handlers only for
-the duration of the call to @code{rl_callback_read_char}.  Applications
-using the callback interface should be prepared to clean up Readline's
-state if they wish to handle the signal before the line handler completes
-and restores the terminal state.
+the duration of the call to @code{rl_callback_read_char}.
+Applications using the callback interface should be prepared
+to clean up Readline's state if they wish to handle the signal
+before the line handler completes and restores the terminal state.
 
 If an application using the callback interface wishes to have Readline
 install its signal handlers at the time the application calls
@@ -1716,18 +1845,21 @@ This allows an application to defer all of the handling of the signals
 Readline catches to Readline.
 Applications should use this variable with care; it can result in Readline
 catching signals and not acting on them (or allowing the application to react
-to them) until the application calls @code{rl_callback_read_char}.  This
-can result in an application becoming less responsive to keyboard signals
-like SIGINT.
+to them) until the application calls @code{rl_callback_read_char}.
+This can result in an application becoming less responsive to keyboard
+signals like SIGINT.
 If an application does not want or need to perform any signal handling, or
-does not need to do any processing between calls to @code{rl_callback_read_char},
-setting this variable may be desirable.
+does not need to do any processing
+between calls to @code{rl_callback_read_char},
+setting this variable may be appropriate.
 
 Readline provides two variables that allow application writers to
 control whether or not it will catch certain signals and act on them
-when they are received.  It is important that applications change the
-values of these variables only when calling @code{readline()}, not in
-a signal handler, so Readline's internal signal state is not corrupted.
+when they are received.
+It is important that applications change the
+values of these variables only when calling @code{readline()},
+not in a signal handler, so Readline's internal signal state
+is not corrupted.
 
 @deftypevar int rl_catch_signals
 If this variable is non-zero, Readline will install signal handlers for
@@ -1757,7 +1889,7 @@ The default value of @code{rl_persistent_signal_handlers} is 0.
 If this variable is set to a non-zero value,
 and Readline is handling @code{SIGWINCH}, Readline will modify the
 @var{LINES} and @var{COLUMNS} environment variables upon receipt of a
-@code{SIGWINCH}
+@code{SIGWINCH}.
 
 The default value of @code{rl_change_environment} is 1.
 @end deftypevar
@@ -1783,10 +1915,10 @@ all signals, depending on the values of @code{rl_catch_signals} and
 @deftypefun void rl_free_line_state (void)
 This will free any partial state associated with the current input line
 (undo information, any partial history entry, any partially-entered
-keyboard macro, and any partially-entered numeric argument).  This
-should be called before @code{rl_cleanup_after_signal()}.  The
-Readline signal handler for @code{SIGINT} calls this to abort the
-current input line.
+keyboard macro, and any partially-entered numeric argument).
+This should be called before @code{rl_cleanup_after_signal()}.
+The Readline signal handler for @code{SIGINT} calls this to abort
+the current input line.
 @end deftypefun
 
 @deftypefun void rl_reset_after_signal (void)
@@ -1798,19 +1930,21 @@ handlers, depending on the values of @code{rl_catch_signals} and
 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
+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
+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 it receives
+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 it receives
 a @code{SIGWINCH}.
 
 @deftypefun void rl_echo_signal_char (int sig)
@@ -1826,8 +1960,9 @@ Update Readline's internal screen size by reading values from the kernel.
 
 @deftypefun void rl_set_screen_size (int rows, int cols)
 Set Readline's idea of the terminal size to @var{rows} rows and
-@var{cols} columns.  If either @var{rows} or @var{columns} is less than
-or equal to 0, Readline's idea of that terminal dimension is unchanged.
+@var{cols} columns.
+If either @var{rows} or @var{columns} is less than or equal to 0,
+Readline doesn't change that terminal dimension.
 This is intended to tell Readline the physical dimensions of the terminal,
 and is used internally to calculate the maximum number of characters that
 may appear on a single line and on the screen.
@@ -1865,7 +2000,8 @@ Remove all of the Readline signal handlers installed by
 @cindex application-specific completion functions
 
 Typically, a program that reads commands from the user has a way of
-disambiguating commands and data.  If your program is one of these, then
+disambiguating commands and data.
+If your program is one of these, then
 it can provide completion for commands, data, or both.
 The following sections describe how your program and Readline
 cooperate to provide this service.
@@ -1881,21 +2017,25 @@ cooperate to provide this service.
 @subsection How Completing Works
 
 In order to complete some text, the full list of possible completions
-must be available.  That is, it is not possible to accurately
+must be available.
+That is, it is not possible to accurately
 expand a partial word without knowing all of the possible words
-which make sense in that context.  The Readline library provides
+which make sense in that context.
+The Readline library provides
 the user interface to completion, and two of the most common
-completion functions:  filename and username.  For completing other types
-of text, you must write your own completion function.  This section
+completion functions:  filename and username.
+For completing other types
+of text, you must write your own completion function.
+This section
 describes exactly what such functions must do, and provides an example.
 
 There are three major functions used to perform completion:
 
 @enumerate
 @item
-The user-interface function @code{rl_complete()}.  This function is
-called with the same arguments as other bindable Readline functions:
-@var{count} and @var{invoking_key}.
+The user-interface function @code{rl_complete()}.
+This function is called with the same arguments as other bindable
+Readline functions: @var{count} and @var{invoking_key}.
 It isolates the word to be completed and calls
 @code{rl_completion_matches()} to generate a list of possible completions.
 It then either lists the possible completions, inserts the possible
@@ -1911,16 +2051,19 @@ The caller should place the address of its generator function in
 
 @item
 The generator function is called repeatedly from
-@code{rl_completion_matches()}, returning a string each time.  The
-arguments to the generator function are @var{text} and @var{state}.
-@var{text} is the partial word to be completed.  @var{state} is zero the
-first time the function is called, allowing the generator to perform
-any necessary initialization, and a positive non-zero integer for
-each subsequent call.  The generator function returns
+@code{rl_completion_matches()}, returning a string each time.
+The arguments to the generator function are @var{text} and @var{state}.
+@var{text} is the partial word to be completed.
+@var{state} is zero the first time the function is called,
+allowing the generator to perform any necessary initialization,
+and a positive integer for each subsequent call.
+The generator function returns
 @code{(char *)NULL} to inform @code{rl_completion_matches()} that there are
-no more possibilities left.  Usually the generator function computes the
+no more possibilities left.
+Usually the generator function computes the
 list of possible completions when @var{state} is zero, and returns them
-one at a time on subsequent calls.  Each string the generator function
+one at a time on subsequent calls.
+Each string the generator function
 returns as a match must be allocated with @code{malloc()}; Readline
 frees the strings when it has finished with them.
 Such a generator function is referred to as an
@@ -1929,20 +2072,21 @@ Such a generator function is referred to as an
 @end enumerate
 
 @deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()}).  The default is to do filename completion.
+Complete the word at or before point.
+You have supplied the function that does the initial simple matching
+selection algorithm (see @code{rl_completion_matches()}).
+The default is to do filename completion.
 @end deftypefun
 
 @deftypevar {rl_compentry_func_t *} rl_completion_entry_function
 This is a pointer to the generator function for
 @code{rl_completion_matches()}.
 If the value of @code{rl_completion_entry_function} is
-@code{NULL} then the default filename generator
-function, @code{rl_filename_completion_function()}, is used.
+@code{NULL} then Readline uses the default filename generator
+function, @code{rl_filename_completion_function()}.
 An @dfn{application-specific completion function} is a function whose
 address is assigned to @code{rl_completion_entry_function} and whose
-return values are used to  generate possible completions.
+return values are used to generate possible completions.
 @end deftypevar
 
 @node Completion Functions
@@ -1952,34 +2096,37 @@ Here is the complete list of callable completion functions present in
 Readline.
 
 @deftypefun int rl_complete_internal (int what_to_do)
-Complete the word at or before point.  @var{what_to_do} says what to do
-with the completion.  A value of @samp{?} means list the possible
-completions.  @samp{TAB} means do standard completion.  @samp{*} means
-insert all of the possible completions.  @samp{!} means to display
-all of the possible completions, if there is more than one, as well as
-performing partial completion.  @samp{@@} is similar to @samp{!}, but
-possible completions are not listed if the possible completions share
-a common prefix.
+Complete the word at or before point.
+@var{what_to_do} says what to do with the completion.
+A value of @samp{?} means list the possible completions.
+@samp{TAB} means do standard completion.
+@samp{*} means insert all of the possible completions.
+@samp{!} means to display all of the possible completions,
+if there is more than one, as well as performing partial completion.
+@samp{@@} is similar to @samp{!}, but does not list possible completions
+if the possible completions share a common prefix.
 @end deftypefun
 
 @deftypefun int rl_complete (int ignore, int invoking_key)
-Complete the word at or before point.  You have supplied the function
-that does the initial simple matching selection algorithm (see
-@code{rl_completion_matches()} and @code{rl_completion_entry_function}).
-The default is to do filename
-completion.  This calls @code{rl_complete_internal()} with an
+Complete the word at or before point.
+You have supplied the function that does the initial simple
+matching selection algorithm (see @code{rl_completion_matches()} and
+@code{rl_completion_entry_function}).
+The default is to do filename completion.
+This calls @code{rl_complete_internal()} with an
 argument depending on @var{invoking_key}.
 @end deftypefun
 
 @deftypefun int rl_possible_completions (int count, int invoking_key)
-List the possible completions.  See description of @code{rl_complete
-()}.  This calls @code{rl_complete_internal()} with an argument of
-@samp{?}.
+List the possible completions.
+See description of @code{rl_complete()}.
+This calls @code{rl_complete_internal()} with an argument of @samp{?}.
 @end deftypefun
 
 @deftypefun int rl_insert_completions (int count, int invoking_key)
 Insert the list of possible completions into the line, deleting the
-partially-completed word.  See description of @code{rl_complete()}.
+partially-completed word.
+See description of @code{rl_complete()}.
 This calls @code{rl_complete_internal()} with an argument of @samp{*}.
 @end deftypefun
 
@@ -1993,16 +2140,17 @@ the same interface as @code{rl_complete()}.
 @end deftypefun
 
 @deftypefun {char **} rl_completion_matches (const char *text, rl_compentry_func_t *entry_func)
-Returns an array of strings which is a list of completions for
-@var{text}.  If there are no completions, returns @code{NULL}.
+Returns an array of strings which is a list of completions for @var{text}.
+If there are no completions, returns @code{NULL}.
 The first entry in the returned array is the substitution for @var{text}.
-The remaining entries are the possible completions.  The array is
-terminated with a @code{NULL} pointer.
-
-@var{entry_func} is a function of two args, and returns a
-@code{char *}.  The first argument is @var{text}.  The second is a
-state argument; it is zero on the first call, and non-zero on subsequent
-calls.  @var{entry_func} returns a @code{NULL}  pointer to the caller
+The remaining entries are the possible completions.
+The array is terminated with a @code{NULL} pointer.
+
+@var{entry_func} is a function of two args, and returns a @code{char *}.
+The first argument is @var{text}.
+The second is a state argument;
+it is zero on the first call, and non-zero on subsequent calls.
+@var{entry_func} returns a @code{NULL} pointer to the caller
 when there are no more matches.
 @end deftypefun
 
@@ -2015,10 +2163,11 @@ Readline functions).
 @end deftypefun
 
 @deftypefun {char *} rl_username_completion_function (const char *text, int state)
-A completion generator for usernames.  @var{text} contains a partial
-username preceded by a random character (usually @samp{~}).  As with all
-completion generators, @var{state} is zero on the first call and non-zero
-for subsequent calls.
+A completion generator for usernames.
+@var{text} contains a partial username preceded by a
+random character (usually @samp{~}).
+As with all completion generators,
+@var{state} is zero on the first call and non-zero for subsequent calls.
 @end deftypefun
 
 @node Completion Variables
@@ -2037,8 +2186,8 @@ The function is called with @var{text}, @var{start}, and @var{end}.
 the boundaries of @var{text}, which is a character string.
 If this function exists and returns @code{NULL}, or if this variable is
 set to @code{NULL}, then @code{rl_complete()} will call the value of
-@code{rl_completion_entry_function} to generate matches, otherwise the
-array of strings returned will be used.
+@code{rl_completion_entry_function} to generate matches, otherwise
+completion will use the array of strings this function returns.
 If this function sets the @code{rl_attempted_completion_over}
 variable to a non-zero value, Readline will not perform its default
 completion even if this function returns no matches.
@@ -2046,55 +2195,66 @@ completion even if this function returns no matches.
 
 @deftypevar {rl_quote_func_t *} rl_filename_quoting_function
 A pointer to a function that will quote a filename in an
-application-specific fashion.  This is called if filename completion is being
-attempted and one of the characters in @code{rl_filename_quote_characters}
-appears in a completed filename.  The function is called with
-@var{text}, @var{match_type}, and @var{quote_pointer}.  The @var{text}
-is the filename to be quoted.  The @var{match_type} is either
-@code{SINGLE_MATCH}, if there is only one completion match, or
-@code{MULT_MATCH}.  Some functions use this to decide whether or not to
-insert a closing quote character.  The @var{quote_pointer} is a pointer
-to any opening quote character the user typed.  Some functions choose
-to reset this character.
+application-specific fashion.
+Readline calls this function during filename completion
+if one of the characters in @code{rl_filename_quote_characters}
+appears in a completed filename.
+The function is called with
+@var{text}, @var{match_type}, and @var{quote_pointer}.
+The @var{text} is the filename to be quoted.
+The @var{match_type} is either @code{SINGLE_MATCH},
+if there is only one completion match, or @code{MULT_MATCH}.
+Some functions use this to decide whether or not to
+insert a closing quote character.
+The @var{quote_pointer} is a pointer
+to any opening quote character the user typed.
+Some functions choose to reset this character if they decide to quote
+the filename in a different style.
+It's preferable to preserve the user's quoting as much as possible --
+it's less disruptive.
 @end deftypevar
 
 @deftypevar {rl_dequote_func_t *} rl_filename_dequoting_function
 A pointer to a function that will remove application-specific quoting
-characters from a filename before completion is attempted, so those
-characters do not interfere with matching the text against names in
-the filesystem.  It is called with @var{text}, the text of the word
+characters from a filename before attempting completion,
+so those characters do not interfere with matching the text against
+names in the filesystem.
+It is called with @var{text}, the text of the word
 to be dequoted, and @var{quote_char}, which is the quoting character 
-that delimits the filename (usually @samp{'} or @samp{"}).  If
-@var{quote_char} is zero, the filename was not in an embedded string.
+that delimits the filename (usually @samp{'} or @samp{"}).
+If @var{quote_char} is zero, the filename was not in a quoted string.
 @end deftypevar
 
 @deftypevar {rl_linebuf_func_t *} rl_char_is_quoted_p
 A pointer to a function to call that determines whether or not a specific
 character in the line buffer is quoted, according to whatever quoting
-mechanism the program calling Readline uses.  The function is called with
-two arguments: @var{text}, the text of the line, and @var{index}, the
-index of the character in the line.  It is used to decide whether a
-character found in @code{rl_completer_word_break_characters} should be
+mechanism the application uses.
+The function is called with two arguments:
+@var{text}, the text of the line,
+and @var{index}, the index of the character in the line.
+It is used to decide whether a character found in
+@code{rl_completer_word_break_characters} should be
 used to break words for the completer.
 @end deftypevar
 
 @deftypevar {rl_compignore_func_t *} rl_ignore_some_completions_function
-This function, if defined, is called by the completer when real filename
+Readline calls this function, if defined, when filename
 completion is done, after all the matching names have been generated.
 It is passed a @code{NULL} terminated array of matches.
-The first element (@code{matches[0]}) is the
-maximal substring common to all matches. This function can
-re-arrange the list of matches as required, but each element deleted
-from the array must be freed.
+The first element (@code{matches[0]}) is the maximal substring
+common to all matches.
+This function can re-arrange the list of matches as required, but
+must free each element it deletes from the array.
 @end deftypevar
 
 @deftypevar {rl_icppfunc_t *} rl_directory_completion_hook
 This function, if defined, is allowed to modify the directory portion
-of filenames Readline completes.
+of filenames during completion.
 It could be used to expand symbolic links or shell variables in pathnames.
 It is called with the address of a string (the current directory name) as an
 argument, and may modify that string.
-If the string is replaced with a new string, the old value should be freed.
+If the function replaces the string with a new string, it
+should free the old value.
 Any modified directory name should have a trailing slash.
 The modified value will be used as part of the completion, replacing
 the directory portion of the pathname the user typed.
@@ -2109,11 +2269,14 @@ The function should not modify the directory argument if it returns 0.
 
 @deftypevar {rl_icppfunc_t *} rl_directory_rewrite_hook;
 If non-zero, this is the address of a function to call when completing
-a directory name.  This function takes the address of the directory name
-to be modified as an argument.  Unlike @code{rl_directory_completion_hook},
-it only modifies the directory name used in @code{opendir}, not what is
-displayed when the possible completions are printed or inserted.  It is
-called before rl_directory_completion_hook.
+a directory name.
+This function takes the address of the directory name
+to be modified as an argument.
+Unlike @code{rl_directory_completion_hook},
+it only modifies the directory name used in @code{opendir()},
+not what Readline displays when it prints or inserts
+the possible completions.
+Readline calls this before rl_directory_completion_hook.
 At the least, even if no other expansion is performed, this function should
 remove any quote characters from the directory name, because its result will
 be passed directly to @code{opendir()}.
@@ -2126,8 +2289,9 @@ The function should not modify the directory argument if it returns 0.
 @deftypevar {rl_icppfunc_t *} rl_filename_stat_hook
 If non-zero, this is the address of a function for the completer to
 call before deciding which character to append to a completed name.
-This function modifies its filename name argument, and the modified value
-is passed to @code{stat()} to determine the file's type and characteristics.
+This function modifies its filename name argument, and Readline passes
+the modified value to @code{stat()}
+to determine the file's type and characteristics.
 This function does not need to remove quote characters from the filename.
 
 The stat hook returns an integer that should be non-zero if
@@ -2136,25 +2300,53 @@ The function should not modify the directory argument if it returns 0.
 @end deftypevar
 
 @deftypevar {rl_dequote_func_t *} rl_filename_rewrite_hook
-If non-zero, this is the address of a function called when reading
+If non-zero, this is the address of a function
+for Readline to call when reading
 directory entries from the filesystem for completion and comparing
-them to the partial word to be completed.  The function should
-perform any necessary application or system-specific conversion on
-the filename, such as converting between character sets or converting
-from a filesystem format to a character input format.
-The function takes two arguments: @var{fname}, the filename to be converted,
+them to the filename portion of the partial word being completed.
+It modifies the filesystem entries,
+as opposed to @code{rl_completion_rewrite_hook},
+which modifies the word being completed.
+The function takes two arguments:
+@var{fname}, the filename to be converted,
+and @var{fnlen}, its length in bytes.
+It must either return its first argument (if no conversion takes place)
+or the converted filename in newly-allocated memory.
+The function should perform any necessary application or system-specific
+conversion on the filename, such as converting between character sets
+or converting from a filesystem format to a character input format.
+Readline compares the converted form against the word to be completed,
+and, if it matches, adds it to the list of matches.
+Readline will free the allocated string.
+@end deftypevar
+
+@deftypevar {rl_dequote_func_t *} rl_completion_rewrite_hook
+If non-zero, this is the address of a function
+for Readline to call before
+comparing the filename portion of a word to be completed with directory
+entries from the filesystem.
+It modifies the word being completed,
+as opposed to @code{rl_filename_rewrite_hook},
+which modifies filesystem entries.
+The function takes two arguments:
+@var{fname}, the word to be converted,
+after any @code{rl_filename_dequoting_function} has been applied,
 and @var{fnlen}, its length in bytes.
 It must either return its first argument (if no conversion takes place)
-or the converted filename in newly-allocated memory.  The converted
-form is used to compare against the word to be completed, and, if it
-matches, is added to the list of matches.  Readline will free the
-allocated string.
+or the converted filename in newly-allocated memory.
+The function should perform any necessary application or system-specific
+conversion on the filename, such as converting between character sets or
+converting from a character input format to some other format.
+Readline compares the converted form against directory entries, after
+their potential modification by @code{rl_filename_rewrite_hook},
+and adds any matches to the list of matches.
+Readline will free the allocated string.
 @end deftypevar
 
 @deftypevar {rl_compdisp_func_t *} rl_completion_display_matches_hook
 If non-zero, then this is the address of a function to call when
 completing a word would normally display the list of possible matches.
-This function is called in lieu of Readline displaying the list.
+Readline calls this function instead of displaying the list itself.
 It takes three arguments:
 (@code{char **}@var{matches}, @code{int} @var{num_matches}, @code{int} @var{max_length})
 where @var{matches} is the array of matching strings,
@@ -2167,40 +2359,48 @@ You may call that function from this hook.
 
 @deftypevar {const char *} rl_basic_word_break_characters
 The basic list of characters that signal a break between words for the
-completer routine.  The default value of this variable is the characters
+completer routine.
+The default value of this variable is the characters
 which break words for completion in Bash:
 @code{" \t\n\"\\'`@@$><=;|&@{("}.
 @end deftypevar
 
 @deftypevar {const char *} rl_basic_quote_characters
 A list of quote characters which can cause a word break.
+The default value includes single and double quotes.
 @end deftypevar
 
 @deftypevar {const char *} rl_completer_word_break_characters
 The list of characters that signal a break between words for
-@code{rl_complete_internal()}.  The default list is the value of
+@code{rl_complete_internal()}.
+These characters determine how Readline decides what to complete.
+The default list is the value of
 @code{rl_basic_word_break_characters}.
 @end deftypevar
 
 @deftypevar {rl_cpvfunc_t *} rl_completion_word_break_hook
 If non-zero, this is the address of a function to call when Readline is
-deciding where to separate words for word completion.  It should return
-a character string like @code{rl_completer_word_break_characters} to be
-used to perform the current completion.  The function may choose to set
-@code{rl_completer_word_break_characters} itself.  If the function
-returns @code{NULL}, @code{rl_completer_word_break_characters} is used.
+deciding where to separate words for word completion.
+It should return a character string like
+@code{rl_completer_word_break_characters} to be
+used to perform the current completion.
+The function may choose to set
+@code{rl_completer_word_break_characters} itself.
+If the function returns @code{NULL}, Readline uses
+@code{rl_completer_word_break_characters}.
 @end deftypevar
 
 @deftypevar {const char *} rl_completer_quote_characters
 A list of characters which can be used to quote a substring of the line.
-Completion occurs on the entire substring, and within the substring
+Completion occurs on the entire substring, and within the substring,
 @code{rl_completer_word_break_characters} are treated as any other character,
 unless they also appear within this list.
 @end deftypevar
 
 @deftypevar {const char *} rl_filename_quote_characters
-A list of characters that cause a filename to be quoted by the completer
-when they appear in a completed filename.  The default is the null string.
+A list of characters that cause Readline to quote a filename
+when they appear in a completed filename.
+The default is the null string.
 @end deftypevar
 
 @deftypevar {const char *} rl_special_prefixes
@@ -2212,89 +2412,111 @@ shell variables and hostnames.
 @end deftypevar
 
 @deftypevar int rl_completion_query_items
-Up to this many items will be displayed in response to a
-possible-completions call.  After that, Readline asks the user for
-confirmation before displaying them.
-The default value is 100.  A negative value 
+This determines the maximum number of items
+that possible-completions will display unconditionally.
+If there are more possible completions than this,
+Readline asks the user for confirmation before displaying them.
+The default value is 100.
+A negative value 
 indicates that Readline should never ask for confirmation.
 @end deftypevar
 
 @deftypevar {int} rl_completion_append_character
 When a single completion alternative matches at the end of the command
-line, this character is appended to the inserted completion text.  The
-default is a space character (@samp{ }).  Setting this to the null
+line, Readline appends this character to the inserted completion text.
+The default is a space character (@samp{ }).
+Setting this to the null
 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.
+It is set to the default before calling any application-specific completion
+function, and may only be changed within such a function.
 @end deftypevar
 
 @deftypevar int rl_completion_suppress_append
-If non-zero, @var{rl_completion_append_character} is not appended to
+If non-zero, Readline will not append the
+@var{rl_completion_append_character} to
 matches at the end of the command line, as described above.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
-@end deftypevar
-
-@deftypevar int rl_completion_quote_character
-When Readline is completing quoted text, as delimited by one of the
-characters in @var{rl_completer_quote_characters}, it sets this variable
-to the quoting character found.
-This is set before any application-specific completion function is called.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
 @end deftypevar
 
 @deftypevar int rl_completion_suppress_quote
 If non-zero, Readline does not append a matching quote character when
 performing completion on a quoted string.
-It is set to 0 before any application-specific completion function
-is called, and may only be changed within such a function.
+It is set to 0 before calling any application-specific completion function,
+and may only be changed within such a function.
 @end deftypevar
 
 @deftypevar int rl_completion_found_quote
 When Readline is completing quoted text, it sets this variable
 to a non-zero value if the word being completed contains or is delimited
 by any quoting characters, including backslashes.
-This is set before any application-specific completion function is called.
+This is set before calling any application-specific completion function.
+@end deftypevar
+
+@deftypevar int rl_completion_quote_character
+When Readline is completing quoted text, as delimited by one of the
+characters in @var{rl_completer_quote_characters}, it sets this variable
+to the quoting character it found.
+This is set before calling any application-specific completion function.
 @end deftypevar
 
 @deftypevar int rl_completion_mark_symlink_dirs
-If non-zero, a slash will be appended to completed filenames that are
+If non-zero, Readline appends a slash to completed filenames that are
 symbolic links to directory names, subject to the value of the
 user-settable @var{mark-directories} variable.
 This variable exists so that application-specific completion functions
 can override the user's global preference (set via the
 @var{mark-symlinked-directories} Readline variable) if appropriate.
-This variable is set to the user's preference before any
-application-specific completion function is called, so unless that
-function modifies the value, the user's preferences are honored.
+This variable is set to the user's preference before calling any
+application-specific completion function,
+so unless that function modifies the value,
+Readline will honor the user's preferences.
 @end deftypevar
 
 @deftypevar int rl_ignore_completion_duplicates
-If non-zero, then duplicates in the matches are removed.
+If non-zero, then Readline removes duplicates in the set of possible
+completions.
 The default is 1.
 @end deftypevar
 
 @deftypevar int rl_filename_completion_desired
-Non-zero means that the results of the matches are to be treated as
-filenames.  This is @emph{always} zero when completion is attempted,
+A non-zero value means that Readline should treat the results of the
+matches as filenames.
+This is @emph{always} zero when completion is attempted,
 and can only be changed
-within an application-specific completion function.  If it is set to a
-non-zero value by such a function, directory names have a slash appended
-and Readline attempts to quote completed filenames if they contain any
+within an application-specific completion function.
+If it is set to a
+non-zero value by such a function, Readline
+appends a slash to directory names
+and attempts to quote completed filenames if they contain any
 characters in @code{rl_filename_quote_characters} and
 @code{rl_filename_quoting_desired} is set to a non-zero value.
 @end deftypevar
 
 @deftypevar int rl_filename_quoting_desired
-Non-zero means that the results of the matches are to be quoted using
-double quotes (or an application-specific quoting mechanism) if the
-completed filename contains any characters in
-@code{rl_filename_quote_chars}.  This is @emph{always} non-zero
-when completion is attempted, and can only be changed within an
+A non-zero value means that Readline should quote the results of the 
+matches using double quotes (or an application-specific quoting mechanism)
+if the completed filename contains any characters in
+@code{rl_filename_quote_chars}.
+This is @emph{always} non-zero when completion is attempted,
+and can only be changed within an
+application-specific completion function.
+The quoting is performed via a call to the function pointed to
+by @code{rl_filename_quoting_function}.
+@end deftypevar
+
+@deftypevar int rl_full_quoting_desired
+A non-zero value means that Readline should apply filename-style quoting,
+including any application-specified quoting mechanism,
+to all completion matches even if it is not otherwise treating the
+matches as filenames.
+This is @emph{always} zero when completion is attempted,
+and can only be changed within an
 application-specific completion function.
-The quoting is effected via a call to the function pointed to
+The quoting is performed via a call to the function pointed to
 by @code{rl_filename_quoting_function}.
 @end deftypevar
 
@@ -2309,41 +2531,47 @@ It should be set only by an application's completion function.
 @deftypevar int rl_sort_completion_matches
 If an application sets this variable to 0, Readline will not sort the
 list of completions (which implies that it cannot remove any duplicate
-completions).  The default value is 1, which means that Readline will
+completions).
+The default value is 1, which means that Readline will
 sort the completions and, depending on the value of
-@code{rl_ignore_completion_duplicates}, will attempt to remove duplicate
-matches.
+@code{rl_ignore_completion_duplicates}, will attempt to remove
+duplicate matches.
 @end deftypevar
 
 @deftypevar int rl_completion_type
 Set to a character describing the type of completion Readline is currently
 attempting; see the description of @code{rl_complete_internal()}
 (@pxref{Completion Functions}) for the list of characters.
-This is set to the appropriate value before any application-specific
-completion function is called, allowing such functions to present
+This is set to the appropriate value before calling
+any application-specific completion function,
+so these functions can present
 the same interface as @code{rl_complete()}.
 @end deftypevar
 
 @deftypevar int rl_completion_invoking_key
 Set to the final character in the key sequence that invoked one of the
-completion functions that call @code{rl_complete_internal()}.  This is
-set to the appropriate value before any application-specific completion
-function is called.
+completion functions that call @code{rl_complete_internal()}.
+This is set to the appropriate value before calling
+any application-specific completion function.
 @end deftypevar
 
 @deftypevar int rl_inhibit_completion
-If this variable is non-zero, completion is inhibited.  The completion
-character will be inserted as any other bound to @code{self-insert}.
+If this variable is non-zero, Readline does not perform completion,
+even if a key binding indicates it should.
+The completion character
+is inserted as if it were bound to @code{self-insert}.
 @end deftypevar
 
 @node A Short Completion Example
 @subsection A Short Completion Example
 
 Here is a small application demonstrating the use of the GNU Readline
-library.  It is called @code{fileman}, and the source code resides in
-@file{examples/fileman.c}.  This sample application provides
-completion of command names, line editing features, and access to the
-history list.
+library.
+It is called @code{fileman}, and the source code resides in
+@file{examples/fileman.c}.
+This sample application provides
+command name completion, line editing features,
+and access to the history list.
 
 @page
 @smallexample
@@ -2423,8 +2651,8 @@ COMMAND commands[] = @{
 @};
 
 /* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
+char *stripwhite (char *);
+COMMAND *find_command (char *);
 
 /* The name of this program, as taken from argv[0]. */
 char *progname;
@@ -2433,8 +2661,7 @@ char *progname;
 int done;
 
 char *
-dupstr (s)
-     char *s;
+dupstr (char *s)
 @{
   char *r;
 
@@ -2443,9 +2670,8 @@ dupstr (s)
   return (r);
 @}
 
-main (argc, argv)
-     int argc;
-     char **argv;
+int
+main (int argc, char **argv)
 @{
   char *line, *s;
 
@@ -2481,8 +2707,7 @@ main (argc, argv)
 
 /* Execute a command line. */
 int
-execute_line (line)
-     char *line;
+execute_line (char *line)
 @{
   register int i;
   COMMAND *command;
@@ -2521,8 +2746,7 @@ execute_line (line)
 /* Look up NAME as the name of a command, and return a pointer to that
    command.  Return a NULL pointer if NAME isn't a command name. */
 COMMAND *
-find_command (name)
-     char *name;
+find_command (char *name)
 @{
   register int i;
 
@@ -2536,8 +2760,7 @@ find_command (name)
 /* Strip whitespace from the start and end of STRING.  Return a pointer
    into STRING. */
 char *
-stripwhite (string)
-     char *string;
+stripwhite (char *string)
 @{
   register char *s, *t;
 
@@ -2561,13 +2784,14 @@ stripwhite (string)
 /*                                                                  */
 /* **************************************************************** */
 
-char *command_generator PARAMS((const char *, int));
-char **fileman_completion PARAMS((const char *, int, int));
+char *command_generator (const char *, int);
+char **fileman_completion (const char *, int, int);
 
 /* Tell the GNU Readline library how to complete.  We want to try to complete
    on command names if this is the first word in the line, or on filenames
    if not. */
-initialize_readline ()
+void
+initialize_readline (void)
 @{
   /* Allow conditional parsing of the ~/.inputrc file. */
   rl_readline_name = "FileMan";
@@ -2582,9 +2806,7 @@ initialize_readline ()
    in case we want to do some simple parsing.  Return the array of matches,
    or NULL if there aren't any. */
 char **
-fileman_completion (text, start, end)
-     const char *text;
-     int start, end;
+fileman_completion (const char *text, int start, int end)
 @{
   char **matches;
 
@@ -2603,9 +2825,7 @@ fileman_completion (text, start, end)
    to start from scratch; without any state (i.e. STATE == 0), then we
    start at the top of the list. */
 char *
-command_generator (text, state)
-     const char *text;
-     int state;
+command_generator (const char *text, int state)
 @{
   static int list_index, len;
   char *name;
@@ -2643,40 +2863,40 @@ command_generator (text, state)
 static char syscom[1024];
 
 /* List the file(s) named in arg. */
-com_list (arg)
-     char *arg;
+int
+com_list (char *arg)
 @{
   if (!arg)
     arg = "";
 
-  sprintf (syscom, "ls -FClg %s", arg);
+  snprintf (syscom, sizeof (syscom), "ls -FClg %s", arg);
   return (system (syscom));
 @}
 
-com_view (arg)
-     char *arg;
+int
+com_view (char *arg)
 @{
   if (!valid_argument ("view", arg))
     return 1;
 
 #if defined (__MSDOS__)
   /* more.com doesn't grok slashes in pathnames */
-  sprintf (syscom, "less %s", arg);
+  snprintf (syscom, sizeof (syscom), "less %s", arg);
 #else
-  sprintf (syscom, "more %s", arg);
+  snprintf (syscom, sizeof (syscom), "more %s", arg);
 #endif
   return (system (syscom));
 @}
 
-com_rename (arg)
-     char *arg;
+int
+com_rename (char *arg)
 @{
   too_dangerous ("rename");
   return (1);
 @}
 
-com_stat (arg)
-     char *arg;
+int
+com_stat (char *arg)
 @{
   struct stat finfo;
 
@@ -2703,8 +2923,8 @@ com_stat (arg)
   return (0);
 @}
 
-com_delete (arg)
-     char *arg;
+int
+com_delete (char *arg)
 @{
   too_dangerous ("delete");
   return (1);
@@ -2712,8 +2932,8 @@ com_delete (arg)
 
 /* Print out help for ARG, or for all of the commands if ARG is
    not present. */
-com_help (arg)
-     char *arg;
+int
+com_help (char *arg)
 @{
   register int i;
   int printed = 0;
@@ -2751,8 +2971,8 @@ com_help (arg)
 @}
 
 /* Change to the directory ARG. */
-com_cd (arg)
-     char *arg;
+int
+com_cd (char *arg)
 @{
   if (chdir (arg) == -1)
     @{
@@ -2765,8 +2985,8 @@ com_cd (arg)
 @}
 
 /* Print out the current working directory. */
-com_pwd (ignore)
-     char *ignore;
+int
+com_pwd (char *ignore)
 @{
   char dir[1024], *s;
 
@@ -2782,16 +3002,16 @@ com_pwd (ignore)
 @}
 
 /* The user wishes to quit using this program.  Just set DONE non-zero. */
-com_quit (arg)
-     char *arg;
+int
+com_quit (char *arg)
 @{
   done = 1;
   return (0);
 @}
 
 /* Function which tells you that you can't do this. */
-too_dangerous (caller)
-     char *caller;
+void
+too_dangerous (char *caller)
 @{
   fprintf (stderr,
            "%s: Too dangerous for me to distribute.  Write it yourself.\n",
@@ -2801,8 +3021,7 @@ too_dangerous (caller)
 /* Return non-zero if ARG is a valid argument for CALLER, else print
    an error message and return zero. */
 int
-valid_argument (caller, arg)
-     char *caller, *arg;
+valid_argument (char *caller, char *arg)
 @{
   if (!arg || !*arg)
     @{
index cbcbb45cf4c033aeac748bf44debb78ce392e2a2..704b88f2b0b82b123f530e27f0a6e274731c6869 100644 (file)
@@ -1,5 +1,7 @@
 @comment %**start of header (This is for running Texinfo on a region.)
+@ifclear BashFeatures
 @setfilename rluser.info
+@end ifclear
 @comment %**end of header (This is for running Texinfo on a region.)
 
 @ignore
@@ -9,7 +11,7 @@ use these features.  There is a document entitled "readline.texinfo"
 which contains both end-user and programmer documentation for the
 GNU Readline Library.
 
-Copyright (C) 1988--2022 Free Software Foundation, Inc.
+Copyright (C) 1988--2025 Free Software Foundation, Inc.
 
 Authored by Brian Fox and Chet Ramey.
 
@@ -51,8 +53,8 @@ Command line editing is enabled by default when using an interactive shell,
 unless the @option{--noediting} option is supplied at shell invocation.
 Line editing is also used when using the @option{-e} option to the
 @code{read} builtin command (@pxref{Bash Builtins}).
-By default, the line editing commands are similar to those of Emacs.
-A vi-style line editing interface is also available.
+By default, the line editing commands are similar to those of Emacs;
+a vi-style line editing interface is also available.
 Line editing can be enabled at any time using the @option{-o emacs} or
 @option{-o vi} options to the @code{set} builtin command
 (@pxref{The Set Builtin}), or disabled using the @option{+o emacs} or 
@@ -80,8 +82,8 @@ Line editing can be enabled at any time using the @option{-o emacs} or
 @node Introduction and Notation
 @section Introduction to Line Editing
 
-The following paragraphs describe the notation used to represent
-keystrokes.
+The following paragraphs use Emacs style to
+describe the notation used to represent keystrokes.
 
 The text @kbd{C-k} is read as `Control-K' and describes the character
 produced when the @key{k} key is pressed while the Control key
@@ -89,29 +91,45 @@ is depressed.
 
 The text @kbd{M-k} is read as `Meta-K' and describes the character
 produced when the Meta key (if you have one) is depressed, and the @key{k}
-key is pressed.
-The Meta key is labeled @key{ALT} on many keyboards.
+key is pressed (a @dfn{meta character}), then both are released.
+The Meta key is labeled @key{ALT} or @key{Option} on many keyboards.
 On keyboards with two keys labeled @key{ALT} (usually to either side of
 the space bar), the @key{ALT} on the left side is generally set to
 work as a Meta key.
-The @key{ALT} key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
+One of the @key{ALT} keys may also be configured
+as some other modifier, such as a
 Compose key for typing accented characters.
 
+On some keyboards, the Meta key modifier produces characters with
+the eighth bit (0200) set.
+You can use the @code{enable-meta-key} variable
+to control whether or not it does this, if the keyboard allows it.
+On many others, the terminal or terminal emulator converts the metafied
+key to a key sequence beginning with @key{ESC} as described in the
+next paragraph.
+
 If you do not have a Meta or @key{ALT} key, or another key working as
-a Meta key, the identical keystroke can be generated by typing @key{ESC}
+a Meta key, you can generally achieve the latter effect by typing @key{ESC}
 @emph{first}, and then typing @key{k}.
+The @key{ESC} character is known as the @dfn{meta prefix}).
+
 Either process is known as @dfn{metafying} the @key{k} key.
 
+If your Meta key produces a key sequence with the @key{ESC} meta prefix,
+you can make @kbd{M-key} key bindings you specify
+(see @code{Key Bindings} in @ref{Readline Init File Syntax})
+do the same thing by setting the @code{force-meta-prefix} variable.
+
 The text @kbd{M-C-k} is read as `Meta-Control-k' and describes the
-character produced by @dfn{metafying} @kbd{C-k}.
+character produced by metafying @kbd{C-k}.
 
-In addition, several keys have their own names.  Specifically,
+In addition, several keys have their own names.
+Specifically,
 @key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
 stand for themselves when seen in this text, or in an init file
 (@pxref{Readline Init File}).
 If your keyboard lacks a @key{LFD} key, typing @key{C-j} will
-produce the desired character.
+output the appropriate character.
 The @key{RET} key may be labeled @key{Return} or @key{Enter} on
 some keyboards.
 
@@ -120,13 +138,15 @@ some keyboards.
 @cindex interaction, readline
 
 Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
+only to notice that the first word on the line is misspelled.
+The Readline library gives you a set of commands for manipulating the text
 as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
+you to retype the majority of the line.
+Using these editing commands,
 you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press @key{RET}.  You do not have to be at the
+insert the text of the corrections.
+Then, when you are satisfied with the line, you simply press @key{RET}.
+You do not have to be at the
 end of the line to press @key{RET}; the entire line is accepted
 regardless of the location of the cursor within the line.
 
@@ -144,23 +164,27 @@ regardless of the location of the cursor within the line.
 @cindex command editing
 @cindex editing command lines
 
-In order to enter characters into the line, simply type them.  The typed
+In order to enter characters into the line, simply type them.
+The typed
 character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your
+space to the right.
+If you mistype a character, you can use your
 erase character to back up and delete the mistyped character.
 
 Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters.  In
-that case, you can type @kbd{C-b} to move the cursor to the left, and then
-correct your mistake.  Afterwards, you can move the cursor to the right
-with @kbd{C-f}.
+not notice the error until you have typed several other characters.
+In that case, you can type @kbd{C-b} to move the cursor to the left,
+and then correct your mistake.
+Afterwards, you can move the cursor to the right with @kbd{C-f}.
 
 When you add text in the middle of a line, you will notice that characters
 to the right of the cursor are `pushed over' to make room for the text
-that you have inserted.  Likewise, when you delete text behind the cursor,
+that you have inserted.
+Likewise, when you delete text behind the cursor,
 characters to the right of the cursor are `pulled back' to fill in the
-blank space created by the removal of the text.  A list of the bare
-essentials for editing the text of an input line follows.
+blank space created by the removal of the text.
+These are the bare
+essentials for editing the text of an input line:
 
 @table @asis
 @item @kbd{C-b}
@@ -174,25 +198,24 @@ Delete the character underneath the cursor.
 @item @w{Printing characters}
 Insert the character into the line at the cursor.
 @item @kbd{C-_} or @kbd{C-x C-u}
-Undo the last editing command.  You can undo all the way back to an
-empty line.
+Undo the last editing command.
+You can undo all the way back to an empty line.
 @end table
 
 @noindent
-(Depending on your configuration, the @key{Backspace} key might be set to
+Depending on your configuration, the @key{Backspace} key might be set to
 delete the character to the left of the cursor and the @key{DEL} key set
 to delete the character underneath the cursor, like @kbd{C-d}, rather
-than the character to the left of the cursor.)
+than the character to the left of the cursor.
 
 @node Readline Movement Commands
 @subsection Readline Movement Commands
 
-
 The above table describes the most basic keystrokes that you need
-in order to do editing of the input line.  For your convenience, many
-other commands have been added in addition to @kbd{C-b}, @kbd{C-f},
-@kbd{C-d}, and @key{DEL}.  Here are some commands for moving more rapidly
-about the line.
+in order to do editing of the input line.
+For your convenience, many other commands are available in
+addition to @kbd{C-b}, @kbd{C-f}, @kbd{C-d}, and @key{DEL}.
+Here are some commands for moving more rapidly within the line.
 
 @table @kbd
 @item C-a
@@ -208,7 +231,8 @@ Clear the screen, reprinting the current line at the top.
 @end table
 
 Notice how @kbd{C-f} moves forward a character, while @kbd{M-f} moves
-forward a word.  It is a loose convention that control keystrokes
+forward a word.
+It is a loose convention that control keystrokes
 operate on characters while meta keystrokes operate on words.
 
 @node Readline Killing Commands
@@ -228,8 +252,8 @@ place later.
 
 When you use a kill command, the text is saved in a @dfn{kill-ring}.
 Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill
-ring is not line specific; the text that you killed on a previously
+that when you yank it back, you get it all.
+The kill ring is not line specific; the text that you killed on a previously
 typed line is available to be yanked back later, when you are typing
 another line.
 @cindex kill ring
@@ -251,38 +275,45 @@ words, to the start of the previous word.
 Word boundaries are the same as those used by @kbd{M-b}.
 
 @item C-w
-Kill from the cursor to the previous whitespace.  This is different than
+Kill from the cursor to the previous whitespace.
+This is different than
 @kbd{M-@key{DEL}} because the word boundaries differ.
 
 @end table
 
 Here is how to @dfn{yank} the text back into the line.  Yanking
-means to copy the most-recently-killed text from the kill buffer.
+means to copy the most-recently-killed text from the kill buffer
+into the line at the current cursor position.
 
 @table @kbd
 @item C-y
 Yank the most recently killed text back into the buffer at the cursor.
 
 @item M-y
-Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is @kbd{C-y} or @kbd{M-y}.
+Rotate the kill-ring, and yank the new top.
+You can only do this if the prior command is @kbd{C-y} or @kbd{M-y}.
 @end table
 
 @node Readline Arguments
 @subsection Readline Arguments
 
-You can pass numeric arguments to Readline commands.  Sometimes the
+You can pass numeric arguments to Readline commands.
+Sometimes the
 argument acts as a repeat count, other times it is the @i{sign} of the
-argument that is significant.  If you pass a negative argument to a
+argument that is significant.
+If you pass a negative argument to a
 command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
+act in a backward direction.
+For example, to kill text back to the
 start of the line, you might type @samp{M-- C-k}.
 
 The general way to pass numeric arguments to a command is to type meta
-digits before the command.  If the first `digit' typed is a minus
-sign (@samp{-}), then the sign of the argument will be negative.  Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command.  For example, to give
+digits before the command.
+If the first `digit' typed is a minus
+sign (@samp{-}), then the sign of the argument will be negative.
+Once you have typed one meta digit to get the argument started, you can
+type the remainder of the digits, and then the command.
+For example, to give
 the @kbd{C-d} command an argument of 10, you could type @samp{M-1 0 C-d},
 which will delete the next ten characters on the input line.
 
@@ -302,34 +333,36 @@ As each character of the search string is typed, Readline displays
 the next entry from the history matching the string typed so far.
 An incremental search requires only as many characters as needed to
 find the desired history entry.
-To search backward in the history for a particular string, type
-@kbd{C-r}.  Typing @kbd{C-s} searches forward through the history.
+When using emacs editing mode, type @kbd{C-r}
+to search backward in the history for a particular string.
+Typing @kbd{C-s} searches forward through the history.
 The characters present in the value of the @code{isearch-terminators} variable
 are used to terminate an incremental search.
 If that variable has not been assigned a value, the @key{ESC} and
-@kbd{C-J} characters will terminate an incremental search.
-@kbd{C-g} will abort an incremental search and restore the original line.
+@kbd{C-j} characters terminate an incremental search.
+@kbd{C-g} aborts an incremental search and restores the original line.
 When the search is terminated, the history entry containing the
 search string becomes the current line.
 
 To find other matching entries in the history list, type @kbd{C-r} or
 @kbd{C-s} as appropriate.
-This will search backward or forward in the history for the next
+This searches backward or forward in the history for the next
 entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a @key{RET} will terminate the search and accept
+Any other key sequence bound to a Readline command terminates
+the search and executes that command.
+For instance, a @key{RET} terminates the search and accepts
 the line, thereby executing the command from the history list.
 A movement command will terminate the search, make the last line found
 the current line, and begin editing.
 
-Readline remembers the last incremental search string.  If two
-@kbd{C-r}s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
+Readline remembers the last incremental search string.
+If two @kbd{C-r}s are typed without any intervening characters defining
+a new search string, Readline uses any remembered search string.
 
 Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
+to search for matching history entries.
+The search string may be typed by the user or be part of the contents of
+the current line.
 
 @node Readline Init File
 @section Readline Init File
@@ -339,17 +372,16 @@ Although the Readline library comes with a set of Emacs-like
 keybindings installed by default, it is possible to use a different set
 of keybindings.
 Any user can customize programs that use Readline by putting
-commands in an @dfn{inputrc} file,
-conventionally in their home directory.
-The name of this
+commands in an @dfn{inputrc} file, conventionally in their home directory.
+The name of this file is taken from the value of the
 @ifset BashFeatures
-file is taken from the value of the shell variable @env{INPUTRC}.  If
+shell variable @env{INPUTRC}.
 @end ifset
 @ifclear BashFeatures
-file is taken from the value of the environment variable @env{INPUTRC}.  If
+environment variable @env{INPUTRC}.
 @end ifclear
-that variable is unset, the default is @file{~/.inputrc}.  If that
-file does not exist or cannot be read, the ultimate default is
+If that variable is unset, the default is @file{~/.inputrc}.
+If that file does not exist or cannot be read, Readline looks for
 @file{/etc/inputrc}.
 @ifset BashFeatures
 The @w{@code{bind}} builtin command can also be used to set Readline
@@ -357,17 +389,15 @@ keybindings and variables.
 @xref{Bash Builtins}.
 @end ifset
 
-When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
+When a program that uses the Readline library starts up, Readline reads
+the init file and sets any variables and key bindings it contains.
 
 In addition, the @code{C-x C-r} command re-reads this init file, thus
 incorporating any changes that you might have made to it.
 
 @menu
 * Readline Init File Syntax::  Syntax for the commands in the inputrc file.
-
 * Conditional Init Constructs::        Conditional key bindings in the inputrc file.
-
 * Sample Init File::           An example inputrc file.
 @end menu
 
@@ -375,11 +405,12 @@ incorporating any changes that you might have made to it.
 @subsection Readline Init File Syntax
 
 There are only a few basic constructs allowed in the
-Readline init file.  Blank lines are ignored.
+Readline init file.
+Blank lines are ignored.
 Lines beginning with a @samp{#} are comments.
 Lines beginning with a @samp{$} indicate conditional
-constructs (@pxref{Conditional Init Constructs}).  Other lines
-denote variable settings and key bindings.
+constructs (@pxref{Conditional Init Constructs}).
+Other lines denote variable settings and key bindings.
 
 @table @asis
 @item Variable Settings
@@ -401,12 +432,13 @@ change from the default Emacs-like key binding to use
 set editing-mode vi
 @end example
 
-Variable names and values, where appropriate, are recognized without regard
-to case.  Unrecognized variable names are ignored.
+Variable names and values, where appropriate, are recognized without
+regard to case.
+Unrecognized variable names are ignored.
 
 Boolean variables (those that can be set to on or off) are set to on if
-the value is null or empty, @var{on} (case-insensitive), or 1.  Any other
-value results in the variable being set to off.
+the value is null or empty, @var{on} (case-insensitive), or 1.
+Any other value results in the variable being set to off.
 
 @ifset BashFeatures
 The @w{@code{bind -V}} command lists the current Readline variable names
@@ -434,9 +466,10 @@ A sample value might be @samp{\e[01;33m}.
 
 @item active-region-end-color
 @vindex active-region-end-color
-A string variable that "undoes" the effects of @code{active-region-start-color}
-and restores "normal" terminal display appearance after displaying text
-in the active region.
+A string variable that ``undoes''
+the effects of @code{active-region-start-color}
+and restores ``normal''
+terminal display appearance after displaying text in the active region.
 This string must not take up any physical character positions on the display,
 so it should consist only of terminal escape sequences.
 It is output to the terminal after displaying the text in the active region.
@@ -448,22 +481,26 @@ A sample value might be @samp{\e[0m}.
 @item bell-style
 @vindex bell-style
 Controls what happens when Readline wants to ring the terminal bell.
-If set to @samp{none}, Readline never rings the bell.  If set to
-@samp{visible}, Readline uses a visible bell if one is available.
+If set to @samp{none}, Readline never rings the bell.
+If set to @samp{visible}, Readline uses a visible bell if one is available.
 If set to @samp{audible} (the default), Readline attempts to ring
 the terminal's bell.
 
 @item bind-tty-special-chars
 @vindex bind-tty-special-chars
 If set to @samp{on} (the default), Readline attempts to bind the control
-characters   treated specially by the kernel's terminal driver to their
+characters that are
+treated specially by the kernel's terminal driver to their
 Readline equivalents.
+These override the default Readline bindings described here.
+Type @samp{stty -a} at a Bash prompt to see your current terminal settings,
+including the special control characters (usually @code{cchars}).
 
 @item blink-matching-paren
 @vindex blink-matching-paren
 If set to @samp{on}, Readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted.  The default
-is @samp{off}.
+opening parenthesis when a closing parenthesis is inserted.
+The default is @samp{off}.
 
 @item colored-completion-prefix
 @vindex colored-completion-prefix
@@ -486,9 +523,9 @@ The default is @samp{off}.
 
 @item comment-begin
 @vindex comment-begin
-The string to insert at the beginning of the line when the
-@code{insert-comment} command is executed.  The default value
-is @code{"#"}.
+The string to insert at the beginning of the line by the
+@code{insert-comment} command.
+The default value is @code{"#"}.
 
 @item completion-display-width
 @vindex completion-display-width
@@ -496,7 +533,7 @@ 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.
+A value of 0 causes matches to be displayed one per line.
 The default value is -1.
 
 @item completion-ignore-case
@@ -514,79 +551,90 @@ The default value is @samp{off}.
 
 @item completion-prefix-display-length
 @vindex completion-prefix-display-length
-The length in characters of the common prefix of a list of possible
-completions that is displayed without modification.  When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
+The maximum
+length in characters of the common prefix of a list of possible
+completions that is displayed without modification.
+When set to a value greater than zero, Readline
+replaces common prefixes longer than this value
+with an ellipsis when displaying possible completions.
+If a completion begins with a period,
+and Readline is completing filenames,
+it uses three underscores instead of an ellipsis.
 
 @item completion-query-items
 @vindex completion-query-items
-The number of possible completions that determines when the user is
-asked whether the list of possibilities should be displayed.
-If the number of possible completions is greater than or equal to this value,
-Readline will ask whether or not the user wishes to view them;
-otherwise, they are simply listed.
+The number of possible completions that determines when the user is asked
+whether the list of possibilities should be displayed.
+If the number of possible completions is greater than
+or equal to this value,
+Readline asks whether or not the user wishes to view them;
+otherwise, Readline simply lists the completions.
 This variable must be set to an integer value greater than or equal to zero.
-A zero value means Readline should never ask; negative values are
-treated as zero.
+A zero value means Readline should never ask; negative
+values are treated as zero.
 The default limit is @code{100}.
 
 @item convert-meta
 @vindex convert-meta
-If set to @samp{on}, Readline will convert characters with the
-eighth bit set to an @sc{ascii} key sequence by stripping the eighth
-bit and prefixing an @key{ESC} character, converting them to a
-meta-prefixed key sequence.
-The default value is @samp{on}, but
-will be set to @samp{off} if the locale is one that contains
-eight-bit characters.
+If set to @samp{on}, Readline converts characters it reads
+that have the eighth bit set to an @sc{ascii} key sequence by
+clearing the eighth bit and prefixing an @key{ESC} character,
+converting them to a meta-prefixed key sequence.
+The default value is @samp{on}, but Readline sets it to @samp{off}
+if the locale contains
+characters whose encodings may include bytes with the eighth bit set.
 This variable is dependent on the @code{LC_CTYPE} locale category, and
-may change if the locale is changed.
+may change if the locale changes.
+This variable also affects key bindings;
+see the description of @code{force-meta-prefix} below.
 
 @item disable-completion
 @vindex disable-completion
-If set to @samp{On}, Readline will inhibit word completion.
-Completion  characters will be inserted into the line as if they had
-been mapped to @code{self-insert}.  The default is @samp{off}.
+If set to @samp{On}, Readline inhibits word completion.
+Completion characters are inserted into the line as if they
+had been mapped to @code{self-insert}.
+The default is @samp{off}.
 
 @item echo-control-characters
 @vindex echo-control-characters
 When set to @samp{on}, on operating systems that indicate they support it,
 Readline echoes a character corresponding to a signal generated from the
-keyboard.  The default is @samp{on}.
+keyboard.
+The default is @samp{on}.
 
 @item editing-mode
 @vindex editing-mode
-The @code{editing-mode} variable controls which default set of
-key bindings is used.  By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs.  This variable can be
-set to either @samp{emacs} or @samp{vi}.
+The @code{editing-mode} variable controls the default set of
+key bindings.
+By default, Readline starts up in emacs editing mode, where
+the keystrokes are most similar to Emacs.
+This variable can be set to either @samp{emacs} or @samp{vi}.
 
 @item emacs-mode-string
 @vindex emacs-mode-string
 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
+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 @samp{\1} and @samp{\2} escapes to begin and end sequences of
+The @samp{\1} and @samp{\2} escapes 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 @samp{@@}.
 
 @item enable-active-region
-@vindex enable-active-region
-The @dfn{point} is the current cursor position, and @dfn{mark} refers
-to a saved cursor position (@pxref{Commands For Moving}).
+@vindex enable-active-region The
+@dfn{point} is the current cursor position, and @dfn{mark} refers to a
+saved cursor position (@pxref{Commands For Moving}).
 The text between the point and mark is referred to as the @dfn{region}.
 When this variable is set to @samp{On}, Readline allows certain commands
 to designate the region as @dfn{active}.
 When the region is active, Readline highlights the text in the region using
 the value of the @code{active-region-start-color}, which defaults to the
-string that enables
-the terminal's standout mode.
+string that enables the terminal's standout mode. 
 The active region shows the text inserted by bracketed-paste and any
-matching text found by incremental and non-incremental history searches.
+matching text found by incremental and non-incremental history searches. 
 The default is @samp{On}.
 
 @item enable-bracketed-paste
@@ -595,33 +643,58 @@ When set to @samp{On}, Readline configures the terminal to insert each
 paste into the editing buffer as a single string of characters, instead
 of treating each character as if it had been read from the keyboard.
 This is called putting the terminal into @dfn{bracketed paste mode};
-it prevents Readline from executing any editing commands bound to key
-sequences appearing in the pasted text.
-The default is @samp{On}.
+it prevents Readline from executing any editing commands bound
+to key sequences appearing in the pasted text.
+The default is @samp{On}. 
 
 @item enable-keypad
 @vindex enable-keypad
-When set to @samp{on}, Readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.  The default is @samp{off}.
+When set to @samp{on}, Readline tries to enable the application
+keypad when it is called.
+Some systems need this to enable the arrow keys.
+The default is @samp{off}.
 
 @item enable-meta-key
-When set to @samp{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.
+@vindex enable-meta-key
+When set to @samp{on}, Readline tries 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;
+this variable checks for the terminal capability that indicates the
+terminal can enable and disable a mode that sets the eighth bit of a
+character (0200) if the Meta key is held down when the character is
+typed (a meta character).
 The default is @samp{on}.
 
 @item expand-tilde
 @vindex expand-tilde
-If set to @samp{on}, tilde expansion is performed when Readline
-attempts word completion.  The default is @samp{off}.
+If set to @samp{on}, Readline attempts tilde expansion when it
+attempts word completion.
+The default is @samp{off}.
+
+@item force-meta-prefix
+@vindex force-meta-prefix
+If set to @samp{on}, Readline modifies its behavior when binding key
+sequences containing @kbd{\M-} or @code{Meta-}
+(see @code{Key Bindings} in @ref{Readline Init File Syntax})
+by converting a key sequence of the form
+@kbd{\M-}@var{C} or @code{Meta-}@var{C} to the two-character sequence
+@kbd{ESC} @var{C} (adding the meta prefix).
+If @code{force-meta-prefix} is set to @samp{off} (the default),
+Readline uses the value of the @code{convert-meta} variable to determine
+whether to perform this conversion:
+if @code{convert-meta} is @samp{on},
+Readline performs the conversion described above;
+if it is @samp{off}, Readline converts @var{C} to a meta character by
+setting the eighth bit (0200).
+The default is @samp{off}.
 
 @item history-preserve-point
 @vindex history-preserve-point
 If set to @samp{on}, the history code attempts to place the point (the
 current cursor position) at the
 same location on each history line retrieved with @code{previous-history}
-or @code{next-history}.  The default is @samp{off}.
+or @code{next-history}.
+The default is @samp{off}.
 
 @item history-size
 @vindex history-size
@@ -630,37 +703,44 @@ 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.
+@ifset BashFeatures
+By default, Bash sets the maximum number of history entries to
+the value of the @code{HISTSIZE} shell variable.
+@end ifset
+@ifclear BashFeatures
 By default, the number of history entries is not limited.
-If an attempt is made to set @var{history-size} to a non-numeric value,
+@end ifclear
+If you try to set @var{history-size} to a non-numeric value,
 the maximum number of history entries will be set to 500.
 
 @item horizontal-scroll-mode
 @vindex horizontal-scroll-mode
-This variable can be set to either @samp{on} or @samp{off}.  Setting it
-to @samp{on} means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line.
+Setting this variable to @samp{on} means that the text of the lines
+being edited will scroll horizontally on a single screen line when
+the lines are longer than the width of the screen, instead of wrapping
+onto a new screen line.
 This variable is automatically set to @samp{on} for terminals of height 1.
 By default, this variable is set to @samp{off}.
 
 @item input-meta
 @vindex input-meta
 @vindex meta-flag
-If set to @samp{on}, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The
-default value is @samp{off}, but Readline will set it to @samp{on} if the 
-locale contains eight-bit characters.
-The name @code{meta-flag} is a synonym for this variable.
+If set to @samp{on}, Readline enables eight-bit input (that is, it
+does not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support.
+The default value is @samp{off}, but Readline sets it to @samp{on}
+if the locale contains characters whose encodings may include bytes
+with the eighth bit set.
 This variable is dependent on the @code{LC_CTYPE} locale category, and
-may change if the locale is changed.
+its value may change if the locale changes.
+The name @code{meta-flag} is a synonym for @code{input-meta}.
 
 @item isearch-terminators
 @vindex isearch-terminators
 The string of characters that should terminate an incremental search without
 subsequently executing the character as a command (@pxref{Searching}).
 If this variable has not been given a value, the characters @key{ESC} and
-@kbd{C-J} will terminate an incremental search.
+@kbd{C-j} terminate an incremental search.
 
 @item keymap
 @vindex keymap
@@ -677,90 +757,103 @@ Built-in @code{keymap} names are
 @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
+The default value is @code{emacs};
+the value of the @code{editing-mode} variable also affects the
 default keymap.
 
 @item keyseq-timeout
-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.
+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 Readline doesn't receive any input within the timeout, it uses the
+shorter but complete key sequence.
 Readline uses this value to determine whether or not input is
 available on the current input source (@code{rl_instream} by default).
 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
+non-numeric value, Readline waits until another key is pressed to
 decide which key sequence to complete.
 The default value is @code{500}.
 
 @item mark-directories
-If set to @samp{on}, completed directory names have a slash
-appended.  The default is @samp{on}.
+If set to @samp{on}, completed directory names have a slash appended.
+The default is @samp{on}.
 
 @item mark-modified-lines
 @vindex mark-modified-lines
-This variable, when set to @samp{on}, causes Readline to display an
+When this variable is set to @samp{on}, Readline displays an
 asterisk (@samp{*}) at the start of history lines which have been modified.
 This variable is @samp{off} by default.
 
 @item mark-symlinked-directories
 @vindex mark-symlinked-directories
-If set to @samp{on}, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-@code{mark-directories}).
+If set to @samp{on}, completed names which are symbolic links to directories
+have a slash appended, subject to the value of @code{mark-directories}.
 The default is @samp{off}.
 
 @item match-hidden-files
 @vindex match-hidden-files
-This variable, when set to @samp{on}, causes Readline to match files whose
+This variable, when set to @samp{on}, forces Readline to match files whose
 names begin with a @samp{.} (hidden files) when performing filename
 completion.
-If set to @samp{off}, the leading @samp{.} must be
-supplied by the user in the filename to be completed.
+If set to @samp{off}, the user must include the leading @samp{.}
+in the filename to be completed.
 This variable is @samp{on} by default.
 
 @item menu-complete-display-prefix
 @vindex menu-complete-display-prefix
 If set to @samp{on}, menu completion displays the common prefix of the
 list of possible completions (which may be empty) before cycling through
-the list.  The default is @samp{off}.
+the list.
+The default is @samp{off}.
 
 @item output-meta
 @vindex output-meta
-If set to @samp{on}, Readline will display characters with the
+If set to @samp{on}, Readline displays characters with the
 eighth bit set directly rather than as a meta-prefixed escape
 sequence.
-The default is @samp{off}, but Readline will set it to @samp{on} if the
-locale contains eight-bit characters.
+The default is @samp{off}, but Readline sets it to @samp{on}
+if the locale contains characters whose encodings may include
+bytes with the eighth bit set.
 This variable is dependent on the @code{LC_CTYPE} locale category, and
-may change if the locale is changed.
+its value may change if the locale changes.
 
 @item page-completions
 @vindex page-completions
-If set to @samp{on}, Readline uses an internal @code{more}-like pager
+If set to @samp{on}, Readline uses an internal pager resembling
+@i{more}(1)
 to display a screenful of possible completions at a time.
 This variable is @samp{on} by default.
 
+@item prefer-visible-bell
+See @code{bell-style}.
+
 @item print-completions-horizontally
-If set to @samp{on}, Readline will display completions with matches
+If set to @samp{on}, Readline displays completions with matches
 sorted horizontally in alphabetical order, rather than down the screen.
 The default is @samp{off}.
 
 @item revert-all-at-newline
 @vindex revert-all-at-newline
 If set to @samp{on}, Readline will undo all changes to history lines
-before returning when @code{accept-line} is executed.  By default,
+before returning when executing @code{accept-line}.
+By default,
 history lines may be modified and retain individual undo lists across
-calls to @code{readline()}.  The default is @samp{off}.
+calls to @code{readline()}.
+The default is @samp{off}.
+
+@item search-ignore-case
+@vindex search-ignore-case
+If set to @samp{on}, Readline performs incremental and non-incremental
+history list searches in a case-insensitive fashion.
+The default value is @samp{off}.
 
 @item show-all-if-ambiguous
 @vindex show-all-if-ambiguous
-This alters the default behavior of the completion functions.  If
-set to @samp{on}, 
+This alters the default behavior of the completion functions.
+If set to @samp{on}, 
 words which have more than one possible completion cause the
 matches to be listed immediately instead of ringing the bell.
 The default value is @samp{off}.
@@ -786,15 +879,15 @@ The default value is @samp{off}.
 @item skip-completed-text
 @vindex skip-completed-text
 If set to @samp{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.
+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.
 For instance, if this is enabled, attempting completion when the cursor
-is after the @samp{e} in @samp{Makefile} will result in @samp{Makefile}
-rather than @samp{Makefilefile}, assuming there is a single possible
-completion.
+is after the first @samp{e} in @samp{Makefile} will result in
+@samp{Makefile} rather than @samp{Makefilefile},
+assuming there is a single possible completion.
 The default value is @samp{off}.
 
 @item vi-cmd-mode-string
@@ -802,10 +895,9 @@ The default value is @samp{off}.
 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
-backslash escape sequences is available.
-Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The @samp{\1} and @samp{\2} escapes 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 @samp{(cmd)}.
@@ -815,10 +907,9 @@ The default is @samp{(cmd)}.
 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
-backslash escape sequences is available.
-Use the @samp{\1} and @samp{\2} escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The @samp{\1} and @samp{\2} escapes 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 @samp{(ins)}.
@@ -827,14 +918,16 @@ The default is @samp{(ins)}.
 @vindex visible-stats
 If set to @samp{on}, a character denoting a file's type
 is appended to the filename when listing possible
-completions.  The default is @samp{off}.
+completions.
+The default is @samp{off}.
 
 @end table
 
 @item Key Bindings
-The syntax for controlling key bindings in the init file is
-simple.  First you need to find the name of the command that you
-want to change.  The following sections contain tables of the command
+The syntax for controlling key bindings in the init file is simple.
+First you need to find the name of the command that you
+want to change.
+The following sections contain tables of the command
 name, the default keybinding, if any, and a short description of what
 the command does.
 
@@ -849,6 +942,8 @@ what you find most comfortable.
 
 In addition to command names, Readline allows keys to be bound
 to a string that is inserted when the key is pressed (a @var{macro}).
+The difference between a macro and a command is that a macro is
+enclosed in single or double quotes.
 
 @ifset BashFeatures
 The @w{@code{bind -p}} command displays Readline function names and
@@ -858,7 +953,8 @@ bindings in a format that can be put directly into an initialization file.
 
 @table @asis
 @item @w{@var{keyname}: @var{function-name} or @var{macro}}
-@var{keyname} is the name of a key spelled out in English.  For example:
+@var{keyname} is the name of a key spelled out in English.
+For example:
 @example
 Control-u: universal-argument
 Meta-Rubout: backward-kill-word
@@ -872,8 +968,7 @@ In the example above, @kbd{C-u} is bound to the function
 expressed on the right hand side (that is, to insert the text
 @samp{> output} into the line).
 
-A number of symbolic character names are recognized while
-processing this key binding syntax:
+This key binding syntax recognizes a number of symbolic character names:
 @var{DEL},
 @var{ESC},
 @var{ESCAPE},
@@ -881,7 +976,8 @@ processing this key binding syntax:
 @var{NEWLINE},
 @var{RET},
 @var{RETURN},
-@var{RUBOUT},
+@var{RUBOUT}
+(a destructive backspace),
 @var{SPACE},
 @var{SPC},
 and
@@ -890,9 +986,10 @@ and
 @item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
 @var{keyseq} differs from @var{keyname} above in that strings
 denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes.  Some @sc{gnu} Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
+the key sequence in double quotes.
+Some @sc{gnu} Emacs style key escapes can be used,
+as in the following example, but none of the
+special character names are recognized.
 
 @example
 "\C-u": universal-argument
@@ -913,17 +1010,19 @@ specifying key sequences:
 
 @table @code
 @item @kbd{\C-}
-control prefix
+A control prefix.
 @item @kbd{\M-}
-meta prefix
+Adding the meta prefix or converting the following character to a meta
+character, as described above under @code{force-meta-prefix}
+(see @code{Variable Settings} in @ref{Readline Init File Syntax}).
 @item @kbd{\e}
-an escape character
+An escape character.
 @item @kbd{\\}
-backslash
+Backslash.
 @item @kbd{\"}
-@key{"}, a double quotation mark
+@key{"}, a double quotation mark.
 @item @kbd{\'}
-@key{'}, a single quote or apostrophe
+@key{'}, a single quote or apostrophe.
 @end table
 
 In addition to the @sc{gnu} Emacs style escape sequences, a second
@@ -947,17 +1046,18 @@ horizontal tab
 @item \v
 vertical tab
 @item \@var{nnn}
-the eight-bit character whose value is the octal value @var{nnn}
-(one to three digits)
+The eight-bit character whose value is the octal value @var{nnn}
+(one to three digits).
 @item \x@var{HH}
-the eight-bit character whose value is the hexadecimal value @var{HH}
-(one or two hex digits)
+The eight-bit character whose value is the hexadecimal value @var{HH}
+(one or two hex digits).
 @end table
 
 When entering the text of a macro, single or double quotes must
 be used to indicate a macro definition.
 Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
+The backslash escapes described above are expanded
+in the macro body.
 Backslash will quote any other character in the macro text,
 including @samp{"} and @samp{'}.
 For example, the following binding will make @samp{@kbd{C-x} \}
@@ -974,13 +1074,15 @@ insert a single @samp{\} into the line:
 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.
+of tests.
+There are four parser directives available.
 
 @table @code
 @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, after any comparison operator,
+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.
 
@@ -996,11 +1098,13 @@ Readline is starting out in @code{emacs} mode.
 @item term
 The @code{term=} form may be used to include terminal-specific
 key bindings, perhaps to bind the key sequences output by the
-terminal's function keys.  The word on the right side of the
-@samp{=} is tested against both the full name of the terminal and
-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.
+terminal's function keys.
+The word on the right side of the
+@samp{=}
+is tested against both the full name of the terminal and the portion
+of the terminal name before the first @samp{-}.
+This allows @code{xterm} to match both @code{xterm} and
+@code{xterm-256color}, for instance.
 
 @item version
 The @code{version} test may be used to perform comparisons against
@@ -1011,8 +1115,9 @@ The set of comparison operators includes
 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}.
+minor version (e.g., @samp{7.1}).
+If the minor version is omitted, it
+defaults to @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
@@ -1025,11 +1130,13 @@ $endif
 
 @item application
 The @var{application} construct is used to include
-application-specific settings.  Each program using the Readline
+application-specific settings.
+Each program using the Readline
 library sets the @var{application name}, and you can test for
 a particular value. 
 This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
+a specific program.
+For instance, the following command adds a
 key sequence that quotes the current or previous word in Bash:
 @example
 $if Bash
@@ -1045,7 +1152,8 @@ 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
+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:
@@ -1056,17 +1164,17 @@ $endif
 @end example
 @end table
 
-@item $endif
-This command, as seen in the previous example, terminates an
-@code{$if} command.
-
 @item $else
 Commands in this branch of the @code{$if} directive are executed if
 the test fails.
 
+@item $endif
+This command, as seen in the previous example, terminates an
+@code{$if} command.
+
 @item $include
 This directive takes a single filename as an argument and reads commands
-and bindings from that file.
+and key bindings from that file.
 For example, the following directive reads from @file{/etc/inputrc}:
 @example
 $include /etc/inputrc
@@ -1081,7 +1189,7 @@ binding, variable assignment, and conditional syntax.
 
 @example
 @page
-# This file controls the behaviour of line input editing for
+# This file controls the behavior of line input editing for
 # programs that use the GNU Readline library.  Existing
 # programs include FTP, Bash, and GDB.
 #
@@ -1209,21 +1317,34 @@ In the following descriptions, @dfn{point} refers to the current cursor
 position, and @dfn{mark} refers to a cursor position saved by the
 @code{set-mark} command.
 The text between the point and mark is referred to as the @dfn{region}.
+Readline
+has the concept of an @emph{active region}:
+when the region is active,
+Readline redisplay highlights the region using the
+value of the
+@code{active-region-start-color}
+variable.
+The @code{enable-active-region} variable turns this on and off.
+Several commands set the region to active; those are noted below.
 
 @node Commands For Moving
 @subsection Commands For Moving
 @ftable @code
 @item beginning-of-line (C-a)
 Move to the start of the current line.
+This may also be bound to the Home key on some keyboards.
 
 @item end-of-line (C-e)
 Move to the end of the line.
+This may also be bound to the End key on some keyboards.
 
 @item forward-char (C-f)
 Move forward a character.
+This may also be bound to the right arrow key on some keyboards.
 
 @item backward-char (C-b)
 Move back a character.
+This may also be bound to the left arrow key on some keyboards.
 
 @item forward-word (M-f)
 Move forward to the end of the next word.
@@ -1245,13 +1366,15 @@ Words are delimited by non-quoted shell metacharacters.
 
 @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
+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
+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.
@@ -1265,6 +1388,8 @@ leaving the current line at the top of the screen.
 Clear the screen,
 then redraw the current line,
 leaving the current line at the top of the screen.
+If given a numeric argument, this refreshes the current line
+without clearing the screen.
 
 @item redraw-current-line ()
 Refresh the current line.  By default, this is unbound.
@@ -1281,23 +1406,22 @@ Accept the line regardless of where the cursor is.
 If this line is
 non-empty, add it to the history list according to the setting of
 the @env{HISTCONTROL} and @env{HISTIGNORE} variables.
-If this line is a modified history line, then restore the history line
-to its original state.
 @end ifset
 @ifclear BashFeatures
 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
+If this line is non-empty, you can add it to the history list using
 @code{add_history()}.
-If this line is a modified history line, the history line is restored
-to its original state.
 @end ifclear
+If this line is a modified history line, then restore the history line
+to its original state.
 
 @item previous-history (C-p)
 Move `back' through the history list, fetching the previous command.
+This may also be bound to the up arrow key on some keyboards.
 
 @item next-history (C-n)
 Move `forward' through the history list, fetching the next command.
+This may also be bound to the down arrow key on some keyboards.
 
 @item beginning-of-history (M-<)
 Move to the first line in the history.
@@ -1308,13 +1432,15 @@ being entered.
 
 @item reverse-search-history (C-r)
 Search backward starting at the current line and moving `up' through
-the history as necessary.  This is an incremental search.
-This command sets the region to the matched text and activates the mark.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 
 @item forward-search-history (C-s)
 Search forward starting at the current line and moving `down' through
-the history as necessary.  This is an incremental search.
-This command sets the region to the matched text and activates the mark.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 
 @item non-incremental-reverse-search-history (M-p)
 Search backward starting at the current line and moving `up'
@@ -1328,29 +1454,31 @@ 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.
 
-@item history-search-forward ()
-Search forward through the history for the string of characters
+@item history-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 must match at the beginning of a history line.
 This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Down
+key on some keyboards.
 
-@item history-search-backward ()
-Search backward through the history for the string of characters
+@item history-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 must match at the beginning of a history line.
 This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Up
+key on some keyboards.
 
-@item history-substring-search-forward ()
-Search forward through the history for the string of characters
+@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.
 This is a non-incremental search.
 By default, this command is unbound.
 
-@item history-substring-search-backward ()
-Search backward through the history for the string of characters
+@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.
@@ -1361,10 +1489,13 @@ Insert the first argument to the previous command (usually
 the second word on the previous line) at point.
 With an argument @var{n},
 insert the @var{n}th word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the @var{n}th word from the end of the previous command.
-Once the argument @var{n} is computed, the argument is extracted
-as if the @samp{!@var{n}} history expansion had been specified.
+in the previous command begin with word 0).
+A negative argument inserts the @var{n}th word from the end of
+the previous command.
+Once the argument @var{n} is computed,
+this uses the history expansion facilities to extract the
+@var{n}th word, as if the
+@samp{!@var{n}} history expansion had been specified.
 
 @item yank-last-arg (M-. or M-_)
 Insert last argument to the previous command (the last word of the
@@ -1374,18 +1505,20 @@ Successive calls to @code{yank-last-arg} move back through the history
 list, inserting the last word (or the word specified by the argument to
 the first call) of each line in turn.
 Any numeric argument supplied to these successive calls determines
-the direction to move through the history.  A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the @samp{!$} history expansion had been specified.
+the direction to move through the history.
+A negative argument switches the direction through the history
+(back or forward).
+This uses the history expansion facilities to extract the
+last  word, as if the
+@samp{!$} history expansion had been specified.
 
 @item operate-and-get-next (C-o)
 Accept the current line for return to the calling application as if a
 newline had been entered,
 and fetch the next line 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.
+A numeric argument, if supplied, specifies the history entry
+to use instead of the current line.
 
 @item fetch-history ()
 With a numeric argument, fetch that entry from the history list
@@ -1401,27 +1534,33 @@ Without an argument, move back to the first entry in the history list.
 
 @item @i{end-of-file} (usually C-d)
 The character indicating end-of-file as set, for example, by
-@code{stty}.  If this character is read when there are no characters
+@code{stty}.
+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 @sc{eof}.
 
 @item delete-char (C-d)
-Delete the character at point.  If this function is bound to the
+Delete the character at point.
+If this function is bound to the
 same character as the tty @sc{eof} character, as @kbd{C-d}
 commonly is, see above for the effects.
+This may also be bound to the Delete key on some keyboards.
 
 @item backward-delete-char (Rubout)
-Delete the character behind the cursor.  A numeric argument means
-to kill the characters instead of deleting them.
+Delete the character behind the cursor.
+A numeric argument means
+to kill the characters, saving them on the kill ring,
+instead of deleting them.
 
 @item forward-backward-delete-char ()
 Delete the character under the cursor, unless the cursor is at the
 end of the line, in which case the character behind the cursor is
-deleted.  By default, this is not bound to a key.
+deleted.
+By default, this is not bound to a key.
 
 @item quoted-insert (C-q or C-v)
-Add the next character typed to the line verbatim.  This is
-how to insert key sequences like @kbd{C-q}, for example.
+Add the next character typed to the line verbatim.
+This is how to insert key sequences like @kbd{C-q}, for example.
 
 @ifclear BashFeatures
 @item tab-insert (M-@key{TAB})
@@ -1429,25 +1568,26 @@ Insert a tab character.
 @end ifclear
 
 @item self-insert (a, b, A, 1, !, @dots{})
-Insert yourself.
+Insert the character typed.
 
 @item bracketed-paste-begin ()
 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
+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
 executing any editing commands.
 
 Bracketed paste sets the region (the characters between point and the mark)
-to the inserted text. It uses the concept of an @emph{active mark}: when the
-mark is active, Readline redisplay uses the terminal's standout mode to
-denote the region.
+to the inserted text.
+It sets the @emph{active region}.
 
 @item transpose-chars (C-t)
 Drag the character before the cursor forward over
 the character at the cursor, moving the
-cursor forward as well.  If the insertion point
+cursor forward as well.
+If the insertion point
 is at the end of the line, then this
 transposes the last two characters of the line.
 Negative arguments have no effect.
@@ -1458,23 +1598,37 @@ 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.
 
+@ifset BashFeatures
+@item shell-transpose-words (M-C-t)
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+Word boundaries are the same as @code{shell-forward-word} and
+@code{shell-backward-word}.
+@end ifset
+
 @item upcase-word (M-u)
-Uppercase the current (or following) word.  With a negative argument,
+Uppercase the current (or following) word.
+With a negative argument,
 uppercase the previous word, but do not move the cursor.
 
 @item downcase-word (M-l)
-Lowercase the current (or following) word.  With a negative argument,
+Lowercase the current (or following) word.
+With a negative argument,
 lowercase the previous word, but do not move the cursor.
 
 @item capitalize-word (M-c)
-Capitalize the current (or following) word.  With a negative argument,
+Capitalize the current (or following) word.
+With a negative argument,
 capitalize the previous word, but do not move the cursor.
 
 @item overwrite-mode ()
-Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-@code{emacs} mode; @code{vi} mode does overwrite differently.
+Toggle overwrite mode.
+With an explicit positive numeric argument, switches to overwrite mode.
+With an explicit non-positive numeric argument, switches to insert mode.
+This command affects only @code{emacs} mode;
+@code{vi} mode does overwrite differently.
 Each call to @code{readline()} starts in insert mode.
 
 In overwrite mode, characters bound to @code{self-insert} replace
@@ -1482,7 +1636,8 @@ the text at point rather than pushing the text to the right.
 Characters bound to @code{backward-delete-char} replace the character
 before point with a space.
 
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Insert
+key on some keyboards.
 
 @end ftable
 
@@ -1492,14 +1647,14 @@ By default, this command is unbound.
 @ftable @code
 
 @item kill-line (C-k)
-Kill the text from point to the end of the line.
+Kill the text from point to the end of the current line.
 With a negative numeric argument, kill backward from the cursor to the
-beginning of the current line.
+beginning of the line.
 
 @item backward-kill-line (C-x Rubout)
 Kill backward from the cursor to the beginning of the current line.
 With a negative numeric argument, kill forward from the cursor to the
-end of the current line.
+end of the line.
 
 @item unix-line-discard (C-u)
 Kill backward from the cursor to the beginning of the current line.
@@ -1528,25 +1683,18 @@ Kill the word behind point.
 Word boundaries are the same as @code{shell-backward-word}.
 @end ifset
 
-@item shell-transpose-words (M-C-t)
-Drag the word before point past the word after point,
-moving point past that word as well.
-If the insertion point is at the end of the line, this transposes
-the last two words on the line.
-Word boundaries are the same as @code{shell-forward-word} and
-@code{shell-backward-word}.
-
 @item unix-word-rubout (C-w)
-Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
+Kill the word behind point, using white space as a word boundary,
+saving the killed text on the kill-ring.
 
 @item unix-filename-rubout ()
 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.
+as the word boundaries,
+saving the killed text on the kill-ring.
 
 @item delete-horizontal-space ()
-Delete all spaces and tabs around point.  By default, this is unbound.
+Delete all spaces and tabs around point.
+By default, this is unbound.
 
 @item kill-region ()
 Kill the text in the current region.
@@ -1554,7 +1702,8 @@ By default, this command is unbound.
 
 @item copy-region-as-kill ()
 Copy the text in the region to the kill buffer, so it can be yanked
-right away.  By default, this command is unbound.
+right away.
+By default, this command is unbound.
 
 @item copy-backward-word ()
 Copy the word before point to the kill buffer.
@@ -1570,7 +1719,8 @@ By default, this command is unbound.
 Yank the top of the kill ring into the buffer at point.
 
 @item yank-pop (M-y)
-Rotate the kill-ring, and yank the new top.  You can only do this if
+Rotate the kill-ring, and yank the new top.
+You can only do this if
 the prior command is @code{yank} or @code{yank-pop}.
 @end ftable
 
@@ -1580,7 +1730,8 @@ the prior command is @code{yank} or @code{yank-pop}.
 
 @item digit-argument (@kbd{M-0}, @kbd{M-1}, @dots{} @kbd{M--})
 Add this digit to the argument already accumulating, or start a new
-argument.  @kbd{M--} starts a negative argument.
+argument.
+@kbd{M--} starts a negative argument.
 
 @item universal-argument ()
 This is another way to specify an argument.
@@ -1605,11 +1756,14 @@ By default, this is not bound to a key.
 Attempt to perform completion on the text before point.
 The actual completion performed is application-specific.
 @ifset BashFeatures
-Bash attempts completion treating the text as a variable (if the
-text begins with @samp{$}), username (if the text begins with
-@samp{~}), hostname (if the text begins with @samp{@@}), or
-command (including aliases and functions) in turn.  If none 
-of these produces a match, filename completion is attempted.
+Bash attempts completion by first checking for any programmable
+completions for the command word (@pxref{Programmable Completion}),
+otherwise treating the text as a
+variable (if the text begins with @samp{$}),
+username (if the text begins with @samp{~}),
+hostname (if the text begins with @samp{@@}), or
+command (including aliases, functions, and builtins) in turn.
+If none  of these produces a match, it falls back to filename completion.
 @end ifset
 @ifclear BashFeatures
 The default is filename completion.
@@ -1623,19 +1777,20 @@ the environment variable @env{COLUMNS}, or the screen width, in that order.
 
 @item insert-completions (M-*)
 Insert all completions of the text before point that would have
-been generated by @code{possible-completions}.
+been generated by @code{possible-completions},
+separated by a space.
 
 @item menu-complete ()
 Similar to @code{complete}, but replaces the word to be completed
 with a single match from the list of possible completions.
-Repeated execution of @code{menu-complete} steps through the list
+Repeatedly executing @code{menu-complete} steps through the list
 of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
+At the end of the list of completions,
+@code{menu-complete} rings the bell
 (subject to the setting of @code{bell-style})
-and the original text is restored.
+and restores the original text.
 An argument of @var{n} moves @var{n} positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
+of matches; a negative argument moves backward through the list.
 This command is intended to be bound to @key{TAB}, but is unbound
 by default.
 
@@ -1643,12 +1798,44 @@ by default.
 Identical to @code{menu-complete}, but moves backward through the list
 of possible completions, as if @code{menu-complete} had been given a
 negative argument.
+This command is unbound by default.
+
+@item export-completions ()
+Perform completion on the word before point as described above
+and write the list of possible completions to Readline's output stream
+using the following format, writing information on separate lines:
+
+@itemize @bullet
+@item
+the number of matches @var{N};
+@item
+the word being completed;
+@item
+@var{S}:@var{E},
+where @var{S} and @var{E} are the start and end offsets of the word
+in the Readline line buffer; then
+@item
+each match, one per line
+@end itemize
+
+If there are no matches, the first line will be ``0'',
+and this command does not print any output after the @var{S}:@var{E}.
+If there is only a single match, this prints a single line containing it.
+If there is more than one match, this prints the common prefix of the
+matches, which may be empty, on the first line after the @var{S}:@var{E},
+then the matches on subsequent lines.
+In this case, @var{N} will include the first line with the common prefix.
+
+The user or application
+should be able to accommodate the possibility of a blank line.
+The intent is that the user or application reads @var{N} lines after
+the line containing @var{S}:@var{E} to obtain the match list.
+This command is unbound by default.
 
 @item delete-char-or-list ()
 Deletes the character under the cursor if not at the beginning or
 end of the line (like @code{delete-char}).
-If at the end of the line, behaves identically to
-@code{possible-completions}.
+At the end of the line, it behaves identically to @code{possible-completions}.
 This command is unbound by default.
 
 @ifset BashFeatures
@@ -1685,7 +1872,8 @@ treating it as a hostname.
 
 @item complete-command (M-!)
 Attempt completion on the text before point, treating
-it as a command name.  Command completion attempts to
+it as a command name.
+Command completion attempts to
 match the text against aliases, reserved words, shell
 functions, shell builtins, and finally executable filenames,
 in that order.
@@ -1696,7 +1884,7 @@ treating it as a command name.
 
 @item dynamic-complete-history (M-@key{TAB})
 Attempt completion on the text before point, comparing
-the text against lines from the history list for possible
+the text against history list entries for possible
 completion matches.
 
 @item dabbrev-expand ()
@@ -1752,16 +1940,16 @@ 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
-without a meta key.  Typing @samp{@key{ESC} f} is equivalent to typing
-@kbd{M-f}.
+Metafy the next character typed.
+Typing @samp{@key{ESC} f} is equivalent to typing @kbd{M-f}.
 
 @item undo (C-_ or C-x C-u)
 Incremental undo, separately remembered for each line.
 
 @item revert-line (M-r)
-Undo all changes made to this line.  This is like executing the @code{undo}
-command enough times to get back to the beginning.
+Undo all changes made to this line.
+This is like executing the @code{undo}
+command enough times to get back to the initial state.
 
 @ifset BashFeatures
 @item tilde-expand (M-&)
@@ -1772,39 +1960,41 @@ command enough times to get back to the beginning.
 Perform tilde expansion on the current word.
 
 @item set-mark (C-@@)
-Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
+Set the mark to the point.
+If a numeric argument is supplied, set the mark to that position.
 
 @item exchange-point-and-mark (C-x C-x)
-Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
+Swap the point with the mark.
+Set the current cursor position to the saved position,
+then set the mark to the old cursor position.
 
 @item character-search (C-])
-A character is read and point is moved to the next occurrence of that
-character.  A negative argument searches for previous occurrences.
+Read a character and move point to the next occurrence of that character.
+A negative argument searches for previous occurrences.
 
 @item character-search-backward (M-C-])
-A character is read and point is moved to the previous occurrence
-of that character.  A negative argument searches for subsequent
-occurrences.
+Read a character and move point to the previous occurrence of that character.
+A negative argument searches for subsequent occurrences.
 
 @item skip-csi-sequence ()
 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
-bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a Readline command, instead of inserting
-stray characters into the editing buffer.  This is unbound by default,
-but usually bound to ESC-[.
+defined for keys like Home and End.
+CSI sequences begin with a Control Sequence Indicator (CSI), usually
+@kbd{ESC [}.
+If this sequence is bound to "\e[",
+keys producing CSI sequences have no effect
+unless explicitly bound to a Readline command,
+instead of inserting stray characters into the editing buffer.
+This is unbound by default, but usually bound to
+@kbd{ESC [}.
 
 @item insert-comment (M-#)
-Without a numeric argument, the value of the @code{comment-begin}
-variable is inserted at the beginning of the current line.
+Without a numeric argument, insert the value of the @code{comment-begin}
+variable at the beginning of the current line.
 If a numeric argument is supplied, this command acts as a toggle:  if
 the characters at the beginning of the line do not match the value
-of @code{comment-begin}, the value is inserted, otherwise
-the characters in @code{comment-begin} are deleted from the beginning of
-the line.
+of @code{comment-begin}, insert the value; otherwise delete
+the characters in @code{comment-begin} from the beginning of the line.
 In either case, the line is accepted as if a newline had been typed.
 @ifset BashFeatures
 The default value of @code{comment-begin} causes this command
@@ -1814,22 +2004,36 @@ will be executed by the shell.
 @end ifset
 
 @item dump-functions ()
-Print all of the functions and their key bindings to the
-Readline output stream.  If a numeric argument is supplied,
+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} file.  This command is unbound by default.
+of an @var{inputrc} file.
+This command is unbound by default.
 
 @item dump-variables ()
-Print all of the settable variables and their values to the
-Readline output stream.  If a numeric argument is supplied,
+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} file.  This command is unbound by default.
+of an @var{inputrc} file.
+This command is unbound by default.
 
 @item dump-macros ()
 Print all of the Readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
+strings they output
+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} file.  This command is unbound by default.
+of an @var{inputrc} file.
+This command is unbound by default.
+
+@item execute-named-command (M-x)
+Read a bindable Readline command name from the input and execute the
+function to which it's bound, as if the key sequence to which it was
+bound appeared in the input.
+If this function is supplied with a numeric argument, it passes that
+argument to the function it executes.
 
 @ifset BashFeatures
 @item spell-correct-word (C-x s)
@@ -1838,29 +2042,30 @@ or filename, in the same way as the @code{cdspell} shell option.
 Word boundaries are the same as those used by @code{shell-forward-word}.
 
 @item glob-complete-word (M-g)
-The word before point is treated as a pattern for pathname expansion,
-with an asterisk implicitly appended.  This pattern is used to
+Treat the word before point as a pattern for pathname expansion,
+with an asterisk implicitly appended, then use the pattern to
 generate a list of matching file names for possible completions.
 
 @item glob-expand-word (C-x *)
-The word before point is treated as a pattern for pathname expansion,
-and the list of matching file names is inserted, replacing the word.
-If a numeric argument is supplied, a @samp{*} is appended before
+Treat the word before point as a pattern for pathname expansion,
+and insert the list of matching file names, replacing the word.
+If a numeric argument is supplied, append a @samp{*} before
 pathname expansion.
 
 @item glob-list-expansions (C-x g)
-The list of expansions that would have been generated by
-@code{glob-expand-word} is displayed, and the line is redrawn.
-If a numeric argument is supplied, a @samp{*} is appended before
+Display the list of expansions that would have been generated by
+@code{glob-expand-word}, and redisplay the line.
+If a numeric argument is supplied, append a @samp{*} before
 pathname expansion.
 
-@item display-shell-version (C-x C-v)
-Display version information about the current instance of Bash.
-
 @item shell-expand-line (M-C-e)
-Expand the line as the shell does.
-This performs alias and history expansion as well as all of the shell
-word expansions (@pxref{Shell Expansions}).
+Expand the line by performing shell word expansions.  
+This performs alias and history expansion,
+$'@var{string}' and $"@var{string}" quoting,
+tilde expansion, parameter and variable expansion, arithmetic expansion,
+command and process substitution,
+word splitting, and quote removal.  
+An explicit argument suppresses command and process substitution.
 
 @item history-expand-line (M-^)
 Perform history expansion on the current line.
@@ -1885,6 +2090,9 @@ Bash attempts to invoke
 @code{$VISUAL}, @code{$EDITOR}, and @code{emacs}
 as the editor, in that order.
 
+@item display-shell-version (C-x C-v)
+Display version information about the current instance of Bash.
+
 @end ifset
 
 @ifclear BashFeatures
@@ -1905,13 +2113,15 @@ editing mode.
 
 While the Readline library does not have a full set of @code{vi}
 editing functions, it does contain enough to allow simple editing
-of the line.  The Readline @code{vi} mode behaves as specified in
-the @sc{posix} standard.
+of the line.
+The Readline @code{vi} mode behaves as specified in the
+@code{sh} description in the @sc{posix} standard.
 
 @ifset BashFeatures
-In order to switch interactively between @code{emacs} and @code{vi}
-editing modes, use the @samp{set -o emacs} and @samp{set -o vi}
-commands (@pxref{The Set Builtin}).
+You can use the @samp{set -o emacs} and @samp{set -o vi}
+commands (@pxref{The Set Builtin})
+to switch interactively between @code{emacs} and @code{vi}
+editing modes,
 @end ifset
 @ifclear BashFeatures
 In order to switch interactively between @code{emacs} and @code{vi}
@@ -1932,51 +2142,65 @@ so forth.
 @section Programmable Completion
 @cindex programmable completion
 
-When word completion is attempted for an argument to a command for
-which a completion specification (a @var{compspec}) has been defined
-using the @code{complete} builtin (@pxref{Programmable Completion Builtins}),
-the programmable completion facilities are invoked. 
+When the user attempts word completion
+for a command or an argument to a command for which a
+completion specification (a @dfn{compspec}) has been defined
+using the @code{complete} builtin
+(@pxref{Programmable Completion Builtins}),
+Readline invokes the programmable completion facilities. 
 
-First, the command name is identified.
+First, Bash identifies the command name.
 If a compspec has been defined for that command, the
 compspec is used to generate the list of possible completions for the word.
 If the command word is the empty string (completion attempted at the
-beginning of an empty line), any compspec defined with
-the @option{-E} option to @code{complete} is used.
-If the command word is a full pathname, a compspec for the full
-pathname is searched for first.
-If no compspec is found for the full pathname, an attempt is made to
+beginning of an empty line), Bash uses any compspec defined with
+the @option{-E} option to @code{complete}.
+The @option{-I} option to @code{complete}
+indicates that the command word is the first non-assignment word
+on the line, or after a command delimiter such as
+@samp{;} or @samp{|}.
+This usually indicates command name completion.
+
+If the command word is a full pathname, Bash
+searches for a compspec for the full pathname first.
+If there is no compspec for the full pathname, Bash attempts 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.
-If a compspec is not found, the default Bash completion
-described above (@pxref{Commands For Completion}) is performed.
-
-First, the actions specified by the compspec are used.
-Only matches which are prefixed by the word being completed are
-returned.
+If those searches do not result in a compspec,
+or if there is no compspec for the command word,
+Bash uses any compspec defined with
+the @option{-D} option to @code{complete} as the default.
+If there is no default compspec, Bash performs alias expansion
+on the command word as a final resort,
+and attempts to find a compspec for the command word
+resulting from any successful expansion.
+
+If a compspec is not found, Bash performs its default completion
+described above (@pxref{Commands For Completion}).
+Otherwise, once a compspec has been found, Bash uses it to generate
+the list of matching words.
+
+First, Bash performs the @var{actions} specified by the compspec.
+This only returns matches which are prefixes
+of the word being completed.
 When the @option{-f} or @option{-d} option is used for filename or
-directory name completion, the shell variable @env{FIGNORE} is
-used to filter the matches.
+directory name completion, Bash uses shell the variable @env{FIGNORE}
+to filter the matches.
 @xref{Bash Variables}, for a description of @env{FIGNORE}.
 
-Any completions specified by a filename expansion pattern to the
-@option{-G} option are generated next.
+Next, programmable completion generates matches
+specified by a pathname expansion pattern
+supplied as an argument to the
+@option{-G} option.
 The words generated by the pattern need not match the word being completed.
-The @env{GLOBIGNORE} shell variable is not used to filter the matches,
-but the @env{FIGNORE} shell variable is used.
+Bash uses the @env{FIGNORE} 
+variable to filter the matches, but does not use the
+@env{GLOBIGNORE} shell variable.
 
-Next, the string specified as the argument to the @option{-W} option
-is considered.
+Next, completion considers
+the string specified as the argument to the @option{-W} option.
 The string is first split using the characters in the @env{IFS}
 special variable as delimiters.
-Shell quoting is honored within the string, in order to provide a
+This honors shell quoting 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
@@ -1986,23 +2210,36 @@ as described above (@pxref{Shell Expansions}).
 The results are split using the rules described above
 (@pxref{Word Splitting}).
 The results of the expansion are prefix-matched against the word being
-completed, and the matching words become the possible completions.
-
-After these matches have been generated, any shell function or command
-specified with the @option{-F} and @option{-C} options is invoked.
-When the command or function is invoked, the @env{COMP_LINE},
-@env{COMP_POINT}, @env{COMP_KEY}, and @env{COMP_TYPE} variables are
-assigned values as described above (@pxref{Bash Variables}).
-If a shell function is being invoked, the @env{COMP_WORDS} and
-@env{COMP_CWORD} variables are also set.
-When the function or command is invoked, the first argument ($1) is the
-name of the command whose arguments are being completed, the
-second argument ($2) is the word being completed, and the third argument
-($3) is the word preceding the word being completed on the current command
-line.
-No filtering of the generated completions against the word being completed
-is performed; the function or command has complete freedom in generating
-the matches.
+completed, and the matching words become possible completions.
+
+After these matches have been generated,
+Bash executes any shell function or command
+specified with the @option{-F} and @option{-C} options.
+When the command or function is invoked, Bash
+assigns values to the
+@env{COMP_LINE},
+@env{COMP_POINT},
+@env{COMP_KEY},
+and
+@env{COMP_TYPE}
+variables as described above
+(@pxref{Bash Variables}).
+If a shell function is being invoked, Bash
+also sets the
+@env{COMP_WORDS}
+and
+@env{COMP_CWORD}
+variables.
+When the function or command is invoked,
+the first argument ($1) is the name of the command whose arguments
+are being completed,
+the second argument ($2) is the word being completed,
+and the third argument ($3) is the word preceding the word being
+completed on the current command line.
+There is no filtering of the generated completions against the 
+word being completed;
+the function or command has complete freedom in generating the matches
+and they do not need to match a prefix of the word.
 
 Any function specified with @option{-F} is invoked first.
 The function may use any of the shell facilities, including the
@@ -2015,64 +2252,82 @@ Next, any command specified with the @option{-C} option is invoked
 in an environment equivalent to command substitution.
 It should print a list of completions, one per line, to
 the standard output.
-Backslash may be used to escape a newline, if necessary.
+Backslash will escape a newline, if necessary.
+These are added to the set of possible completions.
 
-After all of the possible completions are generated, any filter
-specified with the @option{-X} option is applied to the list.
+After generating all of the possible completions,
+Bash applies any filter
+specified with the @option{-X} option to the completions in the list.
 The filter is a pattern as used for pathname expansion; a @samp{&}
 in the pattern is replaced with the text of the word being completed.
 A literal @samp{&} may be escaped with a backslash; the backslash
 is removed before attempting a match.
-Any completion that matches the pattern will be removed from the list.
-A leading @samp{!} negates the pattern; in this case any completion
-not matching the pattern will be removed.
-If the @code{nocasematch} shell option
-(see the description of @code{shopt} in @ref{The Shopt Builtin})
-is enabled, the match is performed without regard to the case
+Any completion that matches the pattern is removed from the list.
+A leading @samp{!} negates the pattern;
+in this case Bash removes
+any completion that does not match the pattern.
+If the @code{nocasematch} shell option is enabled
+(see the description of @code{shopt} in @ref{The Shopt Builtin}),
+Bash performs the match without regard to the case
 of alphabetic characters.
 
-Finally, any prefix and suffix specified with the @option{-P} and @option{-S}
-options are added to each member of the completion list, and the result is
-returned to the Readline completion code as the list of possible
-completions.
+Finally, programmable completion adds
+any prefix and suffix specified with the
+@option{-P} and @option{-S}
+options, respectively, to each completion,
+and returns the result
+to Readline as the list of possible completions.
 
 If the previously-applied actions do not generate any matches, and the
 @option{-o dirnames} option was supplied to @code{complete} when the
-compspec was defined, directory name completion is attempted
+compspec was defined, Bash attempts directory name completion
 
 If the @option{-o plusdirs} option was supplied to @code{complete} when
-the compspec was defined, directory name completion is attempted and any
-matches are added to the results of the other actions.
+the compspec was defined, Bash attempts directory name completion
+and adds any  matches to the set of possible completions.
 
 By default, if a compspec is found, whatever it generates is returned to
 the completion code as the full set of possible completions.
-The default Bash completions are not attempted, and the Readline default
-of filename completion is disabled.
+The default Bash completions and the Readline default
+of filename completion are disabled.
 If the @option{-o bashdefault} option was supplied to @code{complete} when
-the compspec was defined, the default Bash completions are attempted
-if the compspec generates no matches.
-If the @option{-o default} option was supplied to @code{complete} when the
-compspec was defined, Readline's default completion will be performed
-if the compspec (and, if attempted, the default Bash completions)
-generate no matches.
-
-When a compspec indicates that directory name completion is desired,
-the programmable completion functions force Readline to append a slash
-to completed names which are symbolic links to directories, subject to
-the value of the @var{mark-directories} Readline variable, regardless
-of the setting of the @var{mark-symlinked-directories} Readline variable.
-
-There is some support for dynamically modifying completions.  This is
-most useful when used in combination with a default completion specified
-with @option{-D}.  It's possible for shell functions executed as completion
-handlers to indicate that completion should be retried by returning an
-exit status of 124.  If a shell function returns 124, and changes
+the compspec was defined, and the compspec generates no matches,
+Bash attempts its default completions.
+If the compspec and, if attempted, the default Bash completions
+generate no matches,
+and the @option{-o default} option was supplied to
+@code{complete} when the compspec was defined,
+programmable completion performs Readline's default completion.
+
+The options supplied to @code{complete} and @code{compopt}
+can control how Readline treats the completions.
+For instance, the @option{-o fullquote} option tells Readline
+to quote the matches as if they were filenames.
+See the description of @code{complete}
+(@pxref{Programmable Completion Builtins})
+for details.
+
+When a compspec indicates that it wants directory name completion,
+the programmable completion functions force Readline
+to append a slash to completed names which are symbolic links
+to directories, subject to the value of the
+@var{mark-directories} Readline variable,
+regardless of the setting of the
+@var{mark-symlinked-directories} Readline variable.
+
+There is some support for dynamically modifying completions.
+This is most useful when used in combination with a default completion
+specified with @option{-D}.
+It's possible for shell functions executed as completion functions
+to indicate that completion should be retried by returning an
+exit status of 124.
+If a shell function returns 124, and changes
 the compspec associated with the command on which completion is being
 attempted (supplied as the first argument when the function is executed),
 programmable completion restarts from the beginning, with an
-attempt to find a new compspec for that command.  This allows a set of
-completions to be built dynamically as completion is attempted, rather than
-being loaded all at once.
+attempt to find a new compspec for that command.
+This can be used to build a set of completions dynamically
+as completion is attempted, rather than loading them all at once.
 
 For instance, assuming that there is a library of compspecs, each kept in a
 file corresponding to the name of the command, the following default
@@ -2098,14 +2353,25 @@ be completed, and two to modify the completion as it is happening.
 @item compgen
 @btindex compgen
 @example
-@code{compgen [@var{option}] [@var{word}]}
+@code{compgen [-V @var{varname}] [@var{option}] [@var{word}]}
 @end example
 
 Generate possible completion matches for @var{word} according to
 the @var{option}s, which may be any option accepted by the
 @code{complete}
-builtin with the exception of @option{-p} and @option{-r}, and write
-the matches to the standard output.
+builtin with the exceptions of
+@option{-p},
+@option{-r},
+@option{-D},
+@option{-E},
+and
+@option{-I},
+and write the matches to the standard output.
+
+If the @option{-V} option is supplied, @code{compgen} stores the generated
+completions into the indexed array variable @var{varname} instead of writing
+them to the standard output.
+
 When using the @option{-F} or @option{-C} options, the various shell variables
 set by the programmable completion facilities, while available, will not
 have useful values.
@@ -2114,7 +2380,7 @@ The matches will be generated in the same way as if the programmable
 completion code had generated them directly from a completion specification
 with the same flags.
 If @var{word} is specified, only those completions matching @var{word}
-will be displayed.
+will be displayed or stored.
 
 The return value is true unless an invalid option is supplied, or no
 matches were generated.
@@ -2122,19 +2388,21 @@ matches were generated.
 @item complete
 @btindex complete
 @example
-@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 [-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 [-DEI] [@var{name} @dots{}]}
 @end example
 
 Specify how arguments to each @var{name} should be completed.
-If the @option{-p} option is supplied, or if no options are supplied, existing
-completion specifications are printed in a way that allows them to be
-reused as input.
+
+If the @option{-p} option is supplied, or if no options or @var{name}s
+are supplied, print existing completion specifications
+in a way that allows them to be 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 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.
@@ -2160,7 +2428,6 @@ The arguments to the @option{-G}, @option{-W}, and @option{-X} options
 should be quoted to protect them from expansion before the
 @code{complete} builtin is invoked.
 
-
 @table @code
 @item -o @var{comp-option}
 The @var{comp-option} controls several aspects of the compspec's behavior
@@ -2181,12 +2448,16 @@ no matches.
 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,
+Tell Readline that the compspec generates filenames, so it can perform
+any filename-specific processing (such as 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}.
 
+@item fullquote
+Tell Readline to quote all the completed words even if they are not
+filenames.
+
 @item noquote
 Tell Readline not to quote the completed words if they are filenames
 (quoting filenames is the default).
@@ -2199,10 +2470,9 @@ Tell Readline not to append a space (the default) to words completed at
 the end of the line.
 
 @item plusdirs
-After any matches defined by the compspec are generated, 
-directory name completion is attempted and any
-matches are added to the results of the other actions.
-
+After generating any matches defined by the compspec, 
+attempt directory name completion and add any
+matches to the results of the other actions.
 @end table
 
 @item -A @var{action}
@@ -2211,7 +2481,8 @@ completions:
 
 @table @code
 @item alias
-Alias names.  May also be specified as @option{-a}.
+Alias names.
+May also be specified as @option{-a}.
 
 @item arrayvar
 Array variable names.
@@ -2220,13 +2491,16 @@ Array variable names.
 Readline key binding names (@pxref{Bindable Readline Commands}).
 
 @item builtin
-Names of shell builtin commands.  May also be specified as @option{-b}.
+Names of shell builtin commands.
+May also be specified as @option{-b}.
 
 @item command
-Command names.  May also be specified as @option{-c}.
+Command names.
+May also be specified as @option{-c}.
 
 @item directory
-Directory names.  May also be specified as @option{-d}.
+Directory names.
+May also be specified as @option{-d}.
 
 @item disabled
 Names of disabled shell builtins.
@@ -2235,16 +2509,19 @@ Names of disabled shell builtins.
 Names of enabled shell builtins.
 
 @item export
-Names of exported shell variables.  May also be specified as @option{-e}.
+Names of exported shell variables.
+May also be specified as @option{-e}.
 
 @item file
-File names.  May also be specified as @option{-f}.
+File and directory names, similar to Readline's filename completion.
+May also be specified as @option{-f}.
 
 @item function
 Names of shell functions.
 
 @item group
-Group names.  May also be specified as @option{-g}.
+Group names.
+May also be specified as @option{-g}.
 
 @item helptopic
 Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}).
@@ -2254,16 +2531,19 @@ Hostnames, as taken from the file specified by the
 @env{HOSTFILE} shell variable (@pxref{Bash Variables}).
 
 @item job
-Job names, if job control is active.  May also be specified as @option{-j}.
+Job names, if job control is active.
+May also be specified as @option{-j}.
 
 @item keyword
-Shell reserved words.  May also be specified as @option{-k}.
+Shell reserved words.
+May also be specified as @option{-k}.
 
 @item running
 Names of running jobs, if job control is active.
 
 @item service
-Service names.  May also be specified as @option{-s}.
+Service names.
+May also be specified as @option{-s}.
 
 @item setopt
 Valid arguments for the @option{-o} option to the @code{set} builtin
@@ -2280,10 +2560,12 @@ Signal names.
 Names of stopped jobs, if job control is active.
 
 @item user
-User names.  May also be specified as @option{-u}.
+User names.
+May also be specified as @option{-u}.
 
 @item variable
-Names of all shell variables.  May also be specified as @option{-v}.
+Names of all shell variables.
+May also be specified as @option{-v}.
 @end table
 
 @item -C @var{command}
@@ -2294,31 +2576,39 @@ Arguments are passed as with the @option{-F} option.
 @item -F @var{function}
 The shell function @var{function} is executed in the current shell
 environment.
-When it is executed, $1 is the name of the command whose arguments are
-being completed, $2 is the word being completed, and $3 is the word
-preceding the word being completed, as described above
-(@pxref{Programmable Completion}).
-When it finishes, the possible completions are retrieved from the value
+When it is executed,
+the first argument ($1) is the name of the command whose arguments are
+being completed,
+the second argument ($2) is the word being completed, and
+the third argument ($3) is the word preceding the word being completed,
+as described above (@pxref{Programmable Completion}).
+When @code{function} finishes,
+programmable completion retrieves
+the possible completions from the value
 of the @env{COMPREPLY} array variable.
 
 @item -G @var{globpat}
-The filename expansion pattern @var{globpat} is expanded to generate
+Expand the filename expansion pattern @var{globpat} to generate
 the possible completions.
 
 @item -P @var{prefix}
-@var{prefix} is added at the beginning of each possible completion
+Add @var{prefix} to the beginning of each possible completion
 after all other options have been applied.
 
 @item -S @var{suffix}
-@var{suffix} is appended to each possible completion
+Append @var{suffix} to each possible completion
 after all other options have been applied.
 
 @item -W @var{wordlist}
-The @var{wordlist} is split using the characters in the
-@env{IFS} special variable as delimiters, and each resultant word
-is expanded.
+Split the @var{wordlist} using the characters in the
+@env{IFS} special variable as delimiters, and expand
+each resulting word.
+Shell quoting is honored within @var{wordlist}
+in order to provide a
+mechanism for the words to contain shell metacharacters or characters
+in the value of @env{IFS}.
 The possible completions are the members of the resultant list which
-match the word being completed.
+match a prefix of the word being completed.
 
 @item -X @var{filterpat}
 @var{filterpat} is a pattern as used for filename expansion.
@@ -2330,7 +2620,14 @@ case, any completion not matching @var{filterpat} is removed.
 @end table
 
 The return value is true unless an invalid option is supplied, an option
-other than @option{-p} or @option{-r} is supplied without a @var{name}
+other than
+@option{-p},
+@option{-r},
+@option{-D},
+@option{-E},
+or
+@option{-I}
+is supplied without a @var{name}
 argument, an attempt is made to remove a completion specification for
 a @var{name} for which no specification exists, or
 an error occurs adding a completion specification.
@@ -2347,16 +2644,14 @@ 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 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 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 initial non-assignment word on the line, or after a
-command delimiter such as @samp{;} or @samp{|}, which is usually command
-name completion.
+apply to the ``default'' command completion;
+the @option{-E} option indicates that other supplied options should
+apply to ``empty'' command completion; and
+the @option{-I} option indicates that other supplied options should
+apply to completion on the initial word on the line.
+These are determined in the same way as the @code{complete} builtin.
 
 If multiple options are supplied, the @option{-D} option takes precedence
 over @option{-E}, and both take precedence over @option{-I}
@@ -2364,7 +2659,6 @@ 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
 specification exists, or an output error occurs.
-
 @end table
 
 @node A Programmable Completion Example
@@ -2376,8 +2670,10 @@ 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 passed as @code{$2}
-to determine the directory name to complete.  You can also use the
+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.
 
@@ -2394,7 +2690,8 @@ a newline to accommodate file names containing spaces and tabs --
 @code{compgen} prints the possible completions it generates one per line.
 
 Possible completions go into the @var{COMPREPLY} array variable, one
-completion per array element.  The programmable completion system retrieves
+completion per array element.
+The programmable completion system retrieves
 the completions from there when the function returns.
 
 @example
@@ -2458,19 +2755,22 @@ complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
 @noindent
 Since we'd like Bash and Readline to take care of some
 of the other details for us, we use several other options to tell Bash
-and Readline what to do.  The @option{-o filenames} option tells Readline
+and Readline what to do.
+The @option{-o filenames} option tells Readline
 that the possible completions should be treated as filenames, and quoted
-appropriately.  That option will also cause Readline to append a slash to
+appropriately.
+That option will also cause Readline to append a slash to
 filenames it can determine are directories (which is why we might want to
 extend @code{_comp_cd} to append a slash if we're using directories found
 via @var{CDPATH}: Readline can't tell those completions are directories).
 The @option{-o nospace} option tells Readline to not append a space
 character to the directory name, in case we want to append to it.
-The @option{-o bashdefault} option brings in the rest of the "Bash default"
+The @option{-o bashdefault} option brings in the rest of the ``Bash default''
 completions -- possible completions that Bash adds to the default Readline
-set.  These include things like command name completion, variable completion
-for words beginning with @samp{$} or @samp{$@{}, completions containing pathname
-expansion patterns (@pxref{Filename Expansion}), and so on.
+set.
+These include things like command name completion, variable completion
+for words beginning with @samp{$} or @samp{$@{}, completions containing
+pathname expansion patterns (@pxref{Filename Expansion}), and so on.
 
 Once installed using @code{complete}, @code{_comp_cd} will be called every
 time we attempt word completion for a @code{cd} command.
@@ -2479,8 +2779,8 @@ Many more examples -- an extensive collection of completions for most of
 the common GNU, Unix, and Linux commands -- are available as part of the
 bash_completion project.  This is installed by default on many GNU/Linux
 distributions.  Originally written by Ian Macdonald, the project now lives
-at @url{https://github.com/scop/bash-completion/}.  There are ports for
-other systems such as Solaris and Mac OS X.
+at @url{https://github.com/scop/bash-completion/}.
+There are ports for other systems such as Solaris and Mac OS X.
 
 An older version of the bash_completion package is distributed with bash
 in the @file{examples/complete} subdirectory.
index e9c9e54fe46521fe445e28b4f119d1474a3423ae..595b69e7663a90c233a52da9f209103920675875 100644 (file)
Binary files a/doc/rluserman.dvi and b/doc/rluserman.dvi differ
index b594615c71c32797e52c41e375553e2474f51def..b79efb467d131d6b0559eca95f5339a7e58b092d 100644 (file)
@@ -1,14 +1,14 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <!-- This manual describes the end user interface of the GNU Readline Library
-(version 8.2, 19 September 2022), a library which aids in the
+(version 8.3, 30 December 2024), a library which aids in the
 consistency of user interface across discrete programs which provide
 a command line interface.
 
-Copyright (C) 1988-2022 Free Software Foundation, Inc.
+Copyright © 1988-2025 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -31,21 +31,16 @@ A copy of the license is included in the section entitled
 <link href="#Command-Line-Editing" rel="next" title="Command Line Editing">
 <style type="text/css">
 <!--
-a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
-a.summary-letter {text-decoration: none}
-blockquote.indentedblock {margin-right: 0em}
+a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
+div.center {text-align:center}
 div.display {margin-left: 3.2em}
 div.example {margin-left: 3.2em}
-kbd {font-style: oblique}
-pre.display {font-family: inherit}
-pre.format {font-family: inherit}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-span.nolinebreak {white-space: nowrap}
-span.roman {font-family: initial; font-weight: normal}
-span.sansserif {font-family: sans-serif; font-weight: normal}
-span:hover a.copiable-anchor {visibility: visible}
-ul.no-bullet {list-style: none}
+kbd.kbd {font-style: oblique}
+kbd.key {font-style: normal}
+pre.display-preformatted {font-family: inherit}
+span:hover a.copiable-link {visibility: visible}
+ul.mark-bullet {list-style-type: disc}
+ul.toc-numbered-mark {list-style: none}
 -->
 </style>
 
@@ -53,7 +48,6 @@ ul.no-bullet {list-style: none}
 </head>
 
 <body lang="en">
-<h1 class="settitle" align="center">GNU Readline Library</h1>
 
 
 
@@ -63,34 +57,34 @@ ul.no-bullet {list-style: none}
 
 
 
-<div class="top" id="Top">
-<div class="header">
+<div class="top-level-extent" id="Top">
+<div class="nav-panel">
 <p>
 Next: <a href="#Command-Line-Editing" accesskey="n" rel="next">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="GNU-Readline-Library"></span><h1 class="top">GNU Readline Library</h1>
+<h1 class="top" id="GNU-Readline-Library"><span>GNU Readline Library<a class="copiable-link" href="#GNU-Readline-Library"> &para;</a></span></h1>
 
 <p>This document describes the end user interface of the GNU Readline Library,
 a utility which aids in the consistency of user interface across discrete
 programs which provide a command line interface.
-The Readline home page is <a href="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</a>.
+The Readline home page is <a class="url" href="http://www.gnu.org/software/readline/">http://www.gnu.org/software/readline/</a>.
 </p>
 
 
 
 
 
-<div class="Contents_element" id="SEC_Contents">
+<div class="element-contents" id="SEC_Contents">
 <h2 class="contents-heading">Table of Contents</h2>
 
 <div class="contents">
 
-<ul class="no-bullet">
+<ul class="toc-numbered-mark">
   <li><a id="toc-Command-Line-Editing-1" href="#Command-Line-Editing">1 Command Line Editing</a>
-  <ul class="no-bullet">
+  <ul class="toc-numbered-mark">
     <li><a id="toc-Introduction-to-Line-Editing" href="#Introduction-and-Notation">1.1 Introduction to Line Editing</a></li>
     <li><a id="toc-Readline-Interaction-1" href="#Readline-Interaction">1.2 Readline Interaction</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Readline-Bare-Essentials-1" href="#Readline-Bare-Essentials">1.2.1 Readline Bare Essentials</a></li>
       <li><a id="toc-Readline-Movement-Commands-1" href="#Readline-Movement-Commands">1.2.2 Readline Movement Commands</a></li>
       <li><a id="toc-Readline-Killing-Commands-1" href="#Readline-Killing-Commands">1.2.3 Readline Killing Commands</a></li>
@@ -98,13 +92,13 @@ The Readline home page is <a href="http://www.gnu.org/software/readline/">http:/
       <li><a id="toc-Searching-for-Commands-in-the-History" href="#Searching">1.2.5 Searching for Commands in the History</a></li>
     </ul></li>
     <li><a id="toc-Readline-Init-File-1" href="#Readline-Init-File">1.3 Readline Init File</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Readline-Init-File-Syntax-1" href="#Readline-Init-File-Syntax">1.3.1 Readline Init File Syntax</a></li>
       <li><a id="toc-Conditional-Init-Constructs-1" href="#Conditional-Init-Constructs">1.3.2 Conditional Init Constructs</a></li>
       <li><a id="toc-Sample-Init-File-1" href="#Sample-Init-File">1.3.3 Sample Init File</a></li>
     </ul></li>
     <li><a id="toc-Bindable-Readline-Commands-1" href="#Bindable-Readline-Commands">1.4 Bindable Readline Commands</a>
-    <ul class="no-bullet">
+    <ul class="toc-numbered-mark">
       <li><a id="toc-Commands-For-Moving-1" href="#Commands-For-Moving">1.4.1 Commands For Moving</a></li>
       <li><a id="toc-Commands-For-Manipulating-The-History" href="#Commands-For-History">1.4.2 Commands For Manipulating The History</a></li>
       <li><a id="toc-Commands-For-Changing-Text" href="#Commands-For-Text">1.4.3 Commands For Changing Text</a></li>
@@ -121,18 +115,18 @@ The Readline home page is <a href="http://www.gnu.org/software/readline/">http:/
 </div>
 </div>
 <hr>
-<div class="chapter" id="Command-Line-Editing">
-<div class="header">
+<div class="chapter-level-extent" id="Command-Line-Editing">
+<div class="nav-panel">
 <p>
 Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Top" accesskey="p" rel="prev">GNU Readline Library</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU Readline Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Command-Line-Editing-1"></span><h2 class="chapter">1 Command Line Editing</h2>
+<h2 class="chapter" id="Command-Line-Editing-1"><span>1 Command Line Editing<a class="copiable-link" href="#Command-Line-Editing-1"> &para;</a></span></h2>
 
-<p>This chapter describes the basic features of the <small>GNU</small>
+<p>This chapter describes the basic features of the <small class="sc">GNU</small>
 command line editing interface.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Introduction-and-Notation" accesskey="1">Introduction to Line Editing</a></li>
 <li><a href="#Readline-Interaction" accesskey="2">Readline Interaction</a></li>
 <li><a href="#Readline-Init-File" accesskey="3">Readline Init File</a></li>
@@ -140,71 +134,89 @@ command line editing interface.
 <li><a href="#Readline-vi-Mode" accesskey="5">Readline vi Mode</a></li>
 </ul>
 <hr>
-<div class="section" id="Introduction-and-Notation">
-<div class="header">
+<div class="section-level-extent" id="Introduction-and-Notation">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Interaction" accesskey="n" rel="next">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Introduction-to-Line-Editing"></span><h3 class="section">1.1 Introduction to Line Editing</h3>
+<h3 class="section" id="Introduction-to-Line-Editing"><span>1.1 Introduction to Line Editing<a class="copiable-link" href="#Introduction-to-Line-Editing"> &para;</a></span></h3>
 
-<p>The following paragraphs describe the notation used to represent
-keystrokes.
+<p>The following paragraphs use Emacs style to
+describe the notation used to represent keystrokes.
 </p>
-<p>The text <kbd>C-k</kbd> is read as &lsquo;Control-K&rsquo; and describes the character
-produced when the <tt class="key">k</tt> key is pressed while the Control key
+<p>The text <kbd class="kbd">C-k</kbd> is read as &lsquo;Control-K&rsquo; and describes the character
+produced when the <kbd class="key">k</kbd> key is pressed while the Control key
 is depressed.
 </p>
-<p>The text <kbd>M-k</kbd> is read as &lsquo;Meta-K&rsquo; and describes the character
-produced when the Meta key (if you have one) is depressed, and the <tt class="key">k</tt>
-key is pressed.
-The Meta key is labeled <tt class="key">ALT</tt> on many keyboards.
-On keyboards with two keys labeled <tt class="key">ALT</tt> (usually to either side of
-the space bar), the <tt class="key">ALT</tt> on the left side is generally set to
+<p>The text <kbd class="kbd">M-k</kbd> is read as &lsquo;Meta-K&rsquo; and describes the character
+produced when the Meta key (if you have one) is depressed, and the <kbd class="key">k</kbd>
+key is pressed (a <em class="dfn">meta character</em>), then both are released.
+The Meta key is labeled <kbd class="key">ALT</kbd> or <kbd class="key">Option</kbd> on many keyboards.
+On keyboards with two keys labeled <kbd class="key">ALT</kbd> (usually to either side of
+the space bar), the <kbd class="key">ALT</kbd> on the left side is generally set to
 work as a Meta key.
-The <tt class="key">ALT</tt> key on the right may also be configured to work as a
-Meta key or may be configured as some other modifier, such as a
+One of the <kbd class="key">ALT</kbd> keys may also be configured
+as some other modifier, such as a
 Compose key for typing accented characters.
 </p>
-<p>If you do not have a Meta or <tt class="key">ALT</tt> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <tt class="key">ESC</tt>
-<em>first</em>, and then typing <tt class="key">k</tt>.
-Either process is known as <em>metafying</em> the <tt class="key">k</tt> key.
+<p>On some keyboards, the Meta key modifier produces characters with
+the eighth bit (0200) set.
+You can use the <code class="code">enable-meta-key</code> variable
+to control whether or not it does this, if the keyboard allows it.
+On many others, the terminal or terminal emulator converts the metafied
+key to a key sequence beginning with <kbd class="key">ESC</kbd> as described in the
+next paragraph.
 </p>
-<p>The text <kbd>M-C-k</kbd> is read as &lsquo;Meta-Control-k&rsquo; and describes the
-character produced by <em>metafying</em> <kbd>C-k</kbd>.
+<p>If you do not have a Meta or <kbd class="key">ALT</kbd> key, or another key working as
+a Meta key, you can generally achieve the latter effect by typing <kbd class="key">ESC</kbd>
+<em class="emph">first</em>, and then typing <kbd class="key">k</kbd>.
+The <kbd class="key">ESC</kbd> character is known as the <em class="dfn">meta prefix</em>).
 </p>
-<p>In addition, several keys have their own names.  Specifically,
-<tt class="key">DEL</tt>, <tt class="key">ESC</tt>, <tt class="key">LFD</tt>, <tt class="key">SPC</tt>, <tt class="key">RET</tt>, and <tt class="key">TAB</tt> all
+<p>Either process is known as <em class="dfn">metafying</em> the <kbd class="key">k</kbd> key.
+</p>
+<p>If your Meta key produces a key sequence with the <kbd class="key">ESC</kbd> meta prefix,
+you can make <kbd class="kbd">M-key</kbd> key bindings you specify
+(see <code class="code">Key Bindings</code> in <a class="ref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>)
+do the same thing by setting the <code class="code">force-meta-prefix</code> variable.
+</p>
+<p>The text <kbd class="kbd">M-C-k</kbd> is read as &lsquo;Meta-Control-k&rsquo; and describes the
+character produced by metafying <kbd class="kbd">C-k</kbd>.
+</p>
+<p>In addition, several keys have their own names.
+Specifically,
+<kbd class="key">DEL</kbd>, <kbd class="key">ESC</kbd>, <kbd class="key">LFD</kbd>, <kbd class="key">SPC</kbd>, <kbd class="key">RET</kbd>, and <kbd class="key">TAB</kbd> all
 stand for themselves when seen in this text, or in an init file
-(see <a href="#Readline-Init-File">Readline Init File</a>).
-If your keyboard lacks a <tt class="key">LFD</tt> key, typing <tt class="key">C-j</tt> will
-produce the desired character.
-The <tt class="key">RET</tt> key may be labeled <tt class="key">Return</tt> or <tt class="key">Enter</tt> on
+(see <a class="pxref" href="#Readline-Init-File">Readline Init File</a>).
+If your keyboard lacks a <kbd class="key">LFD</kbd> key, typing <kbd class="key">C-j</kbd> will
+output the appropriate character.
+The <kbd class="key">RET</kbd> key may be labeled <kbd class="key">Return</kbd> or <kbd class="key">Enter</kbd> on
 some keyboards.
 </p>
 <hr>
 </div>
-<div class="section" id="Readline-Interaction">
-<div class="header">
+<div class="section-level-extent" id="Readline-Interaction">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Init-File" accesskey="n" rel="next">Readline Init File</a>, Previous: <a href="#Introduction-and-Notation" accesskey="p" rel="prev">Introduction to Line Editing</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-Interaction-1"></span><h3 class="section">1.2 Readline Interaction</h3>
-<span id="index-interaction_002c-readline"></span>
+<h3 class="section" id="Readline-Interaction-1"><span>1.2 Readline Interaction<a class="copiable-link" href="#Readline-Interaction-1"> &para;</a></span></h3>
+<a class="index-entry-id" id="index-interaction_002c-readline"></a>
 
 <p>Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled.  The
-Readline library gives you a set of commands for manipulating the text
+only to notice that the first word on the line is misspelled.
+The Readline library gives you a set of commands for manipulating the text
 as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line.  Using these editing commands,
+you to retype the majority of the line.
+Using these editing commands,
 you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections.  Then, when you are satisfied with
-the line, you simply press <tt class="key">RET</tt>.  You do not have to be at the
-end of the line to press <tt class="key">RET</tt>; the entire line is accepted
+insert the text of the corrections.
+Then, when you are satisfied with the line, you simply press <kbd class="key">RET</kbd>.
+You do not have to be at the
+end of the line to press <kbd class="key">RET</kbd>; the entire line is accepted
 regardless of the location of the cursor within the line.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Readline-Bare-Essentials" accesskey="1">Readline Bare Essentials</a></li>
 <li><a href="#Readline-Movement-Commands" accesskey="2">Readline Movement Commands</a></li>
 <li><a href="#Readline-Killing-Commands" accesskey="3">Readline Killing Commands</a></li>
@@ -212,113 +224,117 @@ regardless of the location of the cursor within the line.
 <li><a href="#Searching" accesskey="5">Searching for Commands in the History</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Readline-Bare-Essentials">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Bare-Essentials">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Movement-Commands" accesskey="n" rel="next">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-Bare-Essentials-1"></span><h4 class="subsection">1.2.1 Readline Bare Essentials</h4>
-<span id="index-notation_002c-readline"></span>
-<span id="index-command-editing"></span>
-<span id="index-editing-command-lines"></span>
+<h4 class="subsection" id="Readline-Bare-Essentials-1"><span>1.2.1 Readline Bare Essentials<a class="copiable-link" href="#Readline-Bare-Essentials-1"> &para;</a></span></h4>
+<a class="index-entry-id" id="index-notation_002c-readline"></a>
+<a class="index-entry-id" id="index-command-editing"></a>
+<a class="index-entry-id" id="index-editing-command-lines"></a>
 
-<p>In order to enter characters into the line, simply type them.  The typed
+<p>In order to enter characters into the line, simply type them.
+The typed
 character appears where the cursor was, and then the cursor moves one
-space to the right.  If you mistype a character, you can use your
+space to the right.
+If you mistype a character, you can use your
 erase character to back up and delete the mistyped character.
 </p>
 <p>Sometimes you may mistype a character, and
-not notice the error until you have typed several other characters.  In
-that case, you can type <kbd>C-b</kbd> to move the cursor to the left, and then
-correct your mistake.  Afterwards, you can move the cursor to the right
-with <kbd>C-f</kbd>.
+not notice the error until you have typed several other characters.
+In that case, you can type <kbd class="kbd">C-b</kbd> to move the cursor to the left,
+and then correct your mistake.
+Afterwards, you can move the cursor to the right with <kbd class="kbd">C-f</kbd>.
 </p>
 <p>When you add text in the middle of a line, you will notice that characters
 to the right of the cursor are &lsquo;pushed over&rsquo; to make room for the text
-that you have inserted.  Likewise, when you delete text behind the cursor,
+that you have inserted.
+Likewise, when you delete text behind the cursor,
 characters to the right of the cursor are &lsquo;pulled back&rsquo; to fill in the
-blank space created by the removal of the text.  A list of the bare
-essentials for editing the text of an input line follows.
+blank space created by the removal of the text.
+These are the bare
+essentials for editing the text of an input line:
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-b</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-b</kbd></dt>
 <dd><p>Move back one character.
 </p></dd>
-<dt><span><kbd>C-f</kbd></span></dt>
+<dt><kbd class="kbd">C-f</kbd></dt>
 <dd><p>Move forward one character.
 </p></dd>
-<dt><span><tt class="key">DEL</tt> or <tt class="key">Backspace</tt></span></dt>
+<dt><kbd class="key">DEL</kbd> or <kbd class="key">Backspace</kbd></dt>
 <dd><p>Delete the character to the left of the cursor.
 </p></dd>
-<dt><span><kbd>C-d</kbd></span></dt>
+<dt><kbd class="kbd">C-d</kbd></dt>
 <dd><p>Delete the character underneath the cursor.
 </p></dd>
-<dt><span>Printing&nbsp;characters<!-- /@w --></span></dt>
+<dt>Printing&nbsp;characters<!-- /@w --></dt>
 <dd><p>Insert the character into the line at the cursor.
 </p></dd>
-<dt><span><kbd>C-_</kbd> or <kbd>C-x C-u</kbd></span></dt>
-<dd><p>Undo the last editing command.  You can undo all the way back to an
-empty line.
+<dt><kbd class="kbd">C-_</kbd> or <kbd class="kbd">C-x C-u</kbd></dt>
+<dd><p>Undo the last editing command.
+You can undo all the way back to an empty line.
 </p></dd>
 </dl>
 
-<p>(Depending on your configuration, the <tt class="key">Backspace</tt> key might be set to
-delete the character to the left of the cursor and the <tt class="key">DEL</tt> key set
-to delete the character underneath the cursor, like <kbd>C-d</kbd>, rather
-than the character to the left of the cursor.)
+<p>Depending on your configuration, the <kbd class="key">Backspace</kbd> key might be set to
+delete the character to the left of the cursor and the <kbd class="key">DEL</kbd> key set
+to delete the character underneath the cursor, like <kbd class="kbd">C-d</kbd>, rather
+than the character to the left of the cursor.
 </p>
 <hr>
 </div>
-<div class="subsection" id="Readline-Movement-Commands">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Movement-Commands">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Killing-Commands" accesskey="n" rel="next">Readline Killing Commands</a>, Previous: <a href="#Readline-Bare-Essentials" accesskey="p" rel="prev">Readline Bare Essentials</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-Movement-Commands-1"></span><h4 class="subsection">1.2.2 Readline Movement Commands</h4>
-
+<h4 class="subsection" id="Readline-Movement-Commands-1"><span>1.2.2 Readline Movement Commands<a class="copiable-link" href="#Readline-Movement-Commands-1"> &para;</a></span></h4>
 
 <p>The above table describes the most basic keystrokes that you need
-in order to do editing of the input line.  For your convenience, many
-other commands have been added in addition to <kbd>C-b</kbd>, <kbd>C-f</kbd>,
-<kbd>C-d</kbd>, and <tt class="key">DEL</tt>.  Here are some commands for moving more rapidly
-about the line.
+in order to do editing of the input line.
+For your convenience, many other commands are available in
+addition to <kbd class="kbd">C-b</kbd>, <kbd class="kbd">C-f</kbd>, <kbd class="kbd">C-d</kbd>, and <kbd class="key">DEL</kbd>.
+Here are some commands for moving more rapidly within the line.
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-a</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-a</kbd></dt>
 <dd><p>Move to the start of the line.
 </p></dd>
-<dt><span><kbd>C-e</kbd></span></dt>
+<dt><kbd class="kbd">C-e</kbd></dt>
 <dd><p>Move to the end of the line.
 </p></dd>
-<dt><span><kbd>M-f</kbd></span></dt>
+<dt><kbd class="kbd">M-f</kbd></dt>
 <dd><p>Move forward a word, where a word is composed of letters and digits.
 </p></dd>
-<dt><span><kbd>M-b</kbd></span></dt>
+<dt><kbd class="kbd">M-b</kbd></dt>
 <dd><p>Move backward a word.
 </p></dd>
-<dt><span><kbd>C-l</kbd></span></dt>
+<dt><kbd class="kbd">C-l</kbd></dt>
 <dd><p>Clear the screen, reprinting the current line at the top.
 </p></dd>
 </dl>
 
-<p>Notice how <kbd>C-f</kbd> moves forward a character, while <kbd>M-f</kbd> moves
-forward a word.  It is a loose convention that control keystrokes
+<p>Notice how <kbd class="kbd">C-f</kbd> moves forward a character, while <kbd class="kbd">M-f</kbd> moves
+forward a word.
+It is a loose convention that control keystrokes
 operate on characters while meta keystrokes operate on words.
 </p>
 <hr>
 </div>
-<div class="subsection" id="Readline-Killing-Commands">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Killing-Commands">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-Arguments" accesskey="n" rel="next">Readline Arguments</a>, Previous: <a href="#Readline-Movement-Commands" accesskey="p" rel="prev">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-Killing-Commands-1"></span><h4 class="subsection">1.2.3 Readline Killing Commands</h4>
+<h4 class="subsection" id="Readline-Killing-Commands-1"><span>1.2.3 Readline Killing Commands<a class="copiable-link" href="#Readline-Killing-Commands-1"> &para;</a></span></h4>
 
-<span id="index-killing-text"></span>
-<span id="index-yanking-text"></span>
+<a class="index-entry-id" id="index-killing-text"></a>
+<a class="index-entry-id" id="index-yanking-text"></a>
 
-<p><em>Killing</em> text means to delete the text from the line, but to save
-it away for later use, usually by <em>yanking</em> (re-inserting)
+<p><em class="dfn">Killing</em> text means to delete the text from the line, but to save
+it away for later use, usually by <em class="dfn">yanking</em> (re-inserting)
 it back into the line.
 (&lsquo;Cut&rsquo; and &lsquo;paste&rsquo; are more recent jargon for &lsquo;kill&rsquo; and &lsquo;yank&rsquo;.)
 </p>
@@ -326,90 +342,97 @@ it back into the line.
 be sure that you can get the text back in a different (or the same)
 place later.
 </p>
-<p>When you use a kill command, the text is saved in a <em>kill-ring</em>.
+<p>When you use a kill command, the text is saved in a <em class="dfn">kill-ring</em>.
 Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all.  The kill
-ring is not line specific; the text that you killed on a previously
+that when you yank it back, you get it all.
+The kill ring is not line specific; the text that you killed on a previously
 typed line is available to be yanked back later, when you are typing
 another line.
-<span id="index-kill-ring"></span>
+<a class="index-entry-id" id="index-kill-ring"></a>
 </p>
 <p>Here is the list of commands for killing text.
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-k</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-k</kbd></dt>
 <dd><p>Kill the text from the current cursor position to the end of the line.
 </p>
 </dd>
-<dt><span><kbd>M-d</kbd></span></dt>
+<dt><kbd class="kbd">M-d</kbd></dt>
 <dd><p>Kill from the cursor to the end of the current word, or, if between
 words, to the end of the next word.
-Word boundaries are the same as those used by <kbd>M-f</kbd>.
+Word boundaries are the same as those used by <kbd class="kbd">M-f</kbd>.
 </p>
 </dd>
-<dt><span><kbd>M-<span class="key">DEL</span></kbd></span></dt>
+<dt><kbd class="kbd">M-<kbd class="key">DEL</kbd></kbd></dt>
 <dd><p>Kill from the cursor to the start of the current word, or, if between
 words, to the start of the previous word.
-Word boundaries are the same as those used by <kbd>M-b</kbd>.
+Word boundaries are the same as those used by <kbd class="kbd">M-b</kbd>.
 </p>
 </dd>
-<dt><span><kbd>C-w</kbd></span></dt>
-<dd><p>Kill from the cursor to the previous whitespace.  This is different than
-<kbd>M-<span class="key">DEL</span></kbd> because the word boundaries differ.
+<dt><kbd class="kbd">C-w</kbd></dt>
+<dd><p>Kill from the cursor to the previous whitespace.
+This is different than
+<kbd class="kbd">M-<kbd class="key">DEL</kbd></kbd> because the word boundaries differ.
 </p>
 </dd>
 </dl>
 
-<p>Here is how to <em>yank</em> the text back into the line.  Yanking
-means to copy the most-recently-killed text from the kill buffer.
+<p>Here is how to <em class="dfn">yank</em> the text back into the line.  Yanking
+means to copy the most-recently-killed text from the kill buffer
+into the line at the current cursor position.
 </p>
-<dl compact="compact">
-<dt><span><kbd>C-y</kbd></span></dt>
+<dl class="table">
+<dt><kbd class="kbd">C-y</kbd></dt>
 <dd><p>Yank the most recently killed text back into the buffer at the cursor.
 </p>
 </dd>
-<dt><span><kbd>M-y</kbd></span></dt>
-<dd><p>Rotate the kill-ring, and yank the new top.  You can only do this if
-the prior command is <kbd>C-y</kbd> or <kbd>M-y</kbd>.
+<dt><kbd class="kbd">M-y</kbd></dt>
+<dd><p>Rotate the kill-ring, and yank the new top.
+You can only do this if the prior command is <kbd class="kbd">C-y</kbd> or <kbd class="kbd">M-y</kbd>.
 </p></dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Readline-Arguments">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Arguments">
+<div class="nav-panel">
 <p>
 Next: <a href="#Searching" accesskey="n" rel="next">Searching for Commands in the History</a>, Previous: <a href="#Readline-Killing-Commands" accesskey="p" rel="prev">Readline Killing Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-Arguments-1"></span><h4 class="subsection">1.2.4 Readline Arguments</h4>
+<h4 class="subsection" id="Readline-Arguments-1"><span>1.2.4 Readline Arguments<a class="copiable-link" href="#Readline-Arguments-1"> &para;</a></span></h4>
 
-<p>You can pass numeric arguments to Readline commands.  Sometimes the
-argument acts as a repeat count, other times it is the <i>sign</i> of the
-argument that is significant.  If you pass a negative argument to a
+<p>You can pass numeric arguments to Readline commands.
+Sometimes the
+argument acts as a repeat count, other times it is the <i class="i">sign</i> of the
+argument that is significant.
+If you pass a negative argument to a
 command which normally acts in a forward direction, that command will
-act in a backward direction.  For example, to kill text back to the
-start of the line, you might type &lsquo;<samp>M-- C-k</samp>&rsquo;.
+act in a backward direction.
+For example, to kill text back to the
+start of the line, you might type &lsquo;<samp class="samp">M-- C-k</samp>&rsquo;.
 </p>
 <p>The general way to pass numeric arguments to a command is to type meta
-digits before the command.  If the first &lsquo;digit&rsquo; typed is a minus
-sign (&lsquo;<samp>-</samp>&rsquo;), then the sign of the argument will be negative.  Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command.  For example, to give
-the <kbd>C-d</kbd> command an argument of 10, you could type &lsquo;<samp>M-1 0 C-d</samp>&rsquo;,
+digits before the command.
+If the first &lsquo;digit&rsquo; typed is a minus
+sign (&lsquo;<samp class="samp">-</samp>&rsquo;), then the sign of the argument will be negative.
+Once you have typed one meta digit to get the argument started, you can
+type the remainder of the digits, and then the command.
+For example, to give
+the <kbd class="kbd">C-d</kbd> command an argument of 10, you could type &lsquo;<samp class="samp">M-1 0 C-d</samp>&rsquo;,
 which will delete the next ten characters on the input line.
 </p>
 <hr>
 </div>
-<div class="subsection" id="Searching">
-<div class="header">
+<div class="subsection-level-extent" id="Searching">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Readline-Arguments" accesskey="p" rel="prev">Readline Arguments</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Searching-for-Commands-in-the-History"></span><h4 class="subsection">1.2.5 Searching for Commands in the History</h4>
+<h4 class="subsection" id="Searching-for-Commands-in-the-History"><span>1.2.5 Searching for Commands in the History<a class="copiable-link" href="#Searching-for-Commands-in-the-History"> &para;</a></span></h4>
 
 <p>Readline provides commands for searching through the command history
 for lines containing a specified string.
-There are two search modes:  <em>incremental</em> and <em>non-incremental</em>.
+There are two search modes:  <em class="dfn">incremental</em> and <em class="dfn">non-incremental</em>.
 </p>
 <p>Incremental searches begin before the user has finished typing the
 search string.
@@ -417,538 +440,596 @@ As each character of the search string is typed, Readline displays
 the next entry from the history matching the string typed so far.
 An incremental search requires only as many characters as needed to
 find the desired history entry.
-To search backward in the history for a particular string, type
-<kbd>C-r</kbd>.  Typing <kbd>C-s</kbd> searches forward through the history.
-The characters present in the value of the <code>isearch-terminators</code> variable
+When using emacs editing mode, type <kbd class="kbd">C-r</kbd>
+to search backward in the history for a particular string.
+Typing <kbd class="kbd">C-s</kbd> searches forward through the history.
+The characters present in the value of the <code class="code">isearch-terminators</code> variable
 are used to terminate an incremental search.
-If that variable has not been assigned a value, the <tt class="key">ESC</tt> and
-<kbd>C-J</kbd> characters will terminate an incremental search.
-<kbd>C-g</kbd> will abort an incremental search and restore the original line.
+If that variable has not been assigned a value, the <kbd class="key">ESC</kbd> and
+<kbd class="kbd">C-j</kbd> characters terminate an incremental search.
+<kbd class="kbd">C-g</kbd> aborts an incremental search and restores the original line.
 When the search is terminated, the history entry containing the
 search string becomes the current line.
 </p>
-<p>To find other matching entries in the history list, type <kbd>C-r</kbd> or
-<kbd>C-s</kbd> as appropriate.
-This will search backward or forward in the history for the next
+<p>To find other matching entries in the history list, type <kbd class="kbd">C-r</kbd> or
+<kbd class="kbd">C-s</kbd> as appropriate.
+This searches backward or forward in the history for the next
 entry matching the search string typed so far.
-Any other key sequence bound to a Readline command will terminate
-the search and execute that command.
-For instance, a <tt class="key">RET</tt> will terminate the search and accept
+Any other key sequence bound to a Readline command terminates
+the search and executes that command.
+For instance, a <kbd class="key">RET</kbd> terminates the search and accepts
 the line, thereby executing the command from the history list.
 A movement command will terminate the search, make the last line found
 the current line, and begin editing.
 </p>
-<p>Readline remembers the last incremental search string.  If two
-<kbd>C-r</kbd>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
+<p>Readline remembers the last incremental search string.
+If two <kbd class="kbd">C-r</kbd>s are typed without any intervening characters defining
+a new search string, Readline uses any remembered search string.
 </p>
 <p>Non-incremental searches read the entire search string before starting
-to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
+to search for matching history entries.
+The search string may be typed by the user or be part of the contents of
+the current line.
 </p>
 <hr>
 </div>
 </div>
-<div class="section" id="Readline-Init-File">
-<div class="header">
+<div class="section-level-extent" id="Readline-Init-File">
+<div class="nav-panel">
 <p>
 Next: <a href="#Bindable-Readline-Commands" accesskey="n" rel="next">Bindable Readline Commands</a>, Previous: <a href="#Readline-Interaction" accesskey="p" rel="prev">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-Init-File-1"></span><h3 class="section">1.3 Readline Init File</h3>
-<span id="index-initialization-file_002c-readline"></span>
+<h3 class="section" id="Readline-Init-File-1"><span>1.3 Readline Init File<a class="copiable-link" href="#Readline-Init-File-1"> &para;</a></span></h3>
+<a class="index-entry-id" id="index-initialization-file_002c-readline"></a>
 
 <p>Although the Readline library comes with a set of Emacs-like
 keybindings installed by default, it is possible to use a different set
 of keybindings.
 Any user can customize programs that use Readline by putting
-commands in an <em>inputrc</em> file,
-conventionally in their home directory.
-The name of this
-file is taken from the value of the environment variable <code>INPUTRC</code>.  If
-that variable is unset, the default is <samp>~/.inputrc</samp>.  If that
-file does not exist or cannot be read, the ultimate default is
-<samp>/etc/inputrc</samp>.
-</p>
-<p>When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-</p>
-<p>In addition, the <code>C-x C-r</code> command re-reads this init file, thus
+commands in an <em class="dfn">inputrc</em> file, conventionally in their home directory.
+The name of this file is taken from the value of the
+environment variable <code class="env">INPUTRC</code>.
+If that variable is unset, the default is <samp class="file">~/.inputrc</samp>.
+If that file does not exist or cannot be read, Readline looks for
+<samp class="file">/etc/inputrc</samp>.
+</p>
+<p>When a program that uses the Readline library starts up, Readline reads
+the init file and sets any variables and key bindings it contains.
+</p>
+<p>In addition, the <code class="code">C-x C-r</code> command re-reads this init file, thus
 incorporating any changes that you might have made to it.
 </p>
 
-<ul class="section-toc">
+<ul class="mini-toc">
 <li><a href="#Readline-Init-File-Syntax" accesskey="1">Readline Init File Syntax</a></li>
 <li><a href="#Conditional-Init-Constructs" accesskey="2">Conditional Init Constructs</a></li>
 <li><a href="#Sample-Init-File" accesskey="3">Sample Init File</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Readline-Init-File-Syntax">
-<div class="header">
+<div class="subsection-level-extent" id="Readline-Init-File-Syntax">
+<div class="nav-panel">
 <p>
 Next: <a href="#Conditional-Init-Constructs" accesskey="n" rel="next">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-Init-File-Syntax-1"></span><h4 class="subsection">1.3.1 Readline Init File Syntax</h4>
+<h4 class="subsection" id="Readline-Init-File-Syntax-1"><span>1.3.1 Readline Init File Syntax<a class="copiable-link" href="#Readline-Init-File-Syntax-1"> &para;</a></span></h4>
 
 <p>There are only a few basic constructs allowed in the
-Readline init file.  Blank lines are ignored.
-Lines beginning with a &lsquo;<samp>#</samp>&rsquo; are comments.
-Lines beginning with a &lsquo;<samp>$</samp>&rsquo; indicate conditional
-constructs (see <a href="#Conditional-Init-Constructs">Conditional Init Constructs</a>).  Other lines
-denote variable settings and key bindings.
-</p>
-<dl compact="compact">
-<dt><span>Variable Settings</span></dt>
+Readline init file.
+Blank lines are ignored.
+Lines beginning with a &lsquo;<samp class="samp">#</samp>&rsquo; are comments.
+Lines beginning with a &lsquo;<samp class="samp">$</samp>&rsquo; indicate conditional
+constructs (see <a class="pxref" href="#Conditional-Init-Constructs">Conditional Init Constructs</a>).
+Other lines denote variable settings and key bindings.
+</p>
+<dl class="table">
+<dt>Variable Settings</dt>
 <dd><p>You can modify the run-time behavior of Readline by
 altering the values of variables in Readline
-using the <code>set</code> command within the init file.
+using the <code class="code">set</code> command within the init file.
 The syntax is simple:
 </p>
 <div class="example">
-<pre class="example">set <var>variable</var> <var>value</var>
+<pre class="example-preformatted">set <var class="var">variable</var> <var class="var">value</var>
 </pre></div>
 
 <p>Here, for example, is how to
 change from the default Emacs-like key binding to use
-<code>vi</code> line editing commands:
+<code class="code">vi</code> line editing commands:
 </p>
 <div class="example">
-<pre class="example">set editing-mode vi
+<pre class="example-preformatted">set editing-mode vi
 </pre></div>
 
-<p>Variable names and values, where appropriate, are recognized without regard
-to case.  Unrecognized variable names are ignored.
+<p>Variable names and values, where appropriate, are recognized without
+regard to case.
+Unrecognized variable names are ignored.
 </p>
 <p>Boolean variables (those that can be set to on or off) are set to on if
-the value is null or empty, <var>on</var> (case-insensitive), or 1.  Any other
-value results in the variable being set to off.
+the value is null or empty, <var class="var">on</var> (case-insensitive), or 1.
+Any other value results in the variable being set to off.
 </p>
 
 <p>A great deal of run-time behavior is changeable with the following
 variables.
 </p>
-<span id="index-variables_002c-readline"></span>
-<dl compact="compact">
-<dt id='index-active_002dregion_002dstart_002dcolor'><span><code>active-region-start-color</code><a href='#index-active_002dregion_002dstart_002dcolor' class='copiable-anchor'> &para;</a></span></dt>
+<a class="index-entry-id" id="index-variables_002c-readline"></a>
+<dl class="table">
+<dt><a id="index-active_002dregion_002dstart_002dcolor"></a><span><code class="code">active-region-start-color</code><a class="copiable-link" href="#index-active_002dregion_002dstart_002dcolor"> &para;</a></span></dt>
 <dd><p>A string variable that controls the text color and background when displaying
 the text in the active region (see the description of
-<code>enable-active-region</code> below).
+<code class="code">enable-active-region</code> below).
 This string must not take up any physical character positions on the display,
 so it should consist only of terminal escape sequences.
 It is output to the terminal before displaying the text in the active region.
 This variable is reset to the default value whenever the terminal type changes.
 The default value is the string that puts the terminal in standout mode,
 as obtained from the terminal&rsquo;s terminfo description.
-A sample value might be &lsquo;<samp>\e[01;33m</samp>&rsquo;.
+A sample value might be &lsquo;<samp class="samp">\e[01;33m</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-active_002dregion_002dend_002dcolor'><span><code>active-region-end-color</code><a href='#index-active_002dregion_002dend_002dcolor' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A string variable that &quot;undoes&quot; the effects of <code>active-region-start-color</code>
-and restores &quot;normal&quot; terminal display appearance after displaying text
-in the active region.
+<dt><a id="index-active_002dregion_002dend_002dcolor"></a><span><code class="code">active-region-end-color</code><a class="copiable-link" href="#index-active_002dregion_002dend_002dcolor"> &para;</a></span></dt>
+<dd><p>A string variable that &ldquo;undoes&rdquo;
+the effects of <code class="code">active-region-start-color</code>
+and restores &ldquo;normal&rdquo;
+terminal display appearance after displaying text in the active region.
 This string must not take up any physical character positions on the display,
 so it should consist only of terminal escape sequences.
 It is output to the terminal after displaying the text in the active region.
 This variable is reset to the default value whenever the terminal type changes.
 The default value is the string that restores the terminal from standout mode,
 as obtained from the terminal&rsquo;s terminfo description.
-A sample value might be &lsquo;<samp>\e[0m</samp>&rsquo;.
+A sample value might be &lsquo;<samp class="samp">\e[0m</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-bell_002dstyle'><span><code>bell-style</code><a href='#index-bell_002dstyle' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-bell_002dstyle"></a><span><code class="code">bell-style</code><a class="copiable-link" href="#index-bell_002dstyle"> &para;</a></span></dt>
 <dd><p>Controls what happens when Readline wants to ring the terminal bell.
-If set to &lsquo;<samp>none</samp>&rsquo;, Readline never rings the bell.  If set to
-&lsquo;<samp>visible</samp>&rsquo;, Readline uses a visible bell if one is available.
-If set to &lsquo;<samp>audible</samp>&rsquo; (the default), Readline attempts to ring
+If set to &lsquo;<samp class="samp">none</samp>&rsquo;, Readline never rings the bell.
+If set to &lsquo;<samp class="samp">visible</samp>&rsquo;, Readline uses a visible bell if one is available.
+If set to &lsquo;<samp class="samp">audible</samp>&rsquo; (the default), Readline attempts to ring
 the terminal&rsquo;s bell.
 </p>
 </dd>
-<dt id='index-bind_002dtty_002dspecial_002dchars'><span><code>bind-tty-special-chars</code><a href='#index-bind_002dtty_002dspecial_002dchars' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo; (the default), Readline attempts to bind the control
-characters   treated specially by the kernel&rsquo;s terminal driver to their
+<dt><a id="index-bind_002dtty_002dspecial_002dchars"></a><span><code class="code">bind-tty-special-chars</code><a class="copiable-link" href="#index-bind_002dtty_002dspecial_002dchars"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo; (the default), Readline attempts to bind the control
+characters that are
+treated specially by the kernel&rsquo;s terminal driver to their
 Readline equivalents.
+These override the default Readline bindings described here.
+Type &lsquo;<samp class="samp">stty -a</samp>&rsquo; at a Bash prompt to see your current terminal settings,
+including the special control characters (usually <code class="code">cchars</code>).
 </p>
 </dd>
-<dt id='index-blink_002dmatching_002dparen'><span><code>blink-matching-paren</code><a href='#index-blink_002dmatching_002dparen' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline attempts to briefly move the cursor to an
-opening parenthesis when a closing parenthesis is inserted.  The default
-is &lsquo;<samp>off</samp>&rsquo;.
+<dt><a id="index-blink_002dmatching_002dparen"></a><span><code class="code">blink-matching-paren</code><a class="copiable-link" href="#index-blink_002dmatching_002dparen"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline attempts to briefly move the cursor to an
+opening parenthesis when a closing parenthesis is inserted.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-colored_002dcompletion_002dprefix'><span><code>colored-completion-prefix</code><a href='#index-colored_002dcompletion_002dprefix' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, when listing completions, Readline displays the
+<dt><a id="index-colored_002dcompletion_002dprefix"></a><span><code class="code">colored-completion-prefix</code><a class="copiable-link" href="#index-colored_002dcompletion_002dprefix"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, when listing completions, Readline displays the
 common prefix of the set of possible completions using a different color.
-The color definitions are taken from the value of the <code>LS_COLORS</code>
+The color definitions are taken from the value of the <code class="env">LS_COLORS</code>
 environment variable.
-If there is a color definition in <code>LS_COLORS</code> for the custom suffix
-&lsquo;<samp>readline-colored-completion-prefix</samp>&rsquo;, Readline uses this color for
+If there is a color definition in <code class="env">LS_COLORS</code> for the custom suffix
+&lsquo;<samp class="samp">readline-colored-completion-prefix</samp>&rsquo;, Readline uses this color for
 the common prefix instead of its default.
-The default is &lsquo;<samp>off</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-colored_002dstats'><span><code>colored-stats</code><a href='#index-colored_002dstats' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline displays possible completions using different
+<dt><a id="index-colored_002dstats"></a><span><code class="code">colored-stats</code><a class="copiable-link" href="#index-colored_002dstats"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays possible completions using different
 colors to indicate their file type.
-The color definitions are taken from the value of the <code>LS_COLORS</code>
+The color definitions are taken from the value of the <code class="env">LS_COLORS</code>
 environment variable.
-The default is &lsquo;<samp>off</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-comment_002dbegin'><span><code>comment-begin</code><a href='#index-comment_002dbegin' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The string to insert at the beginning of the line when the
-<code>insert-comment</code> command is executed.  The default value
-is <code>&quot;#&quot;</code>.
+<dt><a id="index-comment_002dbegin"></a><span><code class="code">comment-begin</code><a class="copiable-link" href="#index-comment_002dbegin"> &para;</a></span></dt>
+<dd><p>The string to insert at the beginning of the line by the
+<code class="code">insert-comment</code> command.
+The default value is <code class="code">&quot;#&quot;</code>.
 </p>
 </dd>
-<dt id='index-completion_002ddisplay_002dwidth'><span><code>completion-display-width</code><a href='#index-completion_002ddisplay_002dwidth' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-completion_002ddisplay_002dwidth"></a><span><code class="code">completion-display-width</code><a class="copiable-link" href="#index-completion_002ddisplay_002dwidth"> &para;</a></span></dt>
 <dd><p>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.
+A value of 0 causes matches to be displayed one per line.
 The default value is -1.
 </p>
 </dd>
-<dt id='index-completion_002dignore_002dcase'><span><code>completion-ignore-case</code><a href='#index-completion_002dignore_002dcase' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline performs filename matching and completion
+<dt><a id="index-completion_002dignore_002dcase"></a><span><code class="code">completion-ignore-case</code><a class="copiable-link" href="#index-completion_002dignore_002dcase"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline performs filename matching and completion
 in a case-insensitive fashion.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-completion_002dmap_002dcase'><span><code>completion-map-case</code><a href='#index-completion_002dmap_002dcase' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, and <var>completion-ignore-case</var> is enabled, Readline
-treats hyphens (&lsquo;<samp>-</samp>&rsquo;) and underscores (&lsquo;<samp>_</samp>&rsquo;) as equivalent when
+<dt><a id="index-completion_002dmap_002dcase"></a><span><code class="code">completion-map-case</code><a class="copiable-link" href="#index-completion_002dmap_002dcase"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, and <var class="var">completion-ignore-case</var> is enabled, Readline
+treats hyphens (&lsquo;<samp class="samp">-</samp>&rsquo;) and underscores (&lsquo;<samp class="samp">_</samp>&rsquo;) as equivalent when
 performing case-insensitive filename matching and completion.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-completion_002dprefix_002ddisplay_002dlength'><span><code>completion-prefix-display-length</code><a href='#index-completion_002dprefix_002ddisplay_002dlength' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The length in characters of the common prefix of a list of possible
-completions that is displayed without modification.  When set to a
-value greater than zero, common prefixes longer than this value are
-replaced with an ellipsis when displaying possible completions.
-</p>
-</dd>
-<dt id='index-completion_002dquery_002ditems'><span><code>completion-query-items</code><a href='#index-completion_002dquery_002ditems' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The number of possible completions that determines when the user is
-asked whether the list of possibilities should be displayed.
-If the number of possible completions is greater than or equal to this value,
-Readline will ask whether or not the user wishes to view them;
-otherwise, they are simply listed.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-completion_002dprefix_002ddisplay_002dlength"></a><span><code class="code">completion-prefix-display-length</code><a class="copiable-link" href="#index-completion_002dprefix_002ddisplay_002dlength"> &para;</a></span></dt>
+<dd><p>The maximum
+length in characters of the common prefix of a list of possible
+completions that is displayed without modification.
+When set to a value greater than zero, Readline
+replaces common prefixes longer than this value
+with an ellipsis when displaying possible completions.
+If a completion begins with a period,
+and Readline is completing filenames,
+it uses three underscores instead of an ellipsis.
+</p>
+</dd>
+<dt><a id="index-completion_002dquery_002ditems"></a><span><code class="code">completion-query-items</code><a class="copiable-link" href="#index-completion_002dquery_002ditems"> &para;</a></span></dt>
+<dd><p>The number of possible completions that determines when the user is asked
+whether the list of possibilities should be displayed.
+If the number of possible completions is greater than
+or equal to this value,
+Readline asks whether or not the user wishes to view them;
+otherwise, Readline simply lists the completions.
 This variable must be set to an integer value greater than or equal to zero.
-A zero value means Readline should never ask; negative values are
-treated as zero.
-The default limit is <code>100</code>.
-</p>
-</dd>
-<dt id='index-convert_002dmeta'><span><code>convert-meta</code><a href='#index-convert_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will convert characters with the
-eighth bit set to an <small>ASCII</small> key sequence by stripping the eighth
-bit and prefixing an <tt class="key">ESC</tt> character, converting them to a
-meta-prefixed key sequence.
-The default value is &lsquo;<samp>on</samp>&rsquo;, but
-will be set to &lsquo;<samp>off</samp>&rsquo; if the locale is one that contains
-eight-bit characters.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
-may change if the locale is changed.
-</p>
-</dd>
-<dt id='index-disable_002dcompletion'><span><code>disable-completion</code><a href='#index-disable_002dcompletion' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>On</samp>&rsquo;, Readline will inhibit word completion.
-Completion  characters will be inserted into the line as if they had
-been mapped to <code>self-insert</code>.  The default is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-echo_002dcontrol_002dcharacters'><span><code>echo-control-characters</code><a href='#index-echo_002dcontrol_002dcharacters' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When set to &lsquo;<samp>on</samp>&rsquo;, on operating systems that indicate they support it,
+A zero value means Readline should never ask; negative
+values are treated as zero.
+The default limit is <code class="code">100</code>.
+</p>
+</dd>
+<dt><a id="index-convert_002dmeta"></a><span><code class="code">convert-meta</code><a class="copiable-link" href="#index-convert_002dmeta"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline converts characters it reads
+that have the eighth bit set to an <small class="sc">ASCII</small> key sequence by
+clearing the eighth bit and prefixing an <kbd class="key">ESC</kbd> character,
+converting them to a meta-prefixed key sequence.
+The default value is &lsquo;<samp class="samp">on</samp>&rsquo;, but Readline sets it to &lsquo;<samp class="samp">off</samp>&rsquo;
+if the locale contains
+characters whose encodings may include bytes with the eighth bit set.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
+may change if the locale changes.
+This variable also affects key bindings;
+see the description of <code class="code">force-meta-prefix</code> below.
+</p>
+</dd>
+<dt><a id="index-disable_002dcompletion"></a><span><code class="code">disable-completion</code><a class="copiable-link" href="#index-disable_002dcompletion"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">On</samp>&rsquo;, Readline inhibits word completion.
+Completion characters are inserted into the line as if they
+had been mapped to <code class="code">self-insert</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-echo_002dcontrol_002dcharacters"></a><span><code class="code">echo-control-characters</code><a class="copiable-link" href="#index-echo_002dcontrol_002dcharacters"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">on</samp>&rsquo;, on operating systems that indicate they support it,
 Readline echoes a character corresponding to a signal generated from the
-keyboard.  The default is &lsquo;<samp>on</samp>&rsquo;.
+keyboard.
+The default is &lsquo;<samp class="samp">on</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-editing_002dmode'><span><code>editing-mode</code><a href='#index-editing_002dmode' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The <code>editing-mode</code> variable controls which default set of
-key bindings is used.  By default, Readline starts up in Emacs editing
-mode, where the keystrokes are most similar to Emacs.  This variable can be
-set to either &lsquo;<samp>emacs</samp>&rsquo; or &lsquo;<samp>vi</samp>&rsquo;.
+<dt><a id="index-editing_002dmode"></a><span><code class="code">editing-mode</code><a class="copiable-link" href="#index-editing_002dmode"> &para;</a></span></dt>
+<dd><p>The <code class="code">editing-mode</code> variable controls the default set of
+key bindings.
+By default, Readline starts up in emacs editing mode, where
+the keystrokes are most similar to Emacs.
+This variable can be set to either &lsquo;<samp class="samp">emacs</samp>&rsquo; or &lsquo;<samp class="samp">vi</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-emacs_002dmode_002dstring'><span><code>emacs-mode-string</code><a href='#index-emacs_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt><a id="index-emacs_002dmode_002dstring"></a><span><code class="code">emacs-mode-string</code><a class="copiable-link" href="#index-emacs_002dmode_002dstring"> &para;</a></span></dt>
+<dd><p>If the <var class="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
+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 &lsquo;<samp>\1</samp>&rsquo; and &lsquo;<samp>\2</samp>&rsquo; escapes to begin and end sequences of
+The &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes 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 &lsquo;<samp>@</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">@</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-enable_002dactive_002dregion'><span><code>enable-active-region</code><a href='#index-enable_002dactive_002dregion' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>The <em>point</em> is the current cursor position, and <em>mark</em> refers
-to a saved cursor position (see <a href="#Commands-For-Moving">Commands For Moving</a>).
-The text between the point and mark is referred to as the <em>region</em>.
-When this variable is set to &lsquo;<samp>On</samp>&rsquo;, Readline allows certain commands
-to designate the region as <em>active</em>.
+<dt><a id="index-enable_002dactive_002dregion-The"></a><span><code class="code">enable-active-region</code><a class="copiable-link" href="#index-enable_002dactive_002dregion-The"> &para;</a></span></dt>
+<dd><p><em class="dfn">point</em> is the current cursor position, and <em class="dfn">mark</em> refers to a
+saved cursor position (see <a class="pxref" href="#Commands-For-Moving">Commands For Moving</a>).
+The text between the point and mark is referred to as the <em class="dfn">region</em>.
+When this variable is set to &lsquo;<samp class="samp">On</samp>&rsquo;, Readline allows certain commands
+to designate the region as <em class="dfn">active</em>.
 When the region is active, Readline highlights the text in the region using
-the value of the <code>active-region-start-color</code>, which defaults to the
-string that enables
-the terminal&rsquo;s standout mode.
+the value of the <code class="code">active-region-start-color</code>, which defaults to the
+string that enables the terminal&rsquo;s standout mode. 
 The active region shows the text inserted by bracketed-paste and any
-matching text found by incremental and non-incremental history searches.
-The default is &lsquo;<samp>On</samp>&rsquo;.
+matching text found by incremental and non-incremental history searches. 
+The default is &lsquo;<samp class="samp">On</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-enable_002dbracketed_002dpaste'><span><code>enable-bracketed-paste</code><a href='#index-enable_002dbracketed_002dpaste' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When set to &lsquo;<samp>On</samp>&rsquo;, Readline configures the terminal to insert each
+<dt><a id="index-enable_002dbracketed_002dpaste"></a><span><code class="code">enable-bracketed-paste</code><a class="copiable-link" href="#index-enable_002dbracketed_002dpaste"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">On</samp>&rsquo;, Readline configures the terminal to insert each
 paste into the editing buffer as a single string of characters, instead
 of treating each character as if it had been read from the keyboard.
-This is called putting the terminal into <em>bracketed paste mode</em>;
-it prevents Readline from executing any editing commands bound to key
-sequences appearing in the pasted text.
-The default is &lsquo;<samp>On</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-enable_002dkeypad'><span><code>enable-keypad</code><a href='#index-enable_002dkeypad' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When set to &lsquo;<samp>on</samp>&rsquo;, Readline will try to enable the application
-keypad when it is called.  Some systems need this to enable the
-arrow keys.  The default is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt><span><code>enable-meta-key</code></span></dt>
-<dd><p>When set to &lsquo;<samp>on</samp>&rsquo;, 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.
-The default is &lsquo;<samp>on</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-expand_002dtilde'><span><code>expand-tilde</code><a href='#index-expand_002dtilde' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, tilde expansion is performed when Readline
-attempts word completion.  The default is &lsquo;<samp>off</samp>&rsquo;.
-</p>
-</dd>
-<dt id='index-history_002dpreserve_002dpoint'><span><code>history-preserve-point</code><a href='#index-history_002dpreserve_002dpoint' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, the history code attempts to place the point (the
+This is called putting the terminal into <em class="dfn">bracketed paste mode</em>;
+it prevents Readline from executing any editing commands bound
+to key sequences appearing in the pasted text.
+The default is &lsquo;<samp class="samp">On</samp>&rsquo;. 
+</p>
+</dd>
+<dt><a id="index-enable_002dkeypad"></a><span><code class="code">enable-keypad</code><a class="copiable-link" href="#index-enable_002dkeypad"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline tries to enable the application
+keypad when it is called.
+Some systems need this to enable the arrow keys.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-enable_002dmeta_002dkey"></a><span><code class="code">enable-meta-key</code><a class="copiable-link" href="#index-enable_002dmeta_002dkey"> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline tries 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;
+this variable checks for the terminal capability that indicates the
+terminal can enable and disable a mode that sets the eighth bit of a
+character (0200) if the Meta key is held down when the character is
+typed (a meta character).
+The default is &lsquo;<samp class="samp">on</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-expand_002dtilde"></a><span><code class="code">expand-tilde</code><a class="copiable-link" href="#index-expand_002dtilde"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline attempts tilde expansion when it
+attempts word completion.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-force_002dmeta_002dprefix"></a><span><code class="code">force-meta-prefix</code><a class="copiable-link" href="#index-force_002dmeta_002dprefix"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline modifies its behavior when binding key
+sequences containing <kbd class="kbd">\M-</kbd> or <code class="code">Meta-</code>
+(see <code class="code">Key Bindings</code> in <a class="ref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>)
+by converting a key sequence of the form
+<kbd class="kbd">\M-</kbd><var class="var">C</var> or <code class="code">Meta-</code><var class="var">C</var> to the two-character sequence
+<kbd class="kbd">ESC</kbd> <var class="var">C</var> (adding the meta prefix).
+If <code class="code">force-meta-prefix</code> is set to &lsquo;<samp class="samp">off</samp>&rsquo; (the default),
+Readline uses the value of the <code class="code">convert-meta</code> variable to determine
+whether to perform this conversion:
+if <code class="code">convert-meta</code> is &lsquo;<samp class="samp">on</samp>&rsquo;,
+Readline performs the conversion described above;
+if it is &lsquo;<samp class="samp">off</samp>&rsquo;, Readline converts <var class="var">C</var> to a meta character by
+setting the eighth bit (0200).
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-history_002dpreserve_002dpoint"></a><span><code class="code">history-preserve-point</code><a class="copiable-link" href="#index-history_002dpreserve_002dpoint"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, the history code attempts to place the point (the
 current cursor position) at the
-same location on each history line retrieved with <code>previous-history</code>
-or <code>next-history</code>.  The default is &lsquo;<samp>off</samp>&rsquo;.
+same location on each history line retrieved with <code class="code">previous-history</code>
+or <code class="code">next-history</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-history_002dsize'><span><code>history-size</code><a href='#index-history_002dsize' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-history_002dsize"></a><span><code class="code">history-size</code><a class="copiable-link" href="#index-history_002dsize"> &para;</a></span></dt>
 <dd><p>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 number of history entries is not limited.
-If an attempt is made to set <var>history-size</var> to a non-numeric value,
+If you try to set <var class="var">history-size</var> to a non-numeric value,
 the maximum number of history entries will be set to 500.
 </p>
 </dd>
-<dt id='index-horizontal_002dscroll_002dmode'><span><code>horizontal-scroll-mode</code><a href='#index-horizontal_002dscroll_002dmode' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable can be set to either &lsquo;<samp>on</samp>&rsquo; or &lsquo;<samp>off</samp>&rsquo;.  Setting it
-to &lsquo;<samp>on</samp>&rsquo; means that the text of the lines being edited will scroll
-horizontally on a single screen line when they are longer than the width
-of the screen, instead of wrapping onto a new screen line.
-This variable is automatically set to &lsquo;<samp>on</samp>&rsquo; for terminals of height 1.
-By default, this variable is set to &lsquo;<samp>off</samp>&rsquo;.
+<dt><a id="index-horizontal_002dscroll_002dmode"></a><span><code class="code">horizontal-scroll-mode</code><a class="copiable-link" href="#index-horizontal_002dscroll_002dmode"> &para;</a></span></dt>
+<dd><p>Setting this variable to &lsquo;<samp class="samp">on</samp>&rsquo; means that the text of the lines
+being edited will scroll horizontally on a single screen line when
+the lines are longer than the width of the screen, instead of wrapping
+onto a new screen line.
+This variable is automatically set to &lsquo;<samp class="samp">on</samp>&rsquo; for terminals of height 1.
+By default, this variable is set to &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-input_002dmeta'><span><code>input-meta</code><a href='#index-input_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
-<dd><span id="index-meta_002dflag"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will enable eight-bit input (it
-will not clear the eighth bit in the characters it reads),
-regardless of what the terminal claims it can support.  The
-default value is &lsquo;<samp>off</samp>&rsquo;, but Readline will set it to &lsquo;<samp>on</samp>&rsquo; if the 
-locale contains eight-bit characters.
-The name <code>meta-flag</code> is a synonym for this variable.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
-may change if the locale is changed.
+<dt><a class="index-entry-id" id="index-meta_002dflag"></a>
+<a id="index-input_002dmeta"></a><span><code class="code">input-meta</code><a class="copiable-link" href="#index-input_002dmeta"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline enables eight-bit input (that is, it
+does not clear the eighth bit in the characters it reads),
+regardless of what the terminal claims it can support.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline sets it to &lsquo;<samp class="samp">on</samp>&rsquo;
+if the locale contains characters whose encodings may include bytes
+with the eighth bit set.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
+its value may change if the locale changes.
+The name <code class="code">meta-flag</code> is a synonym for <code class="code">input-meta</code>.
 </p>
 </dd>
-<dt id='index-isearch_002dterminators'><span><code>isearch-terminators</code><a href='#index-isearch_002dterminators' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-isearch_002dterminators"></a><span><code class="code">isearch-terminators</code><a class="copiable-link" href="#index-isearch_002dterminators"> &para;</a></span></dt>
 <dd><p>The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see <a href="#Searching">Searching for Commands in the History</a>).
-If this variable has not been given a value, the characters <tt class="key">ESC</tt> and
-<kbd>C-J</kbd> will terminate an incremental search.
+subsequently executing the character as a command (see <a class="pxref" href="#Searching">Searching for Commands in the History</a>).
+If this variable has not been given a value, the characters <kbd class="key">ESC</kbd> and
+<kbd class="kbd">C-j</kbd> terminate an incremental search.
 </p>
 </dd>
-<dt id='index-keymap'><span><code>keymap</code><a href='#index-keymap' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-keymap"></a><span><code class="code">keymap</code><a class="copiable-link" href="#index-keymap"> &para;</a></span></dt>
 <dd><p>Sets Readline&rsquo;s idea of the current keymap for key binding commands.
-Built-in <code>keymap</code> names are
-<code>emacs</code>,
-<code>emacs-standard</code>,
-<code>emacs-meta</code>,
-<code>emacs-ctlx</code>,
-<code>vi</code>,
-<code>vi-move</code>,
-<code>vi-command</code>, and
-<code>vi-insert</code>.
-<code>vi</code> is equivalent to <code>vi-command</code> (<code>vi-move</code> is also a
-synonym); <code>emacs</code> is equivalent to <code>emacs-standard</code>.
+Built-in <code class="code">keymap</code> names are
+<code class="code">emacs</code>,
+<code class="code">emacs-standard</code>,
+<code class="code">emacs-meta</code>,
+<code class="code">emacs-ctlx</code>,
+<code class="code">vi</code>,
+<code class="code">vi-move</code>,
+<code class="code">vi-command</code>, and
+<code class="code">vi-insert</code>.
+<code class="code">vi</code> is equivalent to <code class="code">vi-command</code> (<code class="code">vi-move</code> is also a
+synonym); <code class="code">emacs</code> is equivalent to <code class="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
+The default value is <code class="code">emacs</code>;
+the value of the <code class="code">editing-mode</code> variable also affects the
 default keymap.
 </p>
 </dd>
-<dt><span><code>keyseq-timeout</code></span></dt>
-<dd><p>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.
+<dt><code class="code">keyseq-timeout</code></dt>
+<dd><p>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 Readline doesn&rsquo;t receive any input within the timeout, it uses the
+shorter but complete key sequence.
 Readline uses this value to determine whether or not input is
-available on the current input source (<code>rl_instream</code> by default).
+available on the current input source (<code class="code">rl_instream</code> by default).
 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
+non-numeric value, Readline waits until another key is pressed to
 decide which key sequence to complete.
-The default value is <code>500</code>.
+The default value is <code class="code">500</code>.
 </p>
 </dd>
-<dt><span><code>mark-directories</code></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, completed directory names have a slash
-appended.  The default is &lsquo;<samp>on</samp>&rsquo;.
+<dt><code class="code">mark-directories</code></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, completed directory names have a slash appended.
+The default is &lsquo;<samp class="samp">on</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-mark_002dmodified_002dlines'><span><code>mark-modified-lines</code><a href='#index-mark_002dmodified_002dlines' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable, when set to &lsquo;<samp>on</samp>&rsquo;, causes Readline to display an
-asterisk (&lsquo;<samp>*</samp>&rsquo;) at the start of history lines which have been modified.
-This variable is &lsquo;<samp>off</samp>&rsquo; by default.
+<dt><a id="index-mark_002dmodified_002dlines"></a><span><code class="code">mark-modified-lines</code><a class="copiable-link" href="#index-mark_002dmodified_002dlines"> &para;</a></span></dt>
+<dd><p>When this variable is set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays an
+asterisk (&lsquo;<samp class="samp">*</samp>&rsquo;) at the start of history lines which have been modified.
+This variable is &lsquo;<samp class="samp">off</samp>&rsquo; by default.
 </p>
 </dd>
-<dt id='index-mark_002dsymlinked_002ddirectories'><span><code>mark-symlinked-directories</code><a href='#index-mark_002dsymlinked_002ddirectories' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, completed names which are symbolic links
-to directories have a slash appended (subject to the value of
-<code>mark-directories</code>).
-The default is &lsquo;<samp>off</samp>&rsquo;.
+<dt><a id="index-mark_002dsymlinked_002ddirectories"></a><span><code class="code">mark-symlinked-directories</code><a class="copiable-link" href="#index-mark_002dsymlinked_002ddirectories"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, completed names which are symbolic links to directories
+have a slash appended, subject to the value of <code class="code">mark-directories</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-match_002dhidden_002dfiles'><span><code>match-hidden-files</code><a href='#index-match_002dhidden_002dfiles' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This variable, when set to &lsquo;<samp>on</samp>&rsquo;, causes Readline to match files whose
-names begin with a &lsquo;<samp>.</samp>&rsquo; (hidden files) when performing filename
+<dt><a id="index-match_002dhidden_002dfiles"></a><span><code class="code">match-hidden-files</code><a class="copiable-link" href="#index-match_002dhidden_002dfiles"> &para;</a></span></dt>
+<dd><p>This variable, when set to &lsquo;<samp class="samp">on</samp>&rsquo;, forces Readline to match files whose
+names begin with a &lsquo;<samp class="samp">.</samp>&rsquo; (hidden files) when performing filename
 completion.
-If set to &lsquo;<samp>off</samp>&rsquo;, the leading &lsquo;<samp>.</samp>&rsquo; must be
-supplied by the user in the filename to be completed.
-This variable is &lsquo;<samp>on</samp>&rsquo; by default.
+If set to &lsquo;<samp class="samp">off</samp>&rsquo;, the user must include the leading &lsquo;<samp class="samp">.</samp>&rsquo;
+in the filename to be completed.
+This variable is &lsquo;<samp class="samp">on</samp>&rsquo; by default.
 </p>
 </dd>
-<dt id='index-menu_002dcomplete_002ddisplay_002dprefix'><span><code>menu-complete-display-prefix</code><a href='#index-menu_002dcomplete_002ddisplay_002dprefix' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, menu completion displays the common prefix of the
+<dt><a id="index-menu_002dcomplete_002ddisplay_002dprefix"></a><span><code class="code">menu-complete-display-prefix</code><a class="copiable-link" href="#index-menu_002dcomplete_002ddisplay_002dprefix"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, menu completion displays the common prefix of the
 list of possible completions (which may be empty) before cycling through
-the list.  The default is &lsquo;<samp>off</samp>&rsquo;.
+the list.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-output_002dmeta'><span><code>output-meta</code><a href='#index-output_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will display characters with the
+<dt><a id="index-output_002dmeta"></a><span><code class="code">output-meta</code><a class="copiable-link" href="#index-output_002dmeta"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays characters with the
 eighth bit set directly rather than as a meta-prefixed escape
 sequence.
-The default is &lsquo;<samp>off</samp>&rsquo;, but Readline will set it to &lsquo;<samp>on</samp>&rsquo; if the
-locale contains eight-bit characters.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
-may change if the locale is changed.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline sets it to &lsquo;<samp class="samp">on</samp>&rsquo;
+if the locale contains characters whose encodings may include
+bytes with the eighth bit set.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
+its value may change if the locale changes.
 </p>
 </dd>
-<dt id='index-page_002dcompletions'><span><code>page-completions</code><a href='#index-page_002dcompletions' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline uses an internal <code>more</code>-like pager
+<dt><a id="index-page_002dcompletions"></a><span><code class="code">page-completions</code><a class="copiable-link" href="#index-page_002dcompletions"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline uses an internal pager resembling
+<i class="i">more</i>(1)
 to display a screenful of possible completions at a time.
-This variable is &lsquo;<samp>on</samp>&rsquo; by default.
+This variable is &lsquo;<samp class="samp">on</samp>&rsquo; by default.
+</p>
+</dd>
+<dt><code class="code">prefer-visible-bell</code></dt>
+<dd><p>See <code class="code">bell-style</code>.
 </p>
 </dd>
-<dt><span><code>print-completions-horizontally</code></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will display completions with matches
+<dt><code class="code">print-completions-horizontally</code></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline displays completions with matches
 sorted horizontally in alphabetical order, rather than down the screen.
-The default is &lsquo;<samp>off</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-revert_002dall_002dat_002dnewline'><span><code>revert-all-at-newline</code><a href='#index-revert_002dall_002dat_002dnewline' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will undo all changes to history lines
-before returning when <code>accept-line</code> is executed.  By default,
+<dt><a id="index-revert_002dall_002dat_002dnewline"></a><span><code class="code">revert-all-at-newline</code><a class="copiable-link" href="#index-revert_002dall_002dat_002dnewline"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline will undo all changes to history lines
+before returning when executing <code class="code">accept-line</code>.
+By default,
 history lines may be modified and retain individual undo lists across
-calls to <code>readline()</code>.  The default is &lsquo;<samp>off</samp>&rsquo;.
+calls to <code class="code">readline()</code>.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
+</p>
+</dd>
+<dt><a id="index-search_002dignore_002dcase"></a><span><code class="code">search-ignore-case</code><a class="copiable-link" href="#index-search_002dignore_002dcase"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline performs incremental and non-incremental
+history list searches in a case-insensitive fashion.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-show_002dall_002dif_002dambiguous'><span><code>show-all-if-ambiguous</code><a href='#index-show_002dall_002dif_002dambiguous' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>This alters the default behavior of the completion functions.  If
-set to &lsquo;<samp>on</samp>&rsquo;, 
+<dt><a id="index-show_002dall_002dif_002dambiguous"></a><span><code class="code">show-all-if-ambiguous</code><a class="copiable-link" href="#index-show_002dall_002dif_002dambiguous"> &para;</a></span></dt>
+<dd><p>This alters the default behavior of the completion functions.
+If set to &lsquo;<samp class="samp">on</samp>&rsquo;, 
 words which have more than one possible completion cause the
 matches to be listed immediately instead of ringing the bell.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-show_002dall_002dif_002dunmodified'><span><code>show-all-if-unmodified</code><a href='#index-show_002dall_002dif_002dunmodified' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-show_002dall_002dif_002dunmodified"></a><span><code class="code">show-all-if-unmodified</code><a class="copiable-link" href="#index-show_002dall_002dif_002dunmodified"> &para;</a></span></dt>
 <dd><p>This alters the default behavior of the completion functions in
-a fashion similar to <var>show-all-if-ambiguous</var>.
-If set to &lsquo;<samp>on</samp>&rsquo;, 
+a fashion similar to <var class="var">show-all-if-ambiguous</var>.
+If set to &lsquo;<samp class="samp">on</samp>&rsquo;, 
 words which have more than one possible completion without any
 possible partial completion (the possible completions don&rsquo;t share
 a common prefix) cause the matches to be listed immediately instead
 of ringing the bell.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-show_002dmode_002din_002dprompt'><span><code>show-mode-in-prompt</code><a href='#index-show_002dmode_002din_002dprompt' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, add a string to the beginning of the prompt
+<dt><a id="index-show_002dmode_002din_002dprompt"></a><span><code class="code">show-mode-in-prompt</code><a class="copiable-link" href="#index-show_002dmode_002din_002dprompt"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, 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 (e.g., <var>emacs-mode-string</var>).
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+The mode strings are user-settable (e.g., <var class="var">emacs-mode-string</var>).
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-skip_002dcompleted_002dtext'><span><code>skip-completed-text</code><a href='#index-skip_002dcompleted_002dtext' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, this alters the default completion behavior when
-inserting a single match into the line.  It&rsquo;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.
+<dt><a id="index-skip_002dcompleted_002dtext"></a><span><code class="code">skip-completed-text</code><a class="copiable-link" href="#index-skip_002dcompleted_002dtext"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, this alters the default completion behavior when
+inserting a single match into the line.
+It&rsquo;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.
 For instance, if this is enabled, attempting completion when the cursor
-is after the &lsquo;<samp>e</samp>&rsquo; in &lsquo;<samp>Makefile</samp>&rsquo; will result in &lsquo;<samp>Makefile</samp>&rsquo;
-rather than &lsquo;<samp>Makefilefile</samp>&rsquo;, assuming there is a single possible
-completion.
-The default value is &lsquo;<samp>off</samp>&rsquo;.
+is after the first &lsquo;<samp class="samp">e</samp>&rsquo; in &lsquo;<samp class="samp">Makefile</samp>&rsquo; will result in
+&lsquo;<samp class="samp">Makefile</samp>&rsquo; rather than &lsquo;<samp class="samp">Makefilefile</samp>&rsquo;,
+assuming there is a single possible completion.
+The default value is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-vi_002dcmd_002dmode_002dstring'><span><code>vi-cmd-mode-string</code><a href='#index-vi_002dcmd_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt><a id="index-vi_002dcmd_002dmode_002dstring"></a><span><code class="code">vi-cmd-mode-string</code><a class="copiable-link" href="#index-vi_002dcmd_002dmode_002dstring"> &para;</a></span></dt>
+<dd><p>If the <var class="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
-backslash escape sequences is available.
-Use the &lsquo;<samp>\1</samp>&rsquo; and &lsquo;<samp>\2</samp>&rsquo; escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes 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 &lsquo;<samp>(cmd)</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">(cmd)</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-vi_002dins_002dmode_002dstring'><span><code>vi-ins-mode-string</code><a href='#index-vi_002dins_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt><a id="index-vi_002dins_002dmode_002dstring"></a><span><code class="code">vi-ins-mode-string</code><a class="copiable-link" href="#index-vi_002dins_002dmode_002dstring"> &para;</a></span></dt>
+<dd><p>If the <var class="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
-backslash escape sequences is available.
-Use the &lsquo;<samp>\1</samp>&rsquo; and &lsquo;<samp>\2</samp>&rsquo; escapes to begin and end sequences of
+The value is expanded like a key binding, so the standard set of
+meta- and control- prefixes and backslash escape sequences is available.
+The &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes 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 &lsquo;<samp>(ins)</samp>&rsquo;.
+The default is &lsquo;<samp class="samp">(ins)</samp>&rsquo;.
 </p>
 </dd>
-<dt id='index-visible_002dstats'><span><code>visible-stats</code><a href='#index-visible_002dstats' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, a character denoting a file&rsquo;s type
+<dt><a id="index-visible_002dstats"></a><span><code class="code">visible-stats</code><a class="copiable-link" href="#index-visible_002dstats"> &para;</a></span></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, a character denoting a file&rsquo;s type
 is appended to the filename when listing possible
-completions.  The default is &lsquo;<samp>off</samp>&rsquo;.
+completions.
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;.
 </p>
 </dd>
 </dl>
 
 </dd>
-<dt><span>Key Bindings</span></dt>
-<dd><p>The syntax for controlling key bindings in the init file is
-simple.  First you need to find the name of the command that you
-want to change.  The following sections contain tables of the command
+<dt>Key Bindings</dt>
+<dd><p>The syntax for controlling key bindings in the init file is simple.
+First you need to find the name of the command that you
+want to change.
+The following sections contain tables of the command
 name, the default keybinding, if any, and a short description of what
 the command does.
 </p>
@@ -962,135 +1043,142 @@ The name of the key can be expressed in different ways, depending on
 what you find most comfortable.
 </p>
 <p>In addition to command names, Readline allows keys to be bound
-to a string that is inserted when the key is pressed (a <var>macro</var>).
+to a string that is inserted when the key is pressed (a <var class="var">macro</var>).
+The difference between a macro and a command is that a macro is
+enclosed in single or double quotes.
 </p>
 
-<dl compact="compact">
-<dt><span><var>keyname</var>:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></span></dt>
-<dd><p><var>keyname</var> is the name of a key spelled out in English.  For example:
+<dl class="table">
+<dt><var class="var">keyname</var>:&nbsp;<var class="var">function-name</var>&nbsp;or&nbsp;<var class="var">macro</var><!-- /@w --></dt>
+<dd><p><var class="var">keyname</var> is the name of a key spelled out in English.
+For example:
 </p><div class="example">
-<pre class="example">Control-u: universal-argument
+<pre class="example-preformatted">Control-u: universal-argument
 Meta-Rubout: backward-kill-word
 Control-o: &quot;&gt; output&quot;
 </pre></div>
 
-<p>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
+<p>In the example above, <kbd class="kbd">C-u</kbd> is bound to the function
+<code class="code">universal-argument</code>,
+<kbd class="kbd">M-DEL</kbd> is bound to the function <code class="code">backward-kill-word</code>, and
+<kbd class="kbd">C-o</kbd> is bound to run the macro
 expressed on the right hand side (that is, to insert the text
-&lsquo;<samp>&gt; output</samp>&rsquo; into the line).
-</p>
-<p>A number of symbolic character names are recognized while
-processing this key binding syntax:
-<var>DEL</var>,
-<var>ESC</var>,
-<var>ESCAPE</var>,
-<var>LFD</var>,
-<var>NEWLINE</var>,
-<var>RET</var>,
-<var>RETURN</var>,
-<var>RUBOUT</var>,
-<var>SPACE</var>,
-<var>SPC</var>,
+&lsquo;<samp class="samp">&gt; output</samp>&rsquo; into the line).
+</p>
+<p>This key binding syntax recognizes a number of symbolic character names:
+<var class="var">DEL</var>,
+<var class="var">ESC</var>,
+<var class="var">ESCAPE</var>,
+<var class="var">LFD</var>,
+<var class="var">NEWLINE</var>,
+<var class="var">RET</var>,
+<var class="var">RETURN</var>,
+<var class="var">RUBOUT</var>
+(a destructive backspace),
+<var class="var">SPACE</var>,
+<var class="var">SPC</var>,
 and
-<var>TAB</var>.
+<var class="var">TAB</var>.
 </p>
 </dd>
-<dt><span>&quot;<var>keyseq</var>&quot;:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></span></dt>
-<dd><p><var>keyseq</var> differs from <var>keyname</var> above in that strings
+<dt>&quot;<var class="var">keyseq</var>&quot;:&nbsp;<var class="var">function-name</var>&nbsp;or&nbsp;<var class="var">macro</var><!-- /@w --></dt>
+<dd><p><var class="var">keyseq</var> differs from <var class="var">keyname</var> above in that strings
 denoting an entire key sequence can be specified, by placing
-the key sequence in double quotes.  Some <small>GNU</small> Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
+the key sequence in double quotes.
+Some <small class="sc">GNU</small> Emacs style key escapes can be used,
+as in the following example, but none of the
+special character names are recognized.
 </p>
 <div class="example">
-<pre class="example">&quot;\C-u&quot;: universal-argument
+<pre class="example-preformatted">&quot;\C-u&quot;: universal-argument
 &quot;\C-x\C-r&quot;: re-read-init-file
 &quot;\e[11~&quot;: &quot;Function Key 1&quot;
 </pre></div>
 
-<p>In the above example, <kbd>C-u</kbd> is again bound to the function
-<code>universal-argument</code> (just as it was in the first example),
-&lsquo;<samp><kbd>C-x</kbd> <kbd>C-r</kbd></samp>&rsquo; is bound to the function <code>re-read-init-file</code>,
-and &lsquo;<samp><span class="key">ESC</span> <span class="key">[</span> <span class="key">1</span> <span class="key">1</span> <span class="key">~</span></samp>&rsquo; is bound to insert
-the text &lsquo;<samp>Function Key 1</samp>&rsquo;.
+<p>In the above example, <kbd class="kbd">C-u</kbd> is again bound to the function
+<code class="code">universal-argument</code> (just as it was in the first example),
+&lsquo;<samp class="samp"><kbd class="kbd">C-x</kbd> <kbd class="kbd">C-r</kbd></samp>&rsquo; is bound to the function <code class="code">re-read-init-file</code>,
+and &lsquo;<samp class="samp"><kbd class="key">ESC</kbd> <kbd class="key">[</kbd> <kbd class="key">1</kbd> <kbd class="key">1</kbd> <kbd class="key">~</kbd></samp>&rsquo; is bound to insert
+the text &lsquo;<samp class="samp">Function Key 1</samp>&rsquo;.
 </p>
 </dd>
 </dl>
 
-<p>The following <small>GNU</small> Emacs style escape sequences are available when
+<p>The following <small class="sc">GNU</small> Emacs style escape sequences are available when
 specifying key sequences:
 </p>
-<dl compact="compact">
-<dt><span><code><kbd>\C-</kbd></code></span></dt>
-<dd><p>control prefix
+<dl class="table">
+<dt><code class="code"><kbd class="kbd">\C-</kbd></code></dt>
+<dd><p>A control prefix.
 </p></dd>
-<dt><span><code><kbd>\M-</kbd></code></span></dt>
-<dd><p>meta prefix
+<dt><code class="code"><kbd class="kbd">\M-</kbd></code></dt>
+<dd><p>Adding the meta prefix or converting the following character to a meta
+character, as described above under <code class="code">force-meta-prefix</code>
+(see <code class="code">Variable Settings</code> in <a class="ref" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>).
 </p></dd>
-<dt><span><code><kbd>\e</kbd></code></span></dt>
-<dd><p>an escape character
+<dt><code class="code"><kbd class="kbd">\e</kbd></code></dt>
+<dd><p>An escape character.
 </p></dd>
-<dt><span><code><kbd>\\</kbd></code></span></dt>
-<dd><p>backslash
+<dt><code class="code"><kbd class="kbd">\\</kbd></code></dt>
+<dd><p>Backslash.
 </p></dd>
-<dt><span><code><kbd>\&quot;</kbd></code></span></dt>
-<dd><p><tt class="key">&quot;</tt>, a double quotation mark
+<dt><code class="code"><kbd class="kbd">\&quot;</kbd></code></dt>
+<dd><p><kbd class="key">&quot;</kbd>, a double quotation mark.
 </p></dd>
-<dt><span><code><kbd>\'</kbd></code></span></dt>
-<dd><p><tt class="key">'</tt>, a single quote or apostrophe
+<dt><code class="code"><kbd class="kbd">\'</kbd></code></dt>
+<dd><p><kbd class="key">'</kbd>, a single quote or apostrophe.
 </p></dd>
 </dl>
 
-<p>In addition to the <small>GNU</small> Emacs style escape sequences, a second
+<p>In addition to the <small class="sc">GNU</small> Emacs style escape sequences, a second
 set of backslash escapes is available:
 </p>
-<dl compact="compact">
-<dt><span><code>\a</code></span></dt>
+<dl class="table">
+<dt><code class="code">\a</code></dt>
 <dd><p>alert (bell)
 </p></dd>
-<dt><span><code>\b</code></span></dt>
+<dt><code class="code">\b</code></dt>
 <dd><p>backspace
 </p></dd>
-<dt><span><code>\d</code></span></dt>
+<dt><code class="code">\d</code></dt>
 <dd><p>delete
 </p></dd>
-<dt><span><code>\f</code></span></dt>
+<dt><code class="code">\f</code></dt>
 <dd><p>form feed
 </p></dd>
-<dt><span><code>\n</code></span></dt>
+<dt><code class="code">\n</code></dt>
 <dd><p>newline
 </p></dd>
-<dt><span><code>\r</code></span></dt>
+<dt><code class="code">\r</code></dt>
 <dd><p>carriage return
 </p></dd>
-<dt><span><code>\t</code></span></dt>
+<dt><code class="code">\t</code></dt>
 <dd><p>horizontal tab
 </p></dd>
-<dt><span><code>\v</code></span></dt>
+<dt><code class="code">\v</code></dt>
 <dd><p>vertical tab
 </p></dd>
-<dt><span><code>\<var>nnn</var></code></span></dt>
-<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
-(one to three digits)
+<dt><code class="code">\<var class="var">nnn</var></code></dt>
+<dd><p>The eight-bit character whose value is the octal value <var class="var">nnn</var>
+(one to three digits).
 </p></dd>
-<dt><span><code>\x<var>HH</var></code></span></dt>
-<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
-(one or two hex digits)
+<dt><code class="code">\x<var class="var">HH</var></code></dt>
+<dd><p>The eight-bit character whose value is the hexadecimal value <var class="var">HH</var>
+(one or two hex digits).
 </p></dd>
 </dl>
 
 <p>When entering the text of a macro, single or double quotes must
 be used to indicate a macro definition.
 Unquoted text is assumed to be a function name.
-In the macro body, the backslash escapes described above are expanded.
+The backslash escapes described above are expanded
+in the macro body.
 Backslash will quote any other character in the macro text,
-including &lsquo;<samp>&quot;</samp>&rsquo; and &lsquo;<samp>'</samp>&rsquo;.
-For example, the following binding will make &lsquo;<samp><kbd>C-x</kbd> \</samp>&rsquo;
-insert a single &lsquo;<samp>\</samp>&rsquo; into the line:
+including &lsquo;<samp class="samp">&quot;</samp>&rsquo; and &lsquo;<samp class="samp">'</samp>&rsquo;.
+For example, the following binding will make &lsquo;<samp class="samp"><kbd class="kbd">C-x</kbd> \</samp>&rsquo;
+insert a single &lsquo;<samp class="samp">\</samp>&rsquo; into the line:
 </p><div class="example">
-<pre class="example">&quot;\C-x\\&quot;: &quot;\\&quot;
+<pre class="example-preformatted">&quot;\C-x\\&quot;: &quot;\\&quot;
 </pre></div>
 
 </dd>
@@ -1098,97 +1186,105 @@ insert a single &lsquo;<samp>\</samp>&rsquo; into the line:
 
 <hr>
 </div>
-<div class="subsection" id="Conditional-Init-Constructs">
-<div class="header">
+<div class="subsection-level-extent" id="Conditional-Init-Constructs">
+<div class="nav-panel">
 <p>
 Next: <a href="#Sample-Init-File" accesskey="n" rel="next">Sample Init File</a>, Previous: <a href="#Readline-Init-File-Syntax" accesskey="p" rel="prev">Readline Init File Syntax</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Conditional-Init-Constructs-1"></span><h4 class="subsection">1.3.2 Conditional Init Constructs</h4>
+<h4 class="subsection" id="Conditional-Init-Constructs-1"><span>1.3.2 Conditional Init Constructs<a class="copiable-link" href="#Conditional-Init-Constructs-1"> &para;</a></span></h4>
 
 <p>Readline implements a facility similar in spirit to the conditional
 compilation features of the C preprocessor which allows key
 bindings and variable settings to be performed as the result
-of tests.  There are four parser directives used.
+of tests.
+There are four parser directives available.
 </p>
-<dl compact="compact">
-<dt><span><code>$if</code></span></dt>
-<dd><p>The <code>$if</code> construct allows bindings to be made based on the
+<dl class="table">
+<dt><code class="code">$if</code></dt>
+<dd><p>The <code class="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, after any comparison operator,
+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="compact">
-<dt><span><code>mode</code></span></dt>
-<dd><p>The <code>mode=</code> form of the <code>$if</code> directive is used to test
-whether Readline is in <code>emacs</code> or <code>vi</code> mode.
+<dl class="table">
+<dt><code class="code">mode</code></dt>
+<dd><p>The <code class="code">mode=</code> form of the <code class="code">$if</code> directive is used to test
+whether Readline is in <code class="code">emacs</code> or <code class="code">vi</code> mode.
 This may be used in conjunction
-with the &lsquo;<samp>set keymap</samp>&rsquo; command, for instance, to set bindings in
-the <code>emacs-standard</code> and <code>emacs-ctlx</code> keymaps only if
-Readline is starting out in <code>emacs</code> mode.
+with the &lsquo;<samp class="samp">set keymap</samp>&rsquo; command, for instance, to set bindings in
+the <code class="code">emacs-standard</code> and <code class="code">emacs-ctlx</code> keymaps only if
+Readline is starting out in <code class="code">emacs</code> mode.
 </p>
 </dd>
-<dt><span><code>term</code></span></dt>
-<dd><p>The <code>term=</code> form may be used to include terminal-specific
+<dt><code class="code">term</code></dt>
+<dd><p>The <code class="code">term=</code> form may be used to include terminal-specific
 key bindings, perhaps to bind the key sequences output by the
-terminal&rsquo;s function keys.  The word on the right side of the
-&lsquo;<samp>=</samp>&rsquo; is tested against both the full name of the terminal and
-the portion of the terminal name before the first &lsquo;<samp>-</samp>&rsquo;.  This
-allows <code>sun</code> to match both <code>sun</code> and <code>sun-cmd</code>,
-for instance.
+terminal&rsquo;s function keys.
+The word on the right side of the
+&lsquo;<samp class="samp">=</samp>&rsquo;
+is tested against both the full name of the terminal and the portion
+of the terminal name before the first &lsquo;<samp class="samp">-</samp>&rsquo;.
+This allows <code class="code">xterm</code> to match both <code class="code">xterm</code> and
+<code class="code">xterm-256color</code>, for instance.
 </p>
 </dd>
-<dt><span><code>version</code></span></dt>
-<dd><p>The <code>version</code> test may be used to perform comparisons against
+<dt><code class="code">version</code></dt>
+<dd><p>The <code class="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 <code class="code">version</code> expands to the current Readline version.
 The set of comparison operators includes
-&lsquo;<samp>=</samp>&rsquo; (and &lsquo;<samp>==</samp>&rsquo;), &lsquo;<samp>!=</samp>&rsquo;, &lsquo;<samp>&lt;=</samp>&rsquo;, &lsquo;<samp>&gt;=</samp>&rsquo;, &lsquo;<samp>&lt;</samp>&rsquo;,
-and &lsquo;<samp>&gt;</samp>&rsquo;.
+&lsquo;<samp class="samp">=</samp>&rsquo; (and &lsquo;<samp class="samp">==</samp>&rsquo;), &lsquo;<samp class="samp">!=</samp>&rsquo;, &lsquo;<samp class="samp">&lt;=</samp>&rsquo;, &lsquo;<samp class="samp">&gt;=</samp>&rsquo;, &lsquo;<samp class="samp">&lt;</samp>&rsquo;,
+and &lsquo;<samp class="samp">&gt;</samp>&rsquo;.
 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., &lsquo;<samp>7.1</samp>&rsquo;). If the minor version is omitted, it
-is assumed to be &lsquo;<samp>0</samp>&rsquo;.
-The operator may be separated from the string <code>version</code> and
+minor version (e.g., &lsquo;<samp class="samp">7.1</samp>&rsquo;).
+If the minor version is omitted, it
+defaults to &lsquo;<samp class="samp">0</samp>&rsquo;.
+The operator may be separated from the string <code class="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:
 </p><div class="example">
-<pre class="example">$if version &gt;= 7.0
+<pre class="example-preformatted">$if version &gt;= 7.0
 set show-mode-in-prompt on
 $endif
 </pre></div>
 
 </dd>
-<dt><span><code>application</code></span></dt>
-<dd><p>The <var>application</var> construct is used to include
-application-specific settings.  Each program using the Readline
-library sets the <var>application name</var>, and you can test for
+<dt><code class="code">application</code></dt>
+<dd><p>The <var class="var">application</var> construct is used to include
+application-specific settings.
+Each program using the Readline
+library sets the <var class="var">application name</var>, and you can test for
 a particular value. 
 This could be used to bind key sequences to functions useful for
-a specific program.  For instance, the following command adds a
+a specific program.
+For instance, the following command adds a
 key sequence that quotes the current or previous word in Bash:
 </p><div class="example">
-<pre class="example">$if Bash
+<pre class="example-preformatted">$if Bash
 # Quote the current or previous word
 &quot;\C-xq&quot;: &quot;\eb\&quot;\ef\&quot;&quot;
 $endif
 </pre></div>
 
 </dd>
-<dt><span><code>variable</code></span></dt>
-<dd><p>The <var>variable</var> construct provides simple equality tests for Readline
+<dt><code class="code">variable</code></dt>
+<dd><p>The <var class="var">variable</var> construct provides simple equality tests for Readline
 variables and values.
-The permitted comparison operators are &lsquo;<samp>=</samp>&rsquo;, &lsquo;<samp>==</samp>&rsquo;, and &lsquo;<samp>!=</samp>&rsquo;.
+The permitted comparison operators are &lsquo;<samp class="samp">=</samp>&rsquo;, &lsquo;<samp class="samp">==</samp>&rsquo;, and &lsquo;<samp class="samp">!=</samp>&rsquo;.
 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
+String and boolean variables may be tested.
+Boolean variables must be
+tested against the values <var class="var">on</var> and <var class="var">off</var>.
+The following example is equivalent to the <code class="code">mode=emacs</code> test described
 above:
 </p><div class="example">
-<pre class="example">$if editing-mode == emacs
+<pre class="example-preformatted">$if editing-mode == emacs
 set show-mode-in-prompt on
 $endif
 </pre></div>
@@ -1196,40 +1292,40 @@ $endif
 </dl>
 
 </dd>
-<dt><span><code>$endif</code></span></dt>
-<dd><p>This command, as seen in the previous example, terminates an
-<code>$if</code> command.
+<dt><code class="code">$else</code></dt>
+<dd><p>Commands in this branch of the <code class="code">$if</code> directive are executed if
+the test fails.
 </p>
 </dd>
-<dt><span><code>$else</code></span></dt>
-<dd><p>Commands in this branch of the <code>$if</code> directive are executed if
-the test fails.
+<dt><code class="code">$endif</code></dt>
+<dd><p>This command, as seen in the previous example, terminates an
+<code class="code">$if</code> command.
 </p>
 </dd>
-<dt><span><code>$include</code></span></dt>
+<dt><code class="code">$include</code></dt>
 <dd><p>This directive takes a single filename as an argument and reads commands
-and bindings from that file.
-For example, the following directive reads from <samp>/etc/inputrc</samp>:
+and key bindings from that file.
+For example, the following directive reads from <samp class="file">/etc/inputrc</samp>:
 </p><div class="example">
-<pre class="example">$include /etc/inputrc
+<pre class="example-preformatted">$include /etc/inputrc
 </pre></div>
 </dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Sample-Init-File">
-<div class="header">
+<div class="subsection-level-extent" id="Sample-Init-File">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Conditional-Init-Constructs" accesskey="p" rel="prev">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Sample-Init-File-1"></span><h4 class="subsection">1.3.3 Sample Init File</h4>
+<h4 class="subsection" id="Sample-Init-File-1"><span>1.3.3 Sample Init File<a class="copiable-link" href="#Sample-Init-File-1"> &para;</a></span></h4>
 
-<p>Here is an example of an <var>inputrc</var> file.  This illustrates key
+<p>Here is an example of an <var class="var">inputrc</var> file.  This illustrates key
 binding, variable assignment, and conditional syntax.
 </p>
 <div class="example">
-<pre class="example"># This file controls the behaviour of line input editing for
+<pre class="example-preformatted"># This file controls the behavior of line input editing for
 # programs that use the GNU Readline library.  Existing
 # programs include FTP, Bash, and GDB.
 #
@@ -1333,24 +1429,33 @@ $endif
 <hr>
 </div>
 </div>
-<div class="section" id="Bindable-Readline-Commands">
-<div class="header">
+<div class="section-level-extent" id="Bindable-Readline-Commands">
+<div class="nav-panel">
 <p>
 Next: <a href="#Readline-vi-Mode" accesskey="n" rel="next">Readline vi Mode</a>, Previous: <a href="#Readline-Init-File" accesskey="p" rel="prev">Readline Init File</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Bindable-Readline-Commands-1"></span><h3 class="section">1.4 Bindable Readline Commands</h3>
+<h3 class="section" id="Bindable-Readline-Commands-1"><span>1.4 Bindable Readline Commands<a class="copiable-link" href="#Bindable-Readline-Commands-1"> &para;</a></span></h3>
 
 
 <p>This section describes Readline commands that may be bound to key
 sequences.
 Command names without an accompanying key sequence are unbound by default.
 </p>
-<p>In the following descriptions, <em>point</em> refers to the current cursor
-position, and <em>mark</em> refers to a cursor position saved by the
-<code>set-mark</code> command.
-The text between the point and mark is referred to as the <em>region</em>.
-</p>
-<ul class="section-toc">
+<p>In the following descriptions, <em class="dfn">point</em> refers to the current cursor
+position, and <em class="dfn">mark</em> refers to a cursor position saved by the
+<code class="code">set-mark</code> command.
+The text between the point and mark is referred to as the <em class="dfn">region</em>.
+Readline
+has the concept of an <em class="emph">active region</em>:
+when the region is active,
+Readline redisplay highlights the region using the
+value of the
+<code class="code">active-region-start-color</code>
+variable.
+The <code class="code">enable-active-region</code> variable turns this on and off.
+Several commands set the region to active; those are noted below.
+</p>
+<ul class="mini-toc">
 <li><a href="#Commands-For-Moving" accesskey="1">Commands For Moving</a></li>
 <li><a href="#Commands-For-History" accesskey="2">Commands For Manipulating The History</a></li>
 <li><a href="#Commands-For-Text" accesskey="3">Commands For Changing Text</a></li>
@@ -1361,68 +1466,76 @@ The text between the point and mark is referred to as the <em>region</em>.
 <li><a href="#Miscellaneous-Commands" accesskey="8">Some Miscellaneous Commands</a></li>
 </ul>
 <hr>
-<div class="subsection" id="Commands-For-Moving">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Moving">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-History" accesskey="n" rel="next">Commands For Manipulating The History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Commands-For-Moving-1"></span><h4 class="subsection">1.4.1 Commands For Moving</h4>
-<dl compact="compact">
-<dt id='index-beginning_002dof_002dline-_0028C_002da_0029'><span><code>beginning-of-line (C-a)</code><a href='#index-beginning_002dof_002dline-_0028C_002da_0029' class='copiable-anchor'> &para;</a></span></dt>
+<h4 class="subsection" id="Commands-For-Moving-1"><span>1.4.1 Commands For Moving<a class="copiable-link" href="#Commands-For-Moving-1"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-beginning_002dof_002dline-_0028C_002da_0029"></a><span><code class="code">beginning-of-line (C-a)</code><a class="copiable-link" href="#index-beginning_002dof_002dline-_0028C_002da_0029"> &para;</a></span></dt>
 <dd><p>Move to the start of the current line.
+This may also be bound to the Home key on some keyboards.
 </p>
 </dd>
-<dt id='index-end_002dof_002dline-_0028C_002de_0029'><span><code>end-of-line (C-e)</code><a href='#index-end_002dof_002dline-_0028C_002de_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-end_002dof_002dline-_0028C_002de_0029"></a><span><code class="code">end-of-line (C-e)</code><a class="copiable-link" href="#index-end_002dof_002dline-_0028C_002de_0029"> &para;</a></span></dt>
 <dd><p>Move to the end of the line.
+This may also be bound to the End key on some keyboards.
 </p>
 </dd>
-<dt id='index-forward_002dchar-_0028C_002df_0029'><span><code>forward-char (C-f)</code><a href='#index-forward_002dchar-_0028C_002df_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dchar-_0028C_002df_0029"></a><span><code class="code">forward-char (C-f)</code><a class="copiable-link" href="#index-forward_002dchar-_0028C_002df_0029"> &para;</a></span></dt>
 <dd><p>Move forward a character.
+This may also be bound to the right arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-backward_002dchar-_0028C_002db_0029'><span><code>backward-char (C-b)</code><a href='#index-backward_002dchar-_0028C_002db_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dchar-_0028C_002db_0029"></a><span><code class="code">backward-char (C-b)</code><a class="copiable-link" href="#index-backward_002dchar-_0028C_002db_0029"> &para;</a></span></dt>
 <dd><p>Move back a character.
+This may also be bound to the left arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-forward_002dword-_0028M_002df_0029'><span><code>forward-word (M-f)</code><a href='#index-forward_002dword-_0028M_002df_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dword-_0028M_002df_0029"></a><span><code class="code">forward-word (M-f)</code><a class="copiable-link" href="#index-forward_002dword-_0028M_002df_0029"> &para;</a></span></dt>
 <dd><p>Move forward to the end of the next word.
 Words are composed of letters and digits.
 </p>
 </dd>
-<dt id='index-backward_002dword-_0028M_002db_0029'><span><code>backward-word (M-b)</code><a href='#index-backward_002dword-_0028M_002db_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dword-_0028M_002db_0029"></a><span><code class="code">backward-word (M-b)</code><a class="copiable-link" href="#index-backward_002dword-_0028M_002db_0029"> &para;</a></span></dt>
 <dd><p>Move back to the start of the current or previous word.
 Words are composed of letters and digits.
 </p>
 
 </dd>
-<dt id='index-previous_002dscreen_002dline-_0028_0029'><span><code>previous-screen-line ()</code><a href='#index-previous_002dscreen_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-previous_002dscreen_002dline-_0028_0029"></a><span><code class="code">previous-screen-line ()</code><a class="copiable-link" href="#index-previous_002dscreen_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>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
+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>
 </dd>
-<dt id='index-next_002dscreen_002dline-_0028_0029'><span><code>next-screen-line ()</code><a href='#index-next_002dscreen_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-next_002dscreen_002dline-_0028_0029"></a><span><code class="code">next-screen-line ()</code><a class="copiable-link" href="#index-next_002dscreen_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>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
+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>
 </dd>
-<dt id='index-clear_002ddisplay-_0028M_002dC_002dl_0029'><span><code>clear-display (M-C-l)</code><a href='#index-clear_002ddisplay-_0028M_002dC_002dl_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-clear_002ddisplay-_0028M_002dC_002dl_0029"></a><span><code class="code">clear-display (M-C-l)</code><a class="copiable-link" href="#index-clear_002ddisplay-_0028M_002dC_002dl_0029"> &para;</a></span></dt>
 <dd><p>Clear the screen and, if possible, the terminal&rsquo;s scrollback buffer,
 then redraw the current line,
 leaving the current line at the top of the screen.
 </p>
 </dd>
-<dt id='index-clear_002dscreen-_0028C_002dl_0029'><span><code>clear-screen (C-l)</code><a href='#index-clear_002dscreen-_0028C_002dl_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-clear_002dscreen-_0028C_002dl_0029"></a><span><code class="code">clear-screen (C-l)</code><a class="copiable-link" href="#index-clear_002dscreen-_0028C_002dl_0029"> &para;</a></span></dt>
 <dd><p>Clear the screen,
 then redraw the current line,
 leaving the current line at the top of the screen.
+If given a numeric argument, this refreshes the current line
+without clearing the screen.
 </p>
 </dd>
-<dt id='index-redraw_002dcurrent_002dline-_0028_0029'><span><code>redraw-current-line ()</code><a href='#index-redraw_002dcurrent_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-redraw_002dcurrent_002dline-_0028_0029"></a><span><code class="code">redraw-current-line ()</code><a class="copiable-link" href="#index-redraw_002dcurrent_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>Refresh the current line.  By default, this is unbound.
 </p>
 </dd>
@@ -1430,133 +1543,143 @@ leaving the current line at the top of the screen.
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-History">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-History">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-Text" accesskey="n" rel="next">Commands For Changing Text</a>, Previous: <a href="#Commands-For-Moving" accesskey="p" rel="prev">Commands For Moving</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Commands-For-Manipulating-The-History"></span><h4 class="subsection">1.4.2 Commands For Manipulating The History</h4>
+<h4 class="subsection" id="Commands-For-Manipulating-The-History"><span>1.4.2 Commands For Manipulating The History<a class="copiable-link" href="#Commands-For-Manipulating-The-History"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-accept_002dline-_0028Newline-or-Return_0029'><span><code>accept-line (Newline or Return)</code><a href='#index-accept_002dline-_0028Newline-or-Return_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="ftable">
+<dt><a id="index-accept_002dline-_0028Newline-or-Return_0029"></a><span><code class="code">accept-line (Newline or Return)</code><a class="copiable-link" href="#index-accept_002dline-_0028Newline-or-Return_0029"> &para;</a></span></dt>
 <dd><p>Accept the line regardless of where the cursor is.
-If this line is
-non-empty, it may be added to the history list for future recall with
-<code>add_history()</code>.
-If this line is a modified history line, the history line is restored
+If this line is non-empty, you can add it to the history list using
+<code class="code">add_history()</code>.
+If this line is a modified history line, then restore the history line
 to its original state.
 </p>
 </dd>
-<dt id='index-previous_002dhistory-_0028C_002dp_0029'><span><code>previous-history (C-p)</code><a href='#index-previous_002dhistory-_0028C_002dp_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-previous_002dhistory-_0028C_002dp_0029"></a><span><code class="code">previous-history (C-p)</code><a class="copiable-link" href="#index-previous_002dhistory-_0028C_002dp_0029"> &para;</a></span></dt>
 <dd><p>Move &lsquo;back&rsquo; through the history list, fetching the previous command.
+This may also be bound to the up arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-next_002dhistory-_0028C_002dn_0029'><span><code>next-history (C-n)</code><a href='#index-next_002dhistory-_0028C_002dn_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-next_002dhistory-_0028C_002dn_0029"></a><span><code class="code">next-history (C-n)</code><a class="copiable-link" href="#index-next_002dhistory-_0028C_002dn_0029"> &para;</a></span></dt>
 <dd><p>Move &lsquo;forward&rsquo; through the history list, fetching the next command.
+This may also be bound to the down arrow key on some keyboards.
 </p>
 </dd>
-<dt id='index-beginning_002dof_002dhistory-_0028M_002d_003c_0029'><span><code>beginning-of-history (M-&lt;)</code><a href='#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"></a><span><code class="code">beginning-of-history (M-&lt;)</code><a class="copiable-link" href="#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"> &para;</a></span></dt>
 <dd><p>Move to the first line in the history.
 </p>
 </dd>
-<dt id='index-end_002dof_002dhistory-_0028M_002d_003e_0029'><span><code>end-of-history (M-&gt;)</code><a href='#index-end_002dof_002dhistory-_0028M_002d_003e_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-end_002dof_002dhistory-_0028M_002d_003e_0029"></a><span><code class="code">end-of-history (M-&gt;)</code><a class="copiable-link" href="#index-end_002dof_002dhistory-_0028M_002d_003e_0029"> &para;</a></span></dt>
 <dd><p>Move to the end of the input history, i.e., the line currently
 being entered.
 </p>
 </dd>
-<dt id='index-reverse_002dsearch_002dhistory-_0028C_002dr_0029'><span><code>reverse-search-history (C-r)</code><a href='#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"></a><span><code class="code">reverse-search-history (C-r)</code><a class="copiable-link" href="#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"> &para;</a></span></dt>
 <dd><p>Search backward starting at the current line and moving &lsquo;up&rsquo; through
-the history as necessary.  This is an incremental search.
-This command sets the region to the matched text and activates the mark.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 </p>
 </dd>
-<dt id='index-forward_002dsearch_002dhistory-_0028C_002ds_0029'><span><code>forward-search-history (C-s)</code><a href='#index-forward_002dsearch_002dhistory-_0028C_002ds_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dsearch_002dhistory-_0028C_002ds_0029"></a><span><code class="code">forward-search-history (C-s)</code><a class="copiable-link" href="#index-forward_002dsearch_002dhistory-_0028C_002ds_0029"> &para;</a></span></dt>
 <dd><p>Search forward starting at the current line and moving &lsquo;down&rsquo; through
-the history as necessary.  This is an incremental search.
-This command sets the region to the matched text and activates the mark.
+the history as necessary.
+This is an incremental search.
+This command sets the region to the matched text and activates the region.
 </p>
 </dd>
-<dt id='index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029'><span><code>non-incremental-reverse-search-history (M-p)</code><a href='#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"></a><span><code class="code">non-incremental-reverse-search-history (M-p)</code><a class="copiable-link" href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"> &para;</a></span></dt>
 <dd><p>Search backward starting at the current line and moving &lsquo;up&rsquo;
 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>
 </dd>
-<dt id='index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029'><span><code>non-incremental-forward-search-history (M-n)</code><a href='#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"></a><span><code class="code">non-incremental-forward-search-history (M-n)</code><a class="copiable-link" href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"> &para;</a></span></dt>
 <dd><p>Search forward starting at the current line and moving &lsquo;down&rsquo;
 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>
 </dd>
-<dt id='index-history_002dsearch_002dforward-_0028_0029'><span><code>history-search-forward ()</code><a href='#index-history_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search forward through the history for the string of characters
+<dt><a id="index-history_002dsearch_002dbackward-_0028_0029"></a><span><code class="code">history-search-backward ()</code><a class="copiable-link" href="#index-history_002dsearch_002dbackward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
 This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Down
+key on some keyboards.
 </p>
 </dd>
-<dt id='index-history_002dsearch_002dbackward-_0028_0029'><span><code>history-search-backward ()</code><a href='#index-history_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search backward through the history for the string of characters
+<dt><a id="index-history_002dsearch_002dforward-_0028_0029"></a><span><code class="code">history-search-forward ()</code><a class="copiable-link" href="#index-history_002dsearch_002dforward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
 This is a non-incremental search.
-By default, this command is unbound.
+By default, this command is unbound, but may be bound to the Page Up
+key on some keyboards.
 </p>
 </dd>
-<dt id='index-history_002dsubstring_002dsearch_002dforward-_0028_0029'><span><code>history-substring-search-forward ()</code><a href='#index-history_002dsubstring_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search forward through the history for the string of characters
+<dt><a id="index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"></a><span><code class="code">history-substring-search-backward ()</code><a class="copiable-link" href="#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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 non-incremental search.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-history_002dsubstring_002dsearch_002dbackward-_0028_0029'><span><code>history-substring-search-backward ()</code><a href='#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Search backward through the history for the string of characters
+<dt><a id="index-history_002dsubstring_002dsearch_002dforward-_0028_0029"></a><span><code class="code">history-substring-search-forward ()</code><a class="copiable-link" href="#index-history_002dsubstring_002dsearch_002dforward-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
 </p>
 </dd>
-<dt id='index-yank_002dnth_002darg-_0028M_002dC_002dy_0029'><span><code>yank-nth-arg (M-C-y)</code><a href='#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"></a><span><code class="code">yank-nth-arg (M-C-y)</code><a class="copiable-link" href="#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"> &para;</a></span></dt>
 <dd><p>Insert the first argument to the previous command (usually
 the second word on the previous line) at point.
-With an argument <var>n</var>,
-insert the <var>n</var>th word from the previous command (the words
-in the previous command begin with word 0).  A negative argument
-inserts the <var>n</var>th word from the end of the previous command.
-Once the argument <var>n</var> is computed, the argument is extracted
-as if the &lsquo;<samp>!<var>n</var></samp>&rsquo; history expansion had been specified.
-</p>
-</dd>
-<dt id='index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029'><span><code>yank-last-arg (M-. or M-_)</code><a href='#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029' class='copiable-anchor'> &para;</a></span></dt>
+With an argument <var class="var">n</var>,
+insert the <var class="var">n</var>th word from the previous command (the words
+in the previous command begin with word 0).
+A negative argument inserts the <var class="var">n</var>th word from the end of
+the previous command.
+Once the argument <var class="var">n</var> is computed,
+this uses the history expansion facilities to extract the
+<var class="var">n</var>th word, as if the
+&lsquo;<samp class="samp">!<var class="var">n</var></samp>&rsquo; history expansion had been specified.
+</p>
+</dd>
+<dt><a id="index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"></a><span><code class="code">yank-last-arg (M-. or M-_)</code><a class="copiable-link" href="#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"> &para;</a></span></dt>
 <dd><p>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>.
-Successive calls to <code>yank-last-arg</code> move back through the history
+With a numeric argument, behave exactly like <code class="code">yank-nth-arg</code>.
+Successive calls to <code class="code">yank-last-arg</code> move back through the history
 list, inserting the last word (or the word specified by the argument to
 the first call) of each line in turn.
 Any numeric argument supplied to these successive calls determines
-the direction to move through the history.  A negative argument switches
-the direction through the history (back or forward).
-The history expansion facilities are used to extract the last argument,
-as if the &lsquo;<samp>!$</samp>&rsquo; history expansion had been specified.
+the direction to move through the history.
+A negative argument switches the direction through the history
+(back or forward).
+This uses the history expansion facilities to extract the
+last  word, as if the
+&lsquo;<samp class="samp">!$</samp>&rsquo; history expansion had been specified.
 </p>
 </dd>
-<dt id='index-operate_002dand_002dget_002dnext-_0028C_002do_0029'><span><code>operate-and-get-next (C-o)</code><a href='#index-operate_002dand_002dget_002dnext-_0028C_002do_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-operate_002dand_002dget_002dnext-_0028C_002do_0029"></a><span><code class="code">operate-and-get-next (C-o)</code><a class="copiable-link" href="#index-operate_002dand_002dget_002dnext-_0028C_002do_0029"> &para;</a></span></dt>
 <dd><p>Accept the current line for return to the calling application as if a
 newline had been entered,
 and fetch the next line 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.
+A numeric argument, if supplied, specifies the history entry
+to use instead of the current line.
 </p>
 </dd>
-<dt id='index-fetch_002dhistory-_0028_0029'><span><code>fetch-history ()</code><a href='#index-fetch_002dhistory-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-fetch_002dhistory-_0028_0029"></a><span><code class="code">fetch-history ()</code><a class="copiable-link" href="#index-fetch_002dhistory-_0028_0029"> &para;</a></span></dt>
 <dd><p>With a numeric argument, fetch that entry from the history list
 and make it the current line.
 Without an argument, move back to the first entry in the history list.
@@ -1566,231 +1689,239 @@ Without an argument, move back to the first entry in the history list.
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-Text">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Text">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-Killing" accesskey="n" rel="next">Killing And Yanking</a>, Previous: <a href="#Commands-For-History" accesskey="p" rel="prev">Commands For Manipulating The History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Commands-For-Changing-Text"></span><h4 class="subsection">1.4.3 Commands For Changing Text</h4>
+<h4 class="subsection" id="Commands-For-Changing-Text"><span>1.4.3 Commands For Changing Text<a class="copiable-link" href="#Commands-For-Changing-Text"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-end_002dof_002dfile-_0028usually-C_002dd_0029'><span><code><i>end-of-file</i> (usually C-d)</code><a href='#index-end_002dof_002dfile-_0028usually-C_002dd_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="ftable">
+<dt><a id="index-end_002dof_002dfile-_0028usually-C_002dd_0029"></a><span><code class="code"><i class="i">end-of-file</i> (usually C-d)</code><a class="copiable-link" href="#index-end_002dof_002dfile-_0028usually-C_002dd_0029"> &para;</a></span></dt>
 <dd><p>The character indicating end-of-file as set, for example, by
-<code>stty</code>.  If this character is read when there are no characters
+<code class="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 <small>EOF</small>.
+interprets it as the end of input and returns <small class="sc">EOF</small>.
 </p>
 </dd>
-<dt id='index-delete_002dchar-_0028C_002dd_0029'><span><code>delete-char (C-d)</code><a href='#index-delete_002dchar-_0028C_002dd_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Delete the character at point.  If this function is bound to the
-same character as the tty <small>EOF</small> character, as <kbd>C-d</kbd>
+<dt><a id="index-delete_002dchar-_0028C_002dd_0029"></a><span><code class="code">delete-char (C-d)</code><a class="copiable-link" href="#index-delete_002dchar-_0028C_002dd_0029"> &para;</a></span></dt>
+<dd><p>Delete the character at point.
+If this function is bound to the
+same character as the tty <small class="sc">EOF</small> character, as <kbd class="kbd">C-d</kbd>
 commonly is, see above for the effects.
+This may also be bound to the Delete key on some keyboards.
 </p>
 </dd>
-<dt id='index-backward_002ddelete_002dchar-_0028Rubout_0029'><span><code>backward-delete-char (Rubout)</code><a href='#index-backward_002ddelete_002dchar-_0028Rubout_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Delete the character behind the cursor.  A numeric argument means
-to kill the characters instead of deleting them.
+<dt><a id="index-backward_002ddelete_002dchar-_0028Rubout_0029"></a><span><code class="code">backward-delete-char (Rubout)</code><a class="copiable-link" href="#index-backward_002ddelete_002dchar-_0028Rubout_0029"> &para;</a></span></dt>
+<dd><p>Delete the character behind the cursor.
+A numeric argument means
+to kill the characters, saving them on the kill ring,
+instead of deleting them.
 </p>
 </dd>
-<dt id='index-forward_002dbackward_002ddelete_002dchar-_0028_0029'><span><code>forward-backward-delete-char ()</code><a href='#index-forward_002dbackward_002ddelete_002dchar-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-forward_002dbackward_002ddelete_002dchar-_0028_0029"></a><span><code class="code">forward-backward-delete-char ()</code><a class="copiable-link" href="#index-forward_002dbackward_002ddelete_002dchar-_0028_0029"> &para;</a></span></dt>
 <dd><p>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.
+deleted.
+By default, this is not bound to a key.
 </p>
 </dd>
-<dt id='index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029'><span><code>quoted-insert (C-q or C-v)</code><a href='#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Add the next character typed to the line verbatim.  This is
-how to insert key sequences like <kbd>C-q</kbd>, for example.
+<dt><a id="index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"></a><span><code class="code">quoted-insert (C-q or C-v)</code><a class="copiable-link" href="#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"> &para;</a></span></dt>
+<dd><p>Add the next character typed to the line verbatim.
+This is how to insert key sequences like <kbd class="kbd">C-q</kbd>, for example.
 </p>
 </dd>
-<dt id='index-tab_002dinsert-_0028M_002dTAB_0029'><span><code>tab-insert (M-<span class="key">TAB</span>)</code><a href='#index-tab_002dinsert-_0028M_002dTAB_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-tab_002dinsert-_0028M_002dTAB_0029"></a><span><code class="code">tab-insert (M-<kbd class="key">TAB</kbd>)</code><a class="copiable-link" href="#index-tab_002dinsert-_0028M_002dTAB_0029"> &para;</a></span></dt>
 <dd><p>Insert a tab character.
 </p>
 </dd>
-<dt id='index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029'><span><code>self-insert (a, b, A, 1, !, &hellip;)</code><a href='#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Insert yourself.
+<dt><a id="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"></a><span><code class="code">self-insert (a, b, A, 1, !, &hellip;)</code><a class="copiable-link" href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"> &para;</a></span></dt>
+<dd><p>Insert the character typed.
 </p>
 </dd>
-<dt id='index-bracketed_002dpaste_002dbegin-_0028_0029'><span><code>bracketed-paste-begin ()</code><a href='#index-bracketed_002dpaste_002dbegin-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-bracketed_002dpaste_002dbegin-_0028_0029"></a><span><code class="code">bracketed-paste-begin ()</code><a class="copiable-link" href="#index-bracketed_002dpaste_002dbegin-_0028_0029"> &para;</a></span></dt>
 <dd><p>This function is intended to be bound to the &quot;bracketed paste&quot; 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
+each character as if it had been read from the keyboard.
+The characters
+are inserted as if each one was bound to <code class="code">self-insert</code> instead of
 executing any editing commands.
 </p>
 <p>Bracketed paste sets the region (the characters between point and the mark)
-to the inserted text. It uses the concept of an <em>active mark</em>: when the
-mark is active, Readline redisplay uses the terminal&rsquo;s standout mode to
-denote the region.
+to the inserted text.
+It sets the <em class="emph">active region</em>.
 </p>
 </dd>
-<dt id='index-transpose_002dchars-_0028C_002dt_0029'><span><code>transpose-chars (C-t)</code><a href='#index-transpose_002dchars-_0028C_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-transpose_002dchars-_0028C_002dt_0029"></a><span><code class="code">transpose-chars (C-t)</code><a class="copiable-link" href="#index-transpose_002dchars-_0028C_002dt_0029"> &para;</a></span></dt>
 <dd><p>Drag the character before the cursor forward over
 the character at the cursor, moving the
-cursor forward as well.  If the insertion point
+cursor forward as well.
+If the insertion point
 is at the end of the line, then this
 transposes the last two characters of the line.
 Negative arguments have no effect.
 </p>
 </dd>
-<dt id='index-transpose_002dwords-_0028M_002dt_0029'><span><code>transpose-words (M-t)</code><a href='#index-transpose_002dwords-_0028M_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-transpose_002dwords-_0028M_002dt_0029"></a><span><code class="code">transpose-words (M-t)</code><a class="copiable-link" href="#index-transpose_002dwords-_0028M_002dt_0029"> &para;</a></span></dt>
 <dd><p>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>
+
 </dd>
-<dt id='index-upcase_002dword-_0028M_002du_0029'><span><code>upcase-word (M-u)</code><a href='#index-upcase_002dword-_0028M_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Uppercase the current (or following) word.  With a negative argument,
+<dt><a id="index-upcase_002dword-_0028M_002du_0029"></a><span><code class="code">upcase-word (M-u)</code><a class="copiable-link" href="#index-upcase_002dword-_0028M_002du_0029"> &para;</a></span></dt>
+<dd><p>Uppercase the current (or following) word.
+With a negative argument,
 uppercase the previous word, but do not move the cursor.
 </p>
 </dd>
-<dt id='index-downcase_002dword-_0028M_002dl_0029'><span><code>downcase-word (M-l)</code><a href='#index-downcase_002dword-_0028M_002dl_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Lowercase the current (or following) word.  With a negative argument,
+<dt><a id="index-downcase_002dword-_0028M_002dl_0029"></a><span><code class="code">downcase-word (M-l)</code><a class="copiable-link" href="#index-downcase_002dword-_0028M_002dl_0029"> &para;</a></span></dt>
+<dd><p>Lowercase the current (or following) word.
+With a negative argument,
 lowercase the previous word, but do not move the cursor.
 </p>
 </dd>
-<dt id='index-capitalize_002dword-_0028M_002dc_0029'><span><code>capitalize-word (M-c)</code><a href='#index-capitalize_002dword-_0028M_002dc_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Capitalize the current (or following) word.  With a negative argument,
+<dt><a id="index-capitalize_002dword-_0028M_002dc_0029"></a><span><code class="code">capitalize-word (M-c)</code><a class="copiable-link" href="#index-capitalize_002dword-_0028M_002dc_0029"> &para;</a></span></dt>
+<dd><p>Capitalize the current (or following) word.
+With a negative argument,
 capitalize the previous word, but do not move the cursor.
 </p>
 </dd>
-<dt id='index-overwrite_002dmode-_0028_0029'><span><code>overwrite-mode ()</code><a href='#index-overwrite_002dmode-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Toggle overwrite mode.  With an explicit positive numeric argument,
-switches to overwrite mode.  With an explicit non-positive numeric
-argument, switches to insert mode.  This command affects only
-<code>emacs</code> mode; <code>vi</code> mode does overwrite differently.
-Each call to <code>readline()</code> starts in insert mode.
+<dt><a id="index-overwrite_002dmode-_0028_0029"></a><span><code class="code">overwrite-mode ()</code><a class="copiable-link" href="#index-overwrite_002dmode-_0028_0029"> &para;</a></span></dt>
+<dd><p>Toggle overwrite mode.
+With an explicit positive numeric argument, switches to overwrite mode.
+With an explicit non-positive numeric argument, switches to insert mode.
+This command affects only <code class="code">emacs</code> mode;
+<code class="code">vi</code> mode does overwrite differently.
+Each call to <code class="code">readline()</code> starts in insert mode.
 </p>
-<p>In overwrite mode, characters bound to <code>self-insert</code> replace
+<p>In overwrite mode, characters bound to <code class="code">self-insert</code> replace
 the text at point rather than pushing the text to the right.
-Characters bound to <code>backward-delete-char</code> replace the character
+Characters bound to <code class="code">backward-delete-char</code> replace the character
 before point with a space.
 </p>
-<p>By default, this command is unbound.
+<p>By default, this command is unbound, but may be bound to the Insert
+key on some keyboards.
 </p>
 </dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-Killing">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Killing">
+<div class="nav-panel">
 <p>
 Next: <a href="#Numeric-Arguments" accesskey="n" rel="next">Specifying Numeric Arguments</a>, Previous: <a href="#Commands-For-Text" accesskey="p" rel="prev">Commands For Changing Text</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Killing-And-Yanking"></span><h4 class="subsection">1.4.4 Killing And Yanking</h4>
+<h4 class="subsection" id="Killing-And-Yanking"><span>1.4.4 Killing And Yanking<a class="copiable-link" href="#Killing-And-Yanking"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-kill_002dline-_0028C_002dk_0029'><span><code>kill-line (C-k)</code><a href='#index-kill_002dline-_0028C_002dk_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Kill the text from point to the end of the line.
+<dl class="ftable">
+<dt><a id="index-kill_002dline-_0028C_002dk_0029"></a><span><code class="code">kill-line (C-k)</code><a class="copiable-link" href="#index-kill_002dline-_0028C_002dk_0029"> &para;</a></span></dt>
+<dd><p>Kill the text from point to the end of the current line.
 With a negative numeric argument, kill backward from the cursor to the
-beginning of the current line.
+beginning of the line.
 </p>
 </dd>
-<dt id='index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029'><span><code>backward-kill-line (C-x Rubout)</code><a href='#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"></a><span><code class="code">backward-kill-line (C-x Rubout)</code><a class="copiable-link" href="#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"> &para;</a></span></dt>
 <dd><p>Kill backward from the cursor to the beginning of the current line.
 With a negative numeric argument, kill forward from the cursor to the
-end of the current line.
+end of the line.
 </p>
 </dd>
-<dt id='index-unix_002dline_002ddiscard-_0028C_002du_0029'><span><code>unix-line-discard (C-u)</code><a href='#index-unix_002dline_002ddiscard-_0028C_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-unix_002dline_002ddiscard-_0028C_002du_0029"></a><span><code class="code">unix-line-discard (C-u)</code><a class="copiable-link" href="#index-unix_002dline_002ddiscard-_0028C_002du_0029"> &para;</a></span></dt>
 <dd><p>Kill backward from the cursor to the beginning of the current line.
 </p>
 </dd>
-<dt id='index-kill_002dwhole_002dline-_0028_0029'><span><code>kill-whole-line ()</code><a href='#index-kill_002dwhole_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-kill_002dwhole_002dline-_0028_0029"></a><span><code class="code">kill-whole-line ()</code><a class="copiable-link" href="#index-kill_002dwhole_002dline-_0028_0029"> &para;</a></span></dt>
 <dd><p>Kill all characters on the current line, no matter where point is.
 By default, this is unbound.
 </p>
 </dd>
-<dt id='index-kill_002dword-_0028M_002dd_0029'><span><code>kill-word (M-d)</code><a href='#index-kill_002dword-_0028M_002dd_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-kill_002dword-_0028M_002dd_0029"></a><span><code class="code">kill-word (M-d)</code><a class="copiable-link" href="#index-kill_002dword-_0028M_002dd_0029"> &para;</a></span></dt>
 <dd><p>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>.
+Word boundaries are the same as <code class="code">forward-word</code>.
 </p>
 </dd>
-<dt id='index-backward_002dkill_002dword-_0028M_002dDEL_0029'><span><code>backward-kill-word (M-<span class="key">DEL</span>)</code><a href='#index-backward_002dkill_002dword-_0028M_002dDEL_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-backward_002dkill_002dword-_0028M_002dDEL_0029"></a><span><code class="code">backward-kill-word (M-<kbd class="key">DEL</kbd>)</code><a class="copiable-link" href="#index-backward_002dkill_002dword-_0028M_002dDEL_0029"> &para;</a></span></dt>
 <dd><p>Kill the word behind point.
-Word boundaries are the same as <code>backward-word</code>.
+Word boundaries are the same as <code class="code">backward-word</code>.
 </p>
 
 </dd>
-<dt id='index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029'><span><code>shell-transpose-words (M-C-t)</code><a href='#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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.
-Word boundaries are the same as <code>shell-forward-word</code> and
-<code>shell-backward-word</code>.
-</p>
-</dd>
-<dt id='index-unix_002dword_002drubout-_0028C_002dw_0029'><span><code>unix-word-rubout (C-w)</code><a href='#index-unix_002dword_002drubout-_0028C_002dw_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
+<dt><a id="index-unix_002dword_002drubout-_0028C_002dw_0029"></a><span><code class="code">unix-word-rubout (C-w)</code><a class="copiable-link" href="#index-unix_002dword_002drubout-_0028C_002dw_0029"> &para;</a></span></dt>
+<dd><p>Kill the word behind point, using white space as a word boundary,
+saving the killed text on the kill-ring.
 </p>
 </dd>
-<dt id='index-unix_002dfilename_002drubout-_0028_0029'><span><code>unix-filename-rubout ()</code><a href='#index-unix_002dfilename_002drubout-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-unix_002dfilename_002drubout-_0028_0029"></a><span><code class="code">unix-filename-rubout ()</code><a class="copiable-link" href="#index-unix_002dfilename_002drubout-_0028_0029"> &para;</a></span></dt>
 <dd><p>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.
+as the word boundaries,
+saving the killed text on the kill-ring.
 </p>
 </dd>
-<dt id='index-delete_002dhorizontal_002dspace-_0028_0029'><span><code>delete-horizontal-space ()</code><a href='#index-delete_002dhorizontal_002dspace-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Delete all spaces and tabs around point.  By default, this is unbound.
+<dt><a id="index-delete_002dhorizontal_002dspace-_0028_0029"></a><span><code class="code">delete-horizontal-space ()</code><a class="copiable-link" href="#index-delete_002dhorizontal_002dspace-_0028_0029"> &para;</a></span></dt>
+<dd><p>Delete all spaces and tabs around point.
+By default, this is unbound.
 </p>
 </dd>
-<dt id='index-kill_002dregion-_0028_0029'><span><code>kill-region ()</code><a href='#index-kill_002dregion-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-kill_002dregion-_0028_0029"></a><span><code class="code">kill-region ()</code><a class="copiable-link" href="#index-kill_002dregion-_0028_0029"> &para;</a></span></dt>
 <dd><p>Kill the text in the current region.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-copy_002dregion_002das_002dkill-_0028_0029'><span><code>copy-region-as-kill ()</code><a href='#index-copy_002dregion_002das_002dkill-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-copy_002dregion_002das_002dkill-_0028_0029"></a><span><code class="code">copy-region-as-kill ()</code><a class="copiable-link" href="#index-copy_002dregion_002das_002dkill-_0028_0029"> &para;</a></span></dt>
 <dd><p>Copy the text in the region to the kill buffer, so it can be yanked
-right away.  By default, this command is unbound.
+right away.
+By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-copy_002dbackward_002dword-_0028_0029'><span><code>copy-backward-word ()</code><a href='#index-copy_002dbackward_002dword-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-copy_002dbackward_002dword-_0028_0029"></a><span><code class="code">copy-backward-word ()</code><a class="copiable-link" href="#index-copy_002dbackward_002dword-_0028_0029"> &para;</a></span></dt>
 <dd><p>Copy the word before point to the kill buffer.
-The word boundaries are the same as <code>backward-word</code>.
+The word boundaries are the same as <code class="code">backward-word</code>.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-copy_002dforward_002dword-_0028_0029'><span><code>copy-forward-word ()</code><a href='#index-copy_002dforward_002dword-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-copy_002dforward_002dword-_0028_0029"></a><span><code class="code">copy-forward-word ()</code><a class="copiable-link" href="#index-copy_002dforward_002dword-_0028_0029"> &para;</a></span></dt>
 <dd><p>Copy the word following point to the kill buffer.
-The word boundaries are the same as <code>forward-word</code>.
+The word boundaries are the same as <code class="code">forward-word</code>.
 By default, this command is unbound.
 </p>
 </dd>
-<dt id='index-yank-_0028C_002dy_0029'><span><code>yank (C-y)</code><a href='#index-yank-_0028C_002dy_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-yank-_0028C_002dy_0029"></a><span><code class="code">yank (C-y)</code><a class="copiable-link" href="#index-yank-_0028C_002dy_0029"> &para;</a></span></dt>
 <dd><p>Yank the top of the kill ring into the buffer at point.
 </p>
 </dd>
-<dt id='index-yank_002dpop-_0028M_002dy_0029'><span><code>yank-pop (M-y)</code><a href='#index-yank_002dpop-_0028M_002dy_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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>.
+<dt><a id="index-yank_002dpop-_0028M_002dy_0029"></a><span><code class="code">yank-pop (M-y)</code><a class="copiable-link" href="#index-yank_002dpop-_0028M_002dy_0029"> &para;</a></span></dt>
+<dd><p>Rotate the kill-ring, and yank the new top.
+You can only do this if
+the prior command is <code class="code">yank</code> or <code class="code">yank-pop</code>.
 </p></dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Numeric-Arguments">
-<div class="header">
+<div class="subsection-level-extent" id="Numeric-Arguments">
+<div class="nav-panel">
 <p>
 Next: <a href="#Commands-For-Completion" accesskey="n" rel="next">Letting Readline Type For You</a>, Previous: <a href="#Commands-For-Killing" accesskey="p" rel="prev">Killing And Yanking</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Specifying-Numeric-Arguments"></span><h4 class="subsection">1.4.5 Specifying Numeric Arguments</h4>
-<dl compact="compact">
-<dt id='index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029'><span><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, &hellip; <kbd>M--</kbd>)</code><a href='#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029' class='copiable-anchor'> &para;</a></span></dt>
+<h4 class="subsection" id="Specifying-Numeric-Arguments"><span>1.4.5 Specifying Numeric Arguments<a class="copiable-link" href="#Specifying-Numeric-Arguments"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"></a><span><code class="code">digit-argument (<kbd class="kbd">M-0</kbd>, <kbd class="kbd">M-1</kbd>, &hellip; <kbd class="kbd">M--</kbd>)</code><a class="copiable-link" href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"> &para;</a></span></dt>
 <dd><p>Add this digit to the argument already accumulating, or start a new
-argument.  <kbd>M--</kbd> starts a negative argument.
+argument.
+<kbd class="kbd">M--</kbd> starts a negative argument.
 </p>
 </dd>
-<dt id='index-universal_002dargument-_0028_0029'><span><code>universal-argument ()</code><a href='#index-universal_002dargument-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-universal_002dargument-_0028_0029"></a><span><code class="code">universal-argument ()</code><a class="copiable-link" href="#index-universal_002dargument-_0028_0029"> &para;</a></span></dt>
 <dd><p>This is another way to specify an argument.
 If this command is followed by one or more digits, optionally with a
 leading minus sign, those digits define the argument.
-If the command is followed by digits, executing <code>universal-argument</code>
+If the command is followed by digits, executing <code class="code">universal-argument</code>
 again ends the numeric argument, but is otherwise ignored.
 As a special case, if this command is immediately followed by a
 character that is neither a digit nor minus sign, the argument count
@@ -1804,58 +1935,88 @@ By default, this is not bound to a key.
 
 <hr>
 </div>
-<div class="subsection" id="Commands-For-Completion">
-<div class="header">
+<div class="subsection-level-extent" id="Commands-For-Completion">
+<div class="nav-panel">
 <p>
 Next: <a href="#Keyboard-Macros" accesskey="n" rel="next">Keyboard Macros</a>, Previous: <a href="#Numeric-Arguments" accesskey="p" rel="prev">Specifying Numeric Arguments</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Letting-Readline-Type-For-You"></span><h4 class="subsection">1.4.6 Letting Readline Type For You</h4>
+<h4 class="subsection" id="Letting-Readline-Type-For-You"><span>1.4.6 Letting Readline Type For You<a class="copiable-link" href="#Letting-Readline-Type-For-You"> &para;</a></span></h4>
 
-<dl compact="compact">
-<dt id='index-complete-_0028TAB_0029'><span><code>complete (<span class="key">TAB</span>)</code><a href='#index-complete-_0028TAB_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dl class="ftable">
+<dt><a id="index-complete-_0028TAB_0029"></a><span><code class="code">complete (<kbd class="key">TAB</kbd>)</code><a class="copiable-link" href="#index-complete-_0028TAB_0029"> &para;</a></span></dt>
 <dd><p>Attempt to perform completion on the text before point.
 The actual completion performed is application-specific.
 The default is filename completion.
 </p>
 </dd>
-<dt id='index-possible_002dcompletions-_0028M_002d_003f_0029'><span><code>possible-completions (M-?)</code><a href='#index-possible_002dcompletions-_0028M_002d_003f_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-possible_002dcompletions-_0028M_002d_003f_0029"></a><span><code class="code">possible-completions (M-?)</code><a class="copiable-link" href="#index-possible_002dcompletions-_0028M_002d_003f_0029"> &para;</a></span></dt>
 <dd><p>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.
+for display to the value of <code class="code">completion-display-width</code>, the value of
+the environment variable <code class="env">COLUMNS</code>, or the screen width, in that order.
 </p>
 </dd>
-<dt id='index-insert_002dcompletions-_0028M_002d_002a_0029'><span><code>insert-completions (M-*)</code><a href='#index-insert_002dcompletions-_0028M_002d_002a_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-insert_002dcompletions-_0028M_002d_002a_0029"></a><span><code class="code">insert-completions (M-*)</code><a class="copiable-link" href="#index-insert_002dcompletions-_0028M_002d_002a_0029"> &para;</a></span></dt>
 <dd><p>Insert all completions of the text before point that would have
-been generated by <code>possible-completions</code>.
+been generated by <code class="code">possible-completions</code>,
+separated by a space.
 </p>
 </dd>
-<dt id='index-menu_002dcomplete-_0028_0029'><span><code>menu-complete ()</code><a href='#index-menu_002dcomplete-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Similar to <code>complete</code>, but replaces the word to be completed
+<dt><a id="index-menu_002dcomplete-_0028_0029"></a><span><code class="code">menu-complete ()</code><a class="copiable-link" href="#index-menu_002dcomplete-_0028_0029"> &para;</a></span></dt>
+<dd><p>Similar to <code class="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
+Repeatedly executing <code class="code">menu-complete</code> steps through the list
 of possible completions, inserting each match in turn.
-At the end of the list of completions, the bell is rung
-(subject to the setting of <code>bell-style</code>)
-and the original text is restored.
-An argument of <var>n</var> moves <var>n</var> positions forward in the list
-of matches; a negative argument may be used to move backward
-through the list.
-This command is intended to be bound to <tt class="key">TAB</tt>, but is unbound
+At the end of the list of completions,
+<code class="code">menu-complete</code> rings the bell
+(subject to the setting of <code class="code">bell-style</code>)
+and restores the original text.
+An argument of <var class="var">n</var> moves <var class="var">n</var> positions forward in the list
+of matches; a negative argument moves backward through the list.
+This command is intended to be bound to <kbd class="key">TAB</kbd>, but is unbound
 by default.
 </p>
 </dd>
-<dt id='index-menu_002dcomplete_002dbackward-_0028_0029'><span><code>menu-complete-backward ()</code><a href='#index-menu_002dcomplete_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>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
+<dt><a id="index-menu_002dcomplete_002dbackward-_0028_0029"></a><span><code class="code">menu-complete-backward ()</code><a class="copiable-link" href="#index-menu_002dcomplete_002dbackward-_0028_0029"> &para;</a></span></dt>
+<dd><p>Identical to <code class="code">menu-complete</code>, but moves backward through the list
+of possible completions, as if <code class="code">menu-complete</code> had been given a
 negative argument.
+This command is unbound by default.
 </p>
 </dd>
-<dt id='index-delete_002dchar_002dor_002dlist-_0028_0029'><span><code>delete-char-or-list ()</code><a href='#index-delete_002dchar_002dor_002dlist-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-export_002dcompletions-_0028_0029"></a><span><code class="code">export-completions ()</code><a class="copiable-link" href="#index-export_002dcompletions-_0028_0029"> &para;</a></span></dt>
+<dd><p>Perform completion on the word before point as described above
+and write the list of possible completions to Readline&rsquo;s output stream
+using the following format, writing information on separate lines:
+</p>
+<ul class="itemize mark-bullet">
+<li>the number of matches <var class="var">N</var>;
+</li><li>the word being completed;
+</li><li><var class="var">S</var>:<var class="var">E</var>,
+where <var class="var">S</var> and <var class="var">E</var> are the start and end offsets of the word
+in the Readline line buffer; then
+</li><li>each match, one per line
+</li></ul>
+
+<p>If there are no matches, the first line will be &ldquo;0&rdquo;,
+and this command does not print any output after the <var class="var">S</var>:<var class="var">E</var>.
+If there is only a single match, this prints a single line containing it.
+If there is more than one match, this prints the common prefix of the
+matches, which may be empty, on the first line after the <var class="var">S</var>:<var class="var">E</var>,
+then the matches on subsequent lines.
+In this case, <var class="var">N</var> will include the first line with the common prefix.
+</p>
+<p>The user or application
+should be able to accommodate the possibility of a blank line.
+The intent is that the user or application reads <var class="var">N</var> lines after
+the line containing <var class="var">S</var>:<var class="var">E</var> to obtain the match list.
+This command is unbound by default.
+</p>
+</dd>
+<dt><a id="index-delete_002dchar_002dor_002dlist-_0028_0029"></a><span><code class="code">delete-char-or-list ()</code><a class="copiable-link" href="#index-delete_002dchar_002dor_002dlist-_0028_0029"> &para;</a></span></dt>
 <dd><p>Deletes the character under the cursor if not at the beginning or
-end of the line (like <code>delete-char</code>).
-If at the end of the line, behaves identically to
-<code>possible-completions</code>.
+end of the line (like <code class="code">delete-char</code>).
+At the end of the line, it behaves identically to <code class="code">possible-completions</code>.
 This command is unbound by default.
 </p>
 </dd>
@@ -1863,150 +2024,167 @@ This command is unbound by default.
 
 <hr>
 </div>
-<div class="subsection" id="Keyboard-Macros">
-<div class="header">
+<div class="subsection-level-extent" id="Keyboard-Macros">
+<div class="nav-panel">
 <p>
 Next: <a href="#Miscellaneous-Commands" accesskey="n" rel="next">Some Miscellaneous Commands</a>, Previous: <a href="#Commands-For-Completion" accesskey="p" rel="prev">Letting Readline Type For You</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Keyboard-Macros-1"></span><h4 class="subsection">1.4.7 Keyboard Macros</h4>
-<dl compact="compact">
-<dt id='index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029'><span><code>start-kbd-macro (C-x ()</code><a href='#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<h4 class="subsection" id="Keyboard-Macros-1"><span>1.4.7 Keyboard Macros<a class="copiable-link" href="#Keyboard-Macros-1"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"></a><span><code class="code">start-kbd-macro (C-x ()</code><a class="copiable-link" href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"> &para;</a></span></dt>
 <dd><p>Begin saving the characters typed into the current keyboard macro.
 </p>
 </dd>
-<dt id='index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029'><span><code>end-kbd-macro (C-x ))</code><a href='#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"></a><span><code class="code">end-kbd-macro (C-x ))</code><a class="copiable-link" href="#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"> &para;</a></span></dt>
 <dd><p>Stop saving the characters typed into the current keyboard macro
 and save the definition.
 </p>
 </dd>
-<dt id='index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029'><span><code>call-last-kbd-macro (C-x e)</code><a href='#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"></a><span><code class="code">call-last-kbd-macro (C-x e)</code><a class="copiable-link" href="#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"> &para;</a></span></dt>
 <dd><p>Re-execute the last keyboard macro defined, by making the characters
 in the macro appear as if typed at the keyboard.
 </p>
 </dd>
-<dt id='index-print_002dlast_002dkbd_002dmacro-_0028_0029'><span><code>print-last-kbd-macro ()</code><a href='#index-print_002dlast_002dkbd_002dmacro-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-print_002dlast_002dkbd_002dmacro-_0028_0029"></a><span><code class="code">print-last-kbd-macro ()</code><a class="copiable-link" href="#index-print_002dlast_002dkbd_002dmacro-_0028_0029"> &para;</a></span></dt>
 <dd><p>Print the last keyboard macro defined in a format suitable for the
-<var>inputrc</var> file.
+<var class="var">inputrc</var> file.
 </p>
 </dd>
 </dl>
 
 <hr>
 </div>
-<div class="subsection" id="Miscellaneous-Commands">
-<div class="header">
+<div class="subsection-level-extent" id="Miscellaneous-Commands">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Keyboard-Macros" accesskey="p" rel="prev">Keyboard Macros</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Some-Miscellaneous-Commands"></span><h4 class="subsection">1.4.8 Some Miscellaneous Commands</h4>
-<dl compact="compact">
-<dt id='index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029'><span><code>re-read-init-file (C-x C-r)</code><a href='#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Read in the contents of the <var>inputrc</var> file, and incorporate
+<h4 class="subsection" id="Some-Miscellaneous-Commands"><span>1.4.8 Some Miscellaneous Commands<a class="copiable-link" href="#Some-Miscellaneous-Commands"> &para;</a></span></h4>
+<dl class="ftable">
+<dt><a id="index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"></a><span><code class="code">re-read-init-file (C-x C-r)</code><a class="copiable-link" href="#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"> &para;</a></span></dt>
+<dd><p>Read in the contents of the <var class="var">inputrc</var> file, and incorporate
 any bindings or variable assignments found there.
 </p>
 </dd>
-<dt id='index-abort-_0028C_002dg_0029'><span><code>abort (C-g)</code><a href='#index-abort-_0028C_002dg_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-abort-_0028C_002dg_0029"></a><span><code class="code">abort (C-g)</code><a class="copiable-link" href="#index-abort-_0028C_002dg_0029"> &para;</a></span></dt>
 <dd><p>Abort the current editing command and
 ring the terminal&rsquo;s bell (subject to the setting of
-<code>bell-style</code>).
+<code class="code">bell-style</code>).
 </p>
 </dd>
-<dt id='index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029'><span><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code><a href='#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>If the metafied character <var>x</var> is upper case, run the command
+<dt><a id="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></a><span><code class="code">do-lowercase-version (M-A, M-B, M-<var class="var">x</var>, &hellip;)</code><a class="copiable-link" href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"> &para;</a></span></dt>
+<dd><p>If the metafied character <var class="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.
+The behavior is undefined if <var class="var">x</var> is already lower case.
 </p>
 </dd>
-<dt id='index-prefix_002dmeta-_0028ESC_0029'><span><code>prefix-meta (<span class="key">ESC</span>)</code><a href='#index-prefix_002dmeta-_0028ESC_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Metafy the next character typed.  This is for keyboards
-without a meta key.  Typing &lsquo;<samp><span class="key">ESC</span> f</samp>&rsquo; is equivalent to typing
-<kbd>M-f</kbd>.
+<dt><a id="index-prefix_002dmeta-_0028ESC_0029"></a><span><code class="code">prefix-meta (<kbd class="key">ESC</kbd>)</code><a class="copiable-link" href="#index-prefix_002dmeta-_0028ESC_0029"> &para;</a></span></dt>
+<dd><p>Metafy the next character typed.
+Typing &lsquo;<samp class="samp"><kbd class="key">ESC</kbd> f</samp>&rsquo; is equivalent to typing <kbd class="kbd">M-f</kbd>.
 </p>
 </dd>
-<dt id='index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029'><span><code>undo (C-_ or C-x C-u)</code><a href='#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"></a><span><code class="code">undo (C-_ or C-x C-u)</code><a class="copiable-link" href="#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"> &para;</a></span></dt>
 <dd><p>Incremental undo, separately remembered for each line.
 </p>
 </dd>
-<dt id='index-revert_002dline-_0028M_002dr_0029'><span><code>revert-line (M-r)</code><a href='#index-revert_002dline-_0028M_002dr_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Undo all changes made to this line.  This is like executing the <code>undo</code>
-command enough times to get back to the beginning.
+<dt><a id="index-revert_002dline-_0028M_002dr_0029"></a><span><code class="code">revert-line (M-r)</code><a class="copiable-link" href="#index-revert_002dline-_0028M_002dr_0029"> &para;</a></span></dt>
+<dd><p>Undo all changes made to this line.
+This is like executing the <code class="code">undo</code>
+command enough times to get back to the initial state.
 </p>
 </dd>
-<dt id='index-tilde_002dexpand-_0028M_002d_007e_0029'><span><code>tilde-expand (M-~)</code><a href='#index-tilde_002dexpand-_0028M_002d_007e_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-tilde_002dexpand-_0028M_002d_007e_0029"></a><span><code class="code">tilde-expand (M-~)</code><a class="copiable-link" href="#index-tilde_002dexpand-_0028M_002d_007e_0029"> &para;</a></span></dt>
 <dd><p>Perform tilde expansion on the current word.
 </p>
 </dd>
-<dt id='index-set_002dmark-_0028C_002d_0040_0029'><span><code>set-mark (C-@)</code><a href='#index-set_002dmark-_0028C_002d_0040_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Set the mark to the point.  If a
-numeric argument is supplied, the mark is set to that position.
+<dt><a id="index-set_002dmark-_0028C_002d_0040_0029"></a><span><code class="code">set-mark (C-@)</code><a class="copiable-link" href="#index-set_002dmark-_0028C_002d_0040_0029"> &para;</a></span></dt>
+<dd><p>Set the mark to the point.
+If a numeric argument is supplied, set the mark to that position.
 </p>
 </dd>
-<dt id='index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029'><span><code>exchange-point-and-mark (C-x C-x)</code><a href='#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Swap the point with the mark.  The current cursor position is set to
-the saved position, and the old cursor position is saved as the mark.
+<dt><a id="index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"></a><span><code class="code">exchange-point-and-mark (C-x C-x)</code><a class="copiable-link" href="#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"> &para;</a></span></dt>
+<dd><p>Swap the point with the mark.
+Set the current cursor position to the saved position,
+then set the mark to the old cursor position.
 </p>
 </dd>
-<dt id='index-character_002dsearch-_0028C_002d_005d_0029'><span><code>character-search (C-])</code><a href='#index-character_002dsearch-_0028C_002d_005d_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A character is read and point is moved to the next occurrence of that
-character.  A negative argument searches for previous occurrences.
+<dt><a id="index-character_002dsearch-_0028C_002d_005d_0029"></a><span><code class="code">character-search (C-])</code><a class="copiable-link" href="#index-character_002dsearch-_0028C_002d_005d_0029"> &para;</a></span></dt>
+<dd><p>Read a character and move point to the next occurrence of that character.
+A negative argument searches for previous occurrences.
 </p>
 </dd>
-<dt id='index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029'><span><code>character-search-backward (M-C-])</code><a href='#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>A character is read and point is moved to the previous occurrence
-of that character.  A negative argument searches for subsequent
-occurrences.
+<dt><a id="index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"></a><span><code class="code">character-search-backward (M-C-])</code><a class="copiable-link" href="#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"> &para;</a></span></dt>
+<dd><p>Read a character and move point to the previous occurrence of that character.
+A negative argument searches for subsequent occurrences.
 </p>
 </dd>
-<dt id='index-skip_002dcsi_002dsequence-_0028_0029'><span><code>skip-csi-sequence ()</code><a href='#index-skip_002dcsi_002dsequence-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-skip_002dcsi_002dsequence-_0028_0029"></a><span><code class="code">skip-csi-sequence ()</code><a class="copiable-link" href="#index-skip_002dcsi_002dsequence-_0028_0029"> &para;</a></span></dt>
 <dd><p>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
-bound to &quot;\e[&quot;, keys producing such sequences will have no effect
-unless explicitly bound to a Readline command, instead of inserting
-stray characters into the editing buffer.  This is unbound by default,
-but usually bound to ESC-[.
-</p>
-</dd>
-<dt id='index-insert_002dcomment-_0028M_002d_0023_0029'><span><code>insert-comment (M-#)</code><a href='#index-insert_002dcomment-_0028M_002d_0023_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Without a numeric argument, the value of the <code>comment-begin</code>
-variable is inserted at the beginning of the current line.
+defined for keys like Home and End.
+CSI sequences begin with a Control Sequence Indicator (CSI), usually
+<kbd class="kbd">ESC [</kbd>.
+If this sequence is bound to &quot;\e[&quot;,
+keys producing CSI sequences have no effect
+unless explicitly bound to a Readline command,
+instead of inserting stray characters into the editing buffer.
+This is unbound by default, but usually bound to
+<kbd class="kbd">ESC [</kbd>.
+</p>
+</dd>
+<dt><a id="index-insert_002dcomment-_0028M_002d_0023_0029"></a><span><code class="code">insert-comment (M-#)</code><a class="copiable-link" href="#index-insert_002dcomment-_0028M_002d_0023_0029"> &para;</a></span></dt>
+<dd><p>Without a numeric argument, insert the value of the <code class="code">comment-begin</code>
+variable at the beginning of the current line.
 If a numeric argument is supplied, this command acts as a toggle:  if
 the characters at the beginning of the line do not match the value
-of <code>comment-begin</code>, the value is inserted, otherwise
-the characters in <code>comment-begin</code> are deleted from the beginning of
-the line.
+of <code class="code">comment-begin</code>, insert the value; otherwise delete
+the characters in <code class="code">comment-begin</code> from the beginning of the line.
 In either case, the line is accepted as if a newline had been typed.
 </p>
 </dd>
-<dt id='index-dump_002dfunctions-_0028_0029'><span><code>dump-functions ()</code><a href='#index-dump_002dfunctions-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Print all of the functions and their key bindings to the
-Readline output stream.  If a numeric argument is supplied,
+<dt><a id="index-dump_002dfunctions-_0028_0029"></a><span><code class="code">dump-functions ()</code><a class="copiable-link" href="#index-dump_002dfunctions-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
+of an <var class="var">inputrc</var> file.
+This command is unbound by default.
 </p>
 </dd>
-<dt id='index-dump_002dvariables-_0028_0029'><span><code>dump-variables ()</code><a href='#index-dump_002dvariables-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>Print all of the settable variables and their values to the
-Readline output stream.  If a numeric argument is supplied,
+<dt><a id="index-dump_002dvariables-_0028_0029"></a><span><code class="code">dump-variables ()</code><a class="copiable-link" href="#index-dump_002dvariables-_0028_0029"> &para;</a></span></dt>
+<dd><p>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.
+of an <var class="var">inputrc</var> file.
+This command is unbound by default.
 </p>
 </dd>
-<dt id='index-dump_002dmacros-_0028_0029'><span><code>dump-macros ()</code><a href='#index-dump_002dmacros-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dt><a id="index-dump_002dmacros-_0028_0029"></a><span><code class="code">dump-macros ()</code><a class="copiable-link" href="#index-dump_002dmacros-_0028_0029"> &para;</a></span></dt>
 <dd><p>Print all of the Readline key sequences bound to macros and the
-strings they output.  If a numeric argument is supplied,
+strings they output
+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.
+of an <var class="var">inputrc</var> file.
+This command is unbound by default.
+</p>
+</dd>
+<dt><a id="index-execute_002dnamed_002dcommand-_0028M_002dx_0029"></a><span><code class="code">execute-named-command (M-x)</code><a class="copiable-link" href="#index-execute_002dnamed_002dcommand-_0028M_002dx_0029"> &para;</a></span></dt>
+<dd><p>Read a bindable Readline command name from the input and execute the
+function to which it&rsquo;s bound, as if the key sequence to which it was
+bound appeared in the input.
+If this function is supplied with a numeric argument, it passes that
+argument to the function it executes.
 </p>
 
 </dd>
-<dt id='index-emacs_002dediting_002dmode-_0028C_002de_0029'><span><code>emacs-editing-mode (C-e)</code><a href='#index-emacs_002dediting_002dmode-_0028C_002de_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When in <code>vi</code> command mode, this causes a switch to <code>emacs</code>
+<dt><a id="index-emacs_002dediting_002dmode-_0028C_002de_0029"></a><span><code class="code">emacs-editing-mode (C-e)</code><a class="copiable-link" href="#index-emacs_002dediting_002dmode-_0028C_002de_0029"> &para;</a></span></dt>
+<dd><p>When in <code class="code">vi</code> command mode, this causes a switch to <code class="code">emacs</code>
 editing mode.
 </p>
 </dd>
-<dt id='index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029'><span><code>vi-editing-mode (M-C-j)</code><a href='#index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029' class='copiable-anchor'> &para;</a></span></dt>
-<dd><p>When in <code>emacs</code> editing mode, this causes a switch to <code>vi</code>
+<dt><a id="index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029"></a><span><code class="code">vi-editing-mode (M-C-j)</code><a class="copiable-link" href="#index-vi_002dediting_002dmode-_0028M_002dC_002dj_0029"> &para;</a></span></dt>
+<dd><p>When in <code class="code">emacs</code> editing mode, this causes a switch to <code class="code">vi</code>
 editing mode.
 </p>
 
@@ -2016,57 +2194,58 @@ editing mode.
 <hr>
 </div>
 </div>
-<div class="section" id="Readline-vi-Mode">
-<div class="header">
+<div class="section-level-extent" id="Readline-vi-Mode">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Bindable-Readline-Commands" accesskey="p" rel="prev">Bindable Readline Commands</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="Readline-vi-Mode-1"></span><h3 class="section">1.5 Readline vi Mode</h3>
+<h3 class="section" id="Readline-vi-Mode-1"><span>1.5 Readline vi Mode<a class="copiable-link" href="#Readline-vi-Mode-1"> &para;</a></span></h3>
 
-<p>While the Readline library does not have a full set of <code>vi</code>
+<p>While the Readline library does not have a full set of <code class="code">vi</code>
 editing functions, it does contain enough to allow simple editing
-of the line.  The Readline <code>vi</code> mode behaves as specified in
-the <small>POSIX</small> standard.
+of the line.
+The Readline <code class="code">vi</code> mode behaves as specified in the
+<code class="code">sh</code> description in the <small class="sc">POSIX</small> standard.
 </p>
-<p>In order to switch interactively between <code>emacs</code> and <code>vi</code>
-editing modes, use the command <kbd>M-C-j</kbd> (bound to emacs-editing-mode
-when in <code>vi</code> mode and to vi-editing-mode in <code>emacs</code> mode).
-The Readline default is <code>emacs</code> mode.
+<p>In order to switch interactively between <code class="code">emacs</code> and <code class="code">vi</code>
+editing modes, use the command <kbd class="kbd">M-C-j</kbd> (bound to emacs-editing-mode
+when in <code class="code">vi</code> mode and to vi-editing-mode in <code class="code">emacs</code> mode).
+The Readline default is <code class="code">emacs</code> mode.
 </p>
-<p>When you enter a line in <code>vi</code> mode, you are already placed in
-&lsquo;insertion&rsquo; mode, as if you had typed an &lsquo;<samp>i</samp>&rsquo;.  Pressing <tt class="key">ESC</tt>
+<p>When you enter a line in <code class="code">vi</code> mode, you are already placed in
+&lsquo;insertion&rsquo; mode, as if you had typed an &lsquo;<samp class="samp">i</samp>&rsquo;.  Pressing <kbd class="key">ESC</kbd>
 switches you into &lsquo;command&rsquo; mode, where you can edit the text of the
-line with the standard <code>vi</code> movement keys, move to previous
-history lines with &lsquo;<samp>k</samp>&rsquo; and subsequent lines with &lsquo;<samp>j</samp>&rsquo;, and
+line with the standard <code class="code">vi</code> movement keys, move to previous
+history lines with &lsquo;<samp class="samp">k</samp>&rsquo; and subsequent lines with &lsquo;<samp class="samp">j</samp>&rsquo;, and
 so forth.
 </p>
 
 <hr>
 </div>
 </div>
-<div class="appendix" id="GNU-Free-Documentation-License">
-<div class="header">
+<div class="appendix-level-extent" id="GNU-Free-Documentation-License">
+<div class="nav-panel">
 <p>
 Previous: <a href="#Command-Line-Editing" accesskey="p" rel="prev">Command Line Editing</a>, Up: <a href="#Top" accesskey="u" rel="up">GNU Readline Library</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
 </div>
-<span id="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix A GNU Free Documentation License</h2>
+<h2 class="appendix" id="GNU-Free-Documentation-License-1"><span>Appendix A GNU Free Documentation License<a class="copiable-link" href="#GNU-Free-Documentation-License-1"> &para;</a></span></h2>
 
-<div align="center">Version 1.3, 3 November 2008
+<div class="center">Version 1.3, 3 November 2008
 </div>
 
 <div class="display">
-<pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-<a href="http://fsf.org/">http://fsf.org/</a>
+<pre class="display-preformatted">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+<a class="uref" href="http://fsf.org/">http://fsf.org/</a>
 
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
 </pre></div>
 
-<ol start="0">
+<ol class="enumerate" start="0">
 <li> PREAMBLE
 
 <p>The purpose of this License is to make a manual, textbook, or other
-functional and useful document <em>free</em> in the sense of freedom: to
+functional and useful document <em class="dfn">free</em> in the sense of freedom: to
 assure everyone the effective freedom to copy and redistribute it,
 with or without modifying it, either commercially or noncommercially.
 Secondarily, this License preserves for the author and publisher a way
@@ -2140,16 +2319,16 @@ An image format is not Transparent if used for any substantial amount
 of text.  A copy that is not &ldquo;Transparent&rdquo; is called &ldquo;Opaque&rdquo;.
 </p>
 <p>Examples of suitable formats for Transparent copies include plain
-<small>ASCII</small> without markup, Texinfo input format, LaTeX input
-format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
-<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> designed for human modification.  Examples
-of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
-<acronym>JPG</acronym>.  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, <acronym>SGML</acronym> or
-<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
-not generally available, and the machine-generated <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> produced by some word processors for
+<small class="sc">ASCII</small> without markup, Texinfo input format, LaTeX input
+format, <abbr class="acronym">SGML</abbr> or <abbr class="acronym">XML</abbr> using a publicly available
+<abbr class="acronym">DTD</abbr>, and standard-conforming simple <abbr class="acronym">HTML</abbr>,
+PostScript or <abbr class="acronym">PDF</abbr> designed for human modification.  Examples
+of transparent image formats include <abbr class="acronym">PNG</abbr>, <abbr class="acronym">XCF</abbr> and
+<abbr class="acronym">JPG</abbr>.  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, <abbr class="acronym">SGML</abbr> or
+<abbr class="acronym">XML</abbr> for which the <abbr class="acronym">DTD</abbr> and/or processing tools are
+not generally available, and the machine-generated <abbr class="acronym">HTML</abbr>,
+PostScript or <abbr class="acronym">PDF</abbr> produced by some word processors for
 output purposes only.
 </p>
 <p>The &ldquo;Title Page&rdquo; means, for a printed book, the title page itself,
@@ -2238,7 +2417,7 @@ Version filling the role of the Document, thus licensing distribution
 and modification of the Modified Version to whoever possesses a copy
 of it.  In addition, you must do these things in the Modified Version:
 </p>
-<ol type="A" start="1">
+<ol class="enumerate" type="A" start="1">
 <li> Use in the Title Page (and on the covers, if any) a title distinct
 from that of the Document, and from those of previous versions
 (which should, if there were any, be listed in the History section
@@ -2438,7 +2617,7 @@ not give you any rights to use it.
 of the GNU Free Documentation License from time to time.  Such new
 versions will be similar in spirit to the present version, but may
 differ in detail to address new problems or concerns.  See
-<a href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
+<a class="uref" href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</a>.
 </p>
 <p>Each version of the License is given a distinguishing version number.
 If the Document specifies that a particular numbered version of this
@@ -2484,30 +2663,30 @@ provided the MMC is eligible for relicensing.
 </p>
 </li></ol>
 
-<span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
+<h3 class="heading" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"><span>ADDENDUM: How to use this License for your documents<a class="copiable-link" href="#ADDENDUM_003a-How-to-use-this-License-for-your-documents"> &para;</a></span></h3>
 
 <p>To use this License in a document you have written, include a copy of
 the License in the document and put the following copyright and
 license notices just after the title page:
 </p>
-<div class="example">
-<pre class="example">  Copyright (C)  <var>year</var>  <var>your name</var>.
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted">  Copyright (C)  <var class="var">year</var>  <var class="var">your name</var>.
   Permission is granted to copy, distribute and/or modify this document
   under the terms of the GNU Free Documentation License, Version 1.3
   or any later version published by the Free Software Foundation;
   with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   Texts.  A copy of the license is included in the section entitled ``GNU
   Free Documentation License''.
-</pre></div>
+</pre></div></div>
 
 <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
 replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
 </p>
-<div class="example">
-<pre class="example">    with the Invariant Sections being <var>list their titles</var>, with
-    the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
-    being <var>list</var>.
-</pre></div>
+<div class="example smallexample">
+<div class="group"><pre class="example-preformatted">    with the Invariant Sections being <var class="var">list their titles</var>, with
+    the Front-Cover Texts being <var class="var">list</var>, and with the Back-Cover Texts
+    being <var class="var">list</var>.
+</pre></div></div>
 
 <p>If you have Invariant Sections without Cover Texts, or some other
 combination of the three, merge those two alternatives to suit the
index 6bf1b4fef9db7c27ebc0928ac8ea66ad85c90004..093ecce00d90f34f0d3dde7d8ab48eb12a2112b6 100644 (file)
@@ -1,12 +1,12 @@
-This is rluserman.info, produced by makeinfo version 6.8 from
+This is rluserman.info, produced by makeinfo version 7.1 from
 rluserman.texi.
 
 This manual describes the end user interface of the GNU Readline Library
-(version 8.2, 19 September 2022), a library which aids in the
-consistency of user interface across discrete programs which provide a
-command line interface.
+(version 8.3, 30 December 2024), a library which aids in the consistency
+of user interface across discrete programs which provide a command line
+interface.
 
-   Copyright (C) 1988-2022 Free Software Foundation, Inc.
+   Copyright © 1988-2025 Free Software Foundation, Inc.
 
      Permission is granted to copy, distribute and/or modify this
      document under the terms of the GNU Free Documentation License,
@@ -61,33 +61,46 @@ File: rluserman.info,  Node: Introduction and Notation,  Next: Readline Interact
 1.1 Introduction to Line Editing
 ================================
 
-The following paragraphs describe the notation used to represent
-keystrokes.
+The following paragraphs use Emacs style to describe the notation used
+to represent keystrokes.
 
-   The text 'C-k' is read as 'Control-K' and describes the character
+   The text ‘C-k’ is read as 'Control-K' and describes the character
 produced when the <k> key is pressed while the Control key is depressed.
 
-   The text 'M-k' is read as 'Meta-K' and describes the character
+   The text ‘M-k’ is read as 'Meta-K' and describes the character
 produced when the Meta key (if you have one) is depressed, and the <k>
-key is pressed.  The Meta key is labeled <ALT> on many keyboards.  On
-keyboards with two keys labeled <ALT> (usually to either side of the
-space bar), the <ALT> on the left side is generally set to work as a
-Meta key.  The <ALT> key on the right may also be configured to work as
-a Meta key or may be configured as some other modifier, such as a
+key is pressed (a “meta character”), then both are released.  The Meta
+key is labeled <ALT> or <Option> on many keyboards.  On keyboards with
+two keys labeled <ALT> (usually to either side of the space bar), the
+<ALT> on the left side is generally set to work as a Meta key.  One of
+the <ALT> keys may also be configured as some other modifier, such as a
 Compose key for typing accented characters.
 
+   On some keyboards, the Meta key modifier produces characters with the
+eighth bit (0200) set.  You can use the ‘enable-meta-key’ variable to
+control whether or not it does this, if the keyboard allows it.  On many
+others, the terminal or terminal emulator converts the metafied key to a
+key sequence beginning with <ESC> as described in the next paragraph.
+
    If you do not have a Meta or <ALT> key, or another key working as a
-Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>.  Either process is known as "metafying"
-the <k> key.
+Meta key, you can generally achieve the latter effect by typing <ESC>
+_first_, and then typing <k>.  The <ESC> character is known as the “meta
+prefix”).
+
+   Either process is known as “metafying” the <k> key.
+
+   If your Meta key produces a key sequence with the <ESC> meta prefix,
+you can make ‘M-key’ key bindings you specify (see ‘Key Bindings’ in
+*note Readline Init File Syntax::) do the same thing by setting the
+‘force-meta-prefix’ variable.
 
-   The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
+   The text ‘M-C-k’ is read as 'Meta-Control-k' and describes the
+character produced by metafying ‘C-k’.
 
    In addition, several keys have their own names.  Specifically, <DEL>,
 <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all stand for themselves when seen
 in this text, or in an init file (*note Readline Init File::).  If your
-keyboard lacks a <LFD> key, typing <C-j> will produce the desired
+keyboard lacks a <LFD> key, typing <C-j> will output the appropriate
 character.  The <RET> key may be labeled <Return> or <Enter> on some
 keyboards.
 
@@ -129,34 +142,34 @@ character to back up and delete the mistyped character.
 
    Sometimes you may mistype a character, and not notice the error until
 you have typed several other characters.  In that case, you can type
-'C-b' to move the cursor to the left, and then correct your mistake.
-Afterwards, you can move the cursor to the right with 'C-f'.
+‘C-b’ to move the cursor to the left, and then correct your mistake.
+Afterwards, you can move the cursor to the right with ‘C-f’.
 
    When you add text in the middle of a line, you will notice that
 characters to the right of the cursor are 'pushed over' to make room for
 the text that you have inserted.  Likewise, when you delete text behind
 the cursor, characters to the right of the cursor are 'pulled back' to
-fill in the blank space created by the removal of the text.  A list of
-the bare essentials for editing the text of an input line follows.
+fill in the blank space created by the removal of the text.  These are
+the bare essentials for editing the text of an input line:
 
-'C-b'
+‘C-b’
      Move back one character.
-'C-f'
+‘C-f’
      Move forward one character.
 <DEL> or <Backspace>
      Delete the character to the left of the cursor.
-'C-d'
+‘C-d’
      Delete the character underneath the cursor.
 Printing characters
      Insert the character into the line at the cursor.
-'C-_' or 'C-x C-u'
+‘C-_’ or ‘C-x C-u’
      Undo the last editing command.  You can undo all the way back to an
      empty line.
 
-(Depending on your configuration, the <Backspace> key might be set to
+Depending on your configuration, the <Backspace> key might be set to
 delete the character to the left of the cursor and the <DEL> key set to
-delete the character underneath the cursor, like 'C-d', rather than the
-character to the left of the cursor.)
+delete the character underneath the cursor, like ‘C-d’, rather than the
+character to the left of the cursor.
 
 \1f
 File: rluserman.info,  Node: Readline Movement Commands,  Next: Readline Killing Commands,  Prev: Readline Bare Essentials,  Up: Readline Interaction
@@ -166,22 +179,22 @@ File: rluserman.info,  Node: Readline Movement Commands,  Next: Readline Killing
 
 The above table describes the most basic keystrokes that you need in
 order to do editing of the input line.  For your convenience, many other
-commands have been added in addition to 'C-b', 'C-f', 'C-d', and <DEL>.
-Here are some commands for moving more rapidly about the line.
+commands are available in addition to ‘C-b’, ‘C-f’, ‘C-d’, and <DEL>.
+Here are some commands for moving more rapidly within the line.
 
-'C-a'
+‘C-a’
      Move to the start of the line.
-'C-e'
+‘C-e’
      Move to the end of the line.
-'M-f'
+‘M-f’
      Move forward a word, where a word is composed of letters and
      digits.
-'M-b'
+‘M-b’
      Move backward a word.
-'C-l'
+‘C-l’
      Clear the screen, reprinting the current line at the top.
 
-   Notice how 'C-f' moves forward a character, while 'M-f' moves forward
+   Notice how ‘C-f’ moves forward a character, while ‘M-f’ moves forward
 a word.  It is a loose convention that control keystrokes operate on
 characters while meta keystrokes operate on words.
 
@@ -191,15 +204,15 @@ File: rluserman.info,  Node: Readline Killing Commands,  Next: Readline Argument
 1.2.3 Readline Killing Commands
 -------------------------------
 
-"Killing" text means to delete the text from the line, but to save it
-away for later use, usually by "yanking" (re-inserting) it back into the
+“Killing” text means to delete the text from the line, but to save it
+away for later use, usually by “yanking” (re-inserting) it back into the
 line.  ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.)
 
    If the description for a command says that it 'kills' text, then you
 can be sure that you can get the text back in a different (or the same)
 place later.
 
-   When you use a kill command, the text is saved in a "kill-ring".  Any
+   When you use a kill command, the text is saved in a “kill-ring”.  Any
 number of consecutive kills save all of the killed text together, so
 that when you yank it back, you get it all.  The kill ring is not line
 specific; the text that you killed on a previously typed line is
@@ -207,34 +220,35 @@ available to be yanked back later, when you are typing another line.
 
    Here is the list of commands for killing text.
 
-'C-k'
+‘C-k’
      Kill the text from the current cursor position to the end of the
      line.
 
-'M-d'
+‘M-d’
      Kill from the cursor to the end of the current word, or, if between
      words, to the end of the next word.  Word boundaries are the same
-     as those used by 'M-f'.
+     as those used by ‘M-f’.
 
-'M-<DEL>'
+‘M-<DEL>’
      Kill from the cursor to the start of the current word, or, if
      between words, to the start of the previous word.  Word boundaries
-     are the same as those used by 'M-b'.
+     are the same as those used by ‘M-b’.
 
-'C-w'
+‘C-w’
      Kill from the cursor to the previous whitespace.  This is different
-     than 'M-<DEL>' because the word boundaries differ.
+     than ‘M-<DEL>’ because the word boundaries differ.
 
-   Here is how to "yank" the text back into the line.  Yanking means to
-copy the most-recently-killed text from the kill buffer.
+   Here is how to “yank” the text back into the line.  Yanking means to
+copy the most-recently-killed text from the kill buffer into the line at
+the current cursor position.
 
-'C-y'
+‘C-y’
      Yank the most recently killed text back into the buffer at the
      cursor.
 
-'M-y'
+‘M-y’
      Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'C-y' or 'M-y'.
+     if the prior command is ‘C-y’ or ‘M-y’.
 
 \1f
 File: rluserman.info,  Node: Readline Arguments,  Next: Searching,  Prev: Readline Killing Commands,  Up: Readline Interaction
@@ -247,14 +261,14 @@ argument acts as a repeat count, other times it is the sign of the
 argument that is significant.  If you pass a negative argument to a
 command which normally acts in a forward direction, that command will
 act in a backward direction.  For example, to kill text back to the
-start of the line, you might type 'M-- C-k'.
+start of the line, you might type ‘M-- C-k’.
 
    The general way to pass numeric arguments to a command is to type
 meta digits before the command.  If the first 'digit' typed is a minus
-sign ('-'), then the sign of the argument will be negative.  Once you
+sign (‘-’), then the sign of the argument will be negative.  Once you
 have typed one meta digit to get the argument started, you can type the
 remainder of the digits, and then the command.  For example, to give the
-'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will
+‘C-d’ command an argument of 10, you could type ‘M-1 0 C-d’, which will
 delete the next ten characters on the input line.
 
 \1f
@@ -265,38 +279,38 @@ File: rluserman.info,  Node: Searching,  Prev: Readline Arguments,  Up: Readline
 
 Readline provides commands for searching through the command history for
 lines containing a specified string.  There are two search modes:
-"incremental" and "non-incremental".
+“incremental” and “non-incremental”.
 
    Incremental searches begin before the user has finished typing the
 search string.  As each character of the search string is typed,
 Readline displays the next entry from the history matching the string
 typed so far.  An incremental search requires only as many characters as
-needed to find the desired history entry.  To search backward in the
-history for a particular string, type 'C-r'.  Typing 'C-s' searches
-forward through the history.  The characters present in the value of the
-'isearch-terminators' variable are used to terminate an incremental
-search.  If that variable has not been assigned a value, the <ESC> and
-'C-J' characters will terminate an incremental search.  'C-g' will abort
-an incremental search and restore the original line.  When the search is
-terminated, the history entry containing the search string becomes the
-current line.
-
-   To find other matching entries in the history list, type 'C-r' or
-'C-s' as appropriate.  This will search backward or forward in the
-history for the next entry matching the search string typed so far.  Any
-other key sequence bound to a Readline command will terminate the search
-and execute that command.  For instance, a <RET> will terminate the
-search and accept the line, thereby executing the command from the
-history list.  A movement command will terminate the search, make the
-last line found the current line, and begin editing.
-
-   Readline remembers the last incremental search string.  If two 'C-r's
+needed to find the desired history entry.  When using emacs editing
+mode, type ‘C-r’ to search backward in the history for a particular
+string.  Typing ‘C-s’ searches forward through the history.  The
+characters present in the value of the ‘isearch-terminators’ variable
+are used to terminate an incremental search.  If that variable has not
+been assigned a value, the <ESC> and ‘C-j’ characters terminate an
+incremental search.  ‘C-g’ aborts an incremental search and restores the
+original line.  When the search is terminated, the history entry
+containing the search string becomes the current line.
+
+   To find other matching entries in the history list, type ‘C-r’ or
+‘C-s’ as appropriate.  This searches backward or forward in the history
+for the next entry matching the search string typed so far.  Any other
+key sequence bound to a Readline command terminates the search and
+executes that command.  For instance, a <RET> terminates the search and
+accepts the line, thereby executing the command from the history list.
+A movement command will terminate the search, make the last line found
+the current line, and begin editing.
+
+   Readline remembers the last incremental search string.  If two ‘C-r’s
 are typed without any intervening characters defining a new search
-string, any remembered search string is used.
+string, Readline uses any remembered search string.
 
    Non-incremental searches read the entire search string before
-starting to search for matching history lines.  The search string may be
-typed by the user or be part of the contents of the current line.
+starting to search for matching history entries.  The search string may
+be typed by the user or be part of the contents of the current line.
 
 \1f
 File: rluserman.info,  Node: Readline Init File,  Next: Bindable Readline Commands,  Prev: Readline Interaction,  Up: Command Line Editing
@@ -307,24 +321,22 @@ File: rluserman.info,  Node: Readline Init File,  Next: Bindable Readline Comman
 Although the Readline library comes with a set of Emacs-like keybindings
 installed by default, it is possible to use a different set of
 keybindings.  Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in their home
+putting commands in an “inputrc” file, conventionally in their home
 directory.  The name of this file is taken from the value of the
-environment variable 'INPUTRC'.  If that variable is unset, the default
-is '~/.inputrc'.  If that file does not exist or cannot be read, the
-ultimate default is '/etc/inputrc'.
+environment variable ‘INPUTRC’.  If that variable is unset, the default
+is ‘~/.inputrc’.  If that file does not exist or cannot be read,
+Readline looks for ‘/etc/inputrc’.
 
-   When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
+   When a program that uses the Readline library starts up, Readline
+reads the init file and sets any variables and key bindings it contains.
 
-   In addition, the 'C-x C-r' command re-reads this init file, thus
+   In addition, the ‘C-x C-r’ command re-reads this init file, thus
 incorporating any changes that you might have made to it.
 
 * Menu:
 
 * Readline Init File Syntax::  Syntax for the commands in the inputrc file.
-
 * Conditional Init Constructs::        Conditional key bindings in the inputrc file.
-
 * Sample Init File::           An example inputrc file.
 
 \1f
@@ -334,20 +346,20 @@ File: rluserman.info,  Node: Readline Init File Syntax,  Next: Conditional Init
 -------------------------------
 
 There are only a few basic constructs allowed in the Readline init file.
-Blank lines are ignored.  Lines beginning with a '#' are comments.
-Lines beginning with a '$' indicate conditional constructs (*note
+Blank lines are ignored.  Lines beginning with a ‘#’ are comments.
+Lines beginning with a ‘$’ indicate conditional constructs (*note
 Conditional Init Constructs::).  Other lines denote variable settings
 and key bindings.
 
 Variable Settings
      You can modify the run-time behavior of Readline by altering the
-     values of variables in Readline using the 'set' command within the
+     values of variables in Readline using the ‘set’ command within the
      init file.  The syntax is simple:
 
           set VARIABLE VALUE
 
      Here, for example, is how to change from the default Emacs-like key
-     binding to use 'vi' line editing commands:
+     binding to use ‘vi’ line editing commands:
 
           set editing-mode vi
 
@@ -361,10 +373,10 @@ Variable Settings
      A great deal of run-time behavior is changeable with the following
      variables.
 
-     'active-region-start-color'
+     ‘active-region-start-color’
           A string variable that controls the text color and background
           when displaying the text in the active region (see the
-          description of 'enable-active-region' below).  This string
+          description of ‘enable-active-region’ below).  This string
           must not take up any physical character positions on the
           display, so it should consist only of terminal escape
           sequences.  It is output to the terminal before displaying the
@@ -372,11 +384,11 @@ Variable Settings
           default value whenever the terminal type changes.  The default
           value is the string that puts the terminal in standout mode,
           as obtained from the terminal's terminfo description.  A
-          sample value might be '\e[01;33m'.
+          sample value might be ‘\e[01;33m’.
 
-     'active-region-end-color'
+     ‘active-region-end-color’
           A string variable that "undoes" the effects of
-          'active-region-start-color' and restores "normal" terminal
+          ‘active-region-start-color’ and restores "normal" terminal
           display appearance after displaying text in the active region.
           This string must not take up any physical character positions
           on the display, so it should consist only of terminal escape
@@ -385,333 +397,365 @@ Variable Settings
           default value whenever the terminal type changes.  The default
           value is the string that restores the terminal from standout
           mode, as obtained from the terminal's terminfo description.  A
-          sample value might be '\e[0m'.
+          sample value might be ‘\e[0m’.
 
-     'bell-style'
+     ‘bell-style’
           Controls what happens when Readline wants to ring the terminal
-          bell.  If set to 'none', Readline never rings the bell.  If
-          set to 'visible', Readline uses a visible bell if one is
-          available.  If set to 'audible' (the default), Readline
+          bell.  If set to ‘none’, Readline never rings the bell.  If
+          set to ‘visible’, Readline uses a visible bell if one is
+          available.  If set to ‘audible’ (the default), Readline
           attempts to ring the terminal's bell.
 
-     'bind-tty-special-chars'
-          If set to 'on' (the default), Readline attempts to bind the
-          control characters treated specially by the kernel's terminal
-          driver to their Readline equivalents.
+     ‘bind-tty-special-chars’
+          If set to ‘on’ (the default), Readline attempts to bind the
+          control characters that are treated specially by the kernel's
+          terminal driver to their Readline equivalents.  These override
+          the default Readline bindings described here.  Type ‘stty -a’
+          at a Bash prompt to see your current terminal settings,
+          including the special control characters (usually ‘cchars’).
 
-     'blink-matching-paren'
-          If set to 'on', Readline attempts to briefly move the cursor
+     ‘blink-matching-paren’
+          If set to ‘on’, Readline attempts to briefly move the cursor
           to an opening parenthesis when a closing parenthesis is
-          inserted.  The default is 'off'.
+          inserted.  The default is ‘off’.
 
-     'colored-completion-prefix'
-          If set to 'on', when listing completions, Readline displays
+     ‘colored-completion-prefix’
+          If set to ‘on’, when listing completions, Readline displays
           the common prefix of the set of possible completions using a
           different color.  The color definitions are taken from the
-          value of the 'LS_COLORS' environment variable.  If there is a
-          color definition in 'LS_COLORS' for the custom suffix
-          'readline-colored-completion-prefix', Readline uses this color
+          value of the ‘LS_COLORS’ environment variable.  If there is a
+          color definition in ‘LS_COLORS’ for the custom suffix
+          ‘readline-colored-completion-prefix’, Readline uses this color
           for the common prefix instead of its default.  The default is
-          'off'.
+          ‘off’.
 
-     'colored-stats'
-          If set to 'on', Readline displays possible completions using
+     ‘colored-stats’
+          If set to ‘on’, Readline displays possible completions using
           different colors to indicate their file type.  The color
-          definitions are taken from the value of the 'LS_COLORS'
-          environment variable.  The default is 'off'.
+          definitions are taken from the value of the ‘LS_COLORS’
+          environment variable.  The default is ‘off’.
 
-     'comment-begin'
-          The string to insert at the beginning of the line when the
-          'insert-comment' command is executed.  The default value is
-          '"#"'.
+     ‘comment-begin’
+          The string to insert at the beginning of the line by the
+          ‘insert-comment’ command.  The default value is ‘"#"’.
 
-     'completion-display-width'
+     ‘completion-display-width’
           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.
+          value of 0 causes matches to be displayed one per line.  The
+          default value is -1.
 
-     'completion-ignore-case'
-          If set to 'on', Readline performs filename matching and
+     ‘completion-ignore-case’
+          If set to ‘on’, Readline performs filename matching and
           completion in a case-insensitive fashion.  The default value
-          is 'off'.
+          is ‘off’.
 
-     'completion-map-case'
-          If set to 'on', and COMPLETION-IGNORE-CASE is enabled,
-          Readline treats hyphens ('-') and underscores ('_') as
+     ‘completion-map-case’
+          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.  The default value is 'off'.
-
-     'completion-prefix-display-length'
-          The length in characters of the common prefix of a list of
-          possible completions that is displayed without modification.
-          When set to a value greater than zero, common prefixes longer
-          than this value are replaced with an ellipsis when displaying
-          possible completions.
-
-     'completion-query-items'
+          and completion.  The default value is ‘off’.
+
+     ‘completion-prefix-display-length’
+          The maximum length in characters of the common prefix of a
+          list of possible completions that is displayed without
+          modification.  When set to a value greater than zero, Readline
+          replaces common prefixes longer than this value with an
+          ellipsis when displaying possible completions.  If a
+          completion begins with a period, and Readline is completing
+          filenames, it uses three underscores instead of an ellipsis.
+
+     ‘completion-query-items’
           The number of possible completions that determines when the
           user is asked whether the list of possibilities should be
           displayed.  If the number of possible completions is greater
-          than or equal to this value, Readline will ask whether or not
-          the user wishes to view them; otherwise, they are simply
-          listed.  This variable must be set to an integer value greater
-          than or equal to zero.  A zero value means Readline should
-          never ask; negative values are treated as zero.  The default
-          limit is '100'.
-
-     'convert-meta'
-          If set to 'on', Readline will convert characters with the
-          eighth bit set to an ASCII key sequence by stripping the
-          eighth bit and prefixing an <ESC> character, converting them
-          to a meta-prefixed key sequence.  The default value is 'on',
-          but will be set to 'off' if the locale is one that contains
-          eight-bit characters.  This variable is dependent on the
-          'LC_CTYPE' locale category, and may change if the locale is
-          changed.
-
-     'disable-completion'
-          If set to 'On', Readline will inhibit word completion.
-          Completion characters will be inserted into the line as if
-          they had been mapped to 'self-insert'.  The default is 'off'.
-
-     'echo-control-characters'
-          When set to 'on', on operating systems that indicate they
+          than or equal to this value, Readline asks whether or not the
+          user wishes to view them; otherwise, Readline simply lists the
+          completions.  This variable must be set to an integer value
+          greater than or equal to zero.  A zero value means Readline
+          should never ask; negative values are treated as zero.  The
+          default limit is ‘100’.
+
+     ‘convert-meta’
+          If set to ‘on’, Readline converts characters it reads that
+          have the eighth bit set to an ASCII key sequence by clearing
+          the eighth bit and prefixing an <ESC> character, converting
+          them to a meta-prefixed key sequence.  The default value is
+          ‘on’, but Readline sets it to ‘off’ if the locale contains
+          characters whose encodings may include bytes with the eighth
+          bit set.  This variable is dependent on the ‘LC_CTYPE’ locale
+          category, and may change if the locale changes.  This variable
+          also affects key bindings; see the description of
+          ‘force-meta-prefix’ below.
+
+     ‘disable-completion’
+          If set to ‘On’, Readline inhibits word completion.  Completion
+          characters are inserted into the line as if they had been
+          mapped to ‘self-insert’.  The default is ‘off’.
+
+     ‘echo-control-characters’
+          When set to ‘on’, on operating systems that indicate they
           support it, Readline echoes a character corresponding to a
-          signal generated from the keyboard.  The default is 'on'.
+          signal generated from the keyboard.  The default is ‘on’.
 
-     'editing-mode'
-          The 'editing-mode' variable controls which default set of key
-          bindings is used.  By default, Readline starts up in Emacs
-          editing mode, where the keystrokes are most similar to Emacs.
-          This variable can be set to either 'emacs' or 'vi'.
+     ‘editing-mode’
+          The ‘editing-mode’ variable controls the default set of key
+          bindings.  By default, Readline starts up in emacs editing
+          mode, where the keystrokes are most similar to Emacs.  This
+          variable can be set to either ‘emacs’ or ‘vi’.
 
-     'emacs-mode-string'
+     ‘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
+          control- prefixes and backslash escape sequences is available.
+          The ‘\1’ and ‘\2’ escapes 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-active-region'
-          The "point" is the current cursor position, and "mark" refers
-          to a saved cursor position (*note Commands For Moving::).  The
-          text between the point and mark is referred to as the
-          "region".  When this variable is set to 'On', Readline allows
-          certain commands to designate the region as "active".  When
-          the region is active, Readline highlights the text in the
-          region using the value of the 'active-region-start-color',
-          which defaults to the string that enables the terminal's
-          standout mode.  The active region shows the text inserted by
-          bracketed-paste and any matching text found by incremental and
-          non-incremental history searches.  The default is 'On'.
-
-     'enable-bracketed-paste'
-          When set to 'On', Readline configures the terminal to insert
+          control sequence into the mode string.  The default is ‘@’.
+
+     ‘enable-active-region’
+          “point” is the current cursor position, and “mark” refers to a
+          saved cursor position (*note Commands For Moving::).  The text
+          between the point and mark is referred to as the “region”.
+          When this variable is set to ‘On’, Readline allows certain
+          commands to designate the region as “active”.  When the region
+          is active, Readline highlights the text in the region using
+          the value of the ‘active-region-start-color’, which defaults
+          to the string that enables the terminal's standout mode.  The
+          active region shows the text inserted by bracketed-paste and
+          any matching text found by incremental and non-incremental
+          history searches.  The default is ‘On’.
+
+     ‘enable-bracketed-paste’
+          When set to ‘On’, Readline configures the terminal to insert
           each paste into the editing buffer as a single string of
           characters, instead of treating each character as if it had
           been read from the keyboard.  This is called putting the
-          terminal into "bracketed paste mode"; it prevents Readline
+          terminal into “bracketed paste mode”; it prevents Readline
           from executing any editing commands bound to key sequences
-          appearing in the pasted text.  The default is 'On'.
+          appearing in the pasted text.  The default is ‘On’.
 
-     'enable-keypad'
-          When set to 'on', Readline will try to enable the application
+     ‘enable-keypad’
+          When set to ‘on’, Readline tries to enable the application
           keypad when it is called.  Some systems need this to enable
-          the arrow keys.  The default is 'off'.
-
-     'enable-meta-key'
-          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.  The default is 'on'.
-
-     'expand-tilde'
-          If set to 'on', tilde expansion is performed when Readline
-          attempts word completion.  The default is 'off'.
-
-     'history-preserve-point'
-          If set to 'on', the history code attempts to place the point
+          the arrow keys.  The default is ‘off’.
+
+     ‘enable-meta-key’
+          When set to ‘on’, Readline tries 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;
+          this variable checks for the terminal capability that
+          indicates the terminal can enable and disable a mode that sets
+          the eighth bit of a character (0200) if the Meta key is held
+          down when the character is typed (a meta character).  The
+          default is ‘on’.
+
+     ‘expand-tilde’
+          If set to ‘on’, Readline attempts tilde expansion when it
+          attempts word completion.  The default is ‘off’.
+
+     ‘force-meta-prefix’
+          If set to ‘on’, Readline modifies its behavior when binding
+          key sequences containing ‘\M-’ or ‘Meta-’ (see ‘Key Bindings’
+          in *note Readline Init File Syntax::) by converting a key
+          sequence of the form ‘\M-’C or ‘Meta-’C to the two-character
+          sequence ‘ESC’ C (adding the meta prefix).  If
+          ‘force-meta-prefix’ is set to ‘off’ (the default), Readline
+          uses the value of the ‘convert-meta’ variable to determine
+          whether to perform this conversion: if ‘convert-meta’ is ‘on’,
+          Readline performs the conversion described above; if it is
+          ‘off’, Readline converts C to a meta character by setting the
+          eighth bit (0200).  The default is ‘off’.
+
+     ‘history-preserve-point’
+          If set to ‘on’, the history code attempts to place the point
           (the current cursor position) at the same location on each
-          history line retrieved with 'previous-history' or
-          'next-history'.  The default is 'off'.
+          history line retrieved with ‘previous-history’ or
+          ‘next-history’.  The default is ‘off’.
 
-     'history-size'
+     ‘history-size’
           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 number of history entries is not limited.  If an
-          attempt is made to set HISTORY-SIZE to a non-numeric value,
-          the maximum number of history entries will be set to 500.
-
-     'horizontal-scroll-mode'
-          This variable can be set to either 'on' or 'off'.  Setting it
-          to 'on' means that the text of the lines being edited will
-          scroll horizontally on a single screen line when they are
-          longer than the width of the screen, instead of wrapping onto
-          a new screen line.  This variable is automatically set to 'on'
-          for terminals of height 1.  By default, this variable is set
-          to 'off'.
-
-     'input-meta'
-          If set to 'on', Readline will enable eight-bit input (it will
-          not clear the eighth bit in the characters it reads),
+          default, the number of history entries is not limited.  If you
+          try to set HISTORY-SIZE to a non-numeric value, the maximum
+          number of history entries will be set to 500.
+
+     ‘horizontal-scroll-mode’
+          Setting this variable to ‘on’ means that the text of the lines
+          being edited will scroll horizontally on a single screen line
+          when the lines are longer than the width of the screen,
+          instead of wrapping onto a new screen line.  This variable is
+          automatically set to ‘on’ for terminals of height 1.  By
+          default, this variable is set to ‘off’.
+
+     ‘input-meta’
+          If set to ‘on’, Readline enables eight-bit input (that is, it
+          does not clear the eighth bit in the characters it reads),
           regardless of what the terminal claims it can support.  The
-          default value is 'off', but Readline will set it to 'on' if
-          the locale contains eight-bit characters.  The name
-          'meta-flag' is a synonym for this variable.  This variable is
-          dependent on the 'LC_CTYPE' locale category, and may change if
-          the locale is changed.
-
-     'isearch-terminators'
+          default value is ‘off’, but Readline sets it to ‘on’ if the
+          locale contains characters whose encodings may include bytes
+          with the eighth bit set.  This variable is dependent on the
+          ‘LC_CTYPE’ locale category, and its value may change if the
+          locale changes.  The name ‘meta-flag’ is a synonym for
+          ‘input-meta’.
+
+     ‘isearch-terminators’
           The string of characters that should terminate an incremental
           search without subsequently executing the character as a
           command (*note Searching::).  If this variable has not been
-          given a value, the characters <ESC> and 'C-J' will terminate
-          an incremental search.
+          given a value, the characters <ESC> and ‘C-j’ terminate an
+          incremental search.
 
-     'keymap'
+     ‘keymap’
           Sets Readline's idea of the current keymap for key binding
-          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'.  Applications may add
-          additional names.  The default value is 'emacs'.  The value of
-          the 'editing-mode' variable also affects the default keymap.
-
-     'keyseq-timeout'
+          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’.  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
           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.  Readline uses this value
-          to determine whether or not input is available on the current
-          input source ('rl_instream' by default).  The value is
+          additional input to complete a longer key sequence).  If
+          Readline doesn't receive any input within the timeout, it uses
+          the shorter but complete key sequence.  Readline uses this
+          value to determine whether or not input is available on the
+          current input source (‘rl_instream’ by default).  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.  The default
-          value is '500'.
-
-     'mark-directories'
-          If set to 'on', completed directory names have a slash
-          appended.  The default is 'on'.
-
-     'mark-modified-lines'
-          This variable, when set to 'on', causes Readline to display an
-          asterisk ('*') at the start of history lines which have been
-          modified.  This variable is 'off' by default.
-
-     'mark-symlinked-directories'
-          If set to 'on', completed names which are symbolic links to
-          directories have a slash appended (subject to the value of
-          'mark-directories').  The default is 'off'.
-
-     'match-hidden-files'
-          This variable, when set to 'on', causes Readline to match
-          files whose names begin with a '.' (hidden files) when
-          performing filename completion.  If set to 'off', the leading
-          '.' must be supplied by the user in the filename to be
-          completed.  This variable is 'on' by default.
-
-     'menu-complete-display-prefix'
-          If set to 'on', menu completion displays the common prefix of
+          non-numeric value, Readline waits until another key is pressed
+          to decide which key sequence to complete.  The default value
+          is ‘500’.
+
+     ‘mark-directories’
+          If set to ‘on’, completed directory names have a slash
+          appended.  The default is ‘on’.
+
+     ‘mark-modified-lines’
+          When this variable is set to ‘on’, Readline displays an
+          asterisk (‘*’) at the start of history lines which have been
+          modified.  This variable is ‘off’ by default.
+
+     ‘mark-symlinked-directories’
+          If set to ‘on’, completed names which are symbolic links to
+          directories have a slash appendedsubject to the value of
+          ‘mark-directories’.  The default is ‘off’.
+
+     ‘match-hidden-files’
+          This variable, when set to ‘on’, forces Readline to match
+          files whose names begin with a ‘.’ (hidden files) when
+          performing filename completion.  If set to ‘off’, the user
+          must include the leading ‘.’ in the filename to be completed.
+          This variable is ‘on’ by default.
+
+     ‘menu-complete-display-prefix’
+          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.  The default is 'off'.
-
-     'output-meta'
-          If set to 'on', Readline will display characters with the
-          eighth bit set directly rather than as a meta-prefixed escape
-          sequence.  The default is 'off', but Readline will set it to
-          'on' if the locale contains eight-bit characters.  This
-          variable is dependent on the 'LC_CTYPE' locale category, and
-          may change if the locale is changed.
-
-     'page-completions'
-          If set to 'on', Readline uses an internal 'more'-like pager to
-          display a screenful of possible completions at a time.  This
-          variable is 'on' by default.
-
-     'print-completions-horizontally'
-          If set to 'on', Readline will display completions with matches
+          cycling through the list.  The default is ‘off’.
+
+     ‘output-meta’
+          If set to ‘on’, Readline displays characters with the eighth
+          bit set directly rather than as a meta-prefixed escape
+          sequence.  The default is ‘off’, but Readline sets it to ‘on’
+          if the locale contains characters whose encodings may include
+          bytes with the eighth bit set.  This variable is dependent on
+          the ‘LC_CTYPE’ locale category, and its value may change if
+          the locale changes.
+
+     ‘page-completions’
+          If set to ‘on’, Readline uses an internal pager resembling
+          more(1) to display a screenful of possible completions at a
+          time.  This variable is ‘on’ by default.
+
+     ‘prefer-visible-bell’
+          See ‘bell-style’.
+
+     ‘print-completions-horizontally’
+          If set to ‘on’, Readline displays completions with matches
           sorted horizontally in alphabetical order, rather than down
-          the screen.  The default is 'off'.
+          the screen.  The default is ‘off’.
 
-     'revert-all-at-newline'
-          If set to 'on', Readline will undo all changes to history
-          lines before returning when 'accept-line' is executed.  By
+     ‘revert-all-at-newline’
+          If set to ‘on’, Readline will undo all changes to history
+          lines before returning when executing ‘accept-line’.  By
           default, history lines may be modified and retain individual
-          undo lists across calls to 'readline()'.  The default is
-          'off'.
+          undo lists across calls to ‘readline()’.  The default is
+          ‘off’.
+
+     ‘search-ignore-case’
+          If set to ‘on’, Readline performs incremental and
+          non-incremental history list searches in a case-insensitive
+          fashion.  The default value is ‘off’.
 
-     'show-all-if-ambiguous'
+     ‘show-all-if-ambiguous’
           This alters the default behavior of the completion functions.
-          If set to 'on', words which have more than one possible
+          If set to ‘on’, words which have more than one possible
           completion cause the matches to be listed immediately instead
-          of ringing the bell.  The default value is 'off'.
+          of ringing the bell.  The default value is ‘off’.
 
-     'show-all-if-unmodified'
+     ‘show-all-if-unmodified’
           This alters the default behavior of the completion functions
           in a fashion similar to SHOW-ALL-IF-AMBIGUOUS.  If set to
-          'on', words which have more than one possible completion
+          ‘on’, words which have more than one possible completion
           without any possible partial completion (the possible
           completions don't share a common prefix) cause the matches to
           be listed immediately instead of ringing the bell.  The
-          default value is 'off'.
+          default value is ‘off’.
 
-     'show-mode-in-prompt'
-          If set to 'on', add a string to the beginning of the prompt
+     ‘show-mode-in-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 (e.g.,
-          EMACS-MODE-STRING).  The default value is 'off'.
+          EMACS-MODE-STRING).  The default value is ‘off’.
 
-     'skip-completed-text'
-          If set to 'on', this alters the default completion behavior
+     ‘skip-completed-text’
+          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.  For instance, if this is enabled, attempting
-          completion when the cursor is after the 'e' in 'Makefile' will
-          result in 'Makefile' rather than 'Makefilefile', assuming
-          there is a single possible completion.  The default value is
-          'off'.
+          completion when the cursor is after the first ‘e’ in
+          ‘Makefile’ will result in ‘Makefile’ rather than
+          ‘Makefilefile’, assuming there is a single possible
+          completion.  The default value is ‘off’.
 
-     'vi-cmd-mode-string'
+     ‘vi-cmd-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
+          of meta- and control- prefixes and backslash escape sequences
+          is available.  The ‘\1’ and ‘\2’ escapes 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)'.
+          default is ‘(cmd)’.
 
-     'vi-ins-mode-string'
+     ‘vi-ins-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
+          of meta- and control- prefixes and backslash escape sequences
+          is available.  The ‘\1’ and ‘\2’ escapes 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)'.
+          default is ‘(ins)’.
 
-     'visible-stats'
-          If set to 'on', a character denoting a file's type is appended
+     ‘visible-stats’
+          If set to ‘on’, a character denoting a file's type is appended
           to the filename when listing possible completions.  The
-          default is 'off'.
+          default is ‘off’.
 
 Key Bindings
      The syntax for controlling key bindings in the init file is simple.
@@ -728,7 +772,9 @@ Key Bindings
      different ways, depending on what you find most comfortable.
 
      In addition to command names, Readline allows keys to be bound to a
-     string that is inserted when the key is pressed (a MACRO).
+     string that is inserted when the key is pressed (a MACRO).  The
+     difference between a macro and a command is that a macro is
+     enclosed in single or double quotes.
 
      KEYNAME: FUNCTION-NAME or MACRO
           KEYNAME is the name of a key spelled out in English.  For
@@ -737,81 +783,84 @@ Key Bindings
                Meta-Rubout: backward-kill-word
                Control-o: "> output"
 
-          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
+          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
-          '> output' into the line).
+          ‘> output’ into the line).
 
-          A number of symbolic character names are recognized while
-          processing this key binding syntax: DEL, ESC, ESCAPE, LFD,
-          NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB.
+          This key binding syntax recognizes a number of symbolic
+          character names: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN,
+          RUBOUT (a destructive backspace), SPACE, SPC, and TAB.
 
      "KEYSEQ": FUNCTION-NAME or MACRO
           KEYSEQ differs from KEYNAME above in that strings denoting an
           entire key sequence can be specified, by placing the key
           sequence in double quotes.  Some GNU Emacs style key escapes
-          can be used, as in the following example, but the special
-          character names are not recognized.
+          can be used, as in the following example, but none of the
+          special character names are recognized.
 
                "\C-u": universal-argument
                "\C-x\C-r": re-read-init-file
                "\e[11~": "Function Key 1"
 
-          In the above example, 'C-u' is again bound to the function
-          'universal-argument' (just as it was in the first example),
-          ''C-x' 'C-r'' is bound to the function 're-read-init-file',
-          and '<ESC> <[> <1> <1> <~>' is bound to insert the text
-          'Function Key 1'.
+          In the above example, ‘C-u’ is again bound to the function
+          ‘universal-argument’ (just as it was in the first example),
+          ‘‘C-x’ ‘C-r’’ is bound to the function ‘re-read-init-file’,
+          and ‘<ESC> <[> <1> <1> <~>’ is bound to insert the text
+          ‘Function Key 1’.
 
      The following GNU Emacs style escape sequences are available when
      specifying key sequences:
 
-     '\C-'
-          control prefix
-     '\M-'
-          meta prefix
-     '\e'
-          an escape character
-     '\\'
-          backslash
-     '\"'
-          <">, a double quotation mark
-     '\''
-          <'>, a single quote or apostrophe
+     ‘\C-’
+          A control prefix.
+     ‘\M-’
+          Adding the meta prefix or converting the following character
+          to a meta character, as described above under
+          ‘force-meta-prefix’ (see ‘Variable Settings’ in *note Readline
+          Init File Syntax::).
+     ‘\e’
+          An escape character.
+     ‘\\’
+          Backslash.
+     ‘\"’
+          <">, a double quotation mark.
+     ‘\'’
+          <'>, a single quote or apostrophe.
 
      In addition to the GNU Emacs style escape sequences, a second set
      of backslash escapes is available:
 
-     '\a'
+     ‘\a’
           alert (bell)
-     '\b'
+     ‘\b’
           backspace
-     '\d'
+     ‘\d’
           delete
-     '\f'
+     ‘\f’
           form feed
-     '\n'
+     ‘\n’
           newline
-     '\r'
+     ‘\r’
           carriage return
-     '\t'
+     ‘\t’
           horizontal tab
-     '\v'
+     ‘\v’
           vertical tab
-     '\NNN'
-          the eight-bit character whose value is the octal value NNN
-          (one to three digits)
-     '\xHH'
-          the eight-bit character whose value is the hexadecimal value
-          HH (one or two hex digits)
+     ‘\NNN’
+          The eight-bit character whose value is the octal value NNN
+          (one to three digits).
+     ‘\xHH’
+          The eight-bit character whose value is the hexadecimal value
+          HH (one or two hex digits).
 
      When entering the text of a macro, single or double quotes must be
      used to indicate a macro definition.  Unquoted text is assumed to
-     be a function name.  In the macro body, the backslash escapes
-     described above are expanded.  Backslash will quote any other
-     character in the macro text, including '"' and '''.  For example,
-     the following binding will make ''C-x' \' insert a single '\' into
+     be a function name.  The backslash escapes described above are
+     expanded in the macro body.  Backslash will quote any other
+     character in the macro text, including ‘"’ and ‘'’.  For example,
+     the following binding will make ‘‘C-x’ \’ insert a single ‘\’ into
      the line:
           "\C-x\\": "\\"
 
@@ -824,47 +873,48 @@ File: rluserman.info,  Node: Conditional Init Constructs,  Next: Sample Init Fil
 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.
+four parser directives available.
 
-'$if'
-     The '$if' construct allows bindings to be made based on the editing
+‘$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, 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
-          whether Readline is in 'emacs' or 'vi' mode.  This may be used
-          in conjunction with the 'set keymap' command, for instance, to
-          set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps
-          only if Readline is starting out in 'emacs' mode.
+     ‘mode’
+          The ‘mode=’ form of the ‘$if’ directive is used to test
+          whether Readline is in ‘emacs’ or ‘vi’ mode.  This may be used
+          in conjunction with the ‘set keymap’ command, for instance, to
+          set bindings in the ‘emacs-standard’ and ‘emacs-ctlx’ keymaps
+          only if Readline is starting out in ‘emacs’ mode.
 
-     'term'
-          The 'term=' form may be used to include terminal-specific key
+     ‘term’
+          The ‘term=’ form may be used to include terminal-specific key
           bindings, perhaps to bind the key sequences output by the
           terminal's function keys.  The word on the right side of the
-          '=' is tested against both the full name of the terminal and
-          the portion of the terminal name before the first '-'.  This
-          allows 'sun' to match both 'sun' and 'sun-cmd', for instance.
-
-     'version'
-          The 'version' test may be used to perform comparisons against
-          specific Readline versions.  The 'version' expands to the
+          ‘=’ is tested against both the full name of the terminal and
+          the portion of the terminal name before the first ‘-’.  This
+          allows ‘xterm’ to match both ‘xterm’ and ‘xterm-256color’, 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
+          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
+          and an optional minor version (e.g., ‘7.1’).  If the minor
+          version is omitted, it defaults to ‘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'
+     ‘application’
           The APPLICATION construct is used to include
           application-specific settings.  Each program using the
           Readline library sets the APPLICATION NAME, and you can test
@@ -877,32 +927,32 @@ four parser directives used.
                "\C-xq": "\eb\"\ef\""
                $endif
 
-     'variable'
+     ‘variable’
           The VARIABLE construct provides simple equality tests for
           Readline variables and values.  The permitted comparison
-          operators are '=', '==', and '!='.  The variable name must be
+          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
+          side by whitespace.  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:
+          ‘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.
-
-'$else'
-     Commands in this branch of the '$if' directive are executed if the
+‘$else’
+     Commands in this branch of the ‘$if’ directive are executed if the
      test fails.
 
-'$include'
+‘$endif’
+     This command, as seen in the previous example, terminates an ‘$if’
+     command.
+
+‘$include’
      This directive takes a single filename as an argument and reads
-     commands and bindings from that file.  For example, the following
-     directive reads from '/etc/inputrc':
+     commands and key bindings from that file.  For example, the
+     following directive reads from ‘/etc/inputrc’:
           $include /etc/inputrc
 
 \1f
@@ -914,7 +964,7 @@ File: rluserman.info,  Node: Sample Init File,  Prev: Conditional Init Construct
 Here is an example of an INPUTRC file.  This illustrates key binding,
 variable assignment, and conditional syntax.
 
-     # This file controls the behaviour of line input editing for
+     # This file controls the behavior of line input editing for
      # programs that use the GNU Readline library.  Existing
      # programs include FTP, Bash, and GDB.
      #
@@ -1035,10 +1085,14 @@ This section describes Readline commands that may be bound to key
 sequences.  Command names without an accompanying key sequence are
 unbound by default.
 
-   In the following descriptions, "point" refers to the current cursor
-position, and "mark" refers to a cursor position saved by the 'set-mark'
+   In the following descriptions, “point” refers to the current cursor
+position, and “mark” refers to a cursor position saved by the ‘set-mark’
 command.  The text between the point and mark is referred to as the
-"region".
+“region”.  Readline has the concept of an _active region_: when the
+region is active, Readline redisplay highlights the region using the
+value of the ‘active-region-start-color’ variable.  The
+‘enable-active-region’ variable turns this on and off.  Several commands
+set the region to active; those are noted below.
 
 \1f
 File: rluserman.info,  Node: Commands For Moving,  Next: Commands For History,  Up: Bindable Readline Commands
@@ -1046,50 +1100,55 @@ File: rluserman.info,  Node: Commands For Moving,  Next: Commands For History,
 1.4.1 Commands For Moving
 -------------------------
 
-'beginning-of-line (C-a)'
-     Move to the start of the current line.
+‘beginning-of-line (C-a)’
+     Move to the start of the current line.  This may also be bound to
+     the Home key on some keyboards.
 
-'end-of-line (C-e)'
-     Move to the end of the line.
+‘end-of-line (C-e)’
+     Move to the end of the line.  This may also be bound to the End key
+     on some keyboards.
 
-'forward-char (C-f)'
-     Move forward a character.
+‘forward-char (C-f)’
+     Move forward a character.  This may also be bound to the right
+     arrow key on some keyboards.
 
-'backward-char (C-b)'
-     Move back a character.
+‘backward-char (C-b)’
+     Move back a character.  This may also be bound to the left arrow
+     key on some keyboards.
 
-'forward-word (M-f)'
+‘forward-word (M-f)’
      Move forward to the end of the next word.  Words are composed of
      letters and digits.
 
-'backward-word (M-b)'
+‘backward-word (M-b)’
      Move back to the start of the current or previous word.  Words are
      composed of letters and digits.
 
-'previous-screen-line ()'
+‘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 ()'
+‘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-display (M-C-l)'
+‘clear-display (M-C-l)’
      Clear the screen and, if possible, the terminal's scrollback
      buffer, then redraw the current line, leaving the current line at
      the top of the screen.
 
-'clear-screen (C-l)'
+‘clear-screen (C-l)’
      Clear the screen, then redraw the current line, leaving the current
-     line at the top of the screen.
+     line at the top of the screen.  If given a numeric argument, this
+     refreshes the current line without clearing the screen.
 
-'redraw-current-line ()'
+‘redraw-current-line ()’
      Refresh the current line.  By default, this is unbound.
 
 \1f
@@ -1098,103 +1157,108 @@ File: rluserman.info,  Node: Commands For History,  Next: Commands For Text,  Pr
 1.4.2 Commands For Manipulating The History
 -------------------------------------------
 
-'accept-line (Newline or Return)'
+‘accept-line (Newline or Return)’
      Accept the line regardless of where the cursor is.  If this line is
-     non-empty, it may be added to the history list for future recall
-     with 'add_history()'.  If this line is a modified history line, the
-     history line is restored to its original state.
+     non-empty, you can add it to the history list using
+     ‘add_history()’.  If this line is a modified history line, then
+     restore the history line to its original state.
 
-'previous-history (C-p)'
+‘previous-history (C-p)’
      Move 'back' through the history list, fetching the previous
-     command.
+     command.  This may also be bound to the up arrow key on some
+     keyboards.
 
-'next-history (C-n)'
+‘next-history (C-n)’
      Move 'forward' through the history list, fetching the next command.
+     This may also be bound to the down arrow key on some keyboards.
 
-'beginning-of-history (M-<)'
+‘beginning-of-history (M-<)’
      Move to the first line in the history.
 
-'end-of-history (M->)'
+‘end-of-history (M->)’
      Move to the end of the input history, i.e., the line currently
      being entered.
 
-'reverse-search-history (C-r)'
+‘reverse-search-history (C-r)’
      Search backward starting at the current line and moving 'up'
      through the history as necessary.  This is an incremental search.
      This command sets the region to the matched text and activates the
-     mark.
+     region.
 
-'forward-search-history (C-s)'
+‘forward-search-history (C-s)’
      Search forward starting at the current line and moving 'down'
      through the history as necessary.  This is an incremental search.
      This command sets the region to the matched text and activates the
-     mark.
+     region.
 
-'non-incremental-reverse-search-history (M-p)'
+‘non-incremental-reverse-search-history (M-p)’
      Search backward starting at the current line and moving 'up'
      through the history as necessary using a non-incremental search for
      a string supplied by the user.  The search string may match
      anywhere in a history line.
 
-'non-incremental-forward-search-history (M-n)'
+‘non-incremental-forward-search-history (M-n)’
      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.
 
-'history-search-forward ()'
-     Search forward through the history for the string of characters
+‘history-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 must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
+     non-incremental search.  By default, this command is unbound, but
+     may be bound to the Page Down key on some keyboards.
 
-'history-search-backward ()'
-     Search backward through the history for the string of characters
+‘history-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 must match at the beginning of a history line.  This is a
-     non-incremental search.  By default, this command is unbound.
+     non-incremental search.  By default, this command is unbound, but
+     may be bound to the Page Up key on some keyboards.
 
-'history-substring-search-forward ()'
-     Search forward through the history for the string of characters
+‘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
      non-incremental search.  By default, this command is unbound.
 
-'history-substring-search-backward ()'
-     Search backward through the history for the string of characters
+‘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.
 
-'yank-nth-arg (M-C-y)'
+‘yank-nth-arg (M-C-y)’
      Insert the first argument to the previous command (usually the
      second word on the previous line) at point.  With an argument N,
      insert the Nth word from the previous command (the words in the
      previous command begin with word 0).  A negative argument inserts
      the Nth word from the end of the previous command.  Once the
-     argument N is computed, the argument is extracted as if the '!N'
-     history expansion had been specified.
+     argument N is computed, this uses the history expansion facilities
+     to extract the Nth word, as if the ‘!N’ history expansion had been
+     specified.
 
-'yank-last-arg (M-. or M-_)'
+‘yank-last-arg (M-. or M-_)’
      Insert last argument to the previous command (the last word of the
      previous history entry).  With a numeric argument, behave exactly
-     like 'yank-nth-arg'.  Successive calls to 'yank-last-arg' move back
+     like ‘yank-nth-arg’.  Successive calls to ‘yank-last-arg’ move back
      through the history list, inserting the last word (or the word
      specified by the argument to the first call) of each line in turn.
      Any numeric argument supplied to these successive calls determines
      the direction to move through the history.  A negative argument
-     switches the direction through the history (back or forward).  The
-     history expansion facilities are used to extract the last argument,
-     as if the '!$' history expansion had been specified.
+     switches the direction through the history (back or forward).  This
+     uses the history expansion facilities to extract the last word, as
+     if the ‘!$’ history expansion had been specified.
 
-'operate-and-get-next (C-o)'
+‘operate-and-get-next (C-o)’
      Accept the current line for return to the calling application as if
      a newline had been entered, and fetch the next line 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.
 
-'fetch-history ()'
+‘fetch-history ()’
      With a numeric argument, fetch that entry from the history list and
      make it the current line.  Without an argument, move back to the
      first entry in the history list.
@@ -1205,86 +1269,87 @@ File: rluserman.info,  Node: Commands For Text,  Next: Commands For Killing,  Pr
 1.4.3 Commands For Changing Text
 --------------------------------
 
-'end-of-file (usually C-d)'
+‘end-of-file (usually C-d)’
      The character indicating end-of-file as set, for example, by
-     'stty'.  If this character is read when there are no characters on
+     ‘stty’.  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.
 
-'delete-char (C-d)'
+‘delete-char (C-d)’
      Delete the character at point.  If this function is bound to the
-     same character as the tty EOF character, as 'C-d' commonly is, see
-     above for the effects.
+     same character as the tty EOF character, as ‘C-d’ commonly is, see
+     above for the effects.  This may also be bound to the Delete key on
+     some keyboards.
 
-'backward-delete-char (Rubout)'
+‘backward-delete-char (Rubout)’
      Delete the character behind the cursor.  A numeric argument means
-     to kill the characters instead of deleting them.
+     to kill the characters, saving them on the kill ring, instead of
+     deleting them.
 
-'forward-backward-delete-char ()'
+‘forward-backward-delete-char ()’
      Delete the character under the cursor, unless the cursor is at the
      end of the line, in which case the character behind the cursor is
      deleted.  By default, this is not bound to a key.
 
-'quoted-insert (C-q or C-v)'
+‘quoted-insert (C-q or C-v)’
      Add the next character typed to the line verbatim.  This is how to
-     insert key sequences like 'C-q', for example.
+     insert key sequences like ‘C-q’, for example.
 
-'tab-insert (M-<TAB>)'
+‘tab-insert (M-<TAB>)’
      Insert a tab character.
 
-'self-insert (a, b, A, 1, !, ...)'
-     Insert yourself.
+‘self-insert (a, b, A, 1, !, ...)’
+     Insert the character typed.
 
-'bracketed-paste-begin ()'
+‘bracketed-paste-begin ()’
      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 'self-insert' instead of executing any editing
+     was bound to ‘self-insert’ instead of executing any editing
      commands.
 
      Bracketed paste sets the region (the characters between point and
-     the mark) to the inserted text.  It uses the concept of an _active
-     mark_: when the mark is active, Readline redisplay uses the
-     terminal's standout mode to denote the region.
+     the mark) to the inserted text.  It sets the _active region_.
 
-'transpose-chars (C-t)'
+‘transpose-chars (C-t)’
      Drag the character before the cursor forward over the character at
      the cursor, moving the cursor forward as well.  If the insertion
      point is at the end of the line, then this transposes the last two
      characters of the line.  Negative arguments have no effect.
 
-'transpose-words (M-t)'
+‘transpose-words (M-t)’
      Drag the word before point past the word after point, moving point
      past that word as well.  If the insertion point is at the end of
      the line, this transposes the last two words on the line.
 
-'upcase-word (M-u)'
+‘upcase-word (M-u)’
      Uppercase the current (or following) word.  With a negative
      argument, uppercase the previous word, but do not move the cursor.
 
-'downcase-word (M-l)'
+‘downcase-word (M-l)’
      Lowercase the current (or following) word.  With a negative
      argument, lowercase the previous word, but do not move the cursor.
 
-'capitalize-word (M-c)'
+‘capitalize-word (M-c)’
      Capitalize the current (or following) word.  With a negative
      argument, capitalize the previous word, but do not move the cursor.
 
-'overwrite-mode ()'
+‘overwrite-mode ()’
      Toggle overwrite mode.  With an explicit positive numeric argument,
      switches to overwrite mode.  With an explicit non-positive numeric
      argument, switches to insert mode.  This command affects only
-     'emacs' mode; 'vi' mode does overwrite differently.  Each call to
-     'readline()' starts in insert mode.
+     ‘emacs’ mode; ‘vi’ mode does overwrite differently.  Each call to
+     ‘readline()’ starts in insert mode.
 
-     In overwrite mode, characters bound to 'self-insert' replace the
+     In overwrite mode, characters bound to ‘self-insert’ replace the
      text at point rather than pushing the text to the right.
-     Characters bound to 'backward-delete-char' replace the character
+     Characters bound to ‘backward-delete-char’ replace the character
      before point with a space.
 
-     By default, this command is unbound.
+     By default, this command is unbound, but may be bound to the Insert
+     key on some keyboards.
 
 \1f
 File: rluserman.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Prev: Commands For Text,  Up: Bindable Readline Commands
@@ -1292,76 +1357,69 @@ File: rluserman.info,  Node: Commands For Killing,  Next: Numeric Arguments,  Pr
 1.4.4 Killing And Yanking
 -------------------------
 
-'kill-line (C-k)'
-     Kill the text from point to the end of the line.  With a negative
-     numeric argument, kill backward from the cursor to the beginning of
-     the current line.
+‘kill-line (C-k)’
+     Kill the text from point to the end of the current line.  With a
+     negative numeric argument, kill backward from the cursor to the
+     beginning of the line.
 
-'backward-kill-line (C-x Rubout)'
+‘backward-kill-line (C-x Rubout)’
      Kill backward from the cursor to the beginning of the current line.
      With a negative numeric argument, kill forward from the cursor to
-     the end of the current line.
+     the end of the line.
 
-'unix-line-discard (C-u)'
+‘unix-line-discard (C-u)’
      Kill backward from the cursor to the beginning of the current line.
 
-'kill-whole-line ()'
+‘kill-whole-line ()’
      Kill all characters on the current line, no matter where point is.
      By default, this is unbound.
 
-'kill-word (M-d)'
+‘kill-word (M-d)’
      Kill from point to the end of the current word, or if between
      words, to the end of the next word.  Word boundaries are the same
-     as 'forward-word'.
+     as ‘forward-word’.
 
-'backward-kill-word (M-<DEL>)'
+‘backward-kill-word (M-<DEL>)’
      Kill the word behind point.  Word boundaries are the same as
-     'backward-word'.
+     ‘backward-word’.
 
-'shell-transpose-words (M-C-t)'
-     Drag the word before point past the word after point, moving point
-     past that word as well.  If the insertion point is at the end of
-     the line, this transposes the last two words on the line.  Word
-     boundaries are the same as 'shell-forward-word' and
-     'shell-backward-word'.
-
-'unix-word-rubout (C-w)'
-     Kill the word behind point, using white space as a word boundary.
-     The killed text is saved on the kill-ring.
+‘unix-word-rubout (C-w)’
+     Kill the word behind point, using white space as a word boundary,
+     saving the killed text on the kill-ring.
 
-'unix-filename-rubout ()'
+‘unix-filename-rubout ()’
      Kill the word behind point, using white space and the slash
-     character as the word boundaries.  The killed text is saved on the
+     character as the word boundaries, saving the killed text on the
      kill-ring.
 
-'delete-horizontal-space ()'
+‘delete-horizontal-space ()’
      Delete all spaces and tabs around point.  By default, this is
      unbound.
 
-'kill-region ()'
+‘kill-region ()’
      Kill the text in the current region.  By default, this command is
      unbound.
 
-'copy-region-as-kill ()'
+‘copy-region-as-kill ()’
      Copy the text in the region to the kill buffer, so it can be yanked
      right away.  By default, this command is unbound.
 
-'copy-backward-word ()'
+‘copy-backward-word ()’
      Copy the word before point to the kill buffer.  The word boundaries
-     are the same as 'backward-word'.  By default, this command is
+     are the same as ‘backward-word’.  By default, this command is
      unbound.
 
-'copy-forward-word ()'
+‘copy-forward-word ()’
      Copy the word following point to the kill buffer.  The word
-     boundaries are the same as 'forward-word'.  By default, this
+     boundaries are the same as ‘forward-word’.  By default, this
      command is unbound.
 
-'yank (C-y)'
+‘yank (C-y)’
      Yank the top of the kill ring into the buffer at point.
 
-'yank-pop (M-y)'
+‘yank-pop (M-y)’
      Rotate the kill-ring, and yank the new top.  You can only do this
-     if the prior command is 'yank' or 'yank-pop'.
+     if the prior command is ‘yank’ or ‘yank-pop’.
 
 \1f
 File: rluserman.info,  Node: Numeric Arguments,  Next: Commands For Completion,  Prev: Commands For Killing,  Up: Bindable Readline Commands
@@ -1369,15 +1427,15 @@ File: rluserman.info,  Node: Numeric Arguments,  Next: Commands For Completion,
 1.4.5 Specifying Numeric Arguments
 ----------------------------------
 
-'digit-argument (M-0, M-1, ... M--)'
+‘digit-argument (M-0, M-1, ... M--)’
      Add this digit to the argument already accumulating, or start a new
-     argument.  'M--' starts a negative argument.
+     argument.  ‘M--’ starts a negative argument.
 
-'universal-argument ()'
+‘universal-argument ()’
      This is another way to specify an argument.  If this command is
      followed by one or more digits, optionally with a leading minus
      sign, those digits define the argument.  If the command is followed
-     by digits, executing 'universal-argument' again ends the numeric
+     by digits, executing ‘universal-argument’ again ends the numeric
      argument, but is otherwise ignored.  As a special case, if this
      command is immediately followed by a character that is neither a
      digit nor minus sign, the argument count for the next command is
@@ -1392,43 +1450,66 @@ File: rluserman.info,  Node: Commands For Completion,  Next: Keyboard Macros,  P
 1.4.6 Letting Readline Type For You
 -----------------------------------
 
-'complete (<TAB>)'
+‘complete (<TAB>)’
      Attempt to perform completion on the text before point.  The actual
      completion performed is application-specific.  The default is
      filename completion.
 
-'possible-completions (M-?)'
+‘possible-completions (M-?)’
      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 'completion-display-width', the value
-     of the environment variable 'COLUMNS', or the screen width, in that
+     for display to the value of ‘completion-display-width’, the value
+     of the environment variable ‘COLUMNS’, or the screen width, in that
      order.
 
-'insert-completions (M-*)'
+‘insert-completions (M-*)’
      Insert all completions of the text before point that would have
-     been generated by 'possible-completions'.
+     been generated by ‘possible-completions’, separated by a space.
 
-'menu-complete ()'
-     Similar to 'complete', but replaces the word to be completed with a
-     single match from the list of possible completions.  Repeated
-     execution of 'menu-complete' steps through the list of possible
+‘menu-complete ()’
+     Similar to ‘complete’, but replaces the word to be completed with a
+     single match from the list of possible completions.  Repeatedly
+     executing ‘menu-complete’ steps through the list of possible
      completions, inserting each match in turn.  At the end of the list
-     of completions, the bell is rung (subject to the setting of
-     'bell-style') and the original text is restored.  An argument of N
-     moves N positions forward in the list of matches; a negative
-     argument may be used to move backward through the list.  This
-     command is intended to be bound to <TAB>, but is unbound by
-     default.
-
-'menu-complete-backward ()'
-     Identical to 'menu-complete', but moves backward through the list
-     of possible completions, as if 'menu-complete' had been given a
-     negative argument.
-
-'delete-char-or-list ()'
+     of completions, ‘menu-complete’ rings the bell (subject to the
+     setting of ‘bell-style’) and restores the original text.  An
+     argument of N moves N positions forward in the list of matches; a
+     negative argument moves backward through the list.  This command is
+     intended to be bound to <TAB>, but is unbound by default.
+
+‘menu-complete-backward ()’
+     Identical to ‘menu-complete’, but moves backward through the list
+     of possible completions, as if ‘menu-complete’ had been given a
+     negative argument.  This command is unbound by default.
+
+‘export-completions ()’
+     Perform completion on the word before point as described above and
+     write the list of possible completions to Readline's output stream
+     using the following format, writing information on separate lines:
+
+        • the number of matches N;
+        • the word being completed;
+        • S:E, where S and E are the start and end offsets of the word
+          in the Readline line buffer; then
+        • each match, one per line
+
+     If there are no matches, the first line will be "0", and this
+     command does not print any output after the S:E.  If there is only
+     a single match, this prints a single line containing it.  If there
+     is more than one match, this prints the common prefix of the
+     matches, which may be empty, on the first line after the S:E, then
+     the matches on subsequent lines.  In this case, N will include the
+     first line with the common prefix.
+
+     The user or application should be able to accommodate the
+     possibility of a blank line.  The intent is that the user or
+     application reads N lines after the line containing S:E to obtain
+     the match list.  This command is unbound by default.
+
+‘delete-char-or-list ()’
      Deletes the character under the cursor if not at the beginning or
-     end of the line (like 'delete-char').  If at the end of the line,
-     behaves identically to 'possible-completions'.  This command is
+     end of the line (like ‘delete-char’).  At the end of the line, it
+     behaves identically to ‘possible-completions’.  This command is
      unbound by default.
 
 \1f
@@ -1437,18 +1518,18 @@ File: rluserman.info,  Node: Keyboard Macros,  Next: Miscellaneous Commands,  Pr
 1.4.7 Keyboard Macros
 ---------------------
 
-'start-kbd-macro (C-x ()'
+‘start-kbd-macro (C-x ()’
      Begin saving the characters typed into the current keyboard macro.
 
-'end-kbd-macro (C-x ))'
+‘end-kbd-macro (C-x ))’
      Stop saving the characters typed into the current keyboard macro
      and save the definition.
 
-'call-last-kbd-macro (C-x e)'
+‘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.
 
-'print-last-kbd-macro ()'
+‘print-last-kbd-macro ()’
      Print the last keyboard macro defined in a format suitable for the
      INPUTRC file.
 
@@ -1458,94 +1539,100 @@ File: rluserman.info,  Node: Miscellaneous Commands,  Prev: Keyboard Macros,  Up
 1.4.8 Some Miscellaneous Commands
 ---------------------------------
 
-'re-read-init-file (C-x C-r)'
+‘re-read-init-file (C-x C-r)’
      Read in the contents of the INPUTRC file, and incorporate any
      bindings or variable assignments found there.
 
-'abort (C-g)'
+‘abort (C-g)’
      Abort the current editing command and ring the terminal's bell
-     (subject to the setting of 'bell-style').
+     (subject to the setting of ‘bell-style’).
 
-'do-lowercase-version (M-A, M-B, M-X, ...)'
+‘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
-     meta key.  Typing '<ESC> f' is equivalent to typing 'M-f'.
+‘prefix-meta (<ESC>)’
+     Metafy the next character typed.  Typing ‘<ESC> f’ is equivalent to
+     typing ‘M-f’.
 
-'undo (C-_ or C-x C-u)'
+‘undo (C-_ or C-x C-u)’
      Incremental undo, separately remembered for each line.
 
-'revert-line (M-r)'
+‘revert-line (M-r)’
      Undo all changes made to this line.  This is like executing the
-     'undo' command enough times to get back to the beginning.
+     ‘undo’ command enough times to get back to the initial state.
 
-'tilde-expand (M-~)'
+‘tilde-expand (M-~)’
      Perform tilde expansion on the current word.
 
-'set-mark (C-@)'
-     Set the mark to the point.  If a numeric argument is supplied, the
-     mark is set to that position.
+‘set-mark (C-@)’
+     Set the mark to the point.  If a numeric argument is supplied, set
+     the mark to that position.
 
-'exchange-point-and-mark (C-x C-x)'
-     Swap the point with the mark.  The current cursor position is set
-     to the saved position, and the old cursor position is saved as the
-     mark.
+‘exchange-point-and-mark (C-x C-x)’
+     Swap the point with the mark.  Set the current cursor position to
+     the saved position, then set the mark to the old cursor position.
 
-'character-search (C-])'
-     A character is read and point is moved to the next occurrence of
-     that character.  A negative argument searches for previous
-     occurrences.
+‘character-search (C-])’
+     Read a character and move point to the next occurrence of that
+     character.  A negative argument searches for previous occurrences.
 
-'character-search-backward (M-C-])'
-     A character is read and point is moved to the previous occurrence
-     of that character.  A negative argument searches for subsequent
+‘character-search-backward (M-C-])’
+     Read a character and move point to the previous occurrence of that
+     character.  A negative argument searches for subsequent
      occurrences.
 
-'skip-csi-sequence ()'
+‘skip-csi-sequence ()’
      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 bound to "\e[", keys producing such sequences will have
-     no effect unless explicitly bound to a Readline command, instead of
+     those defined for keys like Home and End.  CSI sequences begin with
+     a Control Sequence Indicator (CSI), usually ‘ESC [’.  If this
+     sequence is bound to "\e[", keys producing CSI sequences have no
+     effect unless explicitly bound to a Readline command, instead of
      inserting stray characters into the editing buffer.  This is
-     unbound by default, but usually bound to ESC-[.
+     unbound by default, but usually bound to ‘ESC [’.
 
-'insert-comment (M-#)'
-     Without a numeric argument, the value of the 'comment-begin'
-     variable is inserted at the beginning of the current line.  If a
-     numeric argument is supplied, this command acts as a toggle: if the
+‘insert-comment (M-#)’
+     Without a numeric argument, insert the value of the ‘comment-begin’
+     variable at the beginning of the current line.  If a numeric
+     argument is supplied, this command acts as a toggle: if the
      characters at the beginning of the line do not match the value of
-     'comment-begin', the value is inserted, otherwise the characters in
-     'comment-begin' are deleted from the beginning of the line.  In
-     either case, the line is accepted as if a newline had been typed.
+     ‘comment-begin’, insert the value; otherwise delete the characters
+     in ‘comment-begin’ from the beginning of the line.  In either case,
+     the line is accepted as if a newline had been typed.
 
-'dump-functions ()'
+‘dump-functions ()’
      Print all of the functions and their key bindings to the Readline
      output stream.  If a numeric argument is supplied, the output is
      formatted in such a way that it can be made part of an INPUTRC
      file.  This command is unbound by default.
 
-'dump-variables ()'
+‘dump-variables ()’
      Print all of the settable variables and their values to the
      Readline output stream.  If a numeric argument is supplied, the
      output is formatted in such a way that it can be made part of an
      INPUTRC file.  This command is unbound by default.
 
-'dump-macros ()'
+‘dump-macros ()’
      Print all of the Readline key sequences bound to macros and the
-     strings they output.  If a numeric argument is supplied, the output
-     is formatted in such a way that it can be made part of an INPUTRC
-     file.  This command is unbound by default.
+     strings they output to the Readline output stream.  If a numeric
+     argument is supplied, the output is formatted in such a way that it
+     can be made part of an INPUTRC file.  This command is unbound by
+     default.
+
+‘execute-named-command (M-x)’
+     Read a bindable Readline command name from the input and execute
+     the function to which it's bound, as if the key sequence to which
+     it was bound appeared in the input.  If this function is supplied
+     with a numeric argument, it passes that argument to the function it
+     executes.
 
-'emacs-editing-mode (C-e)'
-     When in 'vi' command mode, this causes a switch to 'emacs' editing
+‘emacs-editing-mode (C-e)’
+     When in ‘vi’ command mode, this causes a switch to ‘emacs’ editing
      mode.
 
-'vi-editing-mode (M-C-j)'
-     When in 'emacs' editing mode, this causes a switch to 'vi' editing
+‘vi-editing-mode (M-C-j)’
+     When in ‘emacs’ editing mode, this causes a switch to ‘vi’ editing
      mode.
 
 \1f
@@ -1554,20 +1641,21 @@ File: rluserman.info,  Node: Readline vi Mode,  Prev: Bindable Readline Commands
 1.5 Readline vi Mode
 ====================
 
-While the Readline library does not have a full set of 'vi' editing
+While the Readline library does not have a full set of ‘vi’ editing
 functions, it does contain enough to allow simple editing of the line.
-The Readline 'vi' mode behaves as specified in the POSIX standard.
+The Readline ‘vi’ mode behaves as specified in the ‘sh’ description in
+the POSIX standard.
 
-   In order to switch interactively between 'emacs' and 'vi' editing
-modes, use the command 'M-C-j' (bound to emacs-editing-mode when in 'vi'
-mode and to vi-editing-mode in 'emacs' mode).  The Readline default is
-'emacs' mode.
+   In order to switch interactively between ‘emacs’ and ‘vi’ editing
+modes, use the command ‘M-C-j’ (bound to emacs-editing-mode when in ‘vi’
+mode and to vi-editing-mode in ‘emacs’ mode).  The Readline default is
+‘emacs’ mode.
 
-   When you enter a line in 'vi' mode, you are already placed in
-'insertion' mode, as if you had typed an 'i'.  Pressing <ESC> switches
+   When you enter a line in ‘vi’ mode, you are already placed in
+'insertion' mode, as if you had typed an ‘i’.  Pressing <ESC> switches
 you into 'command' mode, where you can edit the text of the line with
-the standard 'vi' movement keys, move to previous history lines with 'k'
-and subsequent lines with 'j', and so forth.
+the standard ‘vi’ movement keys, move to previous history lines with ‘k’
+and subsequent lines with ‘j’, and so forth.
 
 \1f
 File: rluserman.info,  Node: GNU Free Documentation License,  Prev: Command Line Editing,  Up: Top
@@ -1577,7 +1665,7 @@ Appendix A GNU Free Documentation License
 
                      Version 1.3, 3 November 2008
 
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+     Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
      <http://fsf.org/>
 
      Everyone is permitted to copy and distribute verbatim copies
@@ -1586,7 +1674,7 @@ Appendix A GNU Free Documentation License
   0. PREAMBLE
 
      The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
+     functional and useful document “free” in the sense of freedom: to
      assure everyone the effective freedom to copy and redistribute it,
      with or without modifying it, either commercially or
      noncommercially.  Secondarily, this License preserves for the
@@ -2054,30 +2142,30 @@ their use in free software.
 
 \1f
 Tag Table:
-Node: Top\7f909
-Node: Command Line Editing\7f1431
-Node: Introduction and Notation\7f2085
-Node: Readline Interaction\7f3710
-Node: Readline Bare Essentials\7f4903
-Node: Readline Movement Commands\7f6694
-Node: Readline Killing Commands\7f7656
-Node: Readline Arguments\7f9579
-Node: Searching\7f10625
-Node: Readline Init File\7f12779
-Node: Readline Init File Syntax\7f13936
-Node: Conditional Init Constructs\7f37240
-Node: Sample Init File\7f41438
-Node: Bindable Readline Commands\7f44564
-Node: Commands For Moving\7f45620
-Node: Commands For History\7f47380
-Node: Commands For Text\7f52345
-Node: Commands For Killing\7f56049
-Node: Numeric Arguments\7f58764
-Node: Commands For Completion\7f59905
-Node: Keyboard Macros\7f61875
-Node: Miscellaneous Commands\7f62565
-Node: Readline vi Mode\7f66494
-Node: GNU Free Documentation License\7f67408
+Node: Top\7f907
+Node: Command Line Editing\7f1429
+Node: Introduction and Notation\7f2083
+Node: Readline Interaction\7f4440
+Node: Readline Bare Essentials\7f5633
+Node: Readline Movement Commands\7f7446
+Node: Readline Killing Commands\7f8447
+Node: Readline Arguments\7f10475
+Node: Searching\7f11537
+Node: Readline Init File\7f13751
+Node: Readline Init File Syntax\7f14949
+Node: Conditional Init Constructs\7f41424
+Node: Sample Init File\7f45814
+Node: Bindable Readline Commands\7f48939
+Node: Commands For Moving\7f50324
+Node: Commands For History\7f52492
+Node: Commands For Text\7f57835
+Node: Commands For Killing\7f61681
+Node: Numeric Arguments\7f64138
+Node: Commands For Completion\7f65295
+Node: Keyboard Macros\7f68579
+Node: Miscellaneous Commands\7f69285
+Node: Readline vi Mode\7f73617
+Node: GNU Free Documentation License\7f74611
 \1f
 End Tag Table
 
index 3d2ae7e82323c1e4105d79558e0eafa8d802e31a..b016e75f970601b94245712f34d395b4e8c0c19e 100644 (file)
Binary files a/doc/rluserman.pdf and b/doc/rluserman.pdf differ
index db4f27b4817c971676efd3be0a1a9975b7bf9902..06f3902c89ca69bf676964650a2f87a1a0fb8d03 100644 (file)
@@ -1,18 +1,18 @@
 %!PS-Adobe-2.0
-%%Creator: dvips(k) 2022.1 (TeX Live 2022)  Copyright 2022 Radical Eye Software
+%%Creator: dvips(k) 2024.1 (TeX Live 2024)  Copyright 2024 Radical Eye Software
 %%Title: rluserman.dvi
-%%CreationDate: Tue Sep 20 14:17:06 2022
-%%Pages: 36
+%%CreationDate: Wed Jun 25 20:09:16 2025
+%%Pages: 38
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
 %%DocumentFonts: CMBX12 CMR10 CMTT10 CMSY10 CMMI12 CMMI10 CMCSC10
-%%+ CMSLTT10 CMTI10 CMSL10 CMTT9
+%%+ CMSLTT10 CMSL10 CMTI10 CMTT9
 %%DocumentPaperSizes: Letter
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 600 -t letter -o rluserman.ps rluserman.dvi
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2022.09.20:1017
+%DVIPSSource:  TeX output 2025.03.31:1028
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -120,9 +120,10 @@ dup 67 /C put
 dup 68 /D put
 dup 69 /E put
 dup 72 /H put
-dup 74 /J put
 dup 76 /L put
 dup 77 /M put
+dup 83 /S put
+dup 91 /bracketleft put
 dup 92 /backslash put
 dup 95 /underscore put
 dup 97 /a put
@@ -338,174 +339,181 @@ BBC9B4A2CF19A4AC6ED7F561EB13C3AB22FB3F3EF644B5B47DACE807262DE5C9
 50578464845B950140ADD91D72D28470A5A5FB134EC52F4DBBB9C50A7523592B
 C5BAA056E46F8C004062298BEA010C1CF9F49DEAB58C4D2012E04E630F54C985
 328DB2B6FEAC584308D71A9F5FD945A37EA13F3DEB1748320870057A362E70CD
-50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F36932A8A2DB
-BAD87DCC271657EDF942834AD01C0C35437042331634D36C594CCBD796BB1562
-C5AEFD595E35264ABB2ABFEC7A2E066A7A454659804F6CD9DC64DE1112D95B55
-72AE34B6153425A5D15D9F944A3DB6D580C2A01E308E2CDB032F99617A73866D
-F2F2FB6E8617873AC82D4E2224049BC2FEBFE49527DAD70C079B92F08DC30095
-AE63E3E2FA213D52A347347371724EF08B39D7383D27131F75C2211F82C35CDF
-B78708DE910A5ABCA3075D985AB2E2EAEC2BB6159094F0C0C775C25AFF4F507B
-20070C4FB570D5CBCF40C7DE889378A9EE7E38175ABC3D5B047D1DD925990A04
-76EE4083F3CAEB8F1FF3D8FB0210C93738D68EE884FF86416A2EEF2356DB80C8
-39749F31D1D3751E91D84246B56D759969A6D52832891375DC26E92B7DC756A1
-A02F951C898CF665AB0C2C6D5B455FCA6D20E7F998D2523112A08E8EFE1B5DBE
-940EEB362AEE4EF83237348F7F0C08B490D125BD90107A035A8F5330F0F296F3
-DF4579D7B4A947CA1EC8975B1F6B7E3B077A75F2F42DE456E0D540CDFDECC95D
-F5B3FBB43590ED54FD98CBFD3A20C42C5B6B5ED2A5F0D4F06414757F992487C9
-83CCE2B4BA91825D14090D1EFC53596F92757BE8DCCB7EFA24C3A3D52DB61312
-C04533EE4424F37EE45DC6BDB79519A62454194332562388F3BF0246B40E9108
-7B64FC57054131DA8A4699CF65BFBB862D05519755E207BD0C5E4FF56AC2BAEA
-5D4FC6443069F6314E124BC02D210B8726D3ADF2EDB35E7CB1F92BB412C2AF7D
-547A1E309A63114B38B352702F7E48B931550F79C2487152A5A5CBD19C429BF1
-747D88BF1EC932CBC93F006EC34F9197CB9FD486F42A0D5D72AFBF21B9BD131A
-C89A979FA65013B3CDDA5D164DE3BB762BBB7A4D0DC3ABF3CF906549E2F76C17
-DF8BDB44689AA9140ABCF001781B8906C2B020EB95FE36B8978FA04BEC5E4D82
-B4A537520BDA62736EA2CD9B1EE4A126D7A76BE51C96AC556AE5BFF978C1598B
-6CA42A76139448EA4C8AC849AA3AD204D158854FAC6D7D43BE038F022460A50C
-1DC2B6932CC3DBCBC1C27390E29A474712004A5EA3E0A3E62786C2487EFA767F
-BCDEEAA4875ECA8A9A7C6F2FD1EB9DB79B7489FA8249D33E38599B948CBB7328
-430476A7489C004F1411BA1D5FCD64D478424920EF72530F3C4CCA9EE495ECCD
-125E4E2BB37BD4D4175950422517021F8EC140BC3B11BAA9E513F3DAB63CD245
-27A0A6F69A964E9BFAF575B5E36556A15B2F2FF787DFCC1EE704994A52F2E726
-958538808EE9BCC31BD5E126F848FFE5CDA11FD3F0377D9B814F515750374452
-D7A4BEE6B14BF4C1A75B2BA8083ED62E61155F1B396D960066D0A35D7CF19A5E
-C7856AEA2C505E68C8A0736CC1675F740A662AA8BFFFFE507465E7ECF934DB6F
-75004934154AA82EA699EABE6318E7E5B51DE3387AEBF11E41A413D986947FD8
-23ACB99110C93391DA8FD87341F337F1FBDAFD306B4B08FC69EFF21A6F581420
-893E94073A20778ACCDB074613F7FD68999BCA1F03A0E298CCE83D3D8C25E1DD
-8C25F57C440C5580C87C67C8F391C900F6615ECBA0AA505333A0E00F229F03B8
-69EF147556CCBD10694CB23EEA74CCEE50CA5E8F3DCC8225B950B51C7F0AA44B
-C1200E688A8A7CCB8CD763390992ECCE85F4855DA86ECFD21F57F12CEC09A5A0
-0A50B388C378EEB1C4BBC2BC19ADE95C3CE8A6CD901EEAA8DC6F62BD33A18368
-1B0C445FF57CAA3F690D872D42FE746D3AC94DC889F4AA191E824D66E8ADC3ED
-D7F7507F1DFD560D3D339C528714AEC12609448660243A1C24C8A31FEAA55E96
-5512E63BFF9CB87AA8805D066E71C70DC175FA3449879A44A1A6343561CBBF33
-B6465433C3C99BD06F2FB6A0CB4AE950A3F2F428AA2E5E344439E77B623E959C
-27CBD22A9B092B2604EE92524DF014DAD590A4F474484C2BA41343306A620019
-15B96AF752C312187FF3C1555B5142354F2E947391A96E64DFEEA65D99FCD2B6
-3BC07AB8D7709033C83DE8C9E18BF1490BCCF65D3E1CCD62FC09F7DCBD0A31EF
-70F21BC631CF5F4C112B64B4CA88662103C4343B55FDA36B0F78B6BE583E3134
-464FA2B9C8A2C5BA01338C0A0AEA7DC2CCD0D0E7A02C835C1072830582825BCC
-E7F31BD6C7A20413F5D21C054CD6389DE00C846AE1B558EAFF7E85D07C73C4D9
-CD9A1F33E0328C3B9340DC87FE981D655905D4E2341966C80787F35EAB88792A
-B2F35D91BDAE613DECD5DA192ED10FF454B0A754A14A565DCF8AC760007A333E
-413B53F179AFB886747C2460AADF6FD1DC09012A2ADFFA6FE5228177535E91DE
-71F9C9D82F84CA13A2F55E9EA931B1E89213EE9817DBB433A7EF0316E0624C1D
-45965146A28962980436F050A1E7EB35D18BB8BF8B82F97D64C827F68374CFC0
-E4DB0FFF944DDC0279F2E02108815F40E04EFC82368D19B89F357138F65EF9CA
-878AC45EF423580843F481F1394D5DEE995E0DDB18E2B5E2D04A463672BFFE79
-BB6D9957D3C2BA22DB79CD75DF28B99E6473FC222C6722B9C877D097BFB29C6D
-E5444CFD34880261E7008A372F128BE5CEE9D057486C1AD98E7AE24292D12231
-CCFE1B54DB8623BF68DBECAEC105E446891BF4473765DCCA7EFDA9FE6DF8E6D4
-90C70A79B1AF7AFE9AC5CBA07D0B839AAC2EA62842FEC9117959B10530C8A76E
-85F59E6BF476A0660025900EFD8D714A018AB06240808CFFE5A3766818603531
-AF3FA35AD28CA2C9BA31A2F42FB80BC1ECE71EFE2CD184B4FDC5F76AC2F549FF
-33AC81C11411C47D4857E5E6DB9204AEA0F7545ADAEA22BE42CC3BA7EA3F8B90
-C5FEC359641487D93C52D78CE25535A2A686DD4764C072FA8A56B982A3A7787A
-F124475DD5C2754430C7EC3527D81C272FB7AFEDC6F79E1988AF9401F2B989A8
-CFE1BD96B21D817BBC93BF77B99C8E008E7CC2E34F0AAF20AE88FFC0BC6C3721
-485DD1F25103245E854AB2B60226693E0AFA3EAE85CA52BD938BF31ABFEBEC6F
-4079449F99B5EF0A46E77B6254D4FAAE33FF8B2AA3469F0F0DD625BC4FFD004E
-E6C301A8052043E22ED0FA663364CC9200ACE4CDADCFBD28B721FB43EA7A3B6B
-F6112C35C224543482A7564D62A4A8F15FE329BBF3934DF9345320561E88CBDA
-1C0BF61D400C1539818D2BE38165B6439EA9B45CD0A686C7CF1310604309DE5B
-22987BC91A8E913F6EBAF74C65E8A546D876E46A50BB9A3420D5BE001E0CB34A
-A143776196BF8167006A1052A54001134D539870CECFFD45B6E37D5EF5A9878D
-2A2BB28710DD767C746767498AB23FBDD80706727CF0F556DF7A47A90DE30E5C
-A81522D5EC8C478BB58ACD1D1F0139D4C3561DB574AA8B1FBF0AB0A001FF78E3
-2A646659407760996E97CE00295CDA398DC0E8374B6A13C3EB2BE4226F01E76B
-A932DDAFD90D0FB739B9EDFB9A2472D6424A45D1A698D70766469EBFD9957CF1
-511F6BC41FB43B9517AADD5DF7997A4A8A8F3A5103BF6730B81845F20D160DC0
-E5AD923D9E24AA7DC293E45FBF7422B952A91A97139B15235D29CC52C5084F01
-DE89D2F11E7283A60E4688B54191DDC1159998D10215FE53FD89C87CE9D19041
-1F1E73F063436E786959943B496172A1C497DC002E00B29A4F752CA28BAC5434
-A98F9438064838B0D6252A05052EC8871CEF9FEF05A07B1E401E49324D463E41
-6B7DEBD3B405C9DC5953B93E48162D93438237F11ABE83189F9C1FE70E1A56A4
-CF539F7E9BA6B2B35BEB1586F59897F6E64340B88CA079DFDD1E987198604D2C
-3EB5C8178AAEB19B8D2840F0EF36CCEC7D25080CD1E0BD2B3317603E86FFDC4B
-A453AE086CE8AFB093D57733AA40977E9C8D33E3C87DE2D4C0522C40AF2C01C5
-2A7B86C2571F9B67AD85B35EC83224029832D2ADCE65E37748CE08A600641E03
-6BFCF2F024ECDB4AC2C4AFC4987D01C8F8E74715567F7116597A4318331A35E0
-7BB15E134CD721CBF49210AC06D161E7FE9146D43CB1181F464C7D3BB0BB40EA
-D19E1C33D6D9924AB13EE6C31428D6CDD9AEEBAE6510CDA14F23159CCD725A3E
-1F97ED8DCB17A10783B8CDC9315FC86703FAB6A70DF55E0AB8B4C24862CDCF11
-5F10FAA5E4E54660EA5EA05EAE168E36CA5255DAA0ADF9461176EDC9E3989A84
-0D8D7EAA08F4C766E1A078C3B7D091B9E22A9247A655CE4190A0217ECAF88495
-5DE38DD317E459AC61336D6E403CF8DD2ADD2946F933E1A72C18DFA96EF7C0E4
-0A2D84D3414F3DB23EE3BB5049B174431F4EEA10415D25E41C2094CC2D37C669
-2C46EA4568BB0BC49D1806B98607B8C12AB897E6AF402C6126D4484EB7D9CF81
-B603EECFD92EE41FEBA5F38A93DD24A239BA253BE3776F2368E1664142FF2A53
-5B40B694B20818A2A43226871AF1F7A5A68113CC55AABEAFEEE21E0F4E7641FE
-BB5403E96064650AE2703E43DF01A1594C8FE8646A44323D78E7A5A7CE2C2FAE
-F98F7D9A2CF888DD195FAEBFD1BBB05CE078C6003F9438205F8A3C2977C1827B
-906386BD4B483966FD903432A3A9A54AB0C4E7826CBB97C6808B5B529D5E24CE
-8C76A35EB073FD65944F54D1733FF75FD7F78F524F81CE0D92328FC171AC3DBF
-DB81784F11106137B72B473AB91F40F73B0B410547F5CF6613EEFDBF0F05092C
-3688C3C208E1C9FBF51B505FA0B5F906C5B0A05277772FF9EC806702F0E346BE
-83A535578789733FA68FAD54992C16F3F5F1B7560A729226FDADE4FB96AC09A6
-4C5D79CB60D85AACBCC89C04068803B47CF0FAB92F4267438A2E7CF7CD5C1796
-B07071D9F5A6DB95514B1B60EFE74DD9A028CBCBE850052EC2EFF81C411348E3
-F1ABDF1A4CBBFD7EBECC48F89B18E159DC1CFA0606C3BECE071E4C1759BE2716
-0705460FA9E022BDA1CFB2324C8B51B4E297838F07A5FE8E05FD99600F9E79D5
-490C251772EA34DA6649D421A872CF78A9B55BC0FA47E056A6CA9491ED65E181
-58E2A5EDC038C9BD89B3E975837FDBE2A9AD81F700BD263C25C85873E08DBCE9
-7CC2FBD904038CE72A110493B7ACCA882FD48F54B4E0109B095838F30D80917E
-5C81948F74E7F0D41652480CAB3B24E90570BF861EE2E3A5E1735636C7849C1D
-60FDFAB5386526F7312481A5146C18321F425EC74ED0D778926854C5CA875A57
-9205076C19AB866F5FD0439154484DA165A7CB69746199399E66E662EC2AAF66
-501B6706BA1ACA001546B753B0785AC885A5F13BFB4F76F05AEADA1D290708A8
-22A24FFEEAAAF3C70F89CB52EB655774832296C1FB440B4DC4957C7C32588435
-4FA6775C4BB9070641EB6CB74857A346B38E0F441D61D27489CB0230A23AB63B
-052C8453C969BA44B2B6E700D6286084AFD49A79DA416803200F715CFD9B42A8
-D53BC397262BB8F94C7D0A2D83E1249563098645D0E82959B76E1B05BEB19430
-4080218E58354FAE323F4CB4A3E20B21FF9FB791391956336DF8A6FB49A2DD6F
-A1F06C8C02464E67CDCB9013A4F8229E5A4F136A11AA204001D16C213691EBA2
-2789C03C9122FF21B891569D4D26C2487401AF4C9B310CADE991ADA6D091248F
-30D40520D46944AFEEE4B71D005191AD057AAF2BDCC166F084F29EBF3868C433
-5552509FC469A57DE66010A0538D2CEB7692D1A54B5139D2FC7FCE96C4E1A82F
-578703BE28B82622297BB08F76DB9D8E2A7C4B38C7A819372F72900506CBAD7A
-4B0014B7A9DA2E9AE84B24A83E0BD86D3BD8E0F37F9F0E56D6102C0CAA768E4E
-9BFCDB116780773E04554E67AFA899C9B8AE526257FBD25125EB7644E1AB35FA
-E9D6D716877D2A5E17130740CEFF27133D6A38BD2B2BB7BD17E04C21802EF184
-0AD5C85EDFF4234DE6B89B40F7489B4CD79F54B9B8683E611E372768C55FD93E
-3BFDDBA88B1B60240AC09A05960F9134700A97DE7E6031F5644F83B5A10264D9
-6118C440225E4864A2AFC406BE4A8AF3F6AF8F3B48AF8EEAB503BF7A66C840F9
-825D9D44DEDCD92A11EA70FE597AD39C0CA0F1C6AFD5750D6BCA09D230024DAF
-09F807B23F356891C031E0DAB363DADC371166D728755CA4C375A846C46E7B37
-695A8C66F99132593D066D0757C3E92F64AFF193D211B41405A3E528172C2592
-30A0E1E147E95C002F2BE67E1FAC9C062FBF5182A0726E21CB87BC80E15FA68D
-9E8FEB1888C4717BAA97A135EC4B5234135A64DE68833D1FB55EA7A327C5A9A9
-78312C6B32D66B57A4834D6004D83FDDAB7905D94E0AD3DFAB8A4D5D081F2FD1
-4CEDB8C3D8A344C3596A6E033DB4CC4A2BCA9A86D8858830DD5006D7C7D91F53
-560F76B6B4BAAF3DCEC3704E922E3F32C3A450BCCC92E359265201F07B99BD2C
-24377943614ED7A97E19D988476569CD51B0E85672F4AE6D6D46382A73DA624C
-5188F727DACE6E5BC2F33411206A566B6F830EBE79CC97F295A269141FA8E565
-496EBED5EBDA3E6C7DD9ACDC9AA9864C7F26227F68DAD420BF8AFA428D66F3ED
-3919E517437B7BE7C9550B250E90F7E004B3C3D30D9872B84376C84B913D0032
-9B2280354630E263E101EB02C92FD77A76BAA8CB1C5B5C555C81F6ED6A31B3EC
-356BDF27A16C319DE965D8BE1D654A6E1980C8FC535B72BD951FBED2C6A9FC82
-FA152728191760F9C54E52D900675AE8A88F7867E0A5E5465FC2ABB868B3D227
-8A0DABCA6264CE647623418DC7850FCA18C34AE8532AF543E46B585E20BD1E9A
-E210B1DB301C81537F068B42BDB1B93FB4618B618B34E7D42251DFDF3491472B
-62EE41B9F4C2F1EE43C29AD841A1264285FA4DDFDC07323A24F00EC12627CDCE
-2DB8592A29424150DC72611D88D29267B1F98F386053BD9188CC91FD52876731
-1DE8DF9085F0F49CA5B14089B55E2E9386D59DFA0116C800A5204F6BC0032F6B
-BF15CC4A142729DC002844F5A418C164C1AF0F69353121E4E680199C752AFFF7
-C961E4AD7F5E48212297A346A6FD1E7CA0B7A51670631878D69A60639FB9A150
-30446595791BB1F97919D034BFC08998AE74431E65800A11648D8E5ED18C95C6
-F3F033B3F3E4F7077216D316CA981B5B4EF0C33A7DDB14BF11F496D754D93C6A
-BACDE5D2B6EC1126A0531B61B38E73F377CFED681C9DD5A804BC1B7FD78F6ABD
-1EDAD16A0D3E4BCE8A12291230D94AC0E0CB7D258E46B5D1CEC91B0CE18B1412
-56AF3A04F80C1655C6DB8A9105D611819D4BB6B920F975D0A19104D8239448E6
-B8F4804F6088435C6C2750932C56753D14C5921DC9D871AE804AAE6D2AE9A3E7
-192DAA0D6F9E1E7C22BD2A0E80216723E09213905F4F291D2540F24798CCE9A6
-B6E9E7866CF589DC2CAE23A7945B52E862975F0578F7D8866DA6DF2ABAB1AB11
-12FB5B9AE7C3DF18F726BC7B51C57BF184D42944FCCB796ABE1869AC8F5BDA42
-0EBCA3366E46D6A9030B2EFA1767BD295731CD1DB7FFA74288CD586CE553CA71
-C69BF555CE828D291172D22DF6B1FF97833BCF7BF569CD79C67A65B8D32AE176
-0F8EF4CDFC09F35100D23ABFD911931C51F71EB0D37157CB9C9984A6F107C365
-48AFAD53E3B33EDF970F19D59CD6D5C1D7962CEA24F4AE9C45425589124A7578
-D40D09FB8BE3B386682B9919756D4EF4AFC2450C6A298450DE1A
+50C269D32993CE9CD1E8CB35BC6F69E7574F37032219C6E1C960F3693D4755DC
+C8B7002C89212862C2E48F1D2873560C25DE00F0AD2A964B24C0499FB16113A0
+57D411DA5C53A1D254A4D89542D4C06102989D9FC84E1203DCA6D175980FA710
+890F07A04822C751A2B2257DE8C4CB80BB76F6E9969D34C9AE0913062A951DDD
+898AB771A1569C3048BE68EE728122067C18AF802A94700F60B088B2D9D30AA0
+00AFCD15E8DD2733EB4DAFE0BA4320E9FEE21E8BE08DB10E4EB6AAA590A12933
+007B1B3681A38B3838403EE2E85A303831E9689524F759FCE312865B20C7D952
+5C6D1C831F66E83B2AEAC5710A68001011A3E286356D869A83F7D05DE07CFB74
+99FC6EE19C2BEB393F7BC49DA80887E615BC8165F6826D3AD0D088CBC5B0B091
+E78F205E2574A58C607A05F5C607AB371A2467286CF88375ABC46C5D8AD463EF
+52AD5D7484716FFDE744B97073BA7799E5D9B508E4833232D3F9550F1354FDDB
+D766AF9247D7851FF69B3CB6D1B2D843E2D451063EE0F5BC768EE537835338E6
+E6DDF3EBA5BD073965D39DAE812B71FB03F0DB3BB2C45B7F6B02C9292BB6E855
+479A209BC8B9663939070C7A3697D78871A66C6D377773786FF3A19B5DB150AC
+604672797EC283F6C50F0639B4373F68147FFC8B33CFBA9777A8AECFCC411F6B
+31D050055DA1844E3CA9BDDFCD07F021F0A3FF939CB4E209D61E042B9BC65638
+B6216CA38F14EC006842B9EF2411C99F8B266F074C6B78EC10C6A5F31D30B639
+E1F98DA37A706B84699034FE57CD411F77B31FCCD166B71285ED0E4EAA12E879
+B645566F70CDD4AF9F069BF9B0C16328F8998230623DBC73E0C2F7083C5897BE
+06FB2A4FD68D240A94670325F306D353B96D84FC70472B9240703BC429E715BA
+5F54C734721C16D33FEC81AE3955C3110BC3F6C4F0D1DEDE5B8869582BF805C0
+72F6EDF3AAF68560DED3982795DB3E9FFB69633FDD16F67A32B8E4CE1B5234EE
+2246397D8729897926DD69D307F7E946C70D9835C45C126C133D0D569D49A079
+D33E8A41DB804A4A6D35ECFBB268E6A5742CE4F9A7E8987A1188C88B1ACA0269
+F18BC8FA7791197FB8738628100DCA2F9A22083E539A911E63C61047C06150C8
+284C8E66E2AF25AA9F40A4CD610B7E510F27E39F21FD5F82B4B9EA7CF687BBEF
+0B236B957E3A8D35629749433324B942DADACD0C354223BA8F8F5D4389697C19
+618513D919EDFE5C25968A236CD192A7A57768844930C1636752DFB0B755398D
+8FDD8C1EA6E4052CE5220E20E3E9BDC84A81FDF3B5906281E5238F03C99C59B1
+BE47DC60D8D08D0125F436E2B658FC873707B65925F1AF5200440AD0CE6B89A6
+DC2E3EF01671869440E2B8A5094B264B54C494BBBA49A40D64B0CE8720816F80
+7C620CAEC962056D3629FAC6544F204CFB6E4EF7233E95BCFB6BCD26A36428C1
+414006B5F24C36A88533E17157F2DEB3BA613D206EC58D9B8B93B85CA932E9F6
+213A492E8F84A5414BE3D8ED6F50AE60AF9A2BA23FC473A4E7505FF2D4268E66
+448D801C1AF5306D881C0D8D8054FC5C561344D0B3E5A5E82E9A61098344D069
+8BCE9F4C6E144E946EAA76D763177948DE55A1650289D58A0A395BADA1AFDBD9
+6C227103CAC0FD85276E825AB66BB5655FC25A4FE6A4F55C1D2D43E0685E046A
+E1B99FFB1FED702090062E0F92D56F71F7157C698F31B69BB8BFF27EAFF29A81
+FA962DF70983723EFED932260AEAE8408B3281EC6766103E7D22B47E173B359A
+58778EB7831BCCB95ED6FB53B77F27C01FB7002E53BB299CA6118D1EED4E64BC
+AD613C548F7B6EC125C06C30978CE8CCA85A03BFA775E596E9184B72365799AE
+A37F753B4FC4A7B68DFCC35574087AF4B7E75CD0BA11324918F6B4DAF4802D9C
+91077FA9EBBBC0277FD1B3544D508008AC121A78C1DD8F74AFFB7EB6ACE1DBF7
+ED7D872B9606E8E074B674E3CEFDD77CBCB8E6B18F01C81CB03E9278423BAA8E
+34A15518B55F52329AA8FB3F5415DB791471201259828ABBA53A0E77085572C4
+BBFC26AEEB595C8A12546F17186636B50E5083BD29AD0A6FAC326928D61BA79D
+289F0B2A478D6F91FF09D43C0068E4B4E6B02A35FC8902C34C011D381877BDBA
+7F07B7F6DAFBBA37499AF60D7575AF550D1232210EA231FB23C61F4EC2688410
+5BCCAF4229F270CAE250FD6F7C63BFFCF842C2A7E4CB378D728A5A231F9B633D
+EC9F917ABDF53DF8875B8277DEC6E67E71AF956143BC596B02397CA19C3E4CB6
+78A92B10D61B6204A09A32FB888F23C380C07DD6A3E9FDAD30A09C830E69FC43
+40E1A9F09EBCB1038494528DE36F4C3075F9718290F690DD4719F0270D30D946
+C6ED1B3A4B5760875316DCB6BEC920AEDDDA3DD4F8546654C04A32E6423F8A59
+45BD7839075ADACF3CA7BA1D0BC73C149C6E4410F848E7ED4DD36AEC0524C6FA
+273C589D2D80ABC94B01B02B320D5553C9E802B4DC8E5939BC2C47044D848A03
+95DEC79FE672B809691ADDD43A581912A8C574842F8E56A87BAA03F1BC1AF3AA
+027BC35B95E1FF1613AB38B1C20D59F9CF6CEEF86C1D994616754E6F0F2968BD
+2C97F96E41E9D9F69CA9B61D2D91AFEA73069FE9E51ACD30706FFA6E779168E0
+F7F9C0A45BF7A46BD69BCC9CA32F449486E68216D07EF576A8D09C722B7C631E
+25B74ABD107077491ADF7AE6FCE3EFE24E3C0C8A00BA1D6048D40B5FBE4EEFBF
+B42E2F68A18AD1D4BBB1F2755E4B969115AF347F4503CBA91E6F6B06D7B04071
+F12A0C7976E7DE55C0FA7438E8E14FF3973451B09B232565771DE2B6360F17B5
+925A9FC376F5E766051AD02CDF1CD443B5F3E244ADDB0EBE2719797F055B7189
+DA50DCC4CEDBAE865A1A4470D76AAFAB846B28514D38D88E7719EFD7A3098746
+587A1C99653154846A61DB722E4225C79A7928A7D05C9E5F10CB0DFE2BA02D26
+8ADF69D869A929920EA81D56755988FA482A0116806E909947460EB600AB144A
+AFB3C20CC1B004089342CE2E405F2ADDAC4883F517B5B7B5F118E38A06707FE0
+2700E0A29CB2F59A8B7D1E21A4EF94F86B47F789FBA741DF547E3BCD917C5FD8
+4254C2A10FF57C0F0F043DBF082AF3C7EC652BABAB5D80C4804325872262F501
+08F942D06663DFEC1532E9AF83430E9192B52FEEFECFD51625697E305DE10D3F
+94645A484FD434D5813D258BC03363A9FA9677A421C87586A20FF6C85C114849
+6BC98CF29FEF3B5AA4732D5940BB3AE0F25E4333E3C9A1BBCA7DD69F9F2EBD77
+7D7ABD1D8FC71362581AAB38E51C106373DF1D25A6A7C457DC7525F7831A260C
+2ACFFC48AA0288B6BC149974CBF8BF29C1646D84FBAD6B272D0450BD3E1AD5DF
+97AF94164C2F85DFF54F970C1C417ED3258FD4406C9CC7FF6E6F93AEE5B273E7
+97DCD626D25FB8619C0363A83DDF1B14854CB51175B088CC4A49A1BEC0178882
+29305FC77EB68CFC2380E526806BEB9EF355C8044A5B600F87C6A41BFA832FBF
+0BD2BFDDFE8B54C0AAE2D538093E93406CD08EEE5B5A97882DB515A604AF3222
+11D4DC5B9E66BDC51C32CB516ED254AC2E4B37F25425C3955389AD139390461C
+F01AB26E34C8136D6B47A4D71AA1159891300AE010539544D7791E540F264F57
+7E31D7AE561EA78C8C5C6A05BC6935AF8E4BC809BD25CD6CAA462A12A8083DAC
+3AB7E7A27296D8B28AF8F291439B150C0CD44039E166323723C76DDF837A18C4
+6EAB518516DB5835934341941ECF336D64E8D8C3DC4CEA183A219814F748894D
+9919480C416517CF7BDFB0A70FA1ACE29115A8DC3585200ADCE3E55C425B3256
+74767CA569F1D0BE767427FA46DDA360B1EF0CF5455A80F983D1C783D62DA71A
+B2EA9B39212F41291B68AE0D671A971E8A85A3CC67A06673EA751BF5E844E0DF
+E109F4E77FC056AF17EEF33EE3423EAE54B8C1022D7403886552068D03F7951E
+09DFAFB9F1A81EA05105B58ED652B88F644F6327C2FB99B97F231221E9D5143A
+9CC3AA5F2A1FCC75799DF35313D0A38C371A75095F9629B6AC390C02329324B2
+F11552C071FD02FB0F1138B76C1C923423BEC19DBCDCCBBC78E702632269E1E4
+19981222099F9526E01F6ED9600C8A87B56D968C1B0602DA92B8AD45D446E286
+8CD4EE3DEE161DD97FBF40E39CC709EDD315472179D4EE538BFF2182716DBB98
+E58350DCB5AFE831877B292B893FC8182E8F0DBF6810B9179A089E7D3094FF83
+EBC19F52DCE376D84A4DB9520C5179B625D7A6A4FAB5D8B8874AC07E02A46EC5
+97C8A608A07A6470828FFF506A92949AB74DB433ACBA8043EF93249F51E40684
+0B4804891AC868EA0CD94DCDD70D7293854453F14A1292D39DE3EA6DF4067E92
+FE23AA95C0571696F821722D472CB429A935E602683B2F52C11B82AC5702DCF4
+89B585F5B3290F4FED79D5D1281A0FA5D52B5EEF7E489C0833A7824921EFF030
+A5CB915FAAF1588B6A05AB8D84D51B899AAA356E9256F3C210CD7CFC9DACB8E2
+DE4A4FA6E1340C98D06D5962D914EA9EC7A2DA431536DDF8329B92F1B7EA52B9
+E6504B2021F7FD1EA8BB61A15CAEBA2B5301555F63E029EDA2AF989502CE4AC5
+94207EE11CEC5D7DAC50A455543A5C9B30E1F87DBE74117AA0F2A22E24BED067
+8CE3D7626BD0F7FE095F3A047F54261B579672CC94E26B850CEB3852EE618B98
+B5FD5DF47690914033C2F94794F8ACBBB5841A8B9BEBF3EF73F315F03B97EE26
+47C87D3FA96BF2D61D36EAE69157809F4F55B5BD34CEA5F6ABD00B00E66C7D96
+8DEB424B710B505F5D999108C8C31A0EAF421F881EFDE8CD08ECB745BF396F47
+A18ACB96E1738C0513FBD1088A0F3DC777FD5996DD7CF5A3C5F0C2C8834BE9EC
+41F48E24B4E94E3B54D51994E21BDA788A9DF9589814BC28675BD9DC4BCD9B16
+E1894F525EBBD603D38F694EC411B7FAC3147C07BC2967C7164762A9EBEAF0B9
+09668542BC75FFE1E9C0EC0A2A2B3268737B6ED55C0590F792DAD6143CC87BA9
+8F5A4185BB9B608A8E6B3530925EC3DA664B0F3059C31CCDF4B6B3869495B886
+DAEBBBB3C1D82C42AAD482F8ACC6F71EF1502369507B73C7FE24EF8FEEB97950
+CDB8A68FA5804ECE1821775903D39A0119726E7782C8DCC05FA99F268DF559F5
+EE94154AF767E87CD724C9E9A9106110404AE090F9BBC0093D84B495FC10CB77
+EBA16890D691158FF94CF9826E0E2DD0A77FDFC44D5F7112D942DEE89F586D16
+0967FD269D359E6E136546AA924E7F7D69D3CF9B440EBC405717566690377310
+2863E27F546760F671F65A077BA7DE6456F7B4327B21925F89CD3ABFF189B793
+89E29A8E86BADF6FFE83DC47F7ABE674C00968CB85CC7406D5FB35AB32E7C315
+8038AAC30E07FD3497A280BB2C2D539D69A3C51BE2088D8127B8AECEC7ACE4BD
+1A52E4B442BF23D40BD23FC1501486716D66C2912D3A51713AAB38F0C7B3A3BD
+3D80C5AE5CA8331C13D86831BE0C53DEEE8898E8228DC80050732F6D4AAFAE37
+667537D16276FC967F118C36EEB990EEF320A82A95E45EB1287627C30CA586C0
+7E419965D7299168556FF97EFE2DD72FD72ECAF88C2AC1AF24E2C9DC3EC105F0
+11B4D67DC09DCBEC2C667025B653709B5F0BACF691AC97FEFC3638D600896355
+AF4F308D2BC3ECA1B544EB6A444F0B8F1BBF6525D909FBECE36E618C0619752C
+B1F7D39F7E743DF86B2EB9706E30A89604486DCCFA49ACFFDFC2B27414BCE582
+4596C8002CAB12B1FB8B66C3C8185A95FD6030C52922355667DC328B86C3E3BB
+82331D81472D3B71298A4523C0A1DA5F99E4B9B20A55FDF9D231EDB86F67E57A
+776A2F39E4E4EC4EEFA0497788DE61AFD492AAEBA7EA2F2717B7AB7CD5424E32
+CC5F4F8EEB5BC46262D26051A60472C4D304358A072CC1E9C5823B094E552269
+8D9457811E879204EA078E52F77FCADE8149571F4B3B5AA04FC814896A2FBA7F
+3968BDBE3F2BB603CC18C85F5FA686D6A39F40DE7E61F28E3162DA7CF15A9C7C
+2524AC07BCF594F50ADBEE9E7FE9168E17AADAC9C920C782D0742E87AC975807
+2D756772484138FF3427B11E3F2F17DB00A807725EC1A401F072A68CE879C4D6
+1C1BFD1D6140DCDD1A0EB5253F632FE978DDAF82BE23557FE0A12B475731FD2C
+D7D21F0C19DE7B2D4BF9B131847134BBAB1E69AB8DF02AACFB17E92C0B47C60D
+4E114EAA7C6EE2CDEC9736E69E003228EA0D3A5485EF238197488AA5316DA561
+81A6FE3D21B7CB49769B822FC4CBEA2ED23FECF6EF455EFEA9A1290554F520A6
+95032DB7441047B7F12C5BB697348322F9F97076E730D3D107C08DB2892BD02C
+8246D13D8D95B9C0DB4101E3852E88D5C288F7A1B90DEF048C0496ABE030538B
+7B763BB2DD1681AA5EEC13F7ED55FC31590F567D1D45E3042FD9D9E7AAAD6DE5
+07BF6AA2F4A6CE3DA270FBF543B0D4BA8C5048E137DF2E745E0F199AC5AFD8F7
+6B1EC2839F6684458575F825A3384E5743587F2FA2FDC71CB834D6741D6054F1
+1B93B6B62DCC401E2E75255091DBD5B53DEC866E6618858609B5696F1DACBBA9
+AAB36FD550E468D331D9C4459377FDF090028FECDFC15C60B82D4728C279AD7F
+000923B5A29B2935E66E18A783D9C37F1A9F6C0750BF39758749493DEBF83A1D
+32187970E10E94D7042C5EF00EDC64B36842ED4131194BE424AF720745095751
+36914FBD349A7E99CC25B4476B8DCA7062BD3782939294141CF36E2D48D992A7
+1146E7E76225EC092EC75022F67DD2EBDE201F916F7FB9AC217CBF7F16FA1952
+2E27DF6A4E5FCDCF54E87C9EF8C65BD4980EA957495A66993C4998668A4A1535
+1502179F0A76254E49436A9EFC8388DE0AE6ED74FCE37B42326B1991CC3A00F0
+84F582C7958C8275430321E2DE4682A7E128497CA29E0369BAD9216E248BD1AF
+D882208ABC3A73782467DAD378DAEC85A1F35BECFDA1F01F43EBEDFD77135282
+A7111FA0099A7D4CC51740D147B6C54123F3977C95E730AD6D4B93E8C81294F8
+943CD8065BA1688458346234C0AD30CA75E5C026F07BF14345B568069363CA47
+2EC6122BAB27E9EA3C2FC86A29DB26DA06CF0810B2259081BC1E105D6E718494
+574AA2D6BB6EC3BF394F50B384E36ACB5A3C1D55FEE883CAB08BA2F111D4B669
+B7F8F909B1AA27ACF54CB991CF4BB8FD798F58A54C8E7081ACD1EA0E50946B3E
+C8B9C0328DDDC77192D772FE80A1DA4AFCFADE9E80C7991E30D1DCC1B4A106BC
+22A61E23D89A93E153FD7E27B3BA4243B395ACDE1DA0486C6BA6DC86351C3EE5
+A292E26EF1B5D7B1F2B55CCA4499A91776BA83D892F2CCD7397A17D4F695B5D6
+9957239A5A6FC44920E29891D92DB4BAED589DC8B9172AA7ECAA71A99344A250
+FBF76567F4E653DDA7B037843E0B484FC0A7F8591D256196FCE6A0A008D45B2C
+44061930752FD9CB48487564C301C965DB814D2CA6A73B3A87274CDD9240A1DF
+3DC80859259C1082D68460E627B3D6F85844FCC7C445DFC24C4506A665BC3F2D
+81903DCB7909EF2D8FE45CEA058C96E278E6F66BA996174E27783075F20E77AD
+29C08959F77D10499EA5F9A39CD82CE174BF626B87CF0AF02110A35EE66BB6E3
+6ECA1E21CCF2FBD34F42569345F248D14B7948EAF7B8BAB1B5D8FD619CFAAE29
+C0A3F006E3841C63F6661C5E5755AF8D4C3CC8B5B3F6BF096C526DAB12E6FBB1
+CD26A51A99C3E7C5BA9EC3006D213F7EE3D48E479E8E067A1EFAA0920C06488B
+9F77E52C3279FBF8B21AE48E978DC67CB720D446263282C8D9904D26E98FA8CA
+DF2364A7C38ACF8015618FD96D8ABA832BF7CA3EA7AE6409F2FCC491258B4BA6
+2A683A2685AC9916DC6AC53382E9A34840D9B8A339CEACA641C1B59B361A6819
+C91734F768447463C587598676D946F027836ECE96B42117EA49C0EB01E21C9C
+91297EC2E6E4979F607E97956B
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -2455,598 +2463,6 @@ B4E4BBAE31D3F6282800B92D9B76AD55121D66F35BF1650B09F058D728ADF379
 cleartomark
 {restore}if
 %%EndFont 
-%%BeginFont: CMSL10
-%!PS-AdobeFont-1.0: CMSL10 003.002
-%%Title: CMSL10
-%Version: 003.002
-%%CreationDate: Mon Jul 13 16:17:00 2009
-%%Creator: David M. Jones
-%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
-%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
-% This Font Software is licensed under the SIL Open Font License, Version 1.1.
-% This license is in the accompanying file OFL.txt, and is also
-% available with a FAQ at: http://scripts.sil.org/OFL.
-%%EndComments
-FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
-/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
-{save true}{false}ifelse}{false}ifelse
-11 dict begin
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
-/FontName /CMSL10 def
-/FontBBox {-62 -250 1123 750 }readonly def
-/PaintType 0 def
-/FontInfo 9 dict dup begin
-/version (003.002) readonly def
-/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
-/FullName (CMSL10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -9.46 def
-/isFixedPitch false def
-/UnderlinePosition -100 def
-/UnderlineThickness 50 def
-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
-dup 67 /C put
-dup 68 /D put
-dup 69 /E put
-dup 70 /F put
-dup 72 /H put
-dup 73 /I put
-dup 75 /K put
-dup 76 /L put
-dup 78 /N put
-dup 79 /O put
-dup 80 /P put
-dup 82 /R put
-dup 83 /S put
-dup 84 /T put
-dup 85 /U put
-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
-dup 104 /h put
-dup 105 /i put
-dup 107 /k put
-dup 108 /l put
-dup 109 /m put
-dup 110 /n put
-dup 111 /o put
-dup 112 /p put
-dup 113 /q put
-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
-dup 122 /z put
-readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
-5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
-8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
-EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
-02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
-46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
-4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
-DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
-7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
-C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
-25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
-7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
-299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
-80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
-5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
-8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
-5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
-F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
-966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
-A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
-9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
-A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
-94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
-DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
-E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
-5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
-8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
-155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
-4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
-44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
-8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
-04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
-A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
-F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
-111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
-8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
-567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
-C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
-C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
-51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
-66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
-9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
-2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
-4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
-5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
-0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
-233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
-BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
-62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
-B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
-DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
-C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
-CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
-38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
-FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
-303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
-8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
-8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
-C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
-9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
-4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
-03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
-93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
-91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
-FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
-06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
-95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
-9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
-7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
-6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
-5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
-3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
-CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
-797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
-DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
-CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
-8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
-04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
-78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
-730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
-021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
-CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
-90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
-97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
-F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
-4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
-40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
-3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
-362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
-DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
-7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
-04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
-DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
-C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
-B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
-9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
-3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
-D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
-B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
-74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
-44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
-A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
-3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
-BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
-01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
-6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
-DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
-CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
-683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
-87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
-550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
-2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
-17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
-3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
-F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
-B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
-1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
-61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
-124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
-ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
-0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
-D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
-F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
-BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
-75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
-8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
-B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
-7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
-F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
-F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
-322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
-523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
-6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
-66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
-B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
-5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
-093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
-B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
-6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
-EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
-A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
-8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
-144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
-7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
-172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
-254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
-5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
-011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
-B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
-0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
-3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
-E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
-993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
-0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
-18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
-ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
-CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
-1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
-A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
-6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
-BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
-DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
-1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
-93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
-E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
-4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
-F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
-4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
-361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
-95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
-AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
-50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
-88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
-AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12
-60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC
-BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
-9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C
-6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687
-22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
-38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
-B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
-0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
-6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
-A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
-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
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-{restore}if
-%%EndFont 
 %%BeginFont: CMTI10
 %!PS-AdobeFont-1.0: CMTI10 003.002
 %%Title: CMTI10
@@ -3087,9 +2503,9 @@ dup 99 /c put
 dup 101 /e put
 dup 103 /g put
 dup 105 /i put
-dup 107 /k put
 dup 109 /m put
 dup 110 /n put
+dup 111 /o put
 dup 114 /r put
 dup 115 /s put
 dup 116 /t put
@@ -3341,54 +2757,651 @@ C04DC9D5256E376A66835ED86671E18C539279615B0798D07798BD8C4F5A6FB9
 711211EA5F9C03986948964732849438ABDB47B88AC23E24CB4B82162533D0CB
 FE408BE676FF0BEAF32E558F0F8FA82AD625A8F7F18560E3601E815A6D94820D
 0CAE42EF0F650F7B954B1A52228F16683DF4E4F78B007011C8140FB87ACDA2FC
-664F1F24B9212D1D44D1172CA1F8E532DFA297E07DBB928C275C7929AF606617
-865E2F555664F953926C673CB8890F9E404259A729A2FF324FDBD9CCA92FA5C4
-93F926178D2CCCC3FAF83E2AC5F574A0938A700F72D89841CEA6AF46E31FD7A3
-D2CD51BA1730F7ACC3DC8C34B3734D4B710D0CCFC98DDCA3784AD038C2D689CE
-EDCF1A1F6314FCB5F59AA1C761CA9CC58666755674E7ED1E34CC5A7860C2168B
-2C2764E43812900E384962D7837C932CEFBAEDA1ACA75D19DADCDFF2522A4984
-6B40BDFA2C517B7E84E3F4EDAC1AA9DBF9C10E3B031BBBC917C75214C70C0DB4
-1BDDC12BCEB48930D10522CC153BE6C0E6B2DBAA48CD409E33EA5056108A38AB
-4228559D411FEAE1C0711190CFCBD66C4392BE1BC5F011E8ED31C83BC6EF1E70
-6E53A5037535DC8767B74025EF5F7A4BD3894071698C3A8D7181F60567E8B25E
-EEF20429380CF256671E87499DF2A14E73B4F79AC568F0A781C9A4ED22009B55
-C1D8302B7BCC76F2C14C6760C1711CEBA13A739DBEAD0F734E9320DEE0AAD306
-734080AA5AD5978D850C25FEC472047B7062487C2D0F955911C7609F535D48FA
-BA52F16DFE20A866221F463A5A22EEA0CA9247CAE708FD257BB51C5BF9075051
-2F5BB8D8E2BE94BF4BB9032C312CEFAD46DDAF74C68148F5F2CFC5C0BBD4E87B
-BF978A8192DE587539601EFBBB49D4CDF1FF4E229B299DBC3855D51571F5990C
-43DCCF357F4756774FC6AAC1707093B9B7926C36DC1F4814D3AAEA7A19F9FD22
-5DA49DB5BED96EF8C544F9BA29B0609134A3649AC6AB20476023DFD89D35B200
-A3ACC84A6F68C209A1B37F6B0620380CD2E4A23D08ADA7F66A3D129B702A2189
-9EDD36BEE9335386E4B742D56030C48DFDD1DA50CE4CACDE2827D4E1F7E2849D
-5CF13FE1BCD0DD6FCC9E7BA36CBA91A13E4B329E8E72F0316B2AC5DB80C4490C
-74C9440AE86D4FAEA76B628CF30E67609661299D1255EE6190A996EB0795BCCA
-B58CD015F1980D7951910B743EAF16374C4EC491CFEAA0F89731D14A0AF43428
-473CC721027C9222B5FE9287BAAA6D2D0485C65F46E5CE9B84DAAB44807458E3
-109DA0E1AB85D0608AFD7A9831250FB4A1E19AD26707E4C188591FA88798015F
-93E16EF116D128607F78D5662EB558E50459E00A2F7DBF72675EDF896D52F30F
-975C45C190025E6481C806A519EECBCAB88C8B9EB9646C5689D76BF8EEEF8ABB
-17ADE68C0B64521D69430B39849396ABDD904B25D620DE7503BCFCABA707B881
-935B5DE0AAFCE001EF33910442A82AA44DDC8AD235DEE928DC1706A1874348EF
-0A8ABA338D60DF49BC718627DC00EBDF887637C5E6C39C66B4488C5AF59E57D3
-35A70E00BC23193E0AFDB2D6C4E26C9DB95378C65FE35BA71D71B1C51190FE32
-873AB8EB64FA3AA7EFAC3BA3DF5D3AE4DCF5170CEB863D3077FF905F4AF13055
-F76C150A6DA1A7A80B798C4E21C6044F817F0408C1D3893381A08E11F9890A42
-62ACD1A61F9F640BD13D3282B432A711E5E624B0BCC771EA1B319843A7295172
-D661D1A062DB84408A21C82C781E02FDA05F68FF78C396C0C10C7CF0D3EA7537
-6667789370ED6CAC90369FF71A3E5C8BB7870C45DD0098C6EC30CD968E897D33
-C87971E6517FDCC32701809E27AD13C747AB20DF630C3480AB0F868FADA5EB45
-EEF2ABA20547B199F37C44AED38582FB94149BB53FDC70F12BFC4AE288A7F4B3
-DFC2626158715813F2E287513593D35A304D91687FF188861ACC64AA5F040969
-CB76B0877286DB69728CE7C2B0487452ABE3863DDB85202DF1773345B654FA37
-8A1CF611A24B493144EF62937F1F87B5B83ACD523DA63FABE1437AB535B99BDD
-8C2A3494911E4EF4324313C420F0FB8A5B2B5B5C0FA33E5DF0AA3102EB802B7B
-313475E5D27B0FDC37BF71136350056830B611B9DD6344616597806258120F65
-75BE0D46A6C5F8263F998EC717D42350A1873BA03EAD4C337BEAD1EE21FF6080
-97A298B6D92E9B8DA2AD5E688D99ECCF577CE1BDD15FFF28E125412C527EB327
-9723B500D3CED93AF7C930CA1B94FDF3A73F23553AA785E5D8525C605842EFC4
-DC427E47BC86A737B23FB2C9178FBF673E5403099A01F334F8E6926FFFF97685
-CA02478B0311E4F4F3519EA57B80
+664F1F24B9212D1D44D1172CA1F8E532DFA474FF9D8343FFB4B750C6C90BD0B4
+2D4E71CD8CDE8A88ED9417FAEB3096EE16FA2FE8B8BB4B93A1B7291D8893D19A
+38E7D0B6E8858E8A261560DF58DBA0493BC15ED4FB7C5B5671F20A8B9ED157ED
+0A16C7C529FA39C9C26F4CDE79989610EDFECED5A70764F2C0B3AEC681E185A4
+54AD806385483A3793368913D5351AED0FF9DB1D30BCE9BF97FEBDF97E184979
+99A3B8C0855FB96D08784FB9C32FA33F3F438DE6740C2A1FB058D176FFCF2570
+CEEF50E5829EE952EEA0C0291719B70CC98BB26847013B3B2738D4EE672F93CC
+EAF8EEB7EF7172D6CE655415578339C0AA5189500D84CBE2241956D96907CB50
+F0510DF0982BA9DA4C0AD9865DDC397D8DA8A2F8CCF9B43B8AA377609645CC41
+196E536A7335F607747DA7C1F19DC1FED671A1212A7E8CD004369156647B3116
+60D4505A1121B2C09C52DB0EA388AF25C9BCFF0755E8C8E45EE19CBC8096161A
+F9BAF9DEB300F107D5604BA2CD0084C6082CB5EC9685A5A2F40008097E25C4D2
+7AD3197DA77D7D0AFE9081CB56E9F95FF08F99BE64C44B974B899030460344F3
+D29BF2C2AD07CA47DCAA864CCFF49E0E614B5C603A57B81E7F61AD07EC325638
+4AEF374CD469ED8A58861BCB288A7A59D2736BE7054DDA2A9FCAC1B291C7FABA
+31D1984811322B1608B99EA1AAF21E3BA5C3C791950863A03AC672DCBB3F2A22
+0A3D8233C95CEA246FA59BC7AE6DBFFF4C36BBD77104003FF4A9EC40BE3B33C6
+41B06172198B32F961B282B4683B3BDBA80018CB87260FD9121BC2F71C08AD76
+DA624F72A31349184A01D880D61B403A3BE88E0F7AE9B91FF47A8F995D9D57FF
+6C2D45FCCAA4797819E66CA2AD846B691CF703524B04326D1A1DE1F516DE0C6D
+959609EB64D8C11AFD111EBABC081DCF5608D367345BDBE9B8E19C68C1EB6C10
+BC84CE8D3DC7CA736C321B20B72EEAD657531BE8499ADE8E9C3ED24808650A07
+1E11C61322F0C7925979BBC97EE2E08670611C2BCC53E8CF10299AAFA3C2B090
+D4CC25D05DB896974028255897F9B47C4EDFEA190599BDDF07B880B9183250E7
+1F78B127205DE63C650E3C2EA8DEF0AC541AE04CAC8AAACDFACFFB3E70040444
+0DF0519F49FAA3F8F67D73A4B2F86D6DA3B48DF87B5C7E32897477BA5BFECD08
+2E31D01A4854D4B722E35DD2CEEF7C25D9B42F70F8166059B7B77D13B35DB276
+782ED2E67CE99197D5D9C3DB309753AE6282DE86FC5D5569AE515CE57B20A121
+8CF4A3DFA3F568E830D2A10599FFFCCB46AD93127B2C31CEB53548CDA7CB01E1
+7B90B42645AB93805AB3A9AE907FE548E42A8440EBEE66DB7F27BEA5D9E2FA56
+04C414C309DEF3B99991596AF93383BEFFAEBAF10E1186AB4908CE0E6E87EEA5
+8711794D7100CCB6A004A8780418310F57F51690502624EB3900E9935AE34F20
+3BB5A5186E5296819C0D941CEDCF7B033AB4D204C554D8FC0104B43D4F3F6D02
+C98A0AACBF7670455AA04C4DBEA7DC5982F1E28ECA23FD93F99090A725DBC8A8
+71D7A96FB5FE11224A880F0F60656056993870BEC61C9F646885BBA4265427E3
+FD54A6E677F0AE7D565B427349A19E944085DCC2D69151F11E7ABDDBFA5BE301
+0B80292C2EEBCF7F69A6C2BB585F84043BA125B3034F8887483B9FDAF97FF25E
+551046ABE700C7CAF96791818B1207A8069C06600AFBFE97A7DFB1DB7E311A2F
+ADF9F81A60A2C90F3D482DDC304A21B624C3B482F5B60D3EC4DCF86EC86BD810
+C02DB88D23C0883C60D41D6824769991C689B3221A83E5CEBCA46BFB576B32CC
+5E0FEB47A1CC1C8BFD93F86C93A814A651071546B2644DD2205A9D6738C6D644
+70B04D32C3691C532CD57BE4ACA821412EB0D4BA69B7B574A1C149DA18371F9F
+7B02E444006C9426D2F0DFF2F28C58A2DA59FA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+{restore}if
+%%EndFont 
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.0: CMSL10 003.002
+%%Title: CMSL10
+%Version: 003.002
+%%CreationDate: Mon Jul 13 16:17:00 2009
+%%Creator: David M. Jones
+%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
+%Copyright: (<http://www.ams.org>), with Reserved Font Name CMSL10.
+% This Font Software is licensed under the SIL Open Font License, Version 1.1.
+% This license is in the accompanying file OFL.txt, and is also
+% available with a FAQ at: http://scripts.sil.org/OFL.
+%%EndComments
+FontDirectory/CMSL10 known{/CMSL10 findfont dup/UniqueID known{dup
+/UniqueID get 5000798 eq exch/FontType get 1 eq and}{pop false}ifelse
+{save true}{false}ifelse}{false}ifelse
+11 dict begin
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
+/FontName /CMSL10 def
+/FontBBox {-62 -250 1123 750 }readonly def
+/PaintType 0 def
+/FontInfo 9 dict dup begin
+/version (003.002) readonly def
+/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050<http://www.ams.org>\051, with Reserved Font Name CMSL10.) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+/UnderlinePosition -100 def
+/UnderlineThickness 50 def
+end readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 45 /hyphen put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+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
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+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
+dup 122 /z put
+readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7
+5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99
+8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716
+EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C
+02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D
+46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A
+4B60D020D325E4C2450F3BCF59223103D20DB6943DE1BA6FC8D4362C3CE32E0D
+DCE118A7394CB72B56624142B74A3863C1D054C7CB14F89CBAFF08A4162FC384
+7FEDA760DD8E09028C461D7C8C765390E13667DD233EA2E20063634941F668C0
+C14657504A30C0C298F341B0EC9D1247E084CC760B7D4F27874744CDC5D76814
+25E2367955EA15B0B5CD2C4A0B21F3653FCC70D32D6AC6E28FB470EB246D6ED5
+7872201EF784EE43930DC4801FC99043C93D789F5ED9A09946EC104C430B5581
+299CB76590919D5538B16837F966CF6B213D6E40238F55B4E0F715DBD2A8B8B8
+80A4B633D128EB01BB783569E827F83AF61665C0510C7EA8E6FC89A30B0BC0EB
+5A53E5E67EF62D8855F6606E421BD351916549C569C7368AAFB714E22A023584
+8B1D6B52FC6F635E44058690002C6BA02CEC21C54CC8875B408A8BB84F445894
+5D6B3E4841CA20AF852A660FE9C832F773691DC6F7197FF3DEAEE97418A5ED2F
+F2AE65300416227CD3BB03C29003C770CD7D2A7A2E4C1DCA193651C2CDDBF93B
+966938788694BFB562AB0010268955FC3555E5984CCAB0A9B7590C77C9BC713E
+A29E5BD7193A4E971D1752DDD0F0AA4648E7E87BBCE66A1E836C715C408B07A5
+9EB56BEFD4596706CF839BA4CFA90CAD4038C1E006B51913279A2C31FBEE5BD4
+A7D74F9103CE6124F5B439CB860987DF44FE17EF88EF1BF62C67060D25696BCD
+94ADF08F04E349CEBDF9D3389D870D94CC05E393B3F4362A13A6A672EE5E8F5A
+DFE7046AFE3EBAEA58FFEBA4A47BF61F92E2003756DA643CCF2C9DFCCAB62669
+E3C2A18D690B64D907F50BCA155A85E47C3A6954C6FF7ACA36D8DFCE777B7929
+5F5D5F787B9C247ABF13D6D7B4A8F06BA25CCB342F8A5071325CDA86AD71BA23
+8A9695C7D1D50D0AAC267AB7CDBA7AAF46A264B7B081B7E79AD937FEE4969FD5
+155A99E652461EFFB4BD010E5885631E2B2497D6B8C43CE77D7D47FE201DD46E
+4482FFDCE150A1183C22C004A0AF0E1F42AA6804E038E1DFC8B0A3CE26B52038
+44D2E7F759DA5C252489E5525963D68BC27C82247BEB18818C7D4CF0BC5CC97D
+8C701034B8DF798DD4CE36C3F8B1FD40B2DA14EA75583852875031AF8C909EE0
+04495FDCD04B05A5EFEBA56A8CAC1F57F1B8AB91FB25C81CD51EE69D6E0F52CC
+A0E12CF7E3187D67DF71A599FFD895FAA7BF80E2E6B96592BE77AE96905BAF0F
+F547355A36C443797DDA7C414AA606CF9153E03450B77D1BA4088D739DF55F07
+111B9E11AF37F45B6EDE6D7AC126E05886A57C83886DA87761BE600DEECD1344
+8A82BD652BE7ABFE6A0F50ED7C6F4EE12CDFD80CA7A5518692F267C51C3FE76C
+567BB8DDBE09A2AF901F79AD02B435287CB8057B3D5EE6655071F67B00438728
+C4C3EBD648BAF650993AFE5E2B29074A99ED0FB725D9B8CE8B0292B08A280214
+C3AF252BEEAD30C88F72E322FAC3E9D78A1038F5DFC41F7BF1AE3744A0677094
+51B77C2D630B67853FE5E975A395C06A4D4DA744040B272C2B88D8B7ED3A2C01
+66F503C9DFD3C7DDAC865900D2A4F2CDF517F449851DB1963468D0266D7A3E58
+9F6B2A1843E6444274F16A9930302DACD8D2BC4588765099A86BCCD8A31DF0E6
+2853114DFF2D19F812F19AE6C2E419D7AC1BC024D1195074FD0C6717BFB389A4
+4D5428E7BB2E4F9E9FDEDED7BDCBDD3460805AEA0B5F6460C2FDF19273CE5BA7
+5D3AAE0DB94C6AFA8339646191C23B0149E7CBF136FC4C844E025A38935DF256
+0A0A6466A45EE8B9B23B6A055856FB084F87C73BA28F1883E3B184CD813C72F9
+233B78CA4E125ABD26F29B92CD9DF39D6FDC2A217E2B6B45D9B0A4D536790A5D
+BC0903069565A442FA7466414D948AC432C6B75D8D0E1DBB217CA3DC38A52DEF
+62E9D5AE9E753956C13819D93148C7683BE4F71B80BC066D8C19FC807FB1C086
+B49215DCF56A91A42089F0D063B9981925691F7DDE3237403AC714F5CC3ACA88
+DB2F1DD205578C00472FD70C8BA4F752E3923ACF3164D442A6B639902ED060D0
+C5777BC20F9A3BDA60FA3BC986C38136FBD2E8F910E32EF36377C9CC187F4AFA
+CCEC423DB925B378522B748BDF12D523804CABA83CB5A7ED69FAB9AAB75EE8FC
+38D9866E3754C4E2F2B9AEFA804044D878DED0E114EA0E9682FCF38F6628E63D
+FE1C1B5615E54FAE8684566EDC4B616F76EEFD6207E0386F06D3BFFA26425F24
+303CC7C8A8D7021E7D09B202616988287838C3DBCE3179B4FB5C726E603A47F2
+8248CB508F327D1291CF3F08F7C88298DC2D0F778D24304EFCF6E074182BF5B1
+8E6551811FD6991971692108E289B61053D6DCBA2925B3903E8916EBD09D97A2
+C6D08E89DE4C0CDF7185E1E00DF456B249F0BFC686E04FDAAD2772DC2C39DD53
+9C23A41471267F53A87E5C2B8CBCDB66CE0B9844BC506428E6150B48D2FA6363
+4FDB2CEDFBAE0B7DBCE4D83E29B2955F8966272CB865EDB360C8A8C19EC62A29
+03066483E4083524A1E8D80FE3867BC1AA91753C26ACBE8489AB0E3330206212
+93E07ED473DBF457EB8489E66FB4B8ED8A9EA8911CF9308CFE3E6D6F36810EE8
+91CCB11BD548617B2C683C354452B9229E7C9E68828BBEC324420DF7C188CCE0
+FBB514547553A7E9B38AC265783891F42DA472388569C8E7594F7E8810895A27
+06E456902A8D9F65CA808F1FD475D011C4572F8A654BA01D67942226A663D179
+95149FFF41A9F55AE84EEB9A6A39C017D7E4FD6EFEEE7FF3CE847CDB064A4954
+9DCD273B810E0F259501BA4003A3EC1ABA6E13D24C0B57FF82D6DF077833B6A2
+7EA54801BA81DB961C261689C0887FAD83771E55D3D137AFBB21779397E11972
+6C6CA922F45AFA5C0526863A5AD8B9C0775CCBA17FFD37A44CED4710884DBC31
+5C9D3F5441595B86CF7CA2EEE42AE87896E9E60EBF5F35C2B7FDBF9A9CDAE262
+3F48396F0F741E9DDF1D4FEF75E68AFB020D06CC29B3A7B2ED819D1AABC12B91
+CA2A65F1AFDDA2F3FB322E0268DBBA024663E49EFF076455338FE31A16B04EC1
+797EAB0B49AFFB906A0690A1E8E2F5314773E1CCFFF43E6FB3875AC907F0C5D0
+DCB9BCC127014D472463560CA0CB1C2CE614D94177C7A52A5B089316689C8112
+CA57E35D716D956DBF9013B1E5B9626456B1433C8C15FA906458F957133B9E19
+8D46DC3AC015F7602538C2AE3927C6DDBACF38E59220C2F5AF36B68DE9117C51
+04CF7DF32B1AF55B87D1D8A5F4BCFEC66F63B32B6548DEDA3AAB06C5310E4757
+78AFF947DA22809B360FE535506A554DDDE5A6F2411246653710ECE5CD3185BE
+730520A766C47E1ED01890059882BE1432586864E1A86A7F586438C8DD35C00F
+021A741ED47E0F16DB6070ED0C50038632CA4AC2975578A8372A080CC0447C79
+CEABDF2BCD5E78564247B0F0025F556DA8FB62125227849EACFB724A4AE3EF57
+90C07A5B27D2E59425F56BF8AD84C5F5310FEB1BC73D536339FC2E6A5BE2DAFD
+97FC835E0D52F680F80ACA37DB498AACF152B9B44626CD89E3302C3EE1623EE0
+F998FA78305960AAB9F483F731F5F67A8C963C23DB8E48FB804EF8B86FAFE7F9
+4C09641915FA7E3930AC922682313408BC1607C76751CEEAFD660206A39CF394
+40ABE2A313AB7D5FD6444E219DC5C26734D322BA268D330AC17959A390D6C8E7
+3A155095BDD66516DAD5D65519A7FB871ECDA77061EFB21F359158B4470EF79B
+362C35C06B85C9A9505C8361939C6AC013F2CFE8EEF46FD8CB4452AAB3EF1FA7
+DC066557BADC2ADDDF7DDC2A0E1DD4A357E27A2073427EACF9B9035DA5272136
+7DF37E26D96ED4B2ACD60596E039BCB15E259C72FEB3344E3EEE3D4F17DF4233
+04C1416BCADE80BD483DD8C9AF979E1C7D50C4CF015870703F88B92C4FE46AB8
+DE6717B55C460C805B391B84333097E116F4A51F631FAFAB34CFC925BEE8B72B
+C9FD5F5A79D8F2295FBFAE649DC6AB47794AC7D73431FFE5BE992F2B5AC67049
+B5208251C0E442385A9FACF25E3A98D7F5D4C2A1ABDC600AABE84769CA83350F
+9B87F71CEAD3600E02FF9AC03C1B5C21C84F911511A0CF0111BAC7605EE31229
+3C526A79D943D92E1CC3C38ABE82D560CFD4172F318030852A5FCC0534B8B3FE
+D7365987C8B48A072907B26CDC2108130A33233E8E0BB5FDF14FB55098A10EA2
+B51AD9EFB119F82B08D256D396D3263FBD9DBF172D43A90ACD1A31F3E89E8571
+74BE98B9560E2CD661A2F93C69FEA3FF26B00772AE2C2C24B98D3D122EA2AA8A
+44652CCDF4EF4F01CA7D62A976E23E8A86291F43BFAF38FD9C325E70F9C36CB5
+A181DAD30156E98339E6A0498D3420B7BB3B4E651A9090D4A17604AE386273A8
+3D4AE8CC18345E6E19DF06BA848F203F74B161D6A8882991CBA7385F308696A1
+BEEB0130D938A764B98A2001A38489B1334025EA848CA44A116D64926D460D64
+01159E77EA7ED9ECE7BA77635BE564A4ED89315BDFF54ACE6AA1A26591D13CD4
+6D6425CA7933769B842192858D10998509396829263290A3A7CFEBBDA3EE6CDD
+DF1E492AECDFF7941B53573F01F623CA0A5ECC9D05A3D0954F7AE8CE94AC3B2A
+CD4E27519B2E16F033EB732AA024BBAF74626DB55DC74B1FDDB07FAE98B4AC5C
+683CFD8744F361838D343B657EBF52DEEE7AEA7565C5BEEFE455DDDBC4DCCA7D
+87D6D769C5ECCF14118A14A85A86865777C8E28F953160D5E82844AE54D541DF
+550D5F1519E183E0C42BE88F0458CE8087F2CD4B1B49A8E9E3D127C4A4CB74A6
+2E73BF4CC317781D03FF04BC36AC0E4AF99E2ACAD20F6F8029DE8A035DAB40DB
+17D237850BCDD05931FF4B0FE2D0B79EC5A88FE0236271CCB075BD194AA25AFB
+3FB93A5206F61A14602E4EB6F1C31C654527CE0C02D04314DF9AFD710D0EBB9E
+F8721B97F5FB18E27507E1F800B5509A58A1A8296C72B7B73F99B6CFE42E9C2F
+B63B3555475E562672645CD374BCDE937A9B05A157FB3E74C8297507253E957B
+1A9DC421946734CEFA3D5EE357DAC7E9DE17A5BDDEF6B2D2A740BC58128FC514
+61154664412BA1C05209EC992A77B7CA45AB7C0EEBF590A5B5652866008CDEF7
+124A3003AE6A7CF9DF3C72750CBD281358CD2FF25B162B78CBB971DB3477F8D2
+ECA3EE9CBC90323B2C236E375337EA0848CD7CB5781A2B0A42DE7E4D99DB2746
+0B26796CEE129D23C76794B7CE21C13C7D4A998B752C8CF43A4821B736EBE246
+D2A2BD7BA3351FBCD1B0A501EC1EAABE60D06DA2FE39BE1F0AD629769FDDC933
+F9D02F9686EC8C2D7455C26AF4DD3F6860B2289E3A30E1C254AD17D731CB73B2
+BF4DFE90CAEECE3ED0CD3FB4C8F4C7BE1C056AB4E9B95781A8968E3CC1010003
+75DFBC4AB9F6B27C5A9AD88D94441A8ADF09EB275E5F0E5E6F3BFEA0FA8C308A
+8593ABA0645ECA8FDC3F0E264B35D4B0DDB86B93CD8A047FC409E18196B501C3
+B003622999C47BAC04FD1ABD8AD359C977766E9643EF3BD6385306B08EE3E13E
+7DA5A06AE33D17A3D574C6390DB6E9429754B210F0C349C359559C7EAA2350BD
+F61D4D8A92B1AF697BC620FA0351E67E0D9F41A95A47EE0BF210C2C48691901F
+F905F65693DCB85BE412F097480F6A7266AE0A928729DA0F691CBFFF3B276EA7
+322BCD2206D96E3DAFDFB992CA8F2955F0E8B882729DFF840569D12E4DA1775E
+523AA734552AAB6F2F16B89B39F1A3FF0E07EA08D13E612F201716C67F327017
+6C041760DA30374434808273062C1FFA2C47B3FB578807BC26537F542040FF77
+66C995EF3E8B08B09FCD3EE89C30F157158A739606D2CEAA26694A4F1CEA6633
+B54933141CB85C60AB262E2D4E824A3B85C2BEF810DD774F296AB37D0BAE7182
+5648CD18556ACB124246A75474B232D712C2358908B5D9A76F82C626BFDE01A1
+093B8FA6AA0B32F2CDEF737B28BC0448FF816DDB5812131DA0DD5979D77C3838
+B978CC3F6778A4BFCE9A7087EFB19749285AE4C92B99A6649DA349A2E0889D72
+6D4FC664522F06C8C4D86D30BA43ED4E42211217D01636A4E17E2A132D26F394
+EC34EA12D84594AED9C6CDBBC0908860F39B240FA7D7B3003DB10322498691CF
+A294C0FC7ACC0BAD1EED3E9D60AAE3F7429695892D1A21CEBF062C6129B33966
+8B2EF6E932F9891DE6028B81C5E9B23278D35B7F0D83989BCBA25E20E9D503DE
+144DC485F09A4EFA1268AC5E4B551C5B2F1D51E9B9B9C0FEE585204F869D0BE0
+7287D7570A12940A47C1F51AC6134F03B415C30E147C49F89228855D093EE55F
+172711F37776E97A99CC4B36E2F10713E36FB279FD3FA5A0EB9F3938F42E2BB9
+254EB8F0C0F30391735019E02BFDA21D9813C6A22279B898EAF01AA892B14DC6
+5912B9275167AB46EBC420836CC1A5F38A4EB47C039A7BCA62BC3FCE4199FC71
+011DD6E5FFA0F3D7F04AC02AF91B9249B9F993AE346572329DA852115BEF8460
+B94690E790003586F473F37EAB5AC2922F5F663EE2C3C0C336A8DB71650631AC
+0A923A389AC911CB215EC2EC7D50CF8AEFD59EBFFA53A9F1FFB7E6215F17093E
+3975F186FE23BB5FA5474C11408FABD223E1E6F62035B5A5C1AEFD8899F00FFB
+E729C2D5FD551E80716CEA4E8281660286A802AAE8D5834F37F2EAC46297E57E
+993B09251DD7789D3467417E393B7DEABD06676B96241B0E43ED1A1A9FC3B12E
+0D34B2B0792B79AA648FE9450C3B209FB6D7D91F50C52A5DAB0BC81A8B698BD9
+18946EFF691912D7348D48FE68CD876FC6F71F81165D0C3272DA1A992308D9E0
+ED6D0A4DAD679AF495F62B78D462B463BD4A40931172290C615B3B3B6B47E45F
+CEBB85E0A6AB6832067CA6D403C239530D07F199788AA4DD52553836851C5228
+1072406F6D7323A334E7A7FCA588897C4FBA6D4F7DEB65525EFB74E539C988C3
+A685A98752F7198E77E456A545F0D23A1BEF81EF58B02D289CF980A3F17BEC8A
+6F83DD90C4A917EB0E5E2B444A608E2E9D2FF80620E16AC1D7775C0A10C1299B
+BEE0E1AB24C50647E5CA1DA65CFF3B2C295F0644CA7826E1DC6FADEA93D66A20
+DE852F20AD224D28DB900519EB1569837139C833F24B799F7EBE3FDC14235323
+1D0BCD4991C861F38DF413A5A5588B73AEC3BBFDB885CE17BB3E97B4E6A79761
+93EC8418C2BC4725CD61B5E30C07352F647C3FD50083878C13CFAC241DDCB082
+E53703D182068727F9EB6FACEC25F6D901D7309ED7370867E34E267519E22D62
+4FC7093448BD0D6B1C43D318A3E14C92032325C132AE0FF7ED707E1FA4A955FB
+F5224BE0045CB14ECC321D0F333FE24EEFCC504F7C756451D7693C3E6CA87526
+4912E1B6DB935BDE76FBFAFCA4ED473F1D2618812CFF25A6859C626A216603C1
+361BE3E071FCFEC2D4BF2FEBDE07DBD56A1BFF8303901168FA06488BA6B76F36
+95B0A90D7724E9ADB567C2ADC65CF3482CF47FD1D16F70AA19A97D0F9EFC611C
+AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0
+50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81
+88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932
+AB7916D44EC2210CB941B1455867E510E9D8A0B83CB645BCABDCDBFCD51A4E12
+60CFFEF0CCA548F654037D01CD631FC4E1F97B4F65DA9AE79D99F13A726E93DC
+BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
+9B2005FA7E0F07D81E52A9A37AD5CEBA8EA63929093ED0DAB9F7C99C82A50E6C
+6440387049A0C359218F5268C9A28F581783BB9D29E08772D7252FAFA6739687
+22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
+38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
+B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
+0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
+6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
+A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
+84F4ED39D8127CBCAF9AD48E9CBD10A67A2CD0CF93D61A586D2FC6BAD9E65DE8
+89C10D6C40DFD9F49DB42190F87FB6407AB91BC4CC20850F9E1ADC674A38A7F2
+D9B7EA192B33A8BD9A2BED3AD4456E3A67BFF78EA223686214F712D192FFB9E1
+AEE6B6B33E88A60AE6F4C6DBAEDAF8E51AF7C1AE1966C3080D958FEBA44636ED
+E0C7DDD44E6BCD04353A4F9722EA952CBB853583AA1FAC14D3452216526F3563
+AC414A274C08B35C56EE1DC724D2B73CE833380384A3779E9E6544199203DF67
+7DC56012DEFBF44743B0FEDF4E7730629AE4C3D0020DF0CECC1E0B9DC6D833F1
+2018114A0923F972FDBE173438C3FACC5866BAF6D901C5E8781DD8C4BC1A6188
+3E7A738C719B60858557CEAB134AFA796311E44027B4653518F0030746957BA5
+74FB008FC398828EA8ED58608A823AB9C8D5975F118EC765728932B0796C7CDC
+01625C59DA63BC1FADDF777C0B512AF7ACEDDDF505EEC24FC59A86DD944162D6
+1D4597214708668F47AEB556C5783FFA3BAEB1987C8DBDA39BD75EB5AC76303B
+837B206079088D1F1F2BF8663707BE78EBD4EED905AEE4F5473427E7ACD9BF79
+19A7BCF422C9A4A46BCB960EFC1B686E21F3CBFDD71B2AFA6322627F82D8CA89
+40F377B4F5BAA611803E0A24921EB7FA239C0D9E1CB97F55BF0EB8C758A74955
+A1116169265CD6D6FF4672809A261DE19D22520349EA32B2165B2FB109BC9CE3
+C6490EABBBB75FA56580E11B398A9218C32D37860F6ABD93C61CD61EB4B7FF5D
+36B08AB1646073B00477286D4A0AF5BC6965F735A49849541F28E1C5BDE773C1
+30A89D89FCDE46B50C056DAE6C919468030720BABEEFF9909DF49078D26EBA5F
+3C7A0E93271F2F4BB825FC7F1DCC86396D913CE74AC53DAB2C6CE9F416ACB0CF
+5B4C147C9EED9BBFD233F6C334A064D23CBE312830265BBE45C6736CA71CED2D
+2439D6DDFE973E0ABA92702EE974F4F6A4DA5B5C39714A9FB3B9579F974EC826
+FFE45F3239DD5ED1CDB11A087F1C35366D959D1871BEC575BBCA69D9DC41E383
+92EA4EBA573C0ABF7E1D88DD9D093F19425A1A0C993B596898F320B71B016A2B
+B686C603F28C1B4581A2D1C9B298CCF342DDD2B9EBC2F50BBBC21D04A91DE986
+64CF0A38CDA3E0D8B5908729E59EA279628244990BE9EC876B7BA6F8BD226547
+880F6DB0882385B4427255AA3C91C458CEC52F29F2D38E15294F6F3BF53B4E78
+5F2400BF8EC925A0703BC1C76514FA588175BB3E954DDB54AAA4BED3862E2100
+48F5E6F6130803DF9210669C392D5E9A1246EAF547F637DF61041F9698134473
+7ACB983A65636BF4383F7FA578000C422706D8E94CF4477D4028F1A885729803
+25DF6BFE0661EA161E536D23CBB24A0F021CC3437F3AB52071F4D35C13AFC8AD
+8120C3E0F928FE6EF023F47C6B168CB7263820330EC7F02582B1526C7DDEBED2
+D75DD01561CA2A99A7CDDD8053F1BB56E43275AF1C3D3F5AFEBECBEA3B6780D6
+26CEFB9C15E8648AA430BBFC5DEDAAC12CCD0DAFAECF99E4F72207D118325B93
+0630B1AF70C26E694BB58CE9CCD543CA73DB5E655EF0C1687E1AC0189AECBAD7
+C3211A0E9B5989D45851344E8D9CEEE884F91E0A2B8EE341414C39301BE4D835
+A968A1E1BB4B8103645EF85FBE66F52D7FE4AF61F15EAEA04C00675EC32CA03A
+97A631DCD78D676E71B6C5E6652A9D1B52307C5A33BA0B9028F962C7D1DD95A4
+0B09F4802ECFE820D57B27023A073C826AD46E51B4789FDD064DCFED1B8F9D62
+2986E3E07433C076DED20F927562770ECD54B571DAE7AD171E3FE4B71E5A47D8
+C215BF59C8A891DCA37CC1ACB1F10FE66A89CD81B6E217E81BEF2B5855DE3DEA
+980561320F2F83FFCD3954B59E4112B9EB1E830C0D352FBCAB9016EFA7353D33
+01863B8CB6930A4608026EA29569668B21C40120EFC0D12BBF32A1A74755EA54
+DACA636DDD374600A6ACF8B45B79C68838FCFFB524ACA3712670A05974B2677F
+DB083D5AFB18588E6858C26D0513E50D76870C6681C6F987FB972767158C12A7
+6D3C4CD9A74F56D498C99B74A701427AD3A1AB01853C7CA524B4670BADE7157F
+A5957281754DA9DD7D435E9174E8E3ACE1B04936E202095654AA772C3DB15F2C
+781D5A51897B50FD72193A32476FA331C220BBCEFBC6D7B1A59E6E0569CEC2DF
+7E5ADE044BFF8FD48C157BBA57BCD51CEF2257298474798C7CEA643665E1E66B
+8C61841B5ACDA7A0C1363AD0A2EE7372239DBFAD9DBB122189F50A21189E3071
+04F1B3DDF87BD539BB9457A7EC86D875375102EA62F2898F4F250BB208ECF54D
+FFA550024001B2CA51525AE26E8DF64AC6C38062DB2C9976881F1AE09AB0F3C5
+E5661FFB5CC05EFE1B929187078DD8A0DE624EBCC7D5D316F4ED03AA041D55CF
+62FD679690965523A70EF77170410404DD9D471FDFD9C56658965231E6DF3735
+9239E0A7CB74619C8EB4F6052BC5BA430B1A1A2104B0B7A8B1A0CA8E59A688A5
+CF4C78565632D0F3CB473DA86CB581C0475E661559AC69DFBAAD1E274572FFFC
+F82C6C178C97E7E14969D77D5D65B711CEB9017900231A453B0738EE419ABAC8
+D208303C9914356A1C947991C9907D97743FB5696B59E9A4AB934BB0946B5872
+59C7B0DB9EF780ED816C56318ADD997ED2BB4D94D3E33C9AAF4FE00FA2DBA1B7
+EC50237A5E38303FBF2F3AC9A44171713D0259AA796E1CECFBC106B075E28C30
+2FA79E4F5378B00283F49B9C9878F2E549B0F5316490DD7815A65CD209596B02
+ED3269CF209F75944513A32FD267363EF33FD8E574EBAE2465C538F5D11DC689
+1CF6E2F20A8088472294D00BCF64C55AE7F059D9C0CFB4656B888EAF716D3785
+259138D00924D9B247360859997A5C346FE864DAF156D393DF6F52BD010CC58B
+6966F026947AB6AB0255F117ACB72F89D4A8C9D13BC1188E1A77CC56F4C0C689
+CEE496873F708E1EC5355195A404FF135BA4A5A43454B66791BBD51C8A5621C1
+AB13E813497B81AF12ADE3B699F21342F0892CCDD3D8E35631D1F633AB337B36
+A04C668822F659194433B7C9A7AC2CEA77F3C7C0FEA22AE5C566D9FA8CEB7F4D
+834A76F3B29C8188D7A8F292CF0C25E58DA0FCBE09BAE02863A70AF2D39DAF5B
+B15D1DF95280004EE6D5D41260A510308444A24E9CD65E52157A9256B3E6B1B4
+D482485CDAD034E03B60A07FFFE799F0FC0A20078897166300165D0606186DFB
+359A93B89562F7822DD5DE8F1CFEE813A044A1E5AA51BD2DBDFA189D37758672
+4CF0F9D1E0768F69FC62D9F6CFEA6A178EDE4265E46FA146548AB41CD0413BDA
+D939E43742FA98D01B2FAFE7793814A5041FD262576C99BB309CF18B4436D518
+D1611672854BE2E5AE2B6A4EB531BD55836E754C942C260F8117DC273D47ABB5
+CB633561471DE1AD165A0DED298F875B16CED6A27F329D55F830286FA48E572B
+C10FDB48AFA88D116E069984EDE038ABCF1EE80C168836D7730AC18B4CB38DAA
+976B620BB6E32967BED745FF570A07AF947072AF347D50D3D4A286DC6579004A
+4B6296C8BE8E5895808AAF886880B7CF42BFB0D0953990E727A8E6FB5262C688
+498F3836E61C3D7D4F386DD01FDDF2E642952537580A5E2532DEA69A94DDB35E
+33954C0936DF83C6C40D01A2D0531E992DFABA7F9F231CDB038A7893643295C2
+CAC065103737ECD244170E4A620937C1E31F0B92814F2D768383B96943756188
+41E8576EA569EE92BE84EA7257ED97BFA6BCD99B76FAA49DA5CE764E13AD9EA0
+658013AE61FCDF66B7B6BD1F7E11B4D26926C473B68D3FD666FEF7BF31B2DE5E
+55EC19D258D2969CBA538FC9FBF3F849A0851CCF5B07F1E9D06DFEA45DD12B61
+B8F3CB0AA8B560358191AE7B1BE71ED02D31B097F62420B332FBE6A818468581
+34FAA2D66D9D0EB0C44E65185FFEB04FE984214A62AACC711387ED24F0EAFAB3
+3EB432E3145F7B7DE5E3DC5C954C6E37BCB9C53C26FEB6B502220A934E51FFFD
+F2869A7BEED3D37A0E17DE1B53D65A881FB29E784576CA31B1A9DF1014301203
+EBADC6FB78732E2DA71086536A3D63E4916BC6CEA38D9D45832D207FA384C2DD
+31588B1D3EE1A02B58AB751A3665FD44325FBE72C59F579A8D8F70F58D4BBDEC
+04B4175BADBDE93A580B086ED1AE6D3E9BDB3BE5AAAF3126EDB4D02C0DC1FCC8
+CCE46EA1C7E549828C1D92DE643D9F0CCFF5E1DF3924C57D391ACAF3BC18542E
+D6F1C2003049A176398D945E1E220AACEED93A878AF277965CEC916451669EBC
+7A3607513F9C68C5BE7D001F6B56DAEA3577DB174C656D3D60DBC0866542A5F4
+8B3B54C526028A3AA9333B0B3F1E4D7DFDF73097AEF1F9F78969FD8EFDF0FF66
+A50ED63A9FB718F04DE6CA8226A2866B5A8786ECB55D0267DA91A518C2337089
+05B1094ED12A3955231875BC4ED67E694D4AFB7D2FBAA95031A367125871DD1B
+D751D4DC9BD4F333FBF4B0BBBF946E050F1FD0E91D342F1D520E18A68C47E153
+7DEF2F0E82DA72FB5AEB646A20B6EE35E7AC48B275E0457F2D0491A28FDB7BB7
+5C9D6C9DC51BBAC56A11259329EC2F961925CEB6D9BAD21A09507ECA42963C0D
+14FD1883F44A5D9D72285518D1EF8E9855B3144A8F30B70A3D5B40356DFBF406
+A7EA9038F83010B4E9E798609AC04BC23D502E7743B2D54C3B94FAF6EA1FD54E
+065139B31B13F98CB164E7AAE6ED6D58A7725248CB4B09C331127C0FDD2AB02A
+1274EF848EF0BACDFDD3E9A2C0BD12B52A9D998A13BEB3282CD1B1589C7B74DE
+5E5C875D73AC81C68EBC8EB697CA02CA9CB34C68BE9F9E0F002C47AE67EE1D09
+53A4AD726BC2046128B403B11860F6B8642813A931B19AA4144AE06213E6E3A3
+44E72664B4A7862E5A2FC2E242467EF8162220344D4DDF6D1BCFC1B591BCF649
+7CA1E9D918A5F1D56E88CE1CDE470C29221AC50DAE64C767CA4099589B154EBE
+1BB20542C2062561B37F61C0EBB0485E859F1D11330479B2D79245A59D768572
+875F343C88C6EADDB2E2FC09E7CD82B0BDE7D9F12998CA989D603558AB80CE79
+0147E6DB514E71BAC4DBDE8AE1EA0420BDED07210E04DF32B2E69BCF58419545
+D979ACF71392F24D319ECF12E271DAA71C4957F6255CE695C0FBB6F94E033072
+8155377E4564D8972A7A9BAC3B8FB9BA5FB0A4CB5EF2B011B5F404A224ACAD5C
+0D7138254E70A5D25DBD55D7E7A6FEC96956F83AAA11A862277CEA791592C5F4
+583D59A20F3916FF3CB567013A765B5C8DD199DDBFA1E7EEFC8ACB35BAFEAB62
+BCABBE5F28E5E1F2AE1500A8EC79872C26EC3C12FC44949A20D9F088DFDF3F11
+93772AA4B7EEE26F5A32FCBEA46305B3BF837997D89FE06E8A28AA4D376C37FD
+977F1AB172EBDB1FC3E9FF7E47F1352B52442A01FA0C8586CD24AD33108886F0
+585067CE3602C6B090770DC13F323F48E428A46A64A011321116637924CB9651
+BDA2A7C781782674B5E40EEEE9FFD396BD33F2F115FE1E5C528B436D216CBEAD
+A359F29C424EE8E83B9BA5743DFD2CBF02367AD6103D09B5E7D0424D3F448D4A
+8CF0E1361414CA764573BD4A70D78CDA038C24A1850283762360A331BCC1C98B
+A3A4A67AAD3CB0C3ED5F39BC21184C1C38B65E02A493FA538A84EBC3032FFB1A
+38BB5EEA6BF1AB9339D7A7EA4FC5E66BAC9E60409258FA388D5F0351864183EE
+6F10F422AD89EDC4B4B8ABF04767259D0D54207C02E27B455551FABD7A973BFA
+A46010EAC438DC2F92DE9AFA95AAC8866D78386C4F21C12FD01675BCB407FA16
+884E1C8E5995BB6C3931797530AF7AD35256309F47D707F231803FA181243ED0
+594B39B957E91EDF04B75A6AD9653A86296FCAD3A14E0833648173781F46DFD0
+F7713816C70C5D22B08808DE640CA42F57B63C493D8EBC37ECBEE07888355C34
+7C01F60837D6E7174BB775DAE955EFA7B17549351538067EE32D30799FE09285
+34FEAA26A66EE9766DE5E7A1DAFF9FF26B5A3B270F8880F193E4ED4A54DF9E33
+0192631FAA7A3725EC54ADDE0F656AF7FA888F5689FBD4691F16A4C9C1EBCEF8
+C3C36F4DDAA7725EB9878C387279FA9DF466B370F2E5CACF5FC19510D7826B64
+CDDFB18EDE030740B4BC73B917C0DD49BD21C14290C0B327BE3F66E2547E9BA3
+E3FC4F9D38EF729A4A45588ED86343636C141F4082A3BD8993787E893C6FEA8C
+8855F7D8C7A801E1C5A059014CCF11A03D6749A26B78BCD52600A3FEBAAC3039
+5390AE46E2ACA2210444FDB8B6D90C2BF0C55D5A7596A5007F579648BAE0051A
+EF04A872CAC540A872AAED5A717B6B622E913A8BF3CDE8D005D53A45C84EE6CF
+F52BC5DA70770CD0A29D8ED224AFB9E83FF6C7AA0793E7B41C84B1E906B73B38
+871A3C9EAD4EFBBDDA118FCF6B436BFB1372B62044DFB40ED71A4BF628A099BA
+BB010A5DFF7B0905F8B39FF774F86A9EED7F641AA6A5F8C4892D81454DBED1BE
+9FC502FF0A0A09D6EDA92DBC19854839B49A404A1ACB1A41B27B47BB922B41BA
+9B930CC46F796242FD36B7C924F460FE239416E74FF82A462DBDC08F2353A7CC
+2266EE32A40D8CF52EB767A383C7603138C11EE6249CD3D4A721903D5075AA88
+369EBF4F8E5B68D03CA1A839ABBCC47EF7DF7C2220B8E97025B90C0A5DC76595
+5ECAC71E64E80F686260BD6308EE4AC91917D55981330FA25464BF08DA5310A6
+CEAFFB235814DD369DE9B3CCBA69C43BA5D1B4301977DDE696938A36FB248E0E
+5964FDC7930DD3FFCB5F2381F62BE9FA77BF7AD82C9E117F5DB759EA1A94ED98
+1971E986124F71229F20DA61195D99A50E92CA6501ABA7EEA116D5CA0C40768C
+A41E87B510F3072EE793809C5810F3D95BFDF5B5F379C95A43B6744672398D74
+CFA23B1739B485A14B1C4740D83C4BF8353B84DD5A1F54BC133A6735AE7A2C1C
+FB505011D7F5A08172B837F6786181F8CEDDEC5511C83F113A37CFA5C1A3C49A
+F3A3AD38BA6969BAF18F85E81A51B518F5929ED1591AAC80DD48B196A9B58661
+5E9FB209371A619F307EA8C77ABEF6B6F3F7C4EB89C65110BE44F81F4D26785A
+163C676FDDDEEFECE56706B802DCEC93C5B3F5DF97CEF3E40E29B5F866CF29DC
+100238B8539F383348224F11CDC836BD283B0FF877997CA0D8A3175E3B80B0BD
+4D246027AA17CC84BFE47B9A085D7CA0E5D929236579DA2BC977B0E0CB642C08
+AE40393ADCD0010E05153F8DA3CF583404DFDFE527AA9919E9260665569E5E2D
+9AC01D9046387FC2425985D39AD5D29182FA0DF40FA03D0B618FD46FA5F98FF9
+8943771E271C7F772AD4700C5F6FE361F4137E9D3EEEF122C84E5204A4B45F3F
+74132C1BCF615655ABE1082DBAB5B98CF44D3EB39B9D660A161074096FA4D204
+3E69697131600346A127E59A8E5A8248193B5C6D6A57FE14D4500E5926AA784E
+569C22CEB267AE1042C404BDC637FE52C8B8E43168BD3CE9286FA84F4AAF3966
+85FC91169A6B26975DC187675AC48766CDA0E828AA8AF418942015ECBA4D3268
+73862FE3BE722B33F63B668EA28D67E4D28E2E5F5015F772F91B308779DECF35
+9C1C9157BF7E3564FB7376F2B4FE20FCEBF3A2B2DB8295C54F68775A7D2C3B89
+99507CA5A6832C20A27C37D97F1FD8837140DCDCA4FFC4E8BD082A071A2567B0
+DE0C1951AB2E7AD622A76210A2F78B0ADB4D0DA31255010665FCFADA8D813F2C
+22E415269CA329556FCECFB2F0E7995370CA6781BF365FFD7E77BF082979C116
+6E9B4078432A2767B7BCA9A87D5EC8631BE29FB32409EE7D6043540B2AFA2F9B
+804037E791779F6FD570230F9274DA8364F18B4E583FCE36B86F5974BCB3BB10
+CB5BCCA8E8C2DCB39BBB9D049CD8DC3783A8141E27C57455ABD69717A52C2A3D
+AB98B9A996BCF29663B7C4930472951DD5150536D4EDA471026B122D16B5BCAF
+6CB6E2005D25E0F72C8EC3C3F31EC903C9D0F4539C1D9A986F1AED430AE8DE32
+FDEAA926FEA72B6CF407E81200A661FBFEFA23F0C2441EB6DDF1613D33EE0507
+C2116505C3EA22E1F4FE5E75A06BF56D5D7A169AD60A33CB7E4B2F52DE9FFB4A
+7DF2C55C6F6A7F6112D663246401C56A3FBCB77B5070BC0D7F3E94E6A9FACDCD
+4D02933306C158CA0B34FCE56AFEC4D61707519A2865CC56AF84A807D0843387
+8BF3B9BD67A63FA5EDADAE7F2FDC6E6A83A1BD9A85DA28068B6ABA2422A228D4
+9C4C6659AAC440947BA866ACADED4B55B4478E96D598BEDDCE4F0325AE5C8CEB
+4ED4193B1C79CCEAF5BC55618F097BFEF5D069F5326B18D852BC8DDC657A0C0F
+4C4B29FC2CB8D45C201CE83829A056C4C1013D0AEB0B2BFFEE67E2E690D5E3E0
+E503A90E941EFF67531923B8F6BA65690505046011D567EECE1E42FE6C5D0E54
+E022ADE1F5DD220FE43FAC9EED6625CFDEE335B33B86B1E9C869471E44EA6E49
+FE438DA1CF98572E87727C99E7B5018CDB84A0B43575642B45FDB537ED5EB119
+26A5BB72D7409CD3ADAA741741D72A4681EC3B12A9D4129475853C825571AAF4
+DA8EC378A5C0D1EFCE2126EA2C732557D3715EEE5474723559D67D7D19FC6A38
+23BEA995183E66B38C2CFC91919B299DE94DC6FE17EA93302F0067E4FE401C15
+476FE9CFEFB4ED304272B05038F30E0306A65520CD01D8B278989BA3B38FF300
+D75BDBA6EC339BB3AAE6229D6AAFE450E488319B44975162F4256E8CBAB493BA
+46C926793E61B30D08DD232862CD86E2F39210717757E208F1BE4F824F91105A
+75B4E2F93105BC17FE0E5513FFA42E22C316A9E49022FFF13BBB1CFCA3338CAC
+5AB44E91C7A1E4B0CDE966A8EFC0541A1534B9E6AEAD3B478785D51BFEE375E9
+273630C9305036778DA399F7CAD8E284F58B264759E24E6DC5A86BA127899B76
+C23F2714DC3801E17B75358B05A9E43F2A904F48F647DCB5A79C3859216D37A1
+436E8DED290BE2AB8FFDA4414E3D41B454B8CCC7E372585FFFFA0739CACA7B32
+FB6FC2C3642BD6EDDD78D75DBD2E67F9D15959218601464382BFC95B37F129EE
+4CE54053CE8695182E9780A14C41BEBB92DD3622AFD1311619DBA87957FF5C95
+7ADCCE4A3A80445C87CE70584D1B4E3BFBFE2F4B00BE34D4FB7B011EA972B310
+F7249ADDC2DAD05162E056792A0773C4D031C8E79380D5663996760214DA5B34
+88C8CBD75E079C117C6005A8BBA6AC9CAE01265B1486B057D3A606E9B87F9B7D
+09FE963E7555115DDBEF50081C16FFD1DD6484CAAD036353699A0CA8A9AA49EC
+6E2FBD02731F015DBF624B1E4718CD2164259D03B1D32E1DCFC460C83B513450
+4CB0DEF451CDC7326C38313D7ADDC14E8694CD36B47DF6D3A013DBB79F3640CE
+1BED263EF1884AC3BB020F289404C56321C6A37AAFE35D797C457B6599FAEFF5
+8A61C513B1E6DF38B4F4FC0803BF61761E0ED773331D3BCC2FC970E0B9E34CC0
+3C26D29257CEBAE6372340D7A80258CB72222E91D2D5E457833945D6CDF8EA41
+E2EB6AC56BD76CA55541608CEE032600D1210AE0ABD751A0ECEA8E49BC1F80C6
+AEDD6FCB01ECAEA4A709B85A5965FB38E4A47548A94E9FA97413575B7E9821CA
+FF483A8CCDB91B99A24B316DA303E8CBFCC9EE006599BFC8AD9A34FD2F4B6E83
+8F3E9CD52CC14F5419C80813E31CB80B08A7BFEB08ACAFBCBCF5DACE34EDE46C
+4DFA43CA88CAD6FD3F47F8E7394523131E8DD451809F2CC48408049B083C5318
+B97185A062A4466D5D8AFF6DF5A7E1E34F11E640C90E9DFBFAB28AE2FBEE0D43
+EC976825E98A2A6181EF456D830C5AAAF4F6DB859231F1BF8DE7781F750BB054
+C892C7042E6B6164A6B883A03C7BAB90EDF7503DA9677D8E5AB4C04004D4FBAA
+47AFA22819ED243D58C90DC6F1E8D35A0B553AC6C2FE9825FC1BE9209C5DF44D
+5241EE9F0D7A49AE82BF69653F2E2E521BA3C55302CA2BF397990CB08C9F885A
+17214663837282102A20003D7F891980B51368874B9611340262A07B1959E4C2
+770ECFD941A13527F991D8322621219521DEE9EA09E6C532DC4A4536F956351C
+9186A8848A33788027B39D2D45C9D9FEC3727819200EE472A176C150FA8EB3EC
+590C7DC944D9B87ADA17052823D7B0D4D7B74F8284C774D2C99073E96E54FF2B
+D3CD751FBF427D50ADE8CE0E1E903BF9A0C2DAF4A826FC59787D32189E07B473
+93F307EE1997463C4FCE9D0221BAED083139F1F45A7095B16FED25883057AFB4
+955BB5A2E6C0C7174978E85710863A8C812C52850F87BBF9CC82E70BE683440A
+67547DA3858A344F3A4A61CC4C0AC458BBAB494A5679BAD9D61F40FF204D2FE9
+66815DECF98235F816693ADC39ACD5D0ACEBD741AA21431402AAE817C33F95AE
+927C0B2BDF6417BB470105906EF00AF43D91BDE6908724906719F3106F6914F8
+DD7F317940421CEFF9ECDEAAF3BCA7DCDA9E821713F8ECDCD0E0BAE3559D3DCC
+62F68E8CE65B777128BFAA9965FA79D42E1EDFEFDF2115E4A634A1129299CF17
+6A7F94F68EBCE33EB9AD2171BED4D8B030102FDC07A5B697A09EC8AC9AF413E8
+34245C495624FE382FD0D35A84DD9BFB2EFD18797FBC0E1EFFD0DCDFC2F38C22
+60BAEC64EE6CA791FA80E6AD2BB6919F32300BBB7773AD8EF9415BCB519344E5
+5504D9C285C17880BB13021AADC9950E8EA0B6A0693330FE80F0D643D7926D22
+E5DA971D9745816572AE37C11B59343CFC477AE8E052EECCB300D3EC1BFC5806
+EF75E7D91F631095113E9F9C8EB21D0B28AD0C1720617F56AF492B6982174CFC
+FCBA2D9CB73DB09ABC02F743091D19B6DA30E050CCDF8B7297D1B666E934B4AD
+94F68EAA6B77B47424EE5D1005063CB3212CE039312F725DD247CF3F4D81B912
+DEBB9B84E690096D2E5A73C7D3EF5A39E2AFCFB0B5293263B03C336BA0B3EEEF
+6E639F7D2BFBAF06250545F7C03B423ED43DEB54FC7AF7656968FFD97D103EB8
+E1A0B9638E5010252D86159D6FC37727D50606612138FCA6C62E549060DB359B
+F7C8BF82CFCA498142F2626B10CF4DDE2027B8224D3BB7D31681D79F1F62536C
+B46B8FC30AA9A2EC6463417C8F7B1ED39E12166A19FA71ACB2931826913E1CC7
+BD9A19200BE49B1D3FE791F1C92AF67084F8EC7A6B1734976AEE8AE162D59DBE
+FA72C4A5B1F355390116764B8DA5C6A5E1FCF34607FB17E00125370DEA20E085
+C706F922E7B6DB9FF9BE4F7C5A873D44B459B287CAB838BD326CC8CB9B11EBC9
+18655EA1EEEEC1B84663BBECA3A04675F08C80DE70542D4F3411F0CE06A8FD41
+733B2489F8E43BCEDA89CED7EFA7FFDA524E9E8248DF6045F5D5D5C0337EC596
+54D646FB688F062AD13BCAC4079993E945995C88E30E93A554EC9757925B9BDA
+8F4737399FB0355AC74F106C288DF2FFB3BC7F52094197D89F7BC0AC108B96E0
+9CC5830452B4C978DF9474D7B546E3A26311312EFEC50AC6281A72E733670A0F
+54F6D2D08C98D7CB700248907D9CE0588DCE391CD422C605740A89FC5D8E892C
+AC97C40076A3B1C12EBBC7AE423D4AB40DE5AB072447E37C8E34675510B79D02
+943D4F7BBB72B9C60928A3D8655CF3909A634B72B3AB883A0B3C2019B75B0211
+C22F5A78849F3ADF21FEBB5FDA37346BDDC54216A5871E7F6AAF4BF69A5146B0
+FD0E2E3C87A80C5BC9BC58B5AAB22EBAEAF75E25C4610C30E8FCE55334ADD3C0
+BC478964103A98DABA1269F0871CC9DBA7815A903762892D969FAF0F83516128
+DF9564C0588EBE58ACB0BCAEB6058160DF4D7F3291D686DE9D428E2662ACDE9F
+F211E37EDE8D2CB3126A133B6C9AC1E946BC0A32C72EFBF96E1B5C73A209F5FF
+9F32419A04748AC75EF942E34C772CD6B29FF1F255E637A833182EF2DF5DF260
+B536641559C8A77EDEEA2E085212F089C52E0463206A63E23359E4110EF199C3
+AB61AC0307B6FD69BEF2F2D750D23D8F66C48FBF02E4805727C0DCC19AA45384
+9E4FE3216B5985F47792FB2EE01372A13E5BDD390340150272CB83ABDD83F0B6
+9D2CE4A0DDD0584044C93C2C0DE32BDCD1ED28987FEDC561939B3530FEBDC19A
+8134BF58806663E8A3C9F14E43979D2050F4A0A6D16C17C762F28E54334CA029
+74F30F6E136BFE792510B7674A65C0D40B010120EADC61321D61BD07E213D3B7
+EEE9FE2652E480C9B94720635DD2724F005F30A95DBA978603960B04F39F16F2
+5885E3CED5A6A85F7F43C441EA4C6F07423DD4BD0E84BC65401AD8D83D6551EA
+090052CB5C26C6F3B519AA398093A25E0872A7DBC2B747A60B6A01427D0883B4
+02F1FDE2ADCAF680942723F9C4A88E9049C815AA78ADA8EC23307664D68041CB
+67BB9FC92E8B1918ECEC6B3FC94276A986DD3642E06E7D22B9CD4FAE37EBCF8C
+143D421B257BA9BCBD85DC3E1A94A0EE0C23B8B3E412A20C08EB1A27B8B6CA13
+FB69E71CFCE5EA1C7F92635F3590C9A056044F8C95FDAEE53EC2BFBAEEF4A7CC
+62BD719C515450AA766C761500C81A9735724BFC6DD6F3577AA51BC72C1840BC
+3D169A81D2EBC34527534A7AE47466BA0611CA05D9A20CDF755B164BB3D3C79A
+3F4BF27DDAE7008F0C1B5229BBC66D868BAF04521E397234544D78F48439EC88
+97F4CB34EEEDE4679FF439663D5A724A6C5893EBF6810D90623029CDB992AD17
+30711FB68543B56D0F6BCFE0B2D98026558DDF3A77355D5EA1A4ABD869C1BE6D
+E85588ECB146931A206BE9481E4C4F6F88C9B8628DA8BB39C95ED410AFD3666C
+9CE548276C6EFE6F7ECF86FA0A9C6C7CC89CBC07ACB25ACF8D2E5ECBB50FA51B
+9B41F58707FA49295081BB82D69D01F0CEF53CA0BBF8C80EA7E746652D2ADB11
+8027DDFE0C8E51BA914E887CB544E01D0385CC40EE2ACB8EF5AF02CC301535EC
+F4405A59259AEE139FD30B20BB7CD6D153CC105D65299AA7C2FDF5A441A66292
+0870564F069A42F356C07C966652C3DD97BCA794439B642C80CC7029F3C600A5
+94D661302852EA12E6B38A212B8C896B4A8B410FD6F4EB600E0FE2306A9A86F2
+2B877609F4B7022D2364E21E230D9C5B8A8F9C5426FBF06F9DEF102D99BC73CA
+2B56A4284D60D61D68A51D2EE2718BB343FD99AC3B949EC5022A666EB5AEDB56
+995694DEA06439533D2C396ECC24C7CAE2725E0DDB18E2A0F3D80509103312B1
+7D16087D8CD88D69E7170BCE2937A49BF08A14ECBAD20BD30B1D57CAAD89DF60
+614A649A219005EC0C076F06CF092B31EC85F9B4EF942ECAF9CB8E47F7B99906
+FD7F7B70B80BD35ABFCD3F851F7BC76C98B5A59B0DC1B4EE44A19CDA24726301
+62D1CA78E48900B69ADFCB1D56DCF07998E669E3EA59C1422A4CB278CCE8F1FC
+76E11BA7101F7C8AD253AC3F301851662E75B0FC3BCBE9AF2B3740C6ACC9EE86
+DF1693611436E983D1E35FE4805B1376837D9EB1FB947AF2DB9CD8677CB9CE97
+CE2A11F94AA5854ADEC235E6552F7B72CCC65150B0F3A37E24AA069AE9A49333
+5079F88F1124C20F3764EC97F7EA315B79DA06E1933861B7FE79597674E61B79
+E453AC57B61BAEECB7F1BB6F874E3D34D79A859F0DC25112A2F03680DEF8608B
+9AD13A1B69119150D7AD346D494F03C30E15343D9E3BFE6FBF07C0CEE708D92E
+B7B70698110C4AC469D8E4B8BDFDD622D1CEB2E93F7554C3E51641B2D5E1E91A
+17DC54D76032C7F71F8E12024420FC8D56BBFD0EE7AAFE4DBD15AD8244ED95C0
+CAAACD80C4B949D61C7E9F2377A3C3A4864EA819109C1D94FE2224A2B213BB82
+66D0A71862A068382DF81144F0896CFAECF02D25973BA4BA10DFCCADA90EE453
+6A05026B77C265323D209D7B994ABD191072625114C7B861BEEAE06D8B286809
+E61D1749AEF52C33D4C62686E05E4695A2DAE74750BFCB6F96CBAF75F30B4D16
+32C218B7B2568FC8EDD9C49301861BD45521AE6E2AB8BD4BE763A71CAB246CD0
+14B13EA80D646D020A1A7AA754D68C477CDE87F2F545AD17A390AA1FE9CA339C
+63734CF2A4DC5D9E49B3A0C9D728E84EED449D41EEC4868F60C94F2F568C7048
+6A2500158799E87DEA4BFA8F65BC815F0A8115478871B944F4B8CE3EB206E34B
+6DC96C3B6EFE9A509072A8D7203A185A36EFBE96B61F4A1E0DBE95242BA945CA
+B01D06367C210FF54E8CBF3CA45E3BAA4D96D7AF6D350C362CDDB246B92CDE3C
+520683B577B38AC1C947B5E5B5D996A86B414BB3CE500BAFF274EF78060D416C
+0236203DCA7144E37710C67403EE468655FEB5C99A85F38C9EB5BC2B555245F6
+2999837D2E1BEE1332F0611DE155D3EADCADA371DA8AA96212D2C51E9F08DA0A
+7BE096B0837D8ADDAA375EC817B275C4B2B0347D7C585575C2663481C6DCA604
+8F43764AEE27D22FF388EF1E8329E9FC13AF61D05F032D211F275CD1686C8506
+EA778BA6B5B7D62F8AEA833D6800587A748D980CD280E78D7AF911E8EE9084EF
+10C70C787BF33EF21D5378C093351DCA30DEF37A9037CA42E8BC62F2F54508F9
+D9B421DF512C73493A1025E4E6750225184FEDB7F29A22D2AAAB4C6AD5619CFB
+A70454C90072A8A869F6252BBD29104E003839D0A550F1856F6294256E202A85
+E15C9DA56AE4A67210DF747B1E93BFE976CA17A155E4F801FA05D484B8C34EC2
+CDF1808CB19616FBB8EB9523338DB11A0D713902480279DFB56B832A811F6895
+90FB7E75225F26DFFB580781AD99F5A0BF8A98BF67E722C1454CB17F39CE4902
+398C41CBE660269DFD450705A63BC0097A615A01A587E920D079F660DE0D06D2
+A8CE55BAA4A17C507277058D97EB6F5F24FA7AD6043EDD
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -4227,6 +4240,7 @@ end readonly def
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
 dup 13 /circlecopyrt put
+dup 15 /bullet put
 readonly def
 currentdict end
 currentfile eexec
@@ -4404,20 +4418,26 @@ DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
-88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70EB02A
-60651FC2E263002D3986B7B20CC2AA08330B9FC2E26765CD52266969A86EE30E
-71E0B41B6C1C6DA423D3A7E1553D2FAF26EF40DC183099322D362E4965695C52
-9FC3E5BD7ABD743CDCB717DB10372A722A39CE53FABB454EADE2179C4CBFC016
-A8E893C28EF549CA1692C8D8ADFC471DCCDE266FB4E97A1F3035801F3F034D44
-AE6ADA0192657E8078A1D27420093FEBA111333314658021B90DA4E7A8D4B829
-F1795501020D5FF0AD25584C1D47BE08ED6CE96278050BA67680A3B973613647
-A93FAEC756FC253B3693FA2D6491B276EF45751EFB306961788E7C15297A5822
-AFC5A2DABD0DBBFF0BE135267EA6B9D1B4E4760ED14895FFE1F8C3F564830001
-EFA901B8442BD2D98561BAB9A0FD939E0F856E4D2EB04A9A4496704109B8A84C
-EA06AB0999427B3B1BE776004AE906D0F22159C051D88CF573A0255D99B56781
-CF326CD11919AA40B096769CD6D0ADF3ACEC7957621084ACF21AF1F265416628
-86B67FCBDE9370D4F5C6F5CC67EBB0A2727E074090DBCA459AFA1A4778AED4C9
-AE5400775223E684BFCB
+88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B15A0
+657F5ED27D204449A841ED19E01432CFFE928E921321113780D036D34F2797DE
+D4459CFD15BB117B5C9745EF3CD2B296D91FAD48C80B136D94476967E255F808
+AD2B5D522ADEC64176833756510391815A1D4A8DA1D0AEE7CAD36A1D161889F2
+3347D5B6BC503300FDDD48F594F391D5FB42C42113C538E707C16EE24A3F375E
+7C506E8F49CE50FF9DEF3B4A4C1BEB3848EAA3477349833BA22D2A9012287D8B
+A8C4CB4307A1188ACC0E6E9338E1559BE5FAFF381BD82A6C71C267409468B3C0
+2C1A29F4281D565836EAE57F680490FEA4A952FF64C8CD11C377C294DCD1EC25
+CEFB2B6DCE959D0208F85B6E32E9B44FD455F9B134A5306D95EA29F37BB8B86D
+9E592159338E1293F449380E13C21AE42E6861DBBF4AE99A7469F871A3940835
+FFBE7F316FA9BB834EAB18625F0960352C75105A92F175850289B1AE177E0D52
+E43635C41B85F75CFB706BC92B0BF90367E180A141703EF69FD064C0FA34618A
+5D9684895C3EF50F4AAF6E0F78D483280942D3F9C1A18FE7FA657928477AAC74
+ABCC21B622EBE2C0AD9EDEDAEDAA9A6E3D96E01CC837668FAC44FB52307CE618
+BE8399078154C80E7DB52F0CD16717DC59203497E89D69B390E9966C19D36188
+E47270673493F7DFC14C72B5B4737AD52783C573B5F12D50E9D54AD65C2C310C
+72BAF2A8ADAD81ACF0C49DF971775F2DB7404FC9AD6B30C947A348B28B0C042F
+CD9756359BA6942D643D8B7BC54E6047DFE25215CE5EE74CC3076975A3F324DF
+E8D80F42AE4A1C00B155FE56A61CCC09924E4D7DA7EE07987C2EF9E91AED55CF
+524C54E553030B5F
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -4480,6 +4500,7 @@ dup 49 /one put
 dup 50 /two put
 dup 51 /three put
 dup 53 /five put
+dup 54 /six put
 dup 55 /seven put
 dup 56 /eight put
 dup 58 /colon put
@@ -4509,6 +4530,7 @@ dup 82 /R put
 dup 83 /S put
 dup 84 /T put
 dup 85 /U put
+dup 86 /V put
 dup 89 /Y put
 dup 91 /bracketleft put
 dup 92 /backslash put
@@ -4743,405 +4765,416 @@ CEE3EA3747DB066246C250EAD335A76FA166ABF75120CECB59076AB31A51F176
 57176CBE8C802A97B0542A5CFD6D5E6D7EC848B923012E45D9F065BFFA0D03E6
 788B68BA4DE51DA37994948F859D41C28BA939C3A82BFDB44DA585AE80B8CD7B
 A6EEA79B70BFB4864E06F06A9751BD2D2A209D150D7135E0A25D67263EDD2A7C
-C63B5B76ADB05A2BF747D5699036377F1A645372E5CF6497D8D4465492780B56
-0D7A64F4AACF00DD611A0D4AA2A1B4ABBCE41B0BF87A7351F26E125166E2E07E
-2E64639C4DC21B996EB744C784A145F80D07676331178ECAA4967195803AE02D
-1A6A04B38D721323251A1B1F656498F5FF255E4F1632DEE1A8C2B197CD7BD5FE
-3819B1998273EA5EF8EE032E0638F6DCE419852021D098A19CBA9A2B675BEDDA
-B6513BFA1F239FFC92CEC9ECC612072E87FBEF1ABEDF6804E605AC8979E970E1
-3EB524894E3949BF090C1BB477C45FC0054DFB6B6816C5B0312BB9FA09EA87A0
-9A18B9B5E0DA687BAB199267EC6668094D1FA853632DE7124CEAB78BC994D6BF
-FD8BB4B920B89A68DC0D60BB73AFED84D38925B4E8C4D4E239080FB47F44979B
-7660A9C57F1CBCE1AD69AE3E7782796EE69BC910251DF8406ACF78CDED5224AA
-B13F1E17BB454BD4B5AAAF0143570E5FB2236DD096A2607B8D24EE238110486A
-0759B4AA276E3B5AE6BCCD2299EF7EC5C0ADB9E3A838DF0A0541FC56F62684E2
-F165BDE1EEC719A7DD44D7251B0D28C63304BA3758C76B1FACD54A4E73C9B32E
-A49366083906EF8927B6463215012B3927CB643C0292688601AF2348D62292CD
-5E20110FDD05739D7EC6A3BD1B166DCC421ABA7901FB926025EF88A54B0E695C
-38E9C894A2EF7F33E5D0304268849FC3D2F972148ED6C631EA375D67DEA1F8C3
-C44173E5FAD943C81B72D818D7202AB20B77EA0299D4FF7FBCFCD7BDB0C9655A
-B02646E5BA32F6A7033BEA306BE69EDF532347B24DC7E6BA226C6005EBF841E4
-16430F8B4405B2ED05003F10080C12CC74EB07708FDBADB821BFE0DE6C8A3278
-C2349EB88B977D15639695B35C35235E00862E70D7E9BF6632E0F2E342FCEE2F
-16880A993EA9BF5FE7C0220D844C5920A5428CD87225C7FF28FDCD4FB898A052
-A0B1A3CFAB8A066ABF646D25C4A9B9B7E940CC8A46D56B1235EE247C868B3040
-A83D4392DA442669E8524ED46DFAE1514F44EE67F9147F0A8ABD317CAE4BC719
-0E0E2655654FC2DF6240564952A26549517E0B48C2500F5F052CEC01B7D39950
-109BD5E58C7C0EEDCBC27CBFECE20B9291E85CC2E80A8D41D1603838C789F254
-30E5E1A7B589FD23566A12D027B5BB21A3A0D9D40CEDFD850FADBE1B12A00F10
-7E3B1011AA803A608FF37988C7DE6AC1E955C04C1D1D08ED95F1C0520F069B4A
-53082ACE33BDC0E2A514CB5EE0ED77A861F64C9FB4E23586A6B2ADC96B4D71A8
-CDCAF63D2BBD0D8D935025944BF6B17546BAC8DC48A5ADABC729BE68EE00509E
-B084990A2BC6178A994455F9286937DAC6EEE7583FC13EA26F504E6E66142EF7
-09DD59E6A9FCA4713E92EDE9E4D415872F1FFE2F5AC5EE285E03B895E81476B8
-1871ECAC61DD555266C1D037B1BA381D130F9E21F39849DC022ABE678A7F2EA9
-1823352AA456085C98292DED9FAF082E89FC52487BD40ECE92476CE768166431
-92F6AB4CC2844565A01B9B8C16ED8FB1B59A70832339A063C5D408C566DCEA53
-306C334A0F24E5159870B2F8D999576D4A88AB3C92E5990D22AADFF62906DD21
-A7C173D5BC35A4B35017EE8F7EB0EEC8BEC6A54E1FBF1956A3650BD13560818F
-75699A8846A45307AC3C6AC39E7147844D098E2011490315DF92E188503C59BF
-525AA6C11A07F3FF28D346BF0B37C891A8CB5DB768B20E954466C7032C6FD35E
-EC745501DEECE92659642EAE17B656DEC9A19E38AE2F07471333774B9BFEC3B6
-2AEF7077B8FADB994B61C91C7C48E51FC3EC6CE490A71C82A089CD2DF1094C39
-8E652DD1F7BCB905A78F5F4350AB844877956B837795893A9D08EB5EB02F0881
-94A0670ED2AA24FE20349DADA8B51874773167DB9A897BAB5BD85ED5F38ABE6F
-A6D4AC4E4347E745919A78E8AC8781C586646D0C4195ADCA042A4F4DA6F4E253
-8B208E59816B15DAD0C761F0490CD3CC898BBA3647C9EB7B316717EE859DFCBB
-C1CBCC5CC82ED5039851E8BB34D4F7BA55E5268D7DC5010F985B12D28C94EABA
-89EDA7AD3F181889DD8BC773044C49C8DD6D3484ED6ABB5E15F4DF7898D01CFB
-EEE92BA769DC7E4CD4A8FC8BCF5450624F83FABF5CA9C211B89490C5C7222AB2
-3779526A71526361ED2C379ADCA9DBFA54708645485ACEE6918CFEB08A3B932F
-B2070F32ECE42722897C1AD9E6A375D7F789809B4AC77CDE3467108292EC20A3
-2C93477AE6756D18A0F6E3812E43BD6B5BC69540904C2AA56825D73500F90AFD
-5F008EDF78BC053A65AE1FF5A96C70431D39319341D0F40BE6863DF9377D1E52
-FF3322E00CE6B5407E1085B1D5104903AA396FC8BFBADBAD045C005A89B2C0DD
-DAF6263FAB5B49AEECE01384C811D7CD6F47543077A1A13C521D64E30219493B
-2268F34FD8F101329AC69D417756B409A0E3710FCF1FD58AE0BF6E031ADD737A
-7EF145530CBB631666A10C443D004B7A5B15B913A00461E8A77CC311A899BE4D
-1BCF43FC73C175F2A6CE589D68CA1D4231D942499D5874C9CA6B18D5DCAE8691
-25C8F66CF10B72F697410AFBF10B097312CE5B3F3A1DF658E60183C6B41D526D
-99AA575525B01BBC8C7FA511AC55EF418D623CFB9BDA56CF7A0A6D9631A8068A
-8D64EAF69D686195515A8BB77FE8832DFC42AF6120FBCE8EE04C0AA8BBE76698
-AA6E14AB126F943975648593D61B43AC7CF02F70CC7E73AF153DB464621608E5
-34EA5FFF06BDBABFD479E76EF16C20B6B2708BC6975A0916AAAC519852ED02CD
-5A0263E10A1E86A3B24E090B54A955B059E1CA5D7C777FE5B14C7533E0D25D1C
-DA7C18633AA579BAAF156FA2B70100CDA3A4DC3CC1872C27D7B74DB62AC8AC2B
-89436B90799506697631BDC3B5046645E447542243FF308F1292043098AEBD4A
-582D640FA44E67257672F6D970C895BDC9A4D76F64A401EA9546B513B07DBF4F
-E9BE239D2CAEBA74AFB0478BF80B60C49E279642C58F8DE0735F63CC8A90417E
-00453A7C7894EDD18CE46DB581AC7B31B200C195FCDD345D4E041CB612C41F63
-0A9E92D85A844FA6FBB87FD97F8F73719BFD12A0D8EBD1DF7DFF8306DEC16839
-B837E406959906450EDF9EF40CD44A3AD473C97ADE2C01AA359E228F9826B0C6
-C5C1D434F1465203E0729A996DE29F3BCC92C87FB454329422931B9207F736C0
-5D5E97514792F2083FD9F1525E9EF04DC053B789B421F3E1AEB49D686392777B
-EBC0E947BB46EAA99BB5B7AC7C18F14B69D8610C8C79B65FA060ACF860AD4A85
-D0A7739496E6DC26B83665DB7108F24530D6F4A1A61CAC9C73600E741EF36EC7
-7EC5B8A90DA28F20DC78EAC9DEA0FE09766DC2F366F035471E74DF28FE5F0ADA
-A9DC604FD782CB0E49590F55DFE398DFA307BA722C9D6FB394CBFA74093A9135
-B8FA32034AC05E82B513763721F72F6A4B7C0CD71E40BC5F39EB014512A973FB
-61CC99399D73062A1BCEB2E5181E58012782419ED04275BF52E0644C8B047D51
-90A9F8D14BB550C9275957C9B42D776A4A6580C29F66C1D558BD532303DD8F6B
-355E4589C383B16C30C4366584C985E2EF67BF9E4ED2E43C394C721C08256F8E
-BB96D01319C9249E4DF21EC9EB11A5502614B3AB1FA3E88E78F574F24F9BB0D8
-CAA6A831219E22B4BEB5565D90F47F65063714F1E1072AE989D20E3322A07658
-9005E26EBA791BE0EBECCBA007948EA225EE84D7B17CD57370CB7E81E20CBFA7
-C108A591743A35470E9B75E228EA751EC4EF6FDC8E7FE4AA30CCF26ECD0D9201
-288A20AE15E48B02416A424AF491DB60594B63C2B3B58E51A0E68B8C19685FC2
-ED2E9CE4DDCE32F69C5223935CAA058FBB23FBCD1226095D1B08C611A8D20455
-3305D203E4C7E164F6D2F755789FCA26D9FE576300D0D67FD60C7A5518287D38
-E921A0FA64A5323033B7932FE2E4F2C611D57CCB21E013F5C68BDC1F9384D359
-F69A9FA143D949DE07F815CEE5C2BE175C21EFE7F4972CCE0CB5ECBE15D1F935
-07B74E4D562153E20034E9963772452873FF6640DEBDACC45D478107E1F63DE6
-2849DC422AE297F9AF9BD5D693F67E94075C78ADF063F15E1805CC6E7613DD44
-4F737BAE5458383BF6CE214B25B597B94015052E1762197A486DF662694150FE
-5861DB71C9B1F7C8363ED993D7B07D03A9A7820A3C7CB15B22921C618C5A7597
-C0C426049928B01E78C6FCB7776D3BB98787A498BE501A394771789187A40AFC
-F4C8DB01466F1F45B7C6B8FB1CE812FE29544F3242FBADF7947D43C5321EEEC1
-661568BD694E7EE8D3FB402C45DD5329CEB27FA083A633E9AD0C8AA34B5C8E46
-3ED00B2B20606532FE953B68CBAD741CABD3F7D672CD605F5E64FCB1595453C6
-A36EFDC1C9E98FF3B2093CAE8D3961BFF4E005CFF5CBD5601D2EB5536B9B6CEA
-139EFFE8E9B2D4DEE00EFC3F842097050B18031420D76E5AFEE2B8B11E09EDBE
-29E6FF5974CA3320141D185AE1F530168F2CB0C1C888B7D26324AD488FF12DA0
-431080FFB11CFD5861E618A7B65A5AE1D1B56D26AD7CE67FE12480B601E4B6FF
-4237E34F2D3E727113B123A27009A4C81693B0AA77D121F3831FC72C9D5871DB
-94BA60B6A0105618DBD146B6AF1DA4DF3CE38296CE453A05DD95ED9694F57009
-83C2678269CB44118A8C7B343F4797C370F5656AE36FEF1C886BF01C4EA883FB
-0C42F916AFAF34407846E2AA43A3522EFC994E554D6D65FC0726B1F11F12DE77
-4C78A0BAF54DDC1C9904846736E274007D95BDB876813FF180704CA8EAA734DB
-FA15E13657059E50CF9A7551968478A76740A562AA711180FE6D9F373C3401AB
-BC6077CDE48C9BF0EEC50627FD195FBBEE1D90B03C9F7F767AA93E97FD05A1BE
-ED5A5B069C19403A0E992A7886F45D4C06EA8546AE507B0299436932F2AD0478
-1E379A14CEAB5ADDA6A8626E6DF684070B79BA96B2083B410A02989C9EF5AEF6
-F7A804382F47D5A7B66B496DFDAD64AC9D6086F92CC88190B2307A4B5E3E71D0
-35E24506FDD43EF2562AB4867357801E5B5BB6AA64ACE2DCF1B97B817F789E15
-8973096781509A4058F689A98D1B05ADBC207645FF13A0825995996402D5EA00
-B847BA18818498028B02AC410BFD5B3414272C6D34DFBA9CDA4AB9930BDF9506
-B91857E1F4A5049F4B05E172009703746F067DB51D4E997F3EDF5C075EE127E6
-18E8EE032C2E83ECD277079DA1941E31D952379C7D63918EE958D6E25AAEABBA
-06CFA50DC26AED0A2E6E3566EA97E0F21CB454EDED957119EA0A8FADFF8B368D
-948F218F20C4027148117C60D3B4BC939A642CD738C876A0D92541DAC80A499E
-248DB1E598754E33BACA4615F42D6397260E70AAB376943110888E1D69303AA9
-71D381EAC2ABB156E11680D550B4F54008A7938F38D6FF5A50817E55DE259420
-29AAC7E7123D75292E73235B46A3CF5A4C28365E82EA7D8CA4EB509A283C37F0
-35A6F52AD84DD677A24397048D047529E11253385E15C2FF341B7DE707ACC496
-F0A2686CFF1B5CEA08A96D28659800ED072CC2D9C79CBB1ADDE8F7394C2F67F1
-8905D68A157A1302EA67D781351C78DC34CB2D1AD93C6C2DBD48A3A53DC61D5E
-F9E6A0CFF942D6D9DE3BED7BE729C2CA6190F64A0B0EA8493EC7645531B7CA41
-0747884902D1CD0298B1DCAFD5CF1F66A5A3AD0436FFEDD294C72A0B0EE7A5C3
-90522F83DFD8481A0863E3F07A4714791641E56D5E9369007DBC4491306DFE61
-2047BEFF64616B48EF99038FDF956C03FF681FD3B7C1CB8C6606E39DE034E294
-04DFBA771187CA8695B9F330278FEC2EAE9F45478D2C1067CF1106DEBC98A274
-5EDCF9558BE466971A70E843CB54A2BC53E862EF20D256C92401CD94B3BE8A88
-BAA77244D0B40764C8D8077EA8EC43BCFD0ED135EF8C88F1B9AC84415247B838
-5F4F709AE4DF8A2DA0135E8DF48B8AEB925DFE31A01203A33CB1B74A4535F408
-A8ADC7F972D5244C2AA189644C106465D2E6C2C48EA732E7BA43E7067710928B
-B423C4432713D799C40EC86EF024F092F8229CAC49B86ABEC80250787F487BD4
-BBF8314D2F4F9F539117710BC6AB068759C16F1DB4974827282BE302A7313685
-16BBF11D450E360B5B7C5B6A75A4CD29B666CE4ECBB1FC1CA2B99FAE83F75812
-E61344B81C1FA5BA514BD5327E69C9DCEB4BD4AB758FAAF50DF78DD4BBEC06CE
-EFF5CEB85A11A42EE3C778B7EADC94793550EB108517AD41A4598ACCFA639E40
-D39EFBCB19C8CCA7DA731C897ED64471FBEC17E91CFD91BED8181FB42DFD3778
-9E0C6B93D8AA7E26200711586603A656D57B0F558DF3796DE457D400B6908D67
-479FFE7AC76B66DCC4FA1543B5802017CD00D4219DF00A0B93D8A4C2C3831751
-BE64E87FA5E64C6B248A6FE29A67DC089B61574B0ABB2D4335455C9427F39AD2
-77582C61F93397A409EBA5342DD249087364DE2A572A1E85E1FD719557551582
-91119BB95610F8BEBB846136D9C1F061FCA81D9312A96688067E4E4521715605
-F22499DD4DACCF31B2CEDD089B492C1AD8A932F8F317580189F9405D1411E119
-7322A61C34D8C28366732D159EC649921DD30D45104C6CE3545FD04C37F56171
-0F31AD0166C87B3044A9FB57CF1022D61426353D4EB90092AED1787B93128566
-CD834695773A27D6824D0A27D4DE5AB3F4F7B4E2033AD18B18382515EBB8EC8F
-1B14C8CB4D16223297C948279967D5260373EAEE3115BDF4879490C057A28955
-2D61B67A36F7C36C22D4C1809AA0C212B7C5818749B8A05E5C7C29BED844424B
-A5D6B567BCE77F47F68948E4A1724BED4905ED6242C25B4D340BB286380E27CF
-7EAE415F40B6CAA65CED05B83247C1D7E7E7FB13840B032D1B6417D387DFFCE3
-1FDC074917C02C9050E30FD3515F868D14E78EA6DD1774D53D536CBBEC587F08
-7ACCD9EF5D0AB6783D7C5ADE6EB45635BF621FAB33A2C96146F66269A61FFF79
-7EE8CB26F53AE36DDD6B5A0F5DFE4623CFFA95C62022DF4C5F7DDD07BE2094F1
-1B52D753D7BCC7F2D027C712549BA2573A9816DF204C69157130413ABA61432E
-D5FE2C8F832310FCD4F447224EA6480493C81920D2D3FC3F09864F3106B3FE3F
-2A7959D486FD0399684DEA5ED991976051B3FA1EA35EBD85BDD576555B4CD7DF
-260C814635BA76377BF73A1F731D3204AF925597984921257E0D96298A4A1FE9
-46B5C0EA0E2B2300BF6BBD213B90D057C1C9FE128B538F8A468599DBDFBAA75C
-D772CA628843D9B974D71C54151F1F39B03ADF0526BE78C4FD254B1804797F8D
-712DF3256BA1CE48C84114298044AE44974A85C4DD88EF100A343D8981F63DAE
-54726ADA9541A267178BC364ADAB814B4843C220A90C0E3AC2B50340E401E79D
-7EDD9C79050D36BC884EADB9A709914129412F54413EDE625AD5BD358EF2840D
-B790523F2097F866B345C6C7387C96706E397F19C8AC6B97DC0E81AC5661E170
-05B7959DF77C5A6303FC519BCDB33133C1E15FED427C684AA3E6E97C37D37B7E
-27F7073DE8D29D302DF8D54B85B8A15A10C5DD9351E04C46BAA0609A30571B95
-1679D5087B19A1FA8CF0521D7FA06064919E836D4863D78782142F19C026C89F
-E4A4D63DB8616B2D0F1803C06F1E5BAAC418E60851519F5A26E128ADAEF6539F
-BB81B33A953E7D2EDD4876380897CC5005C5A6446EBD2048467BFC12905A7E91
-0B8EFD5556FC65611B041949CB215856D8C2BA72B610BF430528F83A65511E8C
-9AC94517F552BE2B360026478A3FF288671E84F10717CE62FB5532805BB08995
-635CC573539FB78027C7FCD047DD3A114A805AC8DB17CEE18A2F877E9994A012
-E50A6C1AD66644E4C9681B0140194236D4ACA0A3373BACB09A8697703EEEDFC7
-8FA20135C17B1ABA2FD0070181E70B4E7664F3F3D8E101BFE84E017B1FB63878
-41282D114DEB771235694F26D7DE9E56E9791A82AC31EC52773F803B564A28AB
-321848A9A5618D672EEE376898CE5E8F1041CE60623AF6D9E93D1D0656B0C5DA
-537134D9DA2B1695EA902D32EAEB3C052122044F4BAC000C7E9D08281C425F6D
-65F6C9798F355209DB4E064F70A29247785CDA9E3EB4DCDF8F8EBA3692165CB3
-BA213D93850DE5BFF53C5B7F8FDB6317C85022DF1FE61D737D9386BA33C81123
-2A178503ACB370A73D47EAE72AF806F919117FAD1397E06411F6A38C35B41911
-A2A29A108C2727A94AA062E460C9DF98285C1E9F18C11E46E9ED356A57D86E09
-B2B354741C5EB89D030373D05F8BC428633B2B3B34E576129AA4E00B747D5D64
-92EE15C465FEDA8CDD7198B281921F68A358220C1544A4E32AF3F46A14B878FA
-66C3A72D2099264FED218675AF7514DE124379D744C9ABFCD095A180CDFEAC7B
-55CD99B8AC31E70F5025FFAA3AEFDCA59230511E5169E869321A10735C150F8E
-20CE65284CE384EBCDF8ED5625FBE021C06881474FDB5CA6E35A93DEDAA4994D
-4583F593618B783A04B4F570F4A49F7A1B5D71A973494A9A1847D31AAF4EDAA0
-32AB019FC8402204E5ADE1F6A4779BD194A988E12A5984865A01A8B3803F11B2
-443FD579D4526DF6367091BD71D7EAAA2ABCD4348EE7EB8A9297BE2EFDCFA98F
-DBF753CE4F12E85C8ACC4E08FF3769A7A3F726938E0E55F5A3A9CE490D7F5431
-367968C741B2D995B9E85B3EC55A82B1296025FF5C21E1983E472EA337E7ABBA
-72DF1EC1DA965F7DB1C86CB47681C1081133343B11DBEE24C85468ADFF83471A
-2CAB807668E6062768887BFF51D8FF80EFD05D60970C54A2E5537C92FFB9B22D
-3FE513AC19802FDE6CC580706E32055BB984A519FCED4432F14136C87737EE09
-FFC9C480F1D18587850120D87DCB4B7D3A917F82CEB781456CB15B9E661F5040
-4AE387D7CD536748AEABB810398B2DE36AA14D5DB5CFA46AF7EBD109685E0DBB
-34DC36E2C71A84CC32ED67DECC9E14B9D1D175A82E5F71285938C2247D1DA758
-06C57A01BD59DCFAF05348AB71C019B791B1FFDD106139AAE43D89E718858A4B
-4C31FEF996236826907BB9EC5842625AE120335B1C6FF4C8F68FE7BF748373F5
-2CB3EECA756C9CA0151D91FD2EBE7B6DA5E887E235DC6D6B34CD3FA42F8026AA
-30B9C7BF0F5A2B991C1F4C0FC1D675E7ACECAFACCC07F08F585C76A18397CCB4
-1EE5B17DC4B866AEC1F5284361EA5C65E0BE363CFCE3F14B81B7E44090219538
-43BC367204A88570D920458E36614D7097DA6C015277F83476AB0D9BA3CAB2BB
-F937D01957325E9442527D3892D3EFD388DDA4F7C1DCE849C6A490AD5AAA13A0
-A05F966ACFF3CCC6CCE8C08D8F384FA73A96E8799865D76340E9634D0009AB4E
-C4F539A4D6EF523744294A5FF4D3B934ECDD46460DEBC6852468A85B33C53210
-F80ACD68DB86979EA360CE9DD06FC7194808D064B35933E5E046CDEE1AE18183
-31FA6A62DA4F18B3C7092234F0FFF91A2635328FAA18D250C18C688422B243EB
-D5F520A6457462C393C57BA985588D0FC47F2D8E6CD2CB3D73D6C35EC6E578D8
-3254BBC4BDE31429C6706B72D518DB45D4457E8C60D0007623C520B1B7AF3A01
-A79AB2AA961FF7A5237D9993A4446FEBBD6AD51D662C9909D2D1C2D3424E9CD5
-8A170DF06CB7C304AA9774F13301495CDB010DA9218EE9A1FC05F477DE533217
-5ECC5996E4D340CBDD2DD6C53F9B8EC5E9E5300AA0D5967555B9DC31019F45CA
-A702C6F0568109C55DF33FD90A0E9B8FABF3ADBB0CDC353AC7B18F4E60D88A96
-E22A85193C953042F26BAC0A4182352080D44CDFE47AB34FD7848BBBB9021EAD
-82D68F7A6C6ADE8E317C8B7026043F5321475EEBE56C21EA0C6FDD617C588986
-EF0044BFA70E2FA9285625739D63C8C9DD6E2D62CB9760C62EDE6D29700BB89F
-AA7FD01A9E4F3A6364B2ABCB324DA52C6A518E68F7DA61FB12878DD94F8FDBB5
-57300284213E77C7D6DA5E2BA3DE91D7A3116CE9C8A45F3F98C8DE7C7FFB5628
-D3175A93A027FCAE02A0783A09D09997F247A8923D7E7442DC3B1D259893BB6F
-3D664620C9C4A2C66F6B4D1F2E9957D8C47119EBD1759B9EE6F5BE2D2FB0EC32
-EAAC468888774B8AADCB59FEF948FE89F18D2436D877718900E4F5A4B885C38E
-9C9B344895FFC5F2895DC187C3481CC23F4F1B87B9FEF11AB9FEAF9498ECD126
-99A8884A86BF9C943D6E03EC4D974F030F157E387B51D360BF8C21C799DA4848
-09DDE528DBC3AF547833DCBDC7404452245E0580012542267EFF13CFC5DC8EDA
-66958A20A94176552A25D024ED91C3F6FF945DECCAA7C0D71EE0591E53E75008
-0D31A8BD2D1096C8E8A7D5422595D65E1B981F14489F00D5A57C9884EBC6AB67
-2E0C5156295A3D2EA764D77CFABF2DD2A8F32F75B1A4F42BB819F3B59101EB70
-7C571225510ECA1DBAD5C618B6864BDB0FBA7C5055D2F36D5599022F2D95E340
-A0329B0C30B54CC501448AA38EDBF41E023EC8CB8451D32D392D5FAE1736ECA2
-647D6C41BCAA3BACAF8070747ACDC10B51C686534EF2CE5967A94BDA40B8AA37
-7E21DC9BA34B7156BB4310A60B179DBD4CE01E76A84F0E8F9788C356532ACA96
-9A122BD6ADC5F94FFA90A0C3A14C839727FB419A6A49B119DF87CD515CC5E85F
-2A4C2CF778C5B893B8D24B966BEB874B5292C31737F985C8029CD80E1AECA3ED
-AAA8EAF5DAD31C8073512D5E68511D31513B066DDBAC22B75A5C78F213DC962D
-ABA84D447C6D68BE5979BD72B7D5F060F96B9B1BB07B7A0CE956BD3BDFBF116B
-77CA0D330B08B4D276393CA20E16DE346AED3650EA9CF3DA4FC30061DFF8801D
-0AF8C7152AADC3B929B59F328ABAC8357C09A393C33EF7BC23F36CFEDAF32024
-84CA10A51E1469915A3BFC5602565BCD3F89A875408526A90491D570090C98F3
-A2BBC8B14F8F4EEBA923594002203589879938CC709564111459A10D152C45BB
-113E255C541E2CA81B683D4249C25A2C64F46E576F1037138157477B23631E5E
-473DF12785547266190EE3FDEE18F2B78308E3B66996949E4482FA814CDFC92E
-F6C4B5CB7FDBA581B35B5E0B8E9C93C2A0BA5E251DB94C4C56D1DD4F7FACD2BE
-A8A28E20B8115309859E681D4E93148B4F09E06C5679BAB4076B808BA999FBDD
-E654E96EFBC2B99FAA1D6B03D7FDBA7044B8C1B9A4EEA8E9AE07071F0218669D
-42512E6BB0461118C832392814C7E8E98082FAECA79DEEC151E2E09601629A2C
-95C82BEBA0B97206EB627CC80A12CB85D93145802AE6394F40E53D0BED4BBC59
-0D36545D1D272C9F9FB2DF0780674F8D4E482A85F8883516691BBBDA48F23308
-F10630CFFFFCD8CA7467AF857E5AB4C8B6DB9162C566438DC5B99301D3FDE196
-C3F84B25C8C3664A8375C41A63B2ED7F3D68E9C364CE6E5EF3E77540D8FA5D9D
-D5333D3BE7705DCE754BABCDC8ADC7CE092E877AB0B202B622BAAFF4B106FC00
-11821EAC567FC09BC1A6964187419AD9993A67AC4D7C9FD56F59FD6DCFCB07CF
-488016ECF192A7C21978A965D9B7DE9A3A0D9BFC4FBC575A5AC759148820876F
-CF881A503EA410922B51A9DF213548943125218C779A598FC852C08098E5C3B9
-202E68950097BB1B7990A0C814899C446C332E662622B1738A49E60BA8EDAFEA
-F7079B848946ECEA50EB3DD0F45994CC0C40E1FECC5372FD16D15DAEA0CF4EC7
-2142A6996B21BB26C3C0D2ED65EBBB549B3A5BB223F7558BB29FCD5A74407920
-17088857E275CBACE034358B1E6019E1EA4D99A4B5AF86420ADC8971C3265979
-5EA9FB66C49EF456D95343BCD7481056158D0215723ACB98D856242265882D07
-1073E86E684FD4AC53818058147D91E34A3354337127C6068B9C795891748532
-D9E212FF70F5FE51F71A735CDF254E9756D4925377E50203F857B32669F68E01
-5E1E588D7B392F7F68482434FF32D1075112ABD9DDA7B5548450A842B75A05C7
-8CD1061A90AC5AFE23901FDB209CFF92A9E582B78DD2BB2A9FCC9500C58C7483
-A8573576C96CF7AFE5204544D975C5D349C75E0C100D4F4C87E5C2FC2C4C2708
-211C9CF169EB2E862EBE04A30F87250440BA02BC5D419E2EB73367CACD2CC246
-B8470A0AA6859105193365520C5D9CAED67D98D634C2DFA472A78EC5BAEDDD78
-451F8146DF4C698139C7C87E0548AB705A738CC3D88D4D2E8EB12F859A319A13
-FAC067CBFF9A5382F5930E144CC97C79C1D3106204BDFEA2E668F3B78A5ADCF8
-64B925A7626E7A731603D1E0E18571D3122435BE105C2A8FC81364AACFA468B0
-2BFAC6E5725A0D8302B2384FD5A6AD833A4BA6F9A68B60F11B4268F8AAFCA77D
-B1B97BF7249815B6E4747E80AF42DF6EADBE5DAADDD938425FBBA6AA29BA6162
-19349F546A26E5CAA8619677493274427DED8D06D8365C4568FDB3ED722125E1
-7F71A26172462D731D08B26826B673F61588C4C72141504A3A1ECE7C63BE260C
-B181571B3B01092F8029909E2DD0AF6B569970715A10039ADA5A1E8E408C5A42
-990D9FFC95976613079B5C41FB82593B1F43C7E2B5AAC5B380061992FFE05E67
-AAC224C578AEA1E900048528175C1397C39FF257D32CD11CC5724EBA27A5FF63
-CA8DEDEFB7926E1A9484A733F3E1D1608A8E7FD468F8130290233F4843C553C9
-A9AB80FFC55DF6E961A32174D02C569CAC2EA8D8D72B9B301D87F695BDDE44AE
-AF7ACBCA79A169E05D9156613E3E6A46C9B7B1DA76D3AAFA9F0E40630EF57F41
-EF285DFC9093EF3C6B50FEC74DF0B9063022F1D3C54EDACC4B7CAB6A219BC271
-7CAF4D3B0723F822184FA5A22899F2674812F54951E7072C0F8FD4256748E452
-BB8D0DF7B9D5C7C2A6803FE2796CA7F49DC97D9C2C1257C0FC7084E5D04B96C6
-D340C9839D58A3C10C9A8CED7DF1EA90CB6DE2917C62B0673AAD1053593681DE
-3E0F592B5515A94B0289DAEFF215958ACE8A8552B046B18D6CFBC3498CC1C8D5
-FC3A971757DBC374C25C4856EA4340659EAF6309C38F9CFD28CBEB3A69F39E56
-A40DD0DC5DD44B1FA830973506CE0B06391DF4051E4000E0C3C26F60F872A4E6
-0BE9119C5DB19BAA854EDE7AF240AE413A197CDCE98DDC42856D4544EFBC52FF
-5D6D174FB3D034CA658D8BDFCF9952924BCB88762C3E1AAD29A85E5E77654ECF
-FE26903AC41E3A2B1CD3FFB89CAA132D5278332FFD46AA489D5667BBDB73CC0E
-6F450052759710E8B96CEC8487EBC16ED29A41D4C5ED88212F7FB702F876C03E
-481579AC5072AB64462CAA2337A720C89FE442B49D135C5935FFDA2960710E64
-8A7B80A5E71AA1A693671EF5718E7E342DD4BE71FBD10919E9A2F79FDEC33F0A
-8FFF1628A6A18E8624DE0FDF484A0647DF62C7C67D1AF3959E452ADFB4493521
-DEA9C6C81FBAE5EC68379C93DE9C138E2332E7A2D9EE1953BF10AA9D1CC9CB2E
-654FFF2A2514FF93478E9BB0B84A445FE6EEC8D92BC52282BA53BEA122768FCC
-73DC0E6F1935A06F2E253988CA69649D0E8C39CF9AAFBD3DDD04900E2698CEE6
-221D808B958CD833EFDA976E6D7B359D8CF62428F87FB70D47CD5CCC55007212
-A9B932E5966B475FB7DEF27B4F05B3B969C100CBD384DE7DA3B1245B5BCBBF4B
-F4D0496A9B0AF3E5CBA8A2D239346CA6577AD19B2C23D2E401A9CC6B2FB9DB72
-F522E2935C3B3D5AFCD18D27F94859B797473502372F188F5ECDE0E69064B6A7
-6EC311DC3A6A7FAB5691652F7C486325CB6E58BA814C8EB2861F974913D173F4
-2A429DF45B2B91BF02DA372CA190FD22FE315E877FD24E42F82CCD0570748C3B
-BE64305C56E7C087D38D28147F80D93B8624E63093FDEC6E546157DE842D9021
-26FFFF44372AEEB9D0B197B668B82793D719A50AC9F819A3E4EB3C0C5BFB0C01
-29412E6876FD5A5A183A19087A65270E06AE876E28EDC8FB2C49EEA549BDAA4E
-2E03BEEEA8B22C667BC6E6B193E5C914A14E09FB1103996B3CEB61F3F4549EDC
-B4D9A78D7CD44A28448F24F27EBAF2C255F19097AE400B8999F080167F14CF25
-959BFCA4059FEC8B3D8B1D1EC66DD5AFF05CE758BEFAAEAE7E5D1D434F1B0B6E
-1EE01D63FE8A2C2D0E1FE4A14DC35D2A63128049DE51BEF14482812ACF89E981
-E51BBB5BE0524DDB01771D7B419DADE73EF0AA7CC99591BCED208E55912AA6F4
-EB9ADE2B7D47514F7E11AEA12BAB51E93B24313A2CC4FEB226B00934A1D50CCE
-21F84E7C4CA87866A3FF5C5529D73F7F848B49C9D350BE4543CEC67F1D2A0BBD
-A79C21470C090659081CA4FE7DF3138ADD83C8A35DE85B44BC4DD3A955911DB4
-B78F9CA3F674D36FC9D7CEBD66A571F73D1ABD57A2208706ADCA285E4483A95A
-73F1A9D762872F0AC7AC808E59F69D1E273C046940D642F92E8E6D37D08CE03B
-608FFE19F882B40AAE1DB3F5355F6C2192EDB927935514794BB8DD035C072BC3
-A9793A31480B7A761144B77777EC03357A58D90A7E08B0EC9EC90F0F2D67844B
-0E6AF90CEDAA04CCECAC1EA93988322CD7543E57DB0C763F68528C7171F264A7
-D1D016B1470DAB2747EB3D27BBB448E040198A43C67AFD52CF31B801C6A838C2
-A720B7A819B534ED283CA362CE12EED34B31F32BDBD521ECF71DA160578602FD
-ED11D7B60D313A5A613ED89ED8BE69F5C2F1ABD04331A2E1D8ADA570FF96A5C9
-C6703EC7420F8EC43598E81691D291F193AD4F95CBF82EF712EC190A898CFDE4
-72B0388BBD08BC03CBD3DDA0648E3E0A0DE0FDE15739060FDB10629D78457645
-1D32ADCC813FD66FDDFC9EE79FA705B274BCD3656E745B1CADC2A1799BB8430F
-7C34ADA3E81DF1777D175B3BFA199E092B3CB5517EA3D41BE449BEB1E5BABB65
-F42069121C1014B05D9D2B90DB93296183CC7FAF597D88329918BDFDC283F3A7
-CA2A2BFC573F934E576B438761E75487377CD4BD09085158ABF569C0A4BC209B
-9952457D15BFB036BD0BBE942E10A82A89E4D012AB1B72A4A59A18A55E5EDFCC
-CC9DE3382ED090B1F3CC5D8EE59900828175C92E7C5410631A804FEC75603CFC
-F1033827927E485F6236B227E9D54D29CE5D2A3009B88A3D2ACD9430FD5E3AC2
-E321581FC966FD628A099EB795A4D1230C0F57F78E8F619A6D4BE8F328886E3D
-AFA2C1CA5B009075056F92E55CBF2B55B59EBE68859B7584CB852C3924095559
-B255ADFFD79AFA6BDF6D68838AC48DE5B79A277932244DEF5306E4A47DD0325D
-5DBA34765AE92F8094C11FCDA5646747105131838106D9C1D79714F9576C8F28
-FC6E7D0BD07254B1D29FDA5E4FE5E2F7FFD1A56D41435AE2F6DDC1970C9A89BC
-930E99448B124112B488AAFBF01DB6EC917734BBBC7376D6EF09DC05EB283A36
-C2B8CA16F4E3718C00311C64DE6A03682E84845CC57BAD00F9C4F5D85BBF6D46
-093A22DD9DF218019573415B8371AF1DEF2770CEE7FADE0FA43DDC61AF7858A0
-ED625FACF6FB35EFC5968F5FA0D2FA2A8961CCF36FED33CE945A1F7265AAA702
-F33CB51F651600EBAF3DE4F3A2326BC38E48F8A6762DBC107DFA4F5C5BFBE52D
-CB3D2A1AC15DAA0564A465FC1BAE1202C3DF85AD87832C27F4440C276D11BAE7
-7B591FECAE5171DAA8C68DFBBC2AB09312BBF1B4D2F43A59A80DBF22AFECC1B6
-3B7D57C3DD4C00B7ECC587F40F5211709340A56FEC69DB55DF1B5E8F78790722
-A0D712FDF782AEFA64A7429262E976AB9057466C549D8C05178AD9545ED838B6
-CB5BAA750B223DB6DA2C137E4EC91A1D3750C09D56BEFD4EF0760113ACABC2E1
-BC2A833994518E00054595B787195547424C8D96351C86113962E507560A92FE
-D7813AA3CB95AF370975998ADF00AA0FD5F9274976B119805AC287BBBAF27E25
-91913C949BEBA56F72A7B6D01789313B63DD404F575BBC1D2336BB81BD1BE035
-F54116DC276E02E0F70D6C1BD3FADFBC43552E07F39758D5E2BFD423F3A06341
-524468B77DC403BD7D6913DB11284EBD1AF581F391B9D4CD599A0DBA01E0907D
-4E211BC887BD450FF7FC5E0670215037AEFEEFECDBC096A4141764DF63D97C1B
-3A77F3DFC74A0325937A5D6A089C8127B511527D2D5FA186FB762229809B7BA1
-E49BCAD0B9D7F610FBB3FC37AC5021250FBD022BE60A841FB4FAA33C359A4268
-2F7C9E75F3E72DC43D2DD07FA94ACE36FB9A774F2E076563048068D6127BC83D
-CDD9C71A01C1D7F5C345741C64F2AE3F891914088A1F1E5CD29F6CE3D5B54F7E
-0C8407DE6E8673F1AC639E20178DBDFFFF951FF36FA22AB4ABF6A99EAD86A733
-2D50D2D127B66F5155BE6EFEBBCE178C529CD741BC5B2630EA89B7A18C0B084C
-07AA4DDD7DFAA145FD912C380809D194DB1475B00798CC816F91747FE19C062C
-9B3BF4C93C3A7B33B60C6F143A67A877946F9C01B9CC781DFDBA109101079CB4
-FB585C978B17707F76E1DBE44201A0AA388B0237BAC3FCFDDE2A714BE0B80BA2
-FE71AF9739BDB8DA3A066B5ECE33BA7584924EEDAFE2FE28D5D984B9243DEA82
-0A92529A6DACB90EBE1F1BA717E80C6F25167C5077E82B23A1B66FF964736B51
-57E1359B9EE4189E21A889AD4EA99542612C88B6065F294C4937B816B7D3324F
-F42ECE164FEE84C8A6E31D0F16811D1FFF66FAA889C28240669A8CC40C84C547
-EF4CE28DBD4CF4FE5A93C70C707894EE6B6A85CB7D017BD2ECC11434319D2AB6
-AFE26BC9BE7150F6E8BE52E3A925DC06D4A309EE9BA0432935B095B84369AAAF
-CE1C65F9E73D867235313C9809E2B6733ABCB79BA9762FA1215BB41388854ACD
-66E5FDD73927ECBBB55C485C88BB540470C6EF6699C8C9D83EDCCCD207780DF3
-84A4EF2073813C676704C6F0C1287733007F7E05DF0FDC445B22B0315ACD75B7
-9AF8B5471A1EE52458A1E34CAAC8C78E8A01B7224BFE7774314736EC8086D7A9
-2B3A4A95C0D4ACFE4778E4827062FFDFC4A11ADC64E85722F459F9C21B4D6532
-5F7A90E3A68F55F9F4712CB1BC050DE2A04F9F49D84D4675FA5C5A0C6C747CF5
-55AD0A63587BF4BBFCF882201038DFAF873F155FD375B424191EA3FC0017B54F
-81371A667B8746EE18B794186C109949289764A353E54118448F285BAE6F364D
-39FDCE512FF45982FB9DE54FB2B13702ECEE078C0431B769DF0B42ADDE5D64A0
-A3B9B94CDEFF9CEE74B0B48E9E380324B936C6ABDB7F80503AA787200D09D0F1
-07359242E0EC0566E9DECEFC02898566C5457293E1FDA6AA2CF780DADBD2FEDB
-1610246EEDE4BD00C6B7284DF3794711E6D6EEC64AF3F61F5F45A468E400E743
-C49B543731414124EEACBD9264C76A6A58ABEC3F7292968695617E4B4F4436DC
-EA3C75B8BCFC570AF2A942769C4972B6B8A4BCABB2F6695B1E045249ECC4181C
-8EE6B49C53B38117755B95F5843A712B47B6098339C5AB733807CCEC17575439
-78CCBCBBF9D852C36062A586DB00A5EC089AF853289A9F089A08F2C7B8285844
-B2A28E5B6E4367A228E84F2A1C72B1FD37480DDFFCD28585A24D7630FA56AB02
-222A5F764029C82DD67F10986E77865AF507A2BBDA4B3D4D54E20C00816B8202
-F2EDF2A828528DD170FB0ECC605EC794EBA4E7A78B31F4A564FE4994C2B65752
-820A49B51196EB4192CA4B777D675DE57A00D23F4BEEDED6197CE8BBF6E01F26
-B045D4252CB302C57C0D076294E407A823BEB4FD7305C230D084CF7FBE7BF161
-1DE690D4765927D2B95DBEE0A1D678C4DC8F2BEDF9CB96C5945A525BCBB9F9A7
-E36D2FEB22A089E3C8A5792DB5DCA7FB46BB78DD719DED2F2B8A5314658549E8
-20F20D49296AD845FF45EC0F4395E1553DE991B2E40F2F267901CC3B3344660D
-00A4C51870835CF4A2611979826825F8EF045FCDF258353622B352C119D680FF
-857AD6DBCF66BCE00060DFA1B32A722AAC5ADF0323ED78B269EB284A4223A9BF
-896CDF2307259D21ACC80CE4E6D43736317330D00867C128D2CDFDCE2226BBD8
-1626137CFFD53D7C37946BDA99FD955ED54E25EF71C1F19CB4BEB4D3B0099E86
-42622EEB4C57E9C3D1BBAD07FDEFD3C3DA91A66FF9808F13EB4B7895CB2BFE2D
-00A238EA7240032300BF6DA66217A55C0D47344738EA21F9081FF597413C79BE
-4DBDEEAC2C93EFCBB4680EE2BEEBFC14033CC5DE5EB86D5D0E4DA274BED45366
-283BFBF9D937144CB903CCE1003325BED0EC8CD03D250B8666BFF9B33983B670
-20ED1995D24E63
+C63B5B76ADB05D44BD5BC0BB3EBCE2E74E1AE5F7DE07A59D90C932DAA2553505
+27F2AFC05F7CEB39E1C7E54F69FB0BBB069959F2FBD11709F8E81F6E7CA06DBA
+1CBDD8E7A78487462596DA288B50B295E46F4C3D9BA862688C68859734B232A7
+4B371D2BD786924F186524765E789EEAA30B20C069322D42C893A30BF1BD2C46
+F8F3732DDFE80B8FC1789239345944D8B457824FD80D11184E73FBA30EB80A9F
+2FD466826D4E6175E9B3AF676603DD8C5F5B037022B38CB7DEA203B11D993027
+884012CDC35C4B36242F8D77D188AFE30F09D5D4B9E13A466FB208B9C3B3D269
+A12EBE66EF7F6ABFBFC024B72BC06828FA7AEF04633B1A7C93B778D17B0AA1C6
+721295869CDDB94DE898C26F40B1E3E93B68B06A63719C44432BDB45C3FDE04E
+7EE718BABB4A57C7709D3C41E6A3C997C0E7BFD60854EB52A73DAD8E02F6E43C
+4EC19A0D6311293BB240782BA1DBDDC0F65287E6061FD3333718D7CFCDAC4715
+589A5ECAD2762C643C0A7B2750C7038F6B8F275D9423DBE3F3A442F625747D58
+A26B03775F1EDB35BFAD9ED9C2C341F89804D41A9445EB2BDAFB2043F674EA73
+4962020D8641448B253F4C108BB1244279064765CA38869A7EB73377A168E596
+1B1E7F573D8C09649963F67CB13DA10D55938E6321008B54FAEEE7AF48EF153B
+520A8E750230D50631819EEECB35B69369C888AAB9103BF3A60A7CF6F357E20D
+EED0F3DD636D920AB08797A37577156E3C56B37604C8DB2744DBE77CCFFF9E9C
+150CB37173CC122C366366EDB5847053A74ACDE3AC86A253EF7BF3B90C59647C
+A265D5F3F9D60352A41DBE682C3091F64C3298369C71197245000C81B17A69BE
+E8F7AF9BEE7AD5DD407E9C262D52603B16C5B0A87BC7ED85E10FA988DB688A92
+470100856BE028C6A8ED4630A58A2C716E79E4AA1C59E99D1B38E65AA30B7BC3
+B4FC020B003DBCF97082521BCDDC572969864809C35F0BC5C7A59B86DDE788CF
+4544D70446CFD36D388A7BFC0674CEF8E44EA7FC0DA8EEB5B4A8A4D61FB4D8A7
+964BD32CF308E0F0A7CAD61670A6E0C0B0377951B7ED60BBA08F874D9E95CDDB
+D3FED52C51D26800DAB50AA62361C0D1A1757831BB68863A34DCC811ABD1BDED
+4F258F2DAC1FAF16061EC47F5F742E507C3A3B72190E56E9B5E403A0771421FB
+BA346C531A4E12532D0986434EF9655C3E1D9966AC9F9F2DF8B5381E8C764746
+D14BB1ED9A0BAF084C74913B3C9D7F90080AB112BBA10812A077E0D090BAA92A
+2E88142580FBCA6E5AC62145C7A4FE583A6A1F7212624FAA4BF2B5FCA3CAE188
+2F21BF5FDF3BDFE3F72744C3D842117D4ECBB70A98762196BE6D9B2127C5B629
+94AF67FFB984878F2DB8F3819AE130F9785522624503B9CBF36A2678B3C9E3D2
+79826C464A9D9065659902F630A527EE40BE9CDE25106188E837BCE71D465576
+0275556A73BC10E2496B580DA205C1E334B77577A4F2CA9A204C9811B60D89A9
+C4746392E83EA6BF260F17003E3D5CEF2BDBE28FD4ACCE6AF7CC9768F726431F
+C42B143A26C67464E6D24E11AD4ABAF999FD03F2B9D816D51DDD3E3A8E4FF196
+4DD14E67A8E9FD2D028D1969F2D9366C404A0C19D6800DCF6A1A1079B45E7E63
+3CCD3F2DED5AF585C938A805AF9CA4A3FD6219FC44CD0E303FFA652726DC0145
+EC6F96F1B0497C84A6623D32353CD7684A1F4437B892CADF70334FF6D7B4C6F4
+97331632FF1FB14388EDF4BD996C2E1563BDA1F17916F2594A12C4176BEEBE9F
+1EBA0D351978D9114E360E1E97265EF76FA4123E6ABB60D4EB1C67E7E16CEA41
+8ADB60B13F58C8E45D64FF0A49EC86948AFC2A6C2C778D5F3FFC73250A597961
+B66368352FB83F2948AA66104BF95D062AF7FA1C5E841724B47DFFC6DE5B4667
+59C193D44CE020779A0B6E2E7AD45948B2225F017324471F2E9474AE0185C815
+632552ECB91EBF0ED1FA7A4A3BAB2D9C409673850C4C8235DA5F8C164F24B4A8
+1242B86EA0D8819E4A6691BA3B2E079D47374D02DEC8C94DBA8B02D496EEFFF2
+D9E6B8CE0C5A08EB556702A7948BFEAC76ECEE848BE845F00CF9C96E49C1C8FD
+E45265271E6E9F502C8BA397253013F7B36669E5A15D4135E96C39075D9EC1A9
+87BD4483518FD415861028AADD85995F8CCD4CFD94C7D63FD35E370A8E2A8FE6
+8032B72C34E9E46C35733E6174779CDF1D7F5C2021806525D7ECB9CEB57ADB54
+B836AC834D57F69EAF2E79C875A1B630138C9B03ED2FC51197FE003A1868F38E
+5ED37A4059F02FFB141C9777BADC54034911C9AB27A302E7159AC789FC5E5CE9
+EF2FFB5759B3C76AF9E24214CDEBB2918B910C1052D74A94F447A97175E170D1
+EF63C299047E6C9285CD4EA8B642B2F470BA92542EAB55580747C3BAA80761E6
+D0B77E780B2A4306C133D5337D6366C044653BAB5959440986EEAB61BE09DB91
+1495DC5E665EDC01AA8BEF0A80035348B6E61315A8F8A1BDFECEC7E3D359E497
+EE24FECBAC94FC9BB5C39B9985D992DBC6439B3010909106D33486429269E18B
+B7535A1F53F6439CCEB5ED957688E8C41A201BC395B15D857305DE41D4CEEB49
+DD6AD74B25DE5289BC6E033A010566EE4C8130A560EF69573C5C757A1F12F5C4
+394EB7968281E22133A9E6860840EBE74ED87E7B8C45558CE5E59B746CD7E4A1
+67DDCB55782E1C088FD489D9AB0C8C3211BEB2E515FF183F50006F5131291C5D
+FD98178AD872B2626EFFB491B1A12F36BDAF6312EDDC5D3A51508B5D2E4B99CB
+067AE52A5A72E24259E9766318CA54331AD1DEF2E3F789AE7791D4B4EABD2F4D
+5A868207E5C5281136F5C28C725C7642D1913555EA167D4881497847C5EC09C0
+16225CA76A34D4CAED8EA4DDABBD266918E9AA60D0005C2CB71417084FF6DC52
+90ADE2B8CCD07188BA826D0881E6FB95264C2ADC45E7F75707F8C72BD545EEBE
+ABB5813263840177EB848FC9CCBEB749ADBD4146257B6C25E325B570CF4918D8
+0926146ADB54A26F99E1AB25E38A163E52484FB1EF92855151F665FE0AAD271C
+331247360B7FACCCE6A781327CB9430F53B4BA0A33C4A1CEA043A7967826FD40
+95F50F71816E4966A80E3DEE0CDF44C71CCDC7394B1D298535C54379D89D06BD
+414C0ED93B7A10999BC6806DD3A74B8621618130D24C5C4F438756E45ACCB434
+76F500DC297CDDA05ACACBD53353DF715DBFCEF4A9BB13268B279E279136EC01
+0DE17F954E45911A2FA16D81F02C91B99CD7210C6759C30B270531276E6C58A2
+65CF8F80E407675DAE597EC6A277D62593BADBF6831A414C6A46C7AC7F1B49F0
+09863308C3D7908E7E1081D08B77A40CB972E7E7F30A1E62C0B1D05010EE133D
+7A0AE33B4FC1C1FC6EB662905DC3504B4CD632184084C981F9C64E29126210C4
+5876A73669184702F1BAA08F02A3F1122D1A9FDF70C469A354C7693053641E70
+E9C976FE9F0C4E042B3CF6514988B15206DBB441B299A46C5EDB092B672065CC
+53394B165C1B6CC54DDF522DD88674B4149E166BAA25395875BFEB5798FF0DD3
+D786E86321B28733CC6DA0BC270B5959436B80631670B428D647C38A6AD14F16
+7D68A5D4849F94B3D9A23EF272B2076C1F1A383FD488709B26A0CF7C11216C05
+18BA05A29E8F7B0940C9E5DAEDBD08EDBCBCF5874399248BEB90C5C435C7BBFA
+7CC1DBCC165AEE87BF318F288779B7005C799285BE8AF022E093FC69F814A08B
+0785EBB80BB9E46DF31D727CC6F376BA4227DA624B13369C539215C8009D966E
+6725E8AA9400B6986838E3E1D95A2EEC564BE0CFC32EB9C4BF1FDA58D9C03516
+12AA9C6E066D96E730E4713023FA7C04717C809001985253068AC8D9FA0281EE
+CACFD3022629DF6113FDCED24FDB6F0B3089E25B9E1F88D957725ABDB7384BA8
+72C8B87D7FD07912CA2D5E9B5F675D860FF38CD65D310F01B36B0C8CF976BE53
+A8E2F5D2D8EC1A46A8AC5B5F046831FA96D6E6A0643F1530852FF3E68AF85B62
+D6ED67A36EEDD87EEFD4F3F44455C1525A34134827A9971C15154C00E8EA9DD2
+198C8A4BBC420A06E4C3C04A34365CAF55AD92891D10FACCEFC7CEA6075FE46A
+FB236E468DC7C7BBB3DD897D0A22439A50AD7D9A797D5ADD93D282166D6A21D1
+5766A7BE5216D9C149F65536D28FB4BAA73E8C9FA2BA344C54943A4F20155041
+AC7D34AF06D5B3E5E219C510C045078FB7A56B42A03371BA9EF9E5F538210F5D
+876E424A8DB1CF2173F8C0EE459510B9C70BF3CF5B4010C20E744C0CCA8C7A50
+0971077E41DFA8C3AF38BEF82881B7A94C425FBC15B20D78CA63598AFEE48F98
+184A9DD451341AAB05E8B70892EA0F3F2F10E0C026B991893F718E6681A91BB2
+A7F946654B09E5ECC000302EBF28B2E06235E4098F5ACE4F3A51CFF50C95D2FB
+0E5D7F1CBF6E86A58C44712F3879C7AD09B6D5121325BE33C63EF33F64FAC6FC
+49F76527F8FDF0AFBA4D3EC72EFDBF5DDB80100066E6B80D2E0BC1046F25E913
+2E767C8EE9941CF4D44EC5E917860989EE3B67F9A55D79F4A9AA45DA748D2FE2
+9B10E48B6684809717CE69C02104AFD0EC9C22D5CF354AC9164205DB698428D4
+D1C9485572FE373F3B51A4AA5FEF99C63C8E48070F179EE75492F2CF0D4027D4
+CFF5C2E5821CCF8E0E11F8BDD3F995BFE27425A0C38CB958BC5E2BD5E16E57C8
+3893E691A2CA51E6C8AD6E3FF5D1660D95EED0C8A3851503FF6C761EB5BD96AC
+5C22FAEC2C7C24EA2470E37E8A5E137D644A939FF4FA455935C1C4ED0A1AF94E
+E80918827EF69EC670F9ABB4031BCA53CADD6088C3FE9031C546AA1F41DDE043
+57D10B7F4718BF76A2FCEAAFB0C69E42A69D64B62FF2CDFFB16892AF87FD6CDB
+C187AF7DDF1C74B718DA84C492150890671EE2620FD848B7EA062080F317260C
+B3CA941F448D9F73DFD96051509A760D6F2D49B764A5B30B531C1F2B877B0F17
+1DD18E3C7B63A42FF783CBDF910D739A9C4B8CB02C3660E9F64537033C9080B6
+08C3A0FBE2E4D0B96D2512FB2E38493FB11CB787EB53F5DE81019E4D0E35E201
+A39D844181C105E93F4C639DE253D3FFD6293AC811EA4CBE0CE5E8CC90E2DAC6
+A5E742835B8FC3A128A416EE873452C1D22E28E5774CCBAD9DB5718973DB640F
+18A5E59A2FC3EC764E8697A371CA8112E91B756DC20D3CC6A1AFFC9A0D7FF62F
+9DEE3EBB84E080C28AF8D751CF06B442D19D4A6421D67BC5A5D087EC67CAD4E9
+3C9448D46377AAD624841FC423800DFE507E4071B4D75D9243FB5EC82BC741EA
+EFC6D687954DF056DCC49672668245504E9266335C1FDA78EAC44A595A1E635D
+A15E92A57BB91A27AA5C7691B72AD442BD6E9647798B8F88414A26223E4DDDC9
+C9B24C27FD5EE22C4BB77152689FA0B8C72FF273CF53466F478F7B603A9E49CB
+B5B1C0633D66712DF9551C992FAFD15AF4C8B3DBCBF286C5DEB6D023D5CAD9F7
+88E1283124E859E7EDA4A63E1B705613C6E99AD7A5DA1BE4200B449B341C1DD6
+F7D3BCD984DE5989DF872ECC549AF16B2119602DE3F6F084A2EEE98739699196
+5BCFF1A20F0090A15E7B1F2697FF1D58924CDF6E8FFEC76310B97CFBA62B4D84
+69CDBEBFD50D57D7EB6907B21F17C20CFED0DA31ADB0715A3D6D36FC762A7620
+55EAE4E98332738D6EB9CD412BCC63E3EFE09A53E4DDCC453AC7FAE48C31B840
+78D923F9BC40CB3CDD606F5E4C21E95B3CC9AD91E69358F3747CF4BAABA7B550
+C1EF36946A4734C29EF43D950B668A67C0CFF52CECDD0748A83554004EA02035
+0142E293CC426E38653AA2EBD3BE49BD29C348DF05A556D4C511F1D1563D062B
+F9B2572A34C3E6C326F1DE7318BC047E102E3A64225833B2CDF5B6C22410FFEF
+F800DD8443787D2765E175794A72432B2306517C8673F6FE12C2F2C3D873B41B
+2FBF9E1EED1FC53858EF7576BFD6A31827C3813E198BB641E802CEADE7E9255C
+66BECD2B617CFE14B19A1D2B5D5E498C757AEF9C5F8178D528E7E6BA96CDB4E7
+A7D5DDE5BF78FE12EB0F725981CC3A0505A4C853D9882D04B54589790F870674
+EB25710AA201CA62B31DAE25D7610FADCAE7B0CD8BDF6F62DE085D2E7E43E28B
+BAA34FA3467ACC61265FCCF2B42B98B386A7023F1FF28978DE9FE606996DF878
+057F80D4D0227EA820B112F3A7B34492761EAB840505B86316E2EBA3F27187C6
+B3939781F23316A50B2CA101734BC0FFB8051236618BAD933272818DCB0FEF04
+EA30BDD66F20F932AD1A1EC7743887EA57F7C78FEF151676148A8316E6408526
+57EBDB5B030A7E54AF47200C7982CA6ED0CF49B1AAA3CC1CF905ABE85898A930
+FE5E6AF137C816F26A6C26080C68B14DF10F7D7D1E7C7E7DD42F6AB9A179BEE4
+1483ECCE3E0B87D156506D8F93FF6C97EC239690173ABFEF57206F064AA19725
+E35441EBF35F6EEA688CE9FDDD34992BB1B0365C6F1C69AA301E1C207D1B5CC9
+CB2482259865249CE2E2036920A67B74581ED52C8E52FB3FA73153862C21053A
+49E03BDA52F956FC484710114DC863364956C0C6B8555628C35D541A954BFF73
+6205DCD1B02EC1FA2BA78AE17A4E000143A87CA9CA843D3066E260F826522618
+CAE799CA200B092329952CAE6ACD6A27F9D6B8BE6D1626ED06AA2DDE0435F57F
+CCEE6375E4AF5E0DE37C6F97A90FA041C042B35BAC490FCB3D92F0ECF9A0C563
+A391F0F556B2ECC218A129F5B775FCB26AA79CA31934E475C3AEB56C6A9883BD
+02122C3B3DACEF4E33615AA66048CB4830D3FB2F0549860BE5DF55B4D373C9FA
+2292E303A888B3A2F8D4DED2B06BE733C9EE4605238BCA5F7B2A5B30E9691CC1
+93091BEB8C992FD00827C1A420DC079EF7829E371710F834B5A7A9D7A0CB01A6
+D863EA71C4020576C2F0B12C8827C01B69BD6E5602A1C23577E521B2B396767D
+E5ADBE6EA16345DEE20BDE4793134DBD7BE97D07B8D012C5DFE8A810ACD5F741
+E68BC9E1B7A9215AD41F36CA1C001922ED5B81E7F5E1FF832696F5CA0D4B6D9B
+F599412121871B98F3ED394B341CBC714E71907FB6D1E928DF7F7549C4C2D7EE
+DBCCAB5A933AF887EA694C08D5E64082089B1C00F9EC001663E8AC2A9C86D680
+AFC7C7876B16875BDB02389D87B8898B20D4E406BB8ABBB46D01D8ED2B2B70E6
+902126B193C0054E8E7FD294494DACA066B10B8179540D22EA9639C374530A13
+87A407062BE544830D8AD031F6B3A7DB153BACF2E68A9A981026F46CD118FF87
+4F0554182C49A6B8EC5FFE60ED809B34350F47F0EA54C2972B2A171CD69CC018
+8AC1E7DE3E6E9B7C1E282BC22B5323164D1CF6A6A5EDBAD6C38AC5AE33A3E2A5
+CA334D55EE268C58A7FEDA0241947EEF81EB15DD6504810531B3C6E019709324
+0A885CE731F2F2ADC2B7EC8FDECD4AE96778E9EC48692482A56AAFE171CADADC
+7541147BF286CD7602C66FEFFBBC58B38B8EFC5031E7ED00713025B02D76CA99
+BEAF8B1C4628D5FBEA6CF56DB30B45B202CD87069AC97561BE8351F474ADE34C
+9DDAA53DC177B2F7FCE4EF16A19014C12BC362E1882BF561256111C78D7EC7CE
+4665F7B7E2F6F138D67F4A9BF04563323C4CD1CC61D446E934E56620D02933AA
+91F0189B5C8599AEADF7C32DDA2B8B2405007D6DC48FB3BCF11DE3C76A4A0585
+D7D941A3C34B4820E13BAF4414921FA5C30AF3A1E387E04AAFD3CCFECF6172FA
+2472B44807512117A68FD61BA027C8A8272A8019FC952FF8D47DDFA391D42E99
+5A9D94BA11AE36E6388E42947980668485786134C255EAA6C3C1513732C3C3F3
+165A6428ACFDCF71F3F6EE1294258DDE6D84D3B9889DB1EA49225A31901A9B7B
+033EABC5AAF85AF7C24E2630ED7498D049FBC6D63B47CED29D34B056E9A2E174
+D9E6A78A2C1C77341B74AE3888723C50BF68E24F014A64D99213E7A57D948C97
+BB474701FE533471680A9561417015521413D3F82A5E60E6406E404B4E910700
+9BBB1D6EC3413593FB805984A308ACFF63E61C72DE53A182F1AF3910A1C4C037
+AC2F2C9CFFCC702649759C3EB457E36D918E031E64B1487761012FC3C3D77234
+2438D33A7B0076465B2BD020E81237FBAF15DF040A7D802F3E09AC0DDA4D65A8
+8CC102E3F21B6BC952D33C436742218830FE94687B5B387506AE9728F92BD8D6
+6A526E159AC0E393CCE8B6DD2097F36896E470542CBF44C2E9CA55F479D8FD02
+7ACEF200B0B92BE056837F412D7EA3FCC0281A58596B513DE2C72C8F91282B36
+4B9F1E8C50841AF55AC256F305BB140D80190B51E23E7E1BFEBB8D05B8AB3DFF
+DF50E2245137ACD98D9273E5A076EB6DDC102F05225A1385EC95EFF13CFB474A
+830C6EE76E1878178AFE6730F45D5914A7AD4CEFC68F89CD167DF13B7B0605F5
+0400ED884AE4199206BF8621E9BD02C10910DBD3C748E68ED3E747EB4F5D84A2
+954825C4AE987964594E6D9AC873EBF25ABCE51868DC4C00C251E77FB5E93015
+32B8EABEBE9B03A66705EF51FDD3AD97B9831FD123F8434BE971D942B3B1872C
+89D214637FEB1DCCD991410E5A5D0BFACD7653FA9B9C65BB76CBA7A3193D9DB6
+7A3C86CD8A91BC0F3C148B387E58662E8BADFAD8D18D3A9BE04CEB229E9C1FCB
+BBA76C602256B31F1BE4277C31924DCBF574A6E2C94A140AF2B3F7C6BCE4F8D2
+358809426AC9DE30C581CBDD5BF01245429CF23CB9A5C7A1F240C800FBD3BAD5
+32625A2D058F575CDE3B7485D89620B7F1195C21739D1DE860783D1B5EEDE03D
+6C4D82A94BA2A046742DC5D86A0127317AF78B9982B150D7F8497BB78A9D3D21
+31D4FF625CF2DC0361BBF9AB1DBFAC6515734C3BDAB6049BB94F94E7EFE7535B
+6C18ED66560DE5413B050D4522ACE91425B615691268CD88D053DB6316C65E04
+0528F1318D29743DD9C74C5BBE1D36A5C0CCE153EC43C9FB59CA9B0211B401CC
+5432DFEF1382B97E6444883F98C34AD3CBEEBD55015E8D337A315603AD2D2A55
+CE31677E025D5B5C648C547BA7D0693EA3BAE43E510397DCDBEB2100EE89FFBB
+BC273555CB4D5EF33B872FE63C7ED8575B1E003C52918FF39057B67097880A84
+68C81B54CC142A798CA8949A0E7007E7BD3BA0E1708CCDD85E703464C2DC7760
+E4C74500DCD0FFF55B983A9D00288D81CE1751EE55A550F26E4F4AD9ADC75BDB
+D096BED0CB9297A59D4AA7AF7DFE99835EB0B0B8F8DEE7BF711BC38489E471DE
+3E75D3CCD9C11C52CB9A539C0B2F65ADA8D36F001B2A08540983E9073D084CC4
+B24A13A3522CD94FA72C4E63E5163772D0FE04BC472AEDD1CF77858BF125A2C1
+2643637C921278FE466650974F70AD04C5C59A2912CF82A99F304B9B59FAE9E9
+17CE21E3FAB368482F9F4ACEFBA84C9DCD0CC806D431DF9F04186E0E2C9C5172
+D7B88E9B692ADACEE18862AFBB8A5E7E066892D2308066FABE19D03C84357064
+DCA60C2AB009EC2850BBA7FCC06AF9481D941CF2BE5A09720377736C28970B3C
+9D706CE29A1DB9B7DDD7DAF5374E2469B70FEB87CA8536058C2CE3FFBD8A0CF0
+6D3E52FA44C7B901769F974449504313725BFD45F14D03C5486107E082EAAC01
+BC9D8D9062CD9183393C2220BF35F08C863ADA02FDD9DBA6B63989C5F1D41B2A
+32A317A7904C46C7B02FEAB8BF80A1EC30BDD8CED58649BFFF0C30E0B064342B
+74561A23C47C349FBA0724C925A302384F47EDA69778F44CB27B57EE709DB583
+F7151783B2B8459F4BEE2C59208283631946145681F0A167F206A672E97FDCB4
+D8EB04B5B013E482CB2298314331170D7C1B93D56E5D9309017680F9CE1156EB
+4B555B9A73923CFDFE1E999B32B19CF9E7834BE184BE3C9AB4299A477FCB089C
+BBAAB66111636F5258809BC5C80D9C9EBC8F97E581264502E35DFE39BB4F57CF
+0A29B8EE2112C7E8ADD6853E1EC678492D5CFB26E0B51B11088202DD9E170C5F
+311B890AC71764F18D7164BC597A28429E9A0189475EB398FB563FFBCF8CD2F6
+C5E336FA14BA976228A1C6E730F5B1EC37DF843CB341CB1CE65727BAF91DA78E
+2C233B99C96726ECFCFE8F24BA264BF3D15E9AFF74BF73902566F425E391D274
+2A7828421272B039E175668E8773D77DC2A13109C6FAF30A498E4736CEAF9A74
+95F1F74E39AF076E3506E61000D55C0C9201533DA8252705FCB52BC8B6FDFB2D
+6453E47CB22D3D08A8497434AB56761524AACB1BA44327DACB1E48C87487B219
+8036B531A5CEC834B0270BDDCC2FA0F4243D324A5983B5A8372E5E0335FBF214
+2ABC51DDC516C20492D452A4A1777735B928331C2099A709E36F79A85499861A
+E52B620CD3B311C9DA693865A606916E0FD248AD7D363325116DD49DD581022B
+4344EE949CC92ED91F811CB7E38707F717F78CF37DA293F43B8E41B2C50BCA75
+204EE1AB5168B15A2B30014650BDBB07210D0D0B00B281B5F415A3C689300DC1
+B02DA61AD3B7DB9F1AED97C2ACB77EB38A3560FD60F2BBC230592683687B5B58
+AC19AAF74A48519416FA02C3435A5AF6B74F915A399770E98088FDCF640B5561
+B8EFC2F55A38DBC5A0EECDF2DDBED92A4E745C4F3C3C1CC2C9EE7A0F061AB8FA
+FC5C963B9F18A5CFA01F7BC54095298EDCFA5A012AFFFD84952EB013D236C5DF
+90866F0EC2A495EFDF9E0E1B9137DB8696B6A49A74E12B63EB1CECC79AC7495A
+506FDB4132DE112C013ECF3C58E14E2E34542D049AD190939CA7C8B12D179EF7
+765BD970F6DA6AB4B5D22D63D1C9EEC3C0CEC44EF29CF097AFE0078EE340BBEF
+E36E85866FCA5D3A8B449796673B540B41B03A4D0EFAE8CD493D2DF658EB2AD6
+94B9902804A4CD62B305AAF9B4ACA23EF265B5EB84232F56376A84A76F2FF2C4
+84E46F647939AC1106476D1E83CF2FEA39B87D195DBAB0F1C98DBC954CB6980C
+FCF5B7FC06549BD995C472E750F491249AE47739DB42D1EBAA2AE6BEFDBAE372
+705B93742B4FA456B8D0C7D63F9863103B16B19F3D5CC47377C4E94D4F8109DB
+F0E355F2D98E780271D70557EB0F1EF944D10167DF6E466B4875382B636C16C2
+AC4BBAB1CFA3C4601C72A2DD377AB270204B8BDFAF1CEACDF18E5C42892CB88D
+6BA7FB003CA711818ECAE6B8FB93579517891AFA92089C2CE572965AC7053BBC
+A0EB7240B9FEB003A08C208FE18AC411E78387C6C21F6FDAAC0FC5B081C5B07E
+699C9C1483BB9848E413920A0211E2E5A89E356995A2800532CF403751D3F54C
+CD474EECF8E3980D0B41C99A304433F3519A815A317596B7D0D368DD5A03A78E
+5A1D15E106A84C751193D9707D0CE8143ED04E2E5829CFE49A89E0C634C1AD8F
+19D5B11ABCB9841AD32044C39D4E2DD8700496F34E5476EE6770F4703CED7EC9
+C99065341E44BD0D9D19B55D2E75F430B78E6BAA2EEE9420EA24D39DCD73693A
+CA839DF1A05AF64E6848836B52F1ABEC52131BA1D77BA246E1A219D0C6F55DC1
+F3E21EF2B2A0873ACB96FF075205BB30DA74B71751CD767F3F8E4D4A9E7543D5
+EBCF7F1C9130A014E998BDAC79CD5C93E0B84B907AEE4951CAD20AE7DA937254
+10740C438AFAFE430F87C648D0CA5CD55F6CA21F36EC202FF396B51A4A648A40
+A7D105F17CFDCAC063B422A5D9DC773089D1CAA8B36A21B11AE00105BB6525F8
+31D7266D3039EE73E31ED78C5EBD3AA9B2AC37140970AE5B6842F26EB2721D0E
+53E18E8B2BEC52CC508CC84993B9EC0F394A394135755D054BA37CB40945E502
+79CE1F2ACDFBBC29806F9695ED29CF019C2CDB8F9FF772E0A0B2F113299D9D3F
+C06365FE40BE632FA26312EBCE60D33CF0386F6A524C9BB8EF2E7FDFCE8DA5D7
+896C0B003C059ECBA7736DF9110632B9B2657423184D4EEBFBD455A838FF4DC9
+EF2B242CC5C1C62C6336BEDE41EABB72908CB679037302E8A3E836C934ED0DA8
+909E119B186001829F782684C6B0F0E6A2F290C1FCB74AF03CD61BDFE8FBE94F
+E894709EDA71D465777F6B17139B035A561C3764656F15C5316EEE150ADFCA01
+95D458965C59CB64813E0E5A08DB1050275D553BB8F52B363A4BF91CAA44A1D2
+1EA7BD5529120A3CF1D8D189C952C866A3084355B45047791DF43314FF148E0D
+5577CD3C15217E1AEA66DCCF46FE7C14947FBEE3048DF50889225CB6348D3678
+F7210A8A080EF88F5D31ADA450C40C895150BD5C5108592183DAE9BC3CEF8939
+D7AF7B4341EB9488AE75085B825AF9127BED345178A58691BF3E16DDCCBCABF3
+D26D857A181432399F706D169D562C80AF65241FB92D64BC7A3CB9CC6D876D7C
+53815CD7FE1F5CEA17FC27FE5AEC9D33DCC70D637EC94AB119AD573C46E8276A
+E5F56374AAD5D7216210087F4CADF7B5D34BA3F7E921B1092A8FE11347A89739
+9D380FA3A3EB3BE5258B7F59F2562586146D7137FF0EC56F393842AA46667D7A
+894E88589DB6E33ADE78B8CC6013E2FFE2D15F2B87D807EEC2BE2B05F0EE334E
+A6FB2B6D8F0E4587299DAF5A01B71DFF45646B45A7717823B782D30871FF84F6
+8829BFD08F7C44772705332F1F261CDE9627AE0E53BFAAE08BAD8559DED83029
+3176DD08DF4E40B88AC062BC8ACAE56AFA143B191D91CE8E1B304FB213AB7C3F
+07F00484ED7EDB379BFD3A626CDAE3D83EA7E52F0404D06639668C6CD6A23863
+2A5F8C507BF618DB05A7E2D08162A5298B384D60663EDAA6E87516C26562BA95
+58F3C025D933D1306EF8C5DFA15AA1F97A52AB0FDA958F1F8161700FC581F318
+428CB6285C0B59072251939E0213C01ADBCE3366622899A6CDA1B6BABF274F77
+78809E048EA637EE22082230EF8DD2A2E90C6B5E90C1F0FA3B38E149825FCFFD
+401AB438C82DB79C4EA564331295C667E128BDACC55D490022782CF4833A47BC
+5834E3F736DBDD8A9342BF53EF84BFEEF0F5EE573E5368F2F9D5DB5D4D0A174D
+765B174D70260B834CAE08B6190D3BBBB53E01C51444C5727046AFC57BC2E6D1
+C542BA72C6C675B14CCDEBF94928DC50C667076A3E04D1E019590546E7D26E19
+EFA6CE0CC44DAB3945B9421EB2826052EE8707D2DC1A04E2681608E534EA5FFF
+06A484A0B21A5578CDDB9EA4B2F606FC7585747C85F844E03F9C6C7A2D79E8B9
+5259A7946FF6D6D88DD983ECF3D08186415A3996EAD371AA36CD087C83270D15
+AFE4D65F422C21DDDDE854C55953FD9218D935B6ED29EDC49E5296B7ADB7C115
+403CF963D9B6D597F6C29FFAB3D1F0F4B36B16A8A04A6F6E5E182D930A2DC3B6
+F691652A65DFB00CC49A3E441BBABC82B899B67B20ABEBF36D570D06B48FB331
+815581CB896255071E6EDDD148536D8D5261A652F9905CDB4F3B6285EA17F9F1
+44944BCFAE97A15140817DB6A930655FEA185971AEE555BBBFAA4DBA41D27D95
+0285FA4EA645370DFA63D2C8278F0385DA62AC7BFF12CA1547D0DED458B2F935
+3199A53D95D67F1ED7D9E7AFA174097B3DFC9D4F558C74A8411329F08B072506
+323722D71B4F4C07B42F172E437AC2A3E7F89101B05C9DDC0CB092F4E2FFF05A
+7ED9CA19357D1D7BB5B1387AA5588A568A9AE01D83E91C0D1DD859C6F2678E77
+2AE315578E4398F7AA27728B451454144013236CBCC78A8F93057533ACA9B345
+13C31D6132660767C863201D890D05231CD201B3C052636DE4419BEEB03C11E9
+9CEE31000F8B3E72A6F4DBD1FE20E1DF8261444C51580BD0B4BA2BFC4D180394
+9DA9B1376BA57F7A39FB1BB16DB4C15A905C4BD8BE4AFEB98E3AA89D0ECCDD87
+2B0C9CB6D0E83FA52A309026DE35BA53A5028CC244139CD8876FBA256E5E848D
+EEE41261BEDDF27B9DE802C27A3408CFA8CF17B8C71F209B72D761C08D28CF93
+D2D3E79011A4DBB588A932C948ABFEC52B94CBA82C4DEC450888A00249AFD9D8
+536EA342A8BF443D3A8C519377AD0826BC197C8755772A5CB647C68E3EEEDCB7
+99031BFE1D1DD46E4FA1271DA7A30AD3F136E6198048D16339B87792FDA722B4
+3EE869CD9DD366CA6B5AA133276BFE865D27867B1389C2EAF2A13E1099093A7D
+B62A1212111A3356AAAE4217A36B5D26683F713AA736F3A7EB6A3DCC7ED8A4D7
+7820595675DB87AE97440C1FA674CD91A33AB61996C41A0260F768BF6E8F7761
+708B550CF5020DE4AF57E42BD5500FD8AB93265106554B49B6611E2123FCB9A8
+3EA66C88A2C1F449F57C22EB87AB84AED7895DDC7C3BC29978D011C8D9A496E3
+1759FC31AE3C18F91AD026BA033BB14615C0CEC947B6692816D9B9A93AA6FD53
+576A8A961032E750AA8EDD729EEDCC6A7FEB6E7254DA9A37520B562A3D2515D0
+BB53374D0D85124006B220B251F57EA0987B649DE17D630446DE8F482EF7B63C
+53B3840E96600D9B87FA979F30D56AA7C3BC7776A90009A8310C2005C333AFBC
+3905E4DA712F7DEDC9F5379C8F7D6418D898B155A6E71EAE0C16747A2FD5212A
+6B5D1AEBC4D8F9ADAAFD67FA1DEC77157234B8FD5A942D2B63DF9B4E78C5C095
+CD124D9D78EAE62401694C3770B0C6A21099C1111A5A013F6A5542728A405C93
+28C360FD1FFEC0C3C9FBD510473C5DFE73294D8F7589B6E2B97AEFFE455F360D
+B5026DCFB11A859EDE149FF3F07BE96E21A48CCC83C2A9A74A17ABC7DC57A1BC
+8120F2C0E120D94399CA7FFFBC654547A9CD1C4F12145E04C021F0E0DA66F4B3
+D8B8EC2631682F8C46D782CC6EF02FAB4DA2C5BCDAA2095B269BF305D3AE069D
+C39FAD01D5240C62CF85A2F7B0BBD763E37E320638B8A4ED2C0796B70A8FD998
+4A6E7FE0334BB7C3CAE692AEF7224DC05A20A8CB4A3E24D958F156D2350BB8A3
+F17C00FD4ABBA030ECCB8AA2D208BA5A48F8FC724ABD49968FBECC6D4A88094B
+B718E24083D16C7C01D00D4B249978AEC55A43E46EF8CED7E75E4A4C72C6DF6A
+B53CB3F95744970EAF756AAF72ED007144662BF7DB7CB4EDE5ADEDCA476799F3
+B146AB46E0BEDACFD22FFBEBE3CD41727FFA7BD104E79187277AA1F94DE90E93
+B3603DD6416D97A35A46D037446B544E56635D8BFCCBA22989B56321FB77B61B
+11EBFBF2E308A5A182ED33F8C6B2E78B6EAB8B27B9489838217E4DABD34691AD
+820FFB2DC098B17F72F06D99265D8867F7D2F880633284B6C7DFE00FDDE8B93F
+E7BA56AB1F6CEACC6D7D6629D7E19DE3EC062124569FD9E3E0B60FD5DCD0FE43
+9613E684B4466426CF173230B151EF39A6DAAD235678C773E09FD48C3DE04BC0
+30B18AFBF3F68C82FC6AFE30EF03C2D347CBB686372E90ADF94E66BF2B6B7E35
+9D8025EAD27C03A6F6301FACA6EF1227A0123488E561095BCE115DB33484B02B
+26815CDF2C5E8F030654C01D60315BC62350956A507C825CFD8CBE6E51478CE6
+8BEBCD29F02A702818AEC596D4CC40F7393BCEEF495C4A34051D49521BAFCDA1
+643240DE6C5D199B53CD654F0E9F1E72E4C2F6AE3FF977E016E660EE56833CCC
+FAB22143D123A47B47BD08FCF30A11235930D8CF4AEC6D4A7E255EA453B4D787
+62E43ED93064161DD3634F518A68839766CC83474D02F578D18C1FA32D301025
+85EA306DFB50F4E7D3C877F9A130AA5664CC16381481D9DD487E5E705254723C
+C4385E42761A4154E1AC68EE13024CC4DF51B1DFE7D07BEA319C52860D7E9244
+3C3EDB23C3544E8184ECFEEAC5190B57CC6A83EBC1F0EF2BE1567D0CDFA5C8DD
+68713DF5AED019939D548CAA21466DCBE83879930BD16A905DFC7084C81B410B
+B83641DDC14512E7C1FD414CE17A88E67EFCBA3EDCDF4AF8D4DB4A8A6C9607B0
+98F5669AC0C1903EAB34BF4C71E6D3DF30750A5CDDDA4E03863E3BE6035335AB
+772701A72CF111502AF427398B9EDCC4ABD94A265D35965AB5E56FB90979DEC4
+0C960DC65CE025B010F3E90C62855D511AD55D04A03C9FE0DDBF0D5BC08CB736
+5D68E5620234B0D26D5806E8BE6E88BD34D025DBF5B7F15357887284B3CAD9CA
+B8DAD7605945CE530FF6ECEF633A1F15D0F945F9BE44EB0B7307077316A3AD66
+2D8E25EA9DC1B573727DC1135A8E4DF5CE8C6ED2FDB24C6EAAE07B9B115F9B3E
+4D9FFFD0D1DC09002A8766E61BEAD20DDD25BD0F7A10AFBCCDF24CE539639F1B
+E2EA756AE9D8799537688A776704F1FB574313866038A7AC22CBB046CDDBBB66
+208671FE7E36760314E7D4337BE462A74885D9FBA8D81FAB572FCED0F1C4F66D
+FE82274DD14AFBE2749B762D30A924AC99D7EB68F17453088D69FEC186DCCC77
+C3634B816892CB68EBEF6330E141ADF06AA815C6EE96637E36BAF889936D283A
+8D0E63F0F66932A695731AD10850B706A7139761CFF14D2A6B1C947FABB2CE57
+8D0919A576324F1ACA1C11222F9FE67AD1ED1AE0BC0E3CB70FBC35194BE86095
+A5F6B63716677D032E0E7829073881879D9A40FDAE802F40B659ECDD7122C443
+4DF24AC8B365C7292EA4B1BCE35F87B4C3987A46B0608BD319D0E8EEA22F43C5
+DDE03D31AF0C3F26B5BD32E8AEE451892912446AE5430740B6FA9F1B32B8CE8C
+F6F1886AB64D8EF92C4A6A1D8BD8E9EEB8691CBC1E793CA10A1348650B3C910D
+4B6745A895B08FD2ECFEBA8C3771087D21355DFC1431FF4E568D5CB48C3C4EBA
+B010949AF38455B90089CC0CA3F3EC7429768E39A5DA52008591A02C59FC1DCA
+3FF50F38F0A0B9A12F17B816E5CF710C086DEBD8B9D7D868C2CE970A4363D480
+D63151A76A712455098B83F791A64EB29C908DA96E5ACC939ED8811088A1A973
+8CF7E4CDC682BFB5AF460B32143790BF4881510B78A2ABD62C0A7EB994913FEE
+04D129C6A242317AC117B0BF0552408F09EF63176825ACE6DE192CA8295936A1
+8BEA4648ADB86F94AA16E2C4E6AD945A66300D101E39427396C1E275078A345C
+958E9432BCEBF401C8118914183BD3D77D13DD4A24AA9CCC9968F5DE8D856C1D
+494846021FDAF138EB86AAB21B945B8F738D6C0F15C5FD02F83DC0C2E403289F
+D992FE198633A0C0CA6F49BE7AEE25D8835DDFE37F166EE0323CA9B49F7F9EDC
+AC962DF4385B152436DCFEBA0F103EABF0200CFE86A07E89174A2309582402E5
+3A535016B82A17A0B358BEF03389B04585F3AFC73AC3F86BD9E936C983E87423
+142F95A298AAB0749DB0D5978ED4C19306A460BA40F2D05689FD6C7B7F8DB04A
+BE93F57D65D19C6516E4ADD856F4FA25403F3B62390180DCD09CCE15B39222D6
+EAB36BC9E63C4E5EA57E6948AA7B13FF4FDEBDA7D26650CB1C20E779EB137AC0
+13A59EDF118D54769227F708B70A82F3812CB709AFCE6FACB4069F0A5738B3FA
+5B0051F28F9F1EDB2433E3E78897ED907B002870F3E4F57395A79E6DAAF9841B
+14827D092A496B52092CD462006E1A634AE6C7BB3977F19D7A387C24EBEB6C29
+33F730ADA759AADEB9FA8BCE4B8E30B2931507F5B1B9CC0BC3F202CB8171340F
+F07D6F114680583E9BC446476A72E87F8FADCC54DB8D999B4D79A80A0EC1977C
+CA5739EC98DC1ECCCADE762C8BF462E429F0466ACB68F8192664DADA74A3E43D
+604D161A1745B2B2D2DE84A1EECC1E0A67D0FA223EEE5A2DCD4800D06BA2FFD1
+C6F7BD6C05473884F46BAF7A823BBE6F8C64EA370AAEBA9894CC45F5985B5C8F
+F64B1B44F0C13C25BEF57A5DFFF8D8BD23987772A9CB50D8E14220A6375006D6
+E12693D7D6B855F2621A3E15C1808331B63B13383208D1D07DC1EE0D224DD173
+C8C3AEF201305CC1754FA9CAF4AFF5C4FFF1EA0466F48E0A30111D6E116352D1
+402FFDDAC250A102E7404C068BAA5D34134C8F8261AFCBDE0C6FFC05FCACF2C4
+130655CFCCC4148F598361D310D0E6D952A799672F9B6D3A8CB05E1AAEAC0899
+3ED730ED5371E053980691D627022F99351FC218393C0984E51083C75FFD4930
+82EBD84792DBC26B451376AE054B7256AFD9B6B5286BF30610C3990AC80E54F9
+2E9DA216B222C0B687408F072FA391AB85B0177EF200CBF6A09E5D3CB0B189C3
+5315A9831D27E97D59675C8C76D3984801274601D6FEE500527D1FD2288FD24E
+0F7A06EF1B8C6240665FD2744C0FFBBC7FC992FCE455BCD42E3FF5D6BEA4FC41
+2894973342FDA4E7E71864130D68ED6E144B1C9534FEE86C7D6C7E592A1DBF25
+03D574E129F350252E322B08DAA1E8B4AEBCDDC1678F4A97262FE4CD226E0A98
+4B2D024B98FA99C8BF9339E6A11110B721CE5A01609A04B69A0561A1302E8F79
+5DBCCFBF43E4F3BCE516E4014959FCDA32D89E32D4C9315476D0136900301617
+604873174EEA02877363921C065A9F59BF1F4CD034C499B87FFFA200B3F6BB57
+30ACD75E38282B8826EF29D24A2202BDDAB93996F180AD5FC5F397D65B04F192
+BDB03EA3AB7A683DD44CBC9710706041C11470514125C84B5AC5D1DADA60B3FF
+88767EFCCF4C8E4A8779CCAB609018E415A9B47E2B55A0654764D856895FCBE9
+8473967D677909BB797DBC5BC2EB92A87CEA89FC28C835E00B246173A0BF19C0
+E28A0B96F67F804752E21368BD6DFF8B64B56B25AC2F0FCF978C5A033ECECE67
+714E8AD454F4FBFF39803FA10762BBBBF422740D31D37574E42757ECC92F86B0
+97FBDDC2CEAC5DE894E7CFDD884DD7C735D2D0E7B9915D7C886A24E583E060D0
+5F2C2A73F790D488E1AD8DBE882C5AA72535EC6135434819EBD061D970A46F74
+5D4511326272196D3F57B704F1730E7454632C8B51B2498C34F6AC4177F37F09
+CBF429B5AF483F5C73531ED3FF313E20C5C7F2
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -5164,39 +5197,39 @@ TeXDict begin 40258431 52099146 1000 600 600 (rluserman.dvi)
 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 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 137[42 1[30 37 38 3[51 74 1[42 1[28 1[42
-1[42 1[42 1[46 84[51 12[{}13 90.9091 /CMTI10 rf /Fg 134[48
+61 61 2[34 46[{}46 109.091 /CMBX12 rf /Fe 137[42 1[30
+37 38 2[46 51 74 3[28 1[42 1[42 1[42 1[46 84[51 12[{}13
+90.9091 /CMTI10 rf /Ff 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 1[57 71 1[33 68 1[59 62 69 66
+64 68 19[30 32[51 53 11[{}46 90.9091 /CMSL10 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
-3[67 67 67 67 67 67 2[37 1[37 44[{}47 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 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 48 48 1[48 48 1[48
-1[48 48 48 48 48 48 48 48 1[48 48 48 48 2[48 48 48 48
-33[{}80 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 19[76 51 51 53 11[{}82 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 1[48 48 1[48 2[48 48 7[48 5[48 48 3[48 2[48 48
+48 17[48 48 2[48 5[48 39[{}34 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 240[45 1[91 13[{}2
+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 1[67 2[67 67 67 67 67 2[37 1[37 44[{}47 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 48 48 48 48 48
+1[48 1[48 48 48 1[48 2[48 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 48
+48 1[48 48 48 48 1[48 48 48 48 48 48 48 48 1[48 48 48
+48 2[48 48 48 48 33[{}82 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 19[76 51 51 53 11[{}82 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
@@ -5212,21 +5245,21 @@ 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(8.2,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31
-b(8.2.)3118 1623 y(Septem)m(b)s(er)f(2022)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.3,)i(for)e Fn(Readline)e(Library)h Fo(V)-8 b(ersion)31
+b(8.3.)3145 1623 y(Decem)m(b)s(er)g(2024)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(8.2,)h(19)150 4523 y(Septem)m(b)s(er)36
-b(2022\),)k(a)d(library)f(whic)m(h)g(aids)g(in)g(the)h(consistency)g
+(Library)f(\(v)m(ersion)h(8.3,)h(30)150 4523 y(Decem)m(b)s(er)39
+b(2024\),)k(a)c(library)f(whic)m(h)g(aids)g(in)g(the)h(consistency)g
 (of)g(user)e(in)m(terface)j(across)f(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{2022)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)
+4767 y Fl(\015)f Fo(1988{2025)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
@@ -5254,13 +5287,13 @@ f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
 b Fo(1)399 1005 y(1.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)18
 b Fi(:)e(:)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
-(:)31 b Fo(1)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
+(:)31 b Fo(2)399 1115 y(1.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
 (Commands)18 b Fi(:)d(:)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(:)32
 b Fo(2)399 1225 y(1.2.3)93 b(Readline)31 b(Killing)g(Commands)10
 b Fi(:)k(:)h(:)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(:)23
-b Fo(2)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22
+b Fo(3)399 1334 y(1.2.4)93 b(Readline)31 b(Argumen)m(ts)22
 b Fi(:)15 b(:)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(:)36 b Fo(3)399 1444 y(1.2.5)93 b(Searc)m(hing)31
@@ -5276,1042 +5309,1120 @@ b Fi(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
 39 b Fo(4)399 1773 y(1.3.2)93 b(Conditional)31 b(Init)f(Constructs)16
 b Fi(:)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(:)29
-b Fo(13)399 1882 y(1.3.3)93 b(Sample)30 b(Init)g(File)22
+b Fo(14)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(14)275 1992 y(1.4)92
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)35 b Fo(15)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(17)399 2101
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)35 b Fo(18)399 2101
 y(1.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)18
 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(17)399 2211 y(1.4.2)93 b(Commands)29 b(F)-8
+(:)31 b Fo(18)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(18)399
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fo(19)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
-b Fo(19)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8
+b Fo(21)399 2430 y(1.4.4)93 b(Killing)31 b(And)e(Y)-8
 b(anking)13 b Fi(:)k(:)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(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Fo(21)399 2540 y(1.4.5)93
+(:)f(:)g(:)h(:)f(:)h(:)f(:)26 b Fo(22)399 2540 y(1.4.5)93
 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)e Fi(:)15
 b(:)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(:)41 b Fo(22)399 2649
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fo(23)399 2649
 y(1.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
 b(or)31 b(Y)-8 b(ou)22 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(:)35
-b Fo(22)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11
+b Fo(24)399 2759 y(1.4.7)93 b(Keyb)s(oard)29 b(Macros)11
 b Fi(:)17 b(:)e(:)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(:)h(:)24 b Fo(23)399 2868 y(1.4.8)93
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)24 b Fo(25)399 2868 y(1.4.8)93
 b(Some)30 b(Miscellaneous)j(Commands)16 b Fi(:)e(:)h(:)h(:)f(:)h(:)f(:)
 g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)29 b Fo(23)275 2978 y(1.5)92 b(Readline)31
+(:)h(:)f(:)29 b Fo(25)275 2978 y(1.5)92 b(Readline)31
 b(vi)f(Mo)s(de)10 b Fi(:)16 b(:)f(:)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(:)h(:)23
-b Fo(25)150 3229 y Fm(App)t(endix)44 b(A)119 b(GNU)39
+b Fo(27)150 3229 y Fm(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
-Fj(:)20 b(:)32 b Fm(26)p eop end
+Fj(:)20 b(:)32 b Fm(28)p eop end
 %%Page: 1 4
 TeXDict begin 1 3 bop 3705 -116 a Fo(1)150 299 y Fk(1)80
-b(Command)54 b(Line)f(Editing)150 527 y Fo(This)30 b(c)m(hapter)h
+b(Command)54 b(Line)f(Editing)150 574 y Fo(This)30 b(c)m(hapter)h
 (describ)s(es)e(the)i(basic)g(features)f(of)h(the)f Fh(gnu)g
-Fo(command)h(line)f(editing)h(in)m(terface.)150 766 y
+Fo(command)h(line)f(editing)h(in)m(terface.)150 835 y
 Fm(1.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150
-925 y Fo(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h
-(notation)g(used)f(to)h(represen)m(t)f(k)m(eystrok)m(es.)275
-1058 y(The)35 b(text)i Fg(C-k)f Fo(is)g(read)g(as)h(`Con)m(trol-K')g
-(and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s(duced)d(when)g(the)h
-Fn(k)150 1168 y Fo(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol)
-g(k)m(ey)g(is)g(depressed.)275 1301 y(The)g(text)i Fg(M-k)e
-Fo(is)h(read)f(as)i(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)
-h(pro)s(duced)e(when)f(the)i(Meta)150 1411 y(k)m(ey)i(\(if)f(y)m(ou)h
-(ha)m(v)m(e)g(one\))g(is)f(depressed,)g(and)f(the)h Fn(k)g
-Fo(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s
-(eled)f Fn(ALT)150 1521 y Fo(on)c(man)m(y)h(k)m(eyb)s(oards.)40
-b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g
-Fn(ALT)e Fo(\(usually)i(to)g(either)g(side)g(of)g(the)150
-1630 y(space)h(bar\),)f(the)g Fn(ALT)f Fo(on)h(the)g(left)h(side)f(is)g
-(generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8
-b(.)42 b(The)29 b Fn(ALT)g Fo(k)m(ey)i(on)150 1740 y(the)c(righ)m(t)h
-(ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i
-(k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150
-1849 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f
-(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 1983 y(If)23
-b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Fn(ALT)e
-Fo(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g
-(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 2092
-y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g
-Fn(ESC)e Ff(\014rst)p Fo(,)j(and)e(then)g(t)m(yping)h
-Fn(k)p Fo(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150
-2202 y(as)j Fe(metafying)39 b Fo(the)30 b Fn(k)g Fo(k)m(ey)-8
-b(.)275 2335 y(The)39 b(text)j Fg(M-C-k)d Fo(is)h(read)g(as)h
-(`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i
-(pro)s(duced)d(b)m(y)150 2445 y Fe(metafying)g Fg(C-k)p
-Fo(.)275 2578 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g
-(their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38
-b Fn(DEL)p Fo(,)f Fn(ESC)p Fo(,)g Fn(LFD)p Fo(,)g Fn(SPC)p
-Fo(,)g Fn(RET)p Fo(,)150 2688 y(and)d Fn(TAB)f Fo(all)j(stand)e(for)g
-(themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)
-h(\014le)f(\(see)i(Section)f(1.3)150 2797 y([Readline)c(Init)e(File],)j
-(page)e(4\).)41 b(If)29 b(y)m(our)h(k)m(eyb)s(oard)f(lac)m(ks)i(a)f
-Fn(LFD)f Fo(k)m(ey)-8 b(,)31 b(t)m(yping)g Fn(C-j)d Fo(will)i(pro)s
-(duce)f(the)150 2907 y(desired)h(c)m(haracter.)42 b(The)30
-b Fn(RET)g Fo(k)m(ey)h(ma)m(y)g(b)s(e)e(lab)s(eled)i
-Fn(Return)e Fo(or)h Fn(Enter)f Fo(on)h(some)h(k)m(eyb)s(oards.)150
-3145 y Fm(1.2)68 b(Readline)47 b(In)l(teraction)150 3305
+995 y Fo(The)j(follo)m(wing)j(paragraphs)d(use)h(Emacs)g(st)m(yle)h(to)
+g(describ)s(e)f(the)g(notation)h(used)e(to)i(represen)m(t)150
+1104 y(k)m(eystrok)m(es.)275 1252 y(The)35 b(text)i Fg(C-k)f
+Fo(is)g(read)g(as)h(`Con)m(trol-K')g(and)f(describ)s(es)f(the)h(c)m
+(haracter)i(pro)s(duced)d(when)g(the)h Fn(k)150 1362
+y Fo(k)m(ey)31 b(is)g(pressed)e(while)h(the)h(Con)m(trol)g(k)m(ey)g(is)
+g(depressed.)275 1510 y(The)g(text)i Fg(M-k)e Fo(is)h(read)f(as)i
+(`Meta-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)h(pro)s(duced)e
+(when)f(the)i(Meta)150 1620 y(k)m(ey)h(\(if)f(y)m(ou)g(ha)m(v)m(e)h
+(one\))g(is)f(depressed,)f(and)g(the)i Fn(k)e Fo(k)m(ey)i(is)f(pressed)
+f(\(a)h Ff(meta)h(c)m(haracter)7 b Fo(\),)34 b(then)e(b)s(oth)150
+1729 y(are)k(released.)56 b(The)35 b(Meta)i(k)m(ey)f(is)f(lab)s(eled)h
+Fn(ALT)e Fo(or)h Fn(Option)f Fo(on)h(man)m(y)h(k)m(eyb)s(oards.)55
+b(On)34 b(k)m(eyb)s(oards)150 1839 y(with)c(t)m(w)m(o)h(k)m(eys)f(lab)s
+(eled)g Fn(ALT)f Fo(\(usually)h(to)g(either)h(side)e(of)h(the)g(space)h
+(bar\),)f(the)g Fn(ALT)f Fo(on)g(the)h(left)h(side)150
+1948 y(is)d(generally)h(set)g(to)f(w)m(ork)g(as)g(a)h(Meta)g(k)m(ey)-8
+b(.)41 b(One)28 b(of)g(the)g Fn(ALT)f Fo(k)m(eys)h(ma)m(y)h(also)g(b)s
+(e)e(con\014gured)g(as)i(some)150 2058 y(other)i(mo)s(di\014er,)e(suc)m
+(h)h(as)h(a)g(Comp)s(ose)f(k)m(ey)h(for)f(t)m(yping)h(accen)m(ted)h(c)m
+(haracters.)275 2206 y(On)42 b(some)j(k)m(eyb)s(oards,)i(the)d(Meta)h
+(k)m(ey)f(mo)s(di\014er)f(pro)s(duces)g(c)m(haracters)i(with)e(the)h
+(eigh)m(th)h(bit)150 2316 y(\(0200\))38 b(set.)56 b(Y)-8
+b(ou)36 b(can)g(use)f(the)h Fn(enable-meta-key)31 b Fo(v)-5
+b(ariable)36 b(to)g(con)m(trol)h(whether)e(or)h(not)f(it)h(do)s(es)150
+2425 y(this,)28 b(if)g(the)g(k)m(eyb)s(oard)f(allo)m(ws)i(it.)41
+b(On)26 b(man)m(y)i(others,)h(the)f(terminal)g(or)f(terminal)i(em)m
+(ulator)f(con)m(v)m(erts)150 2535 y(the)h(meta\014ed)g(k)m(ey)g(to)h(a)
+f(k)m(ey)g(sequence)g(b)s(eginning)f(with)h Fn(ESC)f
+Fo(as)g(describ)s(ed)g(in)g(the)h(next)g(paragraph.)275
+2683 y(If)k(y)m(ou)i(do)f(not)g(ha)m(v)m(e)h(a)g(Meta)h(or)e
+Fn(ALT)f Fo(k)m(ey)-8 b(,)36 b(or)e(another)h(k)m(ey)g(w)m(orking)f(as)
+h(a)f(Meta)i(k)m(ey)-8 b(,)36 b(y)m(ou)f(can)150 2793
+y(generally)28 b(ac)m(hiev)m(e)h(the)f(latter)g(e\013ect)g(b)m(y)f(t)m
+(yping)h Fn(ESC)e Fe(\014rst)p Fo(,)i(and)f(then)f(t)m(yping)i
+Fn(k)p Fo(.)39 b(The)26 b Fn(ESC)g Fo(c)m(haracter)150
+2902 y(is)k(kno)m(wn)g(as)h(the)f Ff(meta)i(pre\014x)6
+b Fo(\).)275 3050 y(Either)30 b(pro)s(cess)g(is)g(kno)m(wn)g(as)h
+Ff(metafying)39 b Fo(the)30 b Fn(k)g Fo(k)m(ey)-8 b(.)275
+3198 y(If)24 b(y)m(our)i(Meta)g(k)m(ey)h(pro)s(duces)d(a)h(k)m(ey)h
+(sequence)g(with)f(the)h Fn(ESC)e Fo(meta)i(pre\014x,)g(y)m(ou)f(can)h
+(mak)m(e)g Fg(M-key)150 3308 y Fo(k)m(ey)40 b(bindings)e(y)m(ou)i(sp)s
+(ecify)f(\(see)i Fn(Key)29 b(Bindings)37 b Fo(in)i(Section)i(1.3.1)g
+([Readline)f(Init)g(File)g(Syn)m(tax],)150 3418 y(page)31
+b(4\))g(do)f(the)h(same)g(thing)f(b)m(y)g(setting)i(the)f
+Fn(force-meta-prefix)25 b Fo(v)-5 b(ariable.)275 3566
+y(The)39 b(text)j Fg(M-C-k)d Fo(is)h(read)g(as)h(`Meta-Con)m(trol-k')j
+(and)39 b(describ)s(es)h(the)g(c)m(haracter)i(pro)s(duced)d(b)m(y)150
+3675 y(metafying)31 b Fg(C-k)p Fo(.)275 3823 y(In)k(addition,)j(sev)m
+(eral)f(k)m(eys)g(ha)m(v)m(e)g(their)f(o)m(wn)g(names.)58
+b(Sp)s(eci\014cally)-8 b(,)38 b Fn(DEL)p Fo(,)f Fn(ESC)p
+Fo(,)g Fn(LFD)p Fo(,)g Fn(SPC)p Fo(,)g Fn(RET)p Fo(,)150
+3933 y(and)d Fn(TAB)f Fo(all)j(stand)e(for)g(themselv)m(es)i(when)d
+(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)h(\014le)f(\(see)i
+(Section)f(1.3)150 4043 y([Readline)e(Init)g(File],)h(page)f(4\).)48
+b(If)32 b(y)m(our)g(k)m(eyb)s(oard)g(lac)m(ks)i(a)f Fn(LFD)e
+Fo(k)m(ey)-8 b(,)35 b(t)m(yping)d Fn(C-j)g Fo(will)h(output)f(the)150
+4152 y(appropriate)e(c)m(haracter.)43 b(The)30 b Fn(RET)f
+Fo(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h Fn(Return)d
+Fo(or)j Fn(Enter)d Fo(on)j(some)g(k)m(eyb)s(oards.)150
+4413 y Fm(1.2)68 b(Readline)47 b(In)l(teraction)150 4573
 y Fo(Often)32 b(during)g(an)g(in)m(teractiv)m(e)j(session)e(y)m(ou)g(t)
 m(yp)s(e)g(in)f(a)h(long)g(line)g(of)f(text,)j(only)d(to)i(notice)g
-(that)f(the)150 3414 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g
+(that)f(the)150 4682 y(\014rst)f(w)m(ord)g(on)g(the)g(line)h(is)g
 (missp)s(elled.)46 b(The)32 b(Readline)h(library)f(giv)m(es)h(y)m(ou)g
-(a)g(set)g(of)f(commands)g(for)150 3524 y(manipulating)e(the)g(text)h
+(a)g(set)g(of)f(commands)g(for)150 4792 y(manipulating)e(the)g(text)h
 (as)f(y)m(ou)g(t)m(yp)s(e)g(it)g(in,)g(allo)m(wing)h(y)m(ou)f(to)h
 (just)e(\014x)g(y)m(our)h(t)m(yp)s(o,)g(and)g(not)g(forcing)150
-3634 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29
+4902 y(y)m(ou)e(to)h(ret)m(yp)s(e)g(the)f(ma)5 b(jorit)m(y)29
 b(of)f(the)h(line.)40 b(Using)28 b(these)h(editing)g(commands,)f(y)m
-(ou)h(mo)m(v)m(e)g(the)g(cursor)150 3743 y(to)35 b(the)f(place)i(that)e
+(ou)h(mo)m(v)m(e)g(the)g(cursor)150 5011 y(to)35 b(the)f(place)i(that)e
 (needs)g(correction,)j(and)d(delete)h(or)f(insert)h(the)f(text)h(of)g
-(the)f(corrections.)54 b(Then,)150 3853 y(when)24 b(y)m(ou)h(are)g
+(the)f(corrections.)54 b(Then,)150 5121 y(when)24 b(y)m(ou)h(are)g
 (satis\014ed)g(with)g(the)g(line,)i(y)m(ou)e(simply)f(press)g
 Fn(RET)p Fo(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e
-(at)h(the)h(end)150 3962 y(of)33 b(the)h(line)g(to)g(press)e
+(at)h(the)h(end)150 5230 y(of)33 b(the)h(line)g(to)g(press)e
 Fn(RET)p Fo(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g
-(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 4072
-y(within)c(the)g(line.)150 4269 y Fd(1.2.1)63 b(Readline)40
-b(Bare)h(Essen)m(tials)150 4416 y Fo(In)31 b(order)h(to)h(en)m(ter)g(c)
-m(haracters)g(in)m(to)g(the)g(line,)g(simply)e(t)m(yp)s(e)i(them.)46
-b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i(app)s(ears)150
-4525 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g(the)h(cursor)e(mo)
-m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47 b(If)32
-b(y)m(ou)h(mist)m(yp)s(e)g(a)150 4635 y(c)m(haracter,)f(y)m(ou)f(can)g
-(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f
-(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 4768
+(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340
+y(within)c(the)g(line.)p eop end
+%%Page: 2 5
+TeXDict begin 2 4 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y Fd(1.2.1)63
+b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fo(In)31
+b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g
+(simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i
+(app)s(ears)150 555 y(where)e(the)h(cursor)e(w)m(as,)j(and)e(then)g
+(the)h(cursor)e(mo)m(v)m(es)j(one)f(space)g(to)g(the)g(righ)m(t.)47
+b(If)32 b(y)m(ou)h(mist)m(yp)s(e)g(a)150 665 y(c)m(haracter,)f(y)m(ou)f
+(can)g(use)f(y)m(our)g(erase)h(c)m(haracter)h(to)f(bac)m(k)g(up)f(and)f
+(delete)j(the)f(mist)m(yp)s(ed)e(c)m(haracter.)275 813
 y(Sometimes)i(y)m(ou)g(ma)m(y)h(mist)m(yp)s(e)e(a)i(c)m(haracter,)g
 (and)e(not)i(notice)g(the)f(error)f(un)m(til)h(y)m(ou)g(ha)m(v)m(e)h(t)
-m(yp)s(ed)150 4878 y(sev)m(eral)e(other)f(c)m(haracters.)42
+m(yp)s(ed)150 922 y(sev)m(eral)e(other)f(c)m(haracters.)42
 b(In)28 b(that)i(case,)g(y)m(ou)f(can)g(t)m(yp)s(e)h
 Fg(C-b)d Fo(to)j(mo)m(v)m(e)g(the)f(cursor)g(to)g(the)g(left,)i(and)150
-4987 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31
+1032 y(then)f(correct)i(y)m(our)e(mistak)m(e.)42 b(Afterw)m(ards,)31
 b(y)m(ou)f(can)h(mo)m(v)m(e)h(the)e(cursor)g(to)h(the)g(righ)m(t)g
-(with)f Fg(C-f)p Fo(.)275 5121 y(When)i(y)m(ou)h(add)f(text)h(in)f(the)
+(with)f Fg(C-f)p Fo(.)275 1179 y(When)i(y)m(ou)h(add)f(text)h(in)f(the)
 h(middle)f(of)h(a)g(line,)h(y)m(ou)e(will)h(notice)h(that)f(c)m
-(haracters)h(to)g(the)e(righ)m(t)150 5230 y(of)d(the)g(cursor)f(are)h
+(haracters)h(to)g(the)e(righ)m(t)150 1289 y(of)d(the)g(cursor)f(are)h
 (`pushed)e(o)m(v)m(er')j(to)g(mak)m(e)f(ro)s(om)g(for)f(the)h(text)h
 (that)f(y)m(ou)g(ha)m(v)m(e)h(inserted.)40 b(Lik)m(ewise,)150
-5340 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m
-(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)p
-eop end
-%%Page: 2 5
-TeXDict begin 2 4 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(2)150 299 y(bac)m(k')24
-b(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)f(b)m(y)g(the)g
-(remo)m(v)-5 b(al)24 b(of)f(the)g(text.)39 b(A)23 b(list)g(of)g(the)g
-(bare)f(essen)m(tials)150 408 y(for)30 b(editing)h(the)g(text)g(of)g
-(an)f(input)f(line)i(follo)m(ws.)150 571 y Fg(C-b)336
-b Fo(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)150
-732 y Fg(C-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m(haracter.)
-150 893 y Fn(DEL)e Fo(or)i Fn(Backspace)630 1003 y Fo(Delete)i(the)d(c)
-m(haracter)i(to)f(the)g(left)g(of)f(the)h(cursor.)150
-1164 y Fg(C-d)336 b Fo(Delete)33 b(the)d(c)m(haracter)i(underneath)d
-(the)i(cursor.)150 1325 y(Prin)m(ting)g(c)m(haracters)630
-1435 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g
-(cursor.)150 1596 y Fg(C-_)e Fo(or)i Fg(C-x)e(C-u)630
-1706 y Fo(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8
+1398 y(when)d(y)m(ou)g(delete)i(text)g(b)s(ehind)c(the)j(cursor,)h(c)m
+(haracters)g(to)f(the)g(righ)m(t)g(of)g(the)g(cursor)e(are)i(`pulled)
+150 1508 y(bac)m(k')k(to)f(\014ll)g(in)f(the)h(blank)f(space)i(created)
+g(b)m(y)e(the)h(remo)m(v)-5 b(al)42 b(of)f(the)g(text.)73
+b(These)40 b(are)h(the)g(bare)150 1618 y(essen)m(tials)32
+b(for)e(editing)h(the)g(text)g(of)g(an)f(input)f(line:)150
+1796 y Fg(C-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(k)g(one)e(c)m(haracter.)
+150 1969 y Fg(C-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(one)h(c)m
+(haracter.)150 2141 y Fn(DEL)e Fo(or)i Fn(Backspace)630
+2251 y Fo(Delete)i(the)d(c)m(haracter)i(to)f(the)g(left)g(of)f(the)h
+(cursor.)150 2423 y Fg(C-d)336 b Fo(Delete)33 b(the)d(c)m(haracter)i
+(underneath)d(the)i(cursor.)150 2596 y(Prin)m(ting)g(c)m(haracters)630
+2705 y(Insert)f(the)g(c)m(haracter)i(in)m(to)g(the)e(line)h(at)g(the)g
+(cursor.)150 2878 y Fg(C-_)e Fo(or)i Fg(C-x)e(C-u)630
+2987 y Fo(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8
 b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g
-(empt)m(y)630 1815 y(line.)150 1977 y(\(Dep)s(ending)c(on)g(y)m(our)g
-(con\014guration,)h(the)f Fn(Backspace)d Fo(k)m(ey)k(migh)m(t)g(b)s(e)e
-(set)i(to)g(delete)g(the)f(c)m(haracter)150 2087 y(to)h(the)f(left)h
+(empt)m(y)630 3097 y(line.)150 3276 y(Dep)s(ending)e(on)h(y)m(our)f
+(con\014guration,)i(the)f Fn(Backspace)e Fo(k)m(ey)i(migh)m(t)h(b)s(e)e
+(set)h(to)g(delete)h(the)f(c)m(haracter)150 3385 y(to)e(the)f(left)h
 (of)f(the)g(cursor)f(and)h(the)g Fn(DEL)f Fo(k)m(ey)i(set)g(to)f
 (delete)i(the)e(c)m(haracter)h(underneath)e(the)h(cursor,)150
-2196 y(lik)m(e)i Fg(C-d)p Fo(,)d(rather)i(than)f(the)g(c)m(haracter)i
-(to)f(the)g(left)g(of)g(the)f(cursor.\))150 2398 y Fd(1.2.2)63
-b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 2545
-y Fo(The)27 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)e(the)g(most)i
-(basic)f(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)g(in)f(order)g(to)i
-(do)e(editing)i(of)150 2654 y(the)k(input)f(line.)49
-b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m(enience,)j(man)m(y)d(other)g
-(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g(in)h(addition)150
-2764 y(to)j Fg(C-b)p Fo(,)f Fg(C-f)p Fo(,)g Fg(C-d)p
-Fo(,)h(and)e Fn(DEL)p Fo(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h
-(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h(the)150 2873
-y(line.)150 3035 y Fg(C-a)336 b Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h
-(of)g(the)f(line.)150 3197 y Fg(C-e)336 b Fo(Mo)m(v)m(e)32
-b(to)g(the)e(end)g(of)g(the)h(line.)150 3358 y Fg(M-f)336
-b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f(where)g(a)h(w)m(ord)f
-(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)150
-3519 y Fg(M-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m(ord.)
-150 3680 y Fg(C-l)336 b Fo(Clear)31 b(the)f(screen,)h(reprin)m(ting)f
-(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 3843 y(Notice)c(ho)m(w)f
-Fg(C-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m(haracter,)j(while)d
-Fg(M-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m(ord.)39
-b(It)24 b(is)h(a)g(lo)s(ose)150 3952 y(con)m(v)m(en)m(tion)32
+3495 y(lik)m(e)i Fg(C-d)p Fo(,)d(rather)i(than)f(the)g(c)m(haracter)i
+(to)f(the)g(left)g(of)g(the)f(cursor.)150 3707 y Fd(1.2.2)63
+b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 3854
+y Fo(The)34 b(ab)s(o)m(v)m(e)i(table)f(describ)s(es)f(the)g(most)h
+(basic)g(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)f(in)g(order)g(to)h
+(do)f(editing)150 3964 y(of)c(the)g(input)f(line.)40
+b(F)-8 b(or)31 b(y)m(our)e(con)m(v)m(enience,)k(man)m(y)c(other)h
+(commands)g(are)g(a)m(v)-5 b(ailable)32 b(in)d(addition)h(to)150
+4073 y Fg(C-b)p Fo(,)e Fg(C-f)p Fo(,)g Fg(C-d)p Fo(,)g(and)g
+Fn(DEL)p Fo(.)39 b(Here)29 b(are)g(some)g(commands)e(for)i(mo)m(ving)g
+(more)f(rapidly)g(within)g(the)g(line.)150 4252 y Fg(C-a)336
+b Fo(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f(line.)150
+4425 y Fg(C-e)336 b Fo(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h
+(line.)150 4597 y Fg(M-f)336 b Fo(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m
+(ord,)f(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d
+(digits.)150 4769 y Fg(M-b)336 b Fo(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)
+g(w)m(ord.)150 4942 y Fg(C-l)336 b Fo(Clear)31 b(the)f(screen,)h
+(reprin)m(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275
+5121 y(Notice)c(ho)m(w)f Fg(C-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m
+(haracter,)j(while)d Fg(M-f)e Fo(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m
+(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32
 b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m
 (haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150
-4062 y(w)m(ords.)150 4263 y Fd(1.2.3)63 b(Readline)40
-b(Killing)i(Commands)150 4410 y Fe(Killing)35 b Fo(text)28
-b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i(but)e(to)h
-(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f(usually)150
-4519 y(b)m(y)g Fe(y)m(anking)35 b Fo(\(re-inserting\))28
-b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27
-b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150
-4629 y(`kill')32 b(and)d(`y)m(ank'.\))275 4765 y(If)g(the)i
-(description)f(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g
-(text,)h(then)e(y)m(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150
-4875 y(can)g(get)g(the)g(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g
-(\(or)g(the)f(same\))h(place)h(later.)275 5011 y(When)23
-b(y)m(ou)g(use)g(a)h(kill)g(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i
-(in)e(a)g Fe(kill-ring)p Fo(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h
-(consecutiv)m(e)150 5121 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g
-(killed)h(text)g(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f
-(bac)m(k,)h(y)m(ou)g(get)g(it)f(all.)43 b(The)150 5230
-y(kill)33 b(ring)f(is)g(not)h(line)g(sp)s(eci\014c;)g(the)g(text)g
-(that)g(y)m(ou)g(killed)f(on)h(a)f(previously)g(t)m(yp)s(ed)h(line)f
-(is)h(a)m(v)-5 b(ailable)150 5340 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)
-m(k)g(later,)h(when)d(y)m(ou)i(are)g(t)m(yping)f(another)h(line.)p
-eop end
+5340 y(w)m(ords.)p eop end
 %%Page: 3 6
 TeXDict begin 3 5 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(3)275 299 y(Here)30
-b(is)h(the)f(list)h(of)g(commands)f(for)g(killing)h(text.)150
-456 y Fg(C-k)336 b Fo(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g
-(cursor)g(p)s(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150
-614 y Fg(M-d)336 b Fo(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g
-(of)h(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m
-(ords,)g(to)g(the)630 723 y(end)j(of)g(the)h(next)f(w)m(ord.)41
+b(Command)29 b(Line)i(Editing)2153 b(3)150 299 y Fd(1.2.3)63
+b(Readline)40 b(Killing)i(Commands)150 446 y Ff(Killing)35
+b Fo(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i
+(but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f
+(usually)150 555 y(b)m(y)g Ff(y)m(anking)35 b Fo(\(re-inserting\))28
+b(it)g(bac)m(k)f(in)m(to)h(the)f(line.)40 b(\(`Cut')27
+b(and)g(`paste')h(are)f(more)g(recen)m(t)h(jargon)f(for)150
+665 y(`kill')32 b(and)d(`y)m(ank'.\))275 795 y(If)g(the)i(description)f
+(for)g(a)h(command)f(sa)m(ys)g(that)h(it)g(`kills')g(text,)h(then)e(y)m
+(ou)g(can)h(b)s(e)e(sure)h(that)h(y)m(ou)150 904 y(can)g(get)g(the)g
+(text)g(bac)m(k)g(in)f(a)h(di\013eren)m(t)g(\(or)g(the)f(same\))h
+(place)h(later.)275 1034 y(When)23 b(y)m(ou)g(use)g(a)h(kill)g
+(command,)g(the)g(text)g(is)f(sa)m(v)m(ed)i(in)e(a)g
+Ff(kill-ring)p Fo(.)39 b(An)m(y)24 b(n)m(um)m(b)s(er)e(of)h(consecutiv)
+m(e)150 1144 y(kills)31 b(sa)m(v)m(e)i(all)f(of)f(the)g(killed)h(text)g
+(together,)g(so)g(that)f(when)f(y)m(ou)h(y)m(ank)h(it)f(bac)m(k,)h(y)m
+(ou)g(get)g(it)f(all.)43 b(The)150 1253 y(kill)33 b(ring)f(is)g(not)h
+(line)g(sp)s(eci\014c;)g(the)g(text)g(that)g(y)m(ou)g(killed)f(on)h(a)f
+(previously)g(t)m(yp)s(ed)h(line)f(is)h(a)m(v)-5 b(ailable)150
+1363 y(to)31 b(b)s(e)f(y)m(ank)m(ed)h(bac)m(k)g(later,)h(when)d(y)m(ou)
+i(are)g(t)m(yping)f(another)h(line.)275 1493 y(Here)f(is)h(the)f(list)h
+(of)g(commands)f(for)g(killing)h(text.)150 1643 y Fg(C-k)336
+b Fo(Kill)31 b(the)f(text)i(from)e(the)g(curren)m(t)g(cursor)g(p)s
+(osition)h(to)g(the)f(end)g(of)g(the)h(line.)150 1793
+y Fg(M-d)336 b Fo(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g(of)h
+(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)
+g(to)g(the)630 1903 y(end)j(of)g(the)h(next)f(w)m(ord.)41
 b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used)
-f(b)m(y)g Fg(M-f)p Fo(.)150 881 y Fg(M-DEL)240 b Fo(Kill)34
+f(b)m(y)g Fg(M-f)p Fo(.)150 2053 y Fg(M-DEL)240 b Fo(Kill)34
 b(from)f(the)g(cursor)g(to)h(the)g(start)g(of)g(the)f(curren)m(t)g(w)m
 (ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)g(to)630
-991 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39
+2162 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39
 b(W)-8 b(ord)28 b(b)s(oundaries)e(are)i(the)g(same)g(as)g(those)g(used)
-f(b)m(y)630 1100 y Fg(M-b)p Fo(.)150 1258 y Fg(C-w)336
+f(b)m(y)630 2272 y Fg(M-b)p Fo(.)150 2422 y Fg(C-w)336
 b Fo(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)
 55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fg(M-DEL)630
-1367 y Fo(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275
-1525 y(Here)42 b(is)f(ho)m(w)h(to)g Fe(y)m(ank)47 b Fo(the)42
+2532 y Fo(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275
+2682 y(Here)42 b(is)f(ho)m(w)h(to)g Ff(y)m(ank)47 b Fo(the)42
 b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43
-b(means)e(to)h(cop)m(y)h(the)e(most-)150 1634 y(recen)m(tly-killed)33
-b(text)e(from)f(the)g(kill)i(bu\013er.)150 1792 y Fg(C-y)336
-b Fo(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f(text)g(bac)m
-(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150
-1949 y Fg(M-y)336 b Fo(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h
+b(means)e(to)h(cop)m(y)h(the)e(most-)150 2791 y(recen)m(tly-killed)33
+b(text)e(from)f(the)g(kill)i(bu\013er)d(in)m(to)i(the)g(line)g(at)g
+(the)f(curren)m(t)g(cursor)g(p)s(osition.)150 2941 y
+Fg(C-y)336 b Fo(Y)-8 b(ank)31 b(the)f(most)h(recen)m(tly)h(killed)f
+(text)g(bac)m(k)g(in)m(to)h(the)e(bu\013er)g(at)h(the)f(cursor.)150
+3091 y Fg(M-y)336 b 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 2059 y(command)30 b(is)h Fg(C-y)e Fo(or)h
-Fg(M-y)p Fo(.)150 2256 y Fd(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150
-2403 y Fo(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f
+(the)g(prior)630 3201 y(command)30 b(is)h Fg(C-y)e Fo(or)h
+Fg(M-y)p Fo(.)150 3391 y Fd(1.2.4)63 b(Readline)40 b(Argumen)m(ts)150
+3538 y Fo(Y)-8 b(ou)40 b(can)f(pass)g(n)m(umeric)f(argumen)m(ts)i(to)f
 (Readline)h(commands.)67 b(Sometimes)39 b(the)g(argumen)m(t)h(acts)150
-2513 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g
-Ff(sign)47 b Fo(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m
-(t.)71 b(If)40 b(y)m(ou)150 2622 y(pass)33 b(a)h(negativ)m(e)i(argumen)
+3648 y(as)g(a)h(rep)s(eat)f(coun)m(t,)j(other)e(times)f(it)h(is)f(the)g
+Fe(sign)47 b Fo(of)41 b(the)f(argumen)m(t)g(that)h(is)f(signi\014can)m
+(t.)71 b(If)40 b(y)m(ou)150 3757 y(pass)33 b(a)h(negativ)m(e)i(argumen)
 m(t)e(to)g(a)g(command)f(whic)m(h)g(normally)h(acts)g(in)f(a)h(forw)m
-(ard)f(direction,)i(that)150 2732 y(command)g(will)h(act)g(in)f(a)h
+(ard)f(direction,)i(that)150 3867 y(command)g(will)h(act)g(in)f(a)h
 (bac)m(kw)m(ard)f(direction.)57 b(F)-8 b(or)36 b(example,)h(to)f(kill)g
-(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 2842 y(the)31
+(text)g(bac)m(k)g(to)g(the)g(start)g(of)150 3976 y(the)31
 b(line,)g(y)m(ou)f(migh)m(t)h(t)m(yp)s(e)g(`)p Fn(M--)f(C-k)p
-Fo('.)275 2975 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g
+Fo('.)275 4106 y(The)d(general)i(w)m(a)m(y)h(to)e(pass)g(n)m(umeric)g
 (argumen)m(ts)h(to)g(a)f(command)g(is)g(to)h(t)m(yp)s(e)f(meta)i
-(digits)e(b)s(efore)150 3085 y(the)j(command.)42 b(If)30
+(digits)e(b)s(efore)150 4216 y(the)j(command.)42 b(If)30
 b(the)h(\014rst)f(`digit')i(t)m(yp)s(ed)f(is)g(a)g(min)m(us)f(sign)h
 (\(`)p Fn(-)p Fo('\),)h(then)f(the)g(sign)f(of)h(the)g(argumen)m(t)150
-3194 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m
+4325 y(will)39 b(b)s(e)e(negativ)m(e.)66 b(Once)38 b(y)m(ou)h(ha)m(v)m
 (e)g(t)m(yp)s(ed)f(one)h(meta)g(digit)g(to)f(get)i(the)e(argumen)m(t)h
-(started,)i(y)m(ou)150 3304 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f
+(started,)i(y)m(ou)150 4435 y(can)29 b(t)m(yp)s(e)g(the)g(remainder)f
 (of)h(the)g(digits,)h(and)f(then)f(the)h(command.)40
 b(F)-8 b(or)30 b(example,)g(to)f(giv)m(e)i(the)e Fg(C-d)150
-3414 y Fo(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f
+4544 y Fo(command)37 b(an)g(argumen)m(t)h(of)g(10,)i(y)m(ou)e(could)f
 (t)m(yp)s(e)h(`)p Fn(M-1)29 b(0)h(C-d)p Fo(',)39 b(whic)m(h)e(will)h
-(delete)h(the)e(next)h(ten)150 3523 y(c)m(haracters)32
-b(on)e(the)h(input)e(line.)150 3720 y Fd(1.2.5)63 b(Searc)m(hing)40
-b(for)i(Commands)g(in)f(the)g(History)150 3867 y Fo(Readline)22
+(delete)h(the)e(next)h(ten)150 4654 y(c)m(haracters)32
+b(on)e(the)h(input)e(line.)150 4844 y Fd(1.2.5)63 b(Searc)m(hing)40
+b(for)i(Commands)g(in)f(the)g(History)150 4991 y Fo(Readline)22
 b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)f(the)g
 (command)h(history)f(for)g(lines)g(con)m(taining)150
-3977 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30
-b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Fe(incremen)m(tal)35
-b Fo(and)30 b Fe(non-incremen)m(tal)p Fo(.)275 4111 y(Incremen)m(tal)c
+5101 y(a)31 b(sp)s(eci\014ed)e(string.)41 b(There)30
+b(are)h(t)m(w)m(o)g(searc)m(h)g(mo)s(des:)41 b Ff(incremen)m(tal)35
+b Fo(and)30 b Ff(non-incremen)m(tal)p Fo(.)275 5230 y(Incremen)m(tal)c
 (searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e
 (t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150
-4220 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
+5340 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
 (ed,)g(Readline)g(displa)m(ys)g(the)f(next)h(en)m(try)g(from)e(the)i
-(history)150 4330 y(matc)m(hing)25 b(the)f(string)g(t)m(yp)s(ed)g(so)g
-(far.)39 b(An)23 b(incremen)m(tal)j(searc)m(h)e(requires)g(only)g(as)g
-(man)m(y)g(c)m(haracters)i(as)150 4439 y(needed)i(to)i(\014nd)d(the)i
-(desired)f(history)h(en)m(try)-8 b(.)41 b(T)-8 b(o)29
-b(searc)m(h)h(bac)m(kw)m(ard)f(in)f(the)h(history)g(for)f(a)i
-(particular)150 4549 y(string,)g(t)m(yp)s(e)f Fg(C-r)p
-Fo(.)40 b(T)m(yping)29 b Fg(C-s)g Fo(searc)m(hes)h(forw)m(ard)f
-(through)g(the)g(history)-8 b(.)41 b(The)29 b(c)m(haracters)i(presen)m
-(t)150 4658 y(in)38 b(the)g(v)-5 b(alue)38 b(of)g(the)g
-Fn(isearch-terminators)33 b Fo(v)-5 b(ariable)39 b(are)f(used)f(to)i
-(terminate)g(an)f(incremen)m(tal)150 4768 y(searc)m(h.)71
-b(If)40 b(that)h(v)-5 b(ariable)41 b(has)f(not)h(b)s(een)e(assigned)i
-(a)f(v)-5 b(alue,)44 b(the)c Fn(ESC)g Fo(and)f Fg(C-J)h
-Fo(c)m(haracters)i(will)150 4878 y(terminate)h(an)g(incremen)m(tal)g
-(searc)m(h.)78 b Fg(C-g)41 b Fo(will)i(ab)s(ort)f(an)g(incremen)m(tal)i
-(searc)m(h)f(and)f(restore)h(the)150 4987 y(original)30
-b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f
-(history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150
-5097 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 5230
-y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h
-(history)g(list,)h(t)m(yp)s(e)g Fg(C-r)e Fo(or)h Fg(C-s)f
-Fo(as)h(appropriate.)43 b(This)150 5340 y(will)26 b(searc)m(h)h(bac)m
-(kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g
-(en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)p
-eop end
+(history)p eop end
 %%Page: 4 7
 TeXDict begin 4 6 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(t)m(yp)s(ed)37
-b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i(sequence)f(b)s(ound)e(to)
-i(a)g(Readline)h(command)e(will)h(terminate)h(the)150
-408 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39
-b(F)-8 b(or)26 b(instance,)h(a)f Fn(RET)f Fo(will)g(terminate)i(the)f
-(searc)m(h)g(and)e(accept)150 518 y(the)30 b(line,)g(thereb)m(y)f
-(executing)i(the)e(command)g(from)g(the)h(history)f(list.)41
-b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g
-(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e(the)i(curren)m(t)f
-(line,)h(and)f(b)s(egin)g(editing.)275 777 y(Readline)35
-b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g(searc)m(h)f(string.)
-54 b(If)34 b(t)m(w)m(o)j Fg(C-r)p Fo(s)c(are)i(t)m(yp)s(ed)g(without)
-150 886 y(an)m(y)i(in)m(terv)m(ening)g(c)m(haracters)h(de\014ning)e(a)h
-(new)f(searc)m(h)h(string,)h(an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i
-(string)g(is)150 996 y(used.)275 1145 y(Non-incremen)m(tal)48
+b(Command)29 b(Line)i(Editing)2153 b(4)150 299 y(matc)m(hing)33
+b(the)g(string)f(t)m(yp)s(ed)g(so)g(far.)46 b(An)32 b(incremen)m(tal)h
+(searc)m(h)g(requires)f(only)g(as)g(man)m(y)g(c)m(haracters)150
+408 y(as)i(needed)f(to)h(\014nd)e(the)h(desired)g(history)g(en)m(try)-8
+b(.)51 b(When)33 b(using)g(emacs)h(editing)g(mo)s(de,)g(t)m(yp)s(e)g
+Fg(C-r)e Fo(to)150 518 y(searc)m(h)26 b(bac)m(kw)m(ard)f(in)g(the)g
+(history)g(for)g(a)g(particular)g(string.)39 b(T)m(yping)25
+b Fg(C-s)f Fo(searc)m(hes)i(forw)m(ard)f(through)150
+628 y(the)32 b(history)-8 b(.)44 b(The)31 b(c)m(haracters)i(presen)m(t)
+f(in)f(the)h(v)-5 b(alue)32 b(of)f(the)h Fn(isearch-terminators)26
+b Fo(v)-5 b(ariable)33 b(are)150 737 y(used)26 b(to)h(terminate)h(an)e
+(incremen)m(tal)i(searc)m(h.)41 b(If)26 b(that)h(v)-5
+b(ariable)27 b(has)g(not)g(b)s(een)f(assigned)h(a)g(v)-5
+b(alue,)28 b(the)150 847 y Fn(ESC)g Fo(and)g Fg(C-j)f
+Fo(c)m(haracters)j(terminate)g(an)e(incremen)m(tal)i(searc)m(h.)41
+b Fg(C-g)28 b Fo(ab)s(orts)g(an)g(incremen)m(tal)i(searc)m(h)150
+956 y(and)g(restores)h(the)g(original)h(line.)42 b(When)30
+b(the)h(searc)m(h)h(is)e(terminated,)i(the)f(history)f(en)m(try)h(con)m
+(taining)150 1066 y(the)g(searc)m(h)g(string)f(b)s(ecomes)h(the)f
+(curren)m(t)g(line.)275 1216 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m
+(hing)g(en)m(tries)g(in)e(the)h(history)g(list,)h(t)m(yp)s(e)g
+Fg(C-r)e Fo(or)h Fg(C-s)f Fo(as)h(appropriate.)43 b(This)150
+1326 y(searc)m(hes)34 b(bac)m(kw)m(ard)f(or)f(forw)m(ard)g(in)h(the)g
+(history)f(for)h(the)f(next)h(en)m(try)g(matc)m(hing)h(the)f(searc)m(h)
+g(string)150 1435 y(t)m(yp)s(ed)28 b(so)h(far.)40 b(An)m(y)29
+b(other)g(k)m(ey)g(sequence)g(b)s(ound)e(to)i(a)g(Readline)h(command)e
+(terminates)h(the)g(searc)m(h)150 1545 y(and)38 b(executes)h(that)g
+(command.)64 b(F)-8 b(or)39 b(instance,)i(a)d Fn(RET)f
+Fo(terminates)j(the)e(searc)m(h)h(and)e(accepts)j(the)150
+1655 y(line,)k(thereb)m(y)c(executing)i(the)e(command)h(from)f(the)g
+(history)h(list.)71 b(A)41 b(mo)m(v)m(emen)m(t)h(command)f(will)150
+1764 y(terminate)31 b(the)g(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g
+(found)e(the)i(curren)m(t)f(line,)h(and)f(b)s(egin)g(editing.)275
+1915 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g
+(searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j Fg(C-r)p
+Fo(s)c(are)i(t)m(yp)s(ed)g(without)150 2024 y(an)m(y)42
+b(in)m(terv)m(ening)i(c)m(haracters)f(de\014ning)f(a)g(new)g(searc)m(h)
+g(string,)k(Readline)c(uses)g(an)m(y)h(remem)m(b)s(ered)150
+2134 y(searc)m(h)31 b(string.)275 2284 y(Non-incremen)m(tal)48
 b(searc)m(hes)g(read)e(the)h(en)m(tire)h(searc)m(h)f(string)g(b)s
-(efore)f(starting)h(to)h(searc)m(h)f(for)150 1255 y(matc)m(hing)d
-(history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f
-(t)m(yp)s(ed)g(b)m(y)g(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150
-1364 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150
-1627 y Fm(1.3)68 b(Readline)47 b(Init)e(File)150 1786
+(efore)f(starting)h(to)h(searc)m(h)f(for)150 2394 y(matc)m(hing)39
+b(history)f(en)m(tries.)64 b(The)38 b(searc)m(h)g(string)g(ma)m(y)h(b)s
+(e)e(t)m(yp)s(ed)g(b)m(y)h(the)g(user)g(or)g(b)s(e)f(part)h(of)g(the)
+150 2503 y(con)m(ten)m(ts)32 b(of)f(the)f(curren)m(t)g(line.)150
+2768 y Fm(1.3)68 b(Readline)47 b(Init)e(File)150 2927
 y Fo(Although)f(the)g(Readline)g(library)f(comes)i(with)e(a)h(set)h(of)
 f(Emacs-lik)m(e)h(k)m(eybindings)f(installed)g(b)m(y)150
-1896 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)
+3037 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)
 m(t)f(set)g(of)g(k)m(eybindings.)38 b(An)m(y)25 b(user)f(can)h
-(customize)h(programs)150 2005 y(that)39 b(use)g(Readline)g(b)m(y)f
-(putting)h(commands)f(in)g(an)h Fe(inputrc)k Fo(\014le,)e(con)m(v)m(en)
-m(tionally)h(in)c(their)h(home)150 2115 y(directory)-8
+(customize)h(programs)150 3146 y(that)39 b(use)g(Readline)g(b)m(y)f
+(putting)h(commands)f(in)g(an)h Ff(inputrc)k Fo(\014le,)e(con)m(v)m(en)
+m(tionally)h(in)c(their)h(home)150 3256 y(directory)-8
 b(.)39 b(The)23 b(name)h(of)f(this)h(\014le)f(is)g(tak)m(en)i(from)e
 (the)g(v)-5 b(alue)24 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5
-b(ariable)25 b Fn(INPUTRC)p Fo(.)150 2224 y(If)30 b(that)g(v)-5
+b(ariable)25 b Fn(INPUTRC)p Fo(.)150 3365 y(If)30 b(that)g(v)-5
 b(ariable)31 b(is)f(unset,)g(the)h(default)f(is)g Fn(~/.inputrc)p
 Fo(.)38 b(If)30 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h
-(b)s(e)150 2334 y(read,)g(the)f(ultimate)i(default)e(is)h
-Fn(/etc/inputrc)p Fo(.)275 2483 y(When)e(a)h(program)f(whic)m(h)h(uses)
-f(the)h(Readline)g(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h
-(read,)g(and)f(the)150 2593 y(k)m(ey)i(bindings)e(are)i(set.)275
-2742 y(In)26 b(addition,)i(the)f Fn(C-x)i(C-r)d Fo(command)h(re-reads)g
+(b)s(e)150 3475 y(read,)g(Readline)g(lo)s(oks)f(for)g
+Fn(/etc/inputrc)p Fo(.)275 3625 y(When)36 b(a)h(program)g(that)g(uses)f
+(the)h(Readline)g(library)g(starts)g(up,)g(Readline)h(reads)e(the)h
+(init)g(\014le)150 3735 y(and)30 b(sets)h(an)m(y)f(v)-5
+b(ariables)31 b(and)f(k)m(ey)h(bindings)e(it)i(con)m(tains.)275
+3885 y(In)26 b(addition,)i(the)f Fn(C-x)i(C-r)d Fo(command)h(re-reads)g
 (this)f(init)h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m
-(hanges)150 2851 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g
-(it.)150 3065 y Fd(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150
-3212 y Fo(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w)
+(hanges)150 3995 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g
+(it.)150 4210 y Fd(1.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150
+4357 y Fo(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w)
 m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41
-b(lines)h(are)150 3322 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
+b(lines)h(are)150 4466 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
 (a)g(`)p Fn(#)p Fo(')g(are)h(commen)m(ts.)73 b(Lines)41
 b(b)s(eginning)f(with)g(a)i(`)p Fn($)p Fo(')f(indicate)150
-3431 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h
-([Conditional)f(Init)f(Constructs],)j(page)f(13\).)74
-b(Other)150 3541 y(lines)31 b(denote)g(v)-5 b(ariable)31
-b(settings)g(and)f(k)m(ey)h(bindings.)150 3722 y(V)-8
-b(ariable)32 b(Settings)630 3832 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
+4576 y(conditional)i(constructs)e(\(see)i(Section)f(1.3.2)h
+([Conditional)f(Init)f(Constructs],)j(page)f(14\).)74
+b(Other)150 4686 y(lines)31 b(denote)g(v)-5 b(ariable)31
+b(settings)g(and)f(k)m(ey)h(bindings.)150 4869 y(V)-8
+b(ariable)32 b(Settings)630 4978 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
 (the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h
-(the)g(v)-5 b(alues)41 b(of)630 3941 y(v)-5 b(ariables)34
+(the)g(v)-5 b(alues)41 b(of)630 5088 y(v)-5 b(ariables)34
 b(in)f(Readline)i(using)e(the)g Fn(set)g Fo(command)g(within)g(the)h
-(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 4051 y(is)d(simple:)870
-4193 y Fn(set)47 b Fg(variable)e(value)630 4335 y Fo(Here,)29
+(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5198 y(is)d(simple:)870
+5340 y Fn(set)47 b Fg(variable)e(value)p eop end
+%%Page: 5 8
+TeXDict begin 5 7 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y(Here,)29
 b(for)e(example,)h(is)g(ho)m(w)f(to)h(c)m(hange)g(from)f(the)g(default)
-h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 4444 y(use)k
-Fn(vi)g Fo(line)h(editing)g(commands:)870 4586 y Fn(set)47
-b(editing-mode)d(vi)630 4728 y Fo(V)-8 b(ariable)36 b(names)f(and)g(v)
--5 b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f
-(regard)630 4837 y(to)c(case.)42 b(Unrecognized)31 b(v)-5
-b(ariable)31 b(names)g(are)f(ignored.)630 4979 y(Bo)s(olean)c(v)-5
+h(Emacs-lik)m(e)h(k)m(ey)f(binding)e(to)630 408 y(use)k
+Fn(vi)g Fo(line)h(editing)g(commands:)870 545 y Fn(set)47
+b(editing-mode)d(vi)630 682 y Fo(V)-8 b(ariable)36 b(names)f(and)g(v)-5
+b(alues,)36 b(where)f(appropriate,)h(are)g(recognized)g(without)f
+(regard)630 792 y(to)c(case.)42 b(Unrecognized)31 b(v)-5
+b(ariable)31 b(names)g(are)f(ignored.)630 929 y(Bo)s(olean)c(v)-5
 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f(set)i(to)g(on)f(or)g
 (o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)g(v)-5
-b(alue)26 b(is)630 5089 y(n)m(ull)e(or)g(empt)m(y)-8
-b(,)27 b Fe(on)d Fo(\(case-insensitiv)m(e\),)29 b(or)24
+b(alue)26 b(is)630 1039 y(n)m(ull)e(or)g(empt)m(y)-8
+b(,)27 b Ff(on)d Fo(\(case-insensitiv)m(e\),)29 b(or)24
 b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v)
--5 b(ariable)630 5198 y(b)s(eing)30 b(set)h(to)g(o\013.)630
-5340 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m
-(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)p
-eop end
-%%Page: 5 8
-TeXDict begin 5 7 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(5)630 299 y Fn
-(active-region-start-colo)o(r)1110 408 y Fo(A)27 b(string)f(v)-5
-b(ariable)27 b(that)g(con)m(trols)h(the)f(text)g(color)h(and)e(bac)m
-(kground)g(when)1110 518 y(displa)m(ying)50 b(the)f(text)h(in)f(the)h
-(activ)m(e)h(region)f(\(see)g(the)g(description)f(of)1110
-628 y Fn(enable-active-region)25 b Fo(b)s(elo)m(w\).)43
-b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i(up)d(an)m(y)1110
-737 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f(on)g(the)f(displa)
-m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only)1110
-847 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61 b(It)36
-b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110
-956 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63
+-5 b(ariable)630 1148 y(b)s(eing)30 b(set)h(to)g(o\013.)630
+1285 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g(is)g(c)m
+(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5 b(ariables.)630
+1450 y Fn(active-region-start-colo)o(r)1110 1559 y Fo(A)27
+b(string)f(v)-5 b(ariable)27 b(that)g(con)m(trols)h(the)f(text)g(color)
+h(and)e(bac)m(kground)g(when)1110 1669 y(displa)m(ying)50
+b(the)f(text)h(in)f(the)h(activ)m(e)h(region)f(\(see)g(the)g
+(description)f(of)1110 1778 y Fn(enable-active-region)25
+b Fo(b)s(elo)m(w\).)43 b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i
+(up)d(an)m(y)1110 1888 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f
+(on)g(the)f(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only)
+1110 1998 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61
+b(It)36 b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110
+2107 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63
 b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110
-1066 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h
+2217 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h
 (terminal)g(t)m(yp)s(e)g(c)m(hanges.)41 b(The)28 b(default)1110
-1176 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i
+2326 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i
 (terminal)f(in)g(standout)g(mo)s(de,)g(as)h(ob-)1110
-1285 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68
-b(A)40 b(sample)f(v)-5 b(alue)1110 1395 y(migh)m(t)31
-b(b)s(e)f(`)p Fn(\\e[01;33m)p Fo('.)630 1570 y Fn
-(active-region-end-color)1110 1680 y Fo(A)48 b(string)g(v)-5
-b(ariable)48 b(that)h Fn(")p Fo(undo)s(es)p Fn(")d Fo(the)i(e\013ects)h
-(of)f Fn(active-region-)1110 1789 y(start-color)36 b
-Fo(and)i(restores)h Fn(")p Fo(normal)p Fn(")f Fo(terminal)h(displa)m(y)
-g(app)s(earance)1110 1899 y(after)26 b(displa)m(ying)h(text)f(in)g(the)
-g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e)
-1110 2008 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d
-(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110
-2118 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41
-b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 2228
+2436 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68
+b(A)40 b(sample)f(v)-5 b(alue)1110 2545 y(migh)m(t)31
+b(b)s(e)f(`)p Fn(\\e[01;33m)p Fo('.)630 2710 y Fn
+(active-region-end-color)1110 2819 y Fo(A)48 b(string)h(v)-5
+b(ariable)49 b(that)g(\\undo)s(es")f(the)h(e\013ects)g(of)g
+Fn(active-region-)1110 2929 y(start-color)36 b Fo(and)j(restores)h
+(\\normal")g(terminal)g(displa)m(y)g(app)s(earance)1110
+3039 y(after)26 b(displa)m(ying)h(text)f(in)g(the)g(activ)m(e)i
+(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e)1110
+3148 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d(on)h
+(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110
+3258 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41
+b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 3367
 y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i
 (region.)58 b(This)34 b(v)-5 b(ariable)37 b(is)f(re-)1110
-2337 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h
-(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 2447
+3477 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h
+(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 3587
 y(default)38 b(v)-5 b(alue)39 b(is)f(the)h(string)f(that)h(restores)f
-(the)h(terminal)f(from)g(stand-)1110 2556 y(out)30 b(mo)s(de,)f(as)g
+(the)h(terminal)f(from)g(stand-)1110 3696 y(out)30 b(mo)s(de,)f(as)g
 (obtained)h(from)f(the)g(terminal's)h(terminfo)f(description.)41
-b(A)1110 2666 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p
-Fn(\\e[0m)p Fo('.)630 2841 y Fn(bell-style)1110 2951
+b(A)1110 3806 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p
+Fn(\\e[0m)p Fo('.)630 3970 y Fn(bell-style)1110 4080
 y Fo(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m
-(ts)f(to)h(ring)e(the)h(termi-)1110 3061 y(nal)37 b(b)s(ell.)61
+(ts)f(to)h(ring)e(the)h(termi-)1110 4189 y(nal)37 b(b)s(ell.)61
 b(If)37 b(set)h(to)g(`)p Fn(none)p Fo(',)g(Readline)g(nev)m(er)g(rings)
-e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 3170 y(`)p
+e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 4299 y(`)p
 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
-3280 y(`)p Fn(audible)p Fo(')j(\(the)i(default\),)i(Readline)e
-(attempts)g(to)h(ring)e(the)g(terminal's)1110 3389 y(b)s(ell.)630
-3565 y Fn(bind-tty-special-chars)1110 3674 y Fo(If)e(set)g(to)h(`)p
+4408 y(`)p Fn(audible)p Fo(')j(\(the)i(default\),)i(Readline)e
+(attempts)g(to)h(ring)e(the)g(terminal's)1110 4518 y(b)s(ell.)630
+4682 y Fn(bind-tty-special-chars)1110 4792 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 3784 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 3893 y(Readline)h(equiv)-5 b(alen)m(ts.)630
-4069 y Fn(blink-matching-paren)1110 4178 y Fo(If)36 b(set)g(to)h(`)p
+(the)i(con)m(trol)1110 4902 y(c)m(haracters)28 b(that)g(are)f(treated)g
+(sp)s(ecially)h(b)m(y)f(the)g(k)m(ernel's)g(terminal)g(driv)m(er)1110
+5011 y(to)33 b(their)f(Readline)h(equiv)-5 b(alen)m(ts.)47
+b(These)32 b(o)m(v)m(erride)h(the)f(default)g(Readline)1110
+5121 y(bindings)h(describ)s(ed)g(here.)51 b(T)m(yp)s(e)34
+b(`)p Fn(stty)29 b(-a)p Fo(')34 b(at)h(a)f(Bash)g(prompt)g(to)g(see)
+1110 5230 y(y)m(our)h(curren)m(t)g(terminal)h(settings,)i(including)d
+(the)h(sp)s(ecial)f(con)m(trol)i(c)m(har-)1110 5340 y(acters)31
+b(\(usually)g Fn(cchars)p Fo(\).)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
+(blink-matching-paren)1110 408 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 4288 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
-4398 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 4573
-y Fn(colored-completion-prefi)o(x)1110 4682 y Fo(If)f(set)h(to)g(`)p
+(the)f(cursor)e(to)i(an)1110 518 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
+628 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630 792 y
+Fn(colored-completion-prefi)o(x)1110 902 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 4792 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
+g(the)f(com-)1110 1011 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
-4902 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5
-b(alue)26 b(of)g(the)f Fn(LS_COLORS)e Fo(en-)1110 5011
+1121 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5
+b(alue)26 b(of)g(the)f Fn(LS_COLORS)e Fo(en-)1110 1230
 y(vironmen)m(t)34 b(v)-5 b(ariable.)50 b(If)33 b(there)h(is)g(a)f
 (color)i(de\014nition)e(in)g Fn(LS_COLORS)e Fo(for)1110
-5121 y(the)22 b(custom)g(su\016x)f(`)p Fn(readline-colored-complet)o
-(ion)o(-pre)o(fix)p Fo(',)c(Read-)1110 5230 y(line)24
+1340 y(the)22 b(custom)g(su\016x)f(`)p Fn(readline-colored-complet)o
+(ion)o(-pre)o(fix)p Fo(',)c(Read-)1110 1450 y(line)24
 b(uses)e(this)i(color)g(for)f(the)h(common)f(pre\014x)f(instead)i(of)f
-(its)h(default.)38 b(The)1110 5340 y(default)31 b(is)f(`)p
-Fn(off)p Fo('.)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(colored-stats)1110
-408 y Fo(If)26 b(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
-518 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+(its)h(default.)38 b(The)1110 1559 y(default)31 b(is)f(`)p
+Fn(off)p Fo('.)630 1724 y Fn(colored-stats)1110 1833
+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
+1943 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
-628 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Fn(LS_COLORS)d
+2052 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
-737 y(is)30 b(`)p Fn(off)p Fo('.)630 925 y Fn(comment-begin)1110
-1035 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 1144 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 1332 y Fn(completion-display-width)
-1110 1442 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 1551
-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
-1661 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
-1771 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
-1958 y Fn(completion-ignore-case)1110 2068 y Fo(If)d(set)h(to)g(`)p
+2162 y(is)30 b(`)p Fn(off)p Fo('.)630 2326 y Fn(comment-begin)1110
+2436 y Fo(The)72 b(string)g(to)h(insert)f(at)i(the)e(b)s(eginning)g(of)
+g(the)h(line)g(b)m(y)f(the)1110 2545 y Fn(insert-comment)26
+b Fo(command.)41 b(The)30 b(default)g(v)-5 b(alue)31
+b(is)g Fn("#")p Fo(.)630 2710 y Fn(completion-display-width)1110
+2819 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 2929 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 3039
+y(0)37 b(or)f(greater)i(than)e(the)g(terminal)h(screen)g(width.)58
+b(A)36 b(v)-5 b(alue)37 b(of)g(0)g(causes)1110 3148 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 3313
+y Fn(completion-ignore-case)1110 3422 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 2178 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
+(and)e(completion)1110 3532 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 2365 y Fn(completion-map-case)1110 2475 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 2585 y(h)m(yphens)29
+Fo('.)630 3696 y Fn(completion-map-case)1110 3806 y Fo(If)22
+b(set)g(to)h(`)p Fn(on)p Fo(',)h(and)e Ff(completion-ignore-case)31
+b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 3915 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
-2694 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
-(completion.)85 b(The)44 b(default)1110 2804 y(v)-5 b(alue)31
-b(is)f(`)p Fn(off)p Fo('.)630 2992 y Fn(completion-prefix-displa)o
-(y-le)o(ngth)1110 3101 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
-3211 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 3320
-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 3430
-y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)
-f(completions.)630 3618 y Fn(completion-query-items)1110
-3727 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 3837 y(is)43
-b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b)
-s(e)g(displa)m(y)m(ed.)77 b(If)1110 3947 y(the)29 b(n)m(um)m(b)s(er)f
-(of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g
-(to)h(this)1110 4056 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g
-(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110
-4166 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45
-b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110
-4275 y(to)43 b(an)e(in)m(teger)j(v)-5 b(alue)42 b(greater)h(than)f(or)g
-(equal)g(to)h(zero.)76 b(A)42 b(zero)g(v)-5 b(alue)1110
-4385 y(means)40 b(Readline)h(should)f(nev)m(er)g(ask;)46
-b(negativ)m(e)d(v)-5 b(alues)41 b(are)f(treated)i(as)1110
-4495 y(zero.)g(The)29 b(default)i(limit)g(is)g Fn(100)p
-Fo(.)630 4682 y Fn(convert-meta)1110 4792 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
-4902 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
-5011 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 5121
-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 5230 y(that)21 b(con)m(tains)h(eigh)m(t-bit)h(c)m(haracters.)
-39 b(This)20 b(v)-5 b(ariable)21 b(is)g(dep)s(enden)m(t)f(on)h(the)1110
-5340 y Fn(LC_CTYPE)26 b Fo(lo)s(cale)31 b(category)-8
-b(,)31 b(and)d(ma)m(y)h(c)m(hange)h(if)e(the)h(lo)s(cale)h(is)f(c)m
-(hanged.)p eop end
+4025 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 4134 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 4299 y Fn(completion-prefix-displa)o
+(y-le)o(ngth)1110 4408 y Fo(The)24 b(maxim)m(um)g(length)h(in)f(c)m
+(haracters)i(of)f(the)f(common)h(pre\014x)e(of)i(a)g(list)g(of)1110
+4518 y(p)s(ossible)i(completions)h(that)g(is)g(displa)m(y)m(ed)g
+(without)f(mo)s(di\014cation.)40 b(When)1110 4628 y(set)26
+b(to)h(a)f(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(Readline)e
+(replaces)h(common)f(pre\014xes)1110 4737 y(longer)46
+b(than)f(this)h(v)-5 b(alue)46 b(with)f(an)h(ellipsis)g(when)e(displa)m
+(ying)i(p)s(ossible)1110 4847 y(completions.)41 b(If)29
+b(a)g(completion)i(b)s(egins)d(with)h(a)g(p)s(erio)s(d,)g(and)f
+(Readline)i(is)1110 4956 y(completing)22 b(\014lenames,)h(it)e(uses)g
+(three)g(underscores)e(instead)j(of)e(an)h(ellipsis.)630
+5121 y Fn(completion-query-items)1110 5230 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 5340 y(is)43 b(ask)m(ed)g(whether)f(the)g
+(list)h(of)g(p)s(ossibilities)g(should)f(b)s(e)g(displa)m(y)m(ed.)77
+b(If)p eop end
 %%Page: 7 10
 TeXDict begin 7 9 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2153 b(7)630 299 y Fn(disable-completion)
-1110 408 y Fo(If)36 b(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
-518 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
-628 y(to)31 b Fn(self-insert)p Fo(.)38 b(The)30 b(default)g(is)h(`)p
-Fn(off)p Fo('.)630 774 y Fn(echo-control-characters)1110
-883 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 993
-y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m(haracter)i(corresp)s(onding)d
-(to)i(a)f(signal)h(generated)1110 1103 y(from)h(the)g(k)m(eyb)s(oard.)
-41 b(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 1249
-y Fn(editing-mode)1110 1358 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 1468 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 1577 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
-1687 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 1833 y Fn(emacs-mode-string)1110 1943
-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
-2052 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 2162 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 2271 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 2381 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 2491
-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 2600 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 2710 y(default)31 b(is)f(`)p Fn(@)p Fo('.)630
-2856 y Fn(enable-active-region)1110 2966 y Fo(The)46
-b Fe(p)s(oin)m(t)j Fo(is)e(the)g(curren)m(t)f(cursor)g(p)s(osition,)52
-b(and)46 b Fe(mark)52 b Fo(refers)46 b(to)i(a)1110 3075
-y(sa)m(v)m(ed)37 b(cursor)f(p)s(osition)g(\(see)i(Section)f(1.4.1)h
-([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 3185 y(page)25
-b(17\).)40 b(The)24 b(text)h(b)s(et)m(w)m(een)g(the)g(p)s(oin)m(t)f
-(and)g(mark)g(is)g(referred)g(to)h(as)g(the)1110 3294
-y Fe(region)p Fo(.)62 b(When)37 b(this)g(v)-5 b(ariable)38
-b(is)f(set)h(to)g(`)p Fn(On)p Fo(',)h(Readline)f(allo)m(ws)g(certain)
-1110 3404 y(commands)f(to)h(designate)h(the)e(region)h(as)g
-Fe(activ)m(e)p Fo(.)64 b(When)37 b(the)h(region)g(is)1110
-3513 y(activ)m(e,)43 b(Readline)38 b(highligh)m(ts)h(the)g(text)g(in)e
-(the)i(region)g(using)e(the)h(v)-5 b(alue)1110 3623 y(of)35
-b(the)g Fn(active-region-start-color)p Fo(,)30 b(whic)m(h)35
-b(defaults)g(to)h(the)f(string)1110 3733 y(that)23 b(enables)f(the)g
-(terminal's)h(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d
-(sho)m(ws)1110 3842 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m
-(eted-paste)i(and)e(an)m(y)g(matc)m(hing)h(text)g(found)1110
-3952 y(b)m(y)f(incremen)m(tal)i(and)e(non-incremen)m(tal)i(history)e
-(searc)m(hes.)48 b(The)32 b(default)1110 4061 y(is)e(`)p
-Fn(On)p Fo('.)630 4208 y Fn(enable-bracketed-paste)1110
-4317 y Fo(When)36 b(set)h(to)g(`)p Fn(On)p Fo(',)h(Readline)f
-(con\014gures)f(the)h(terminal)f(to)i(insert)e(eac)m(h)1110
-4427 y(paste)27 b(in)m(to)g(the)f(editing)h(bu\013er)e(as)h(a)h(single)
-g(string)f(of)g(c)m(haracters,)j(instead)1110 4536 y(of)d(treating)i
-(eac)m(h)g(c)m(haracter)f(as)g(if)f(it)h(had)f(b)s(een)f(read)i(from)e
-(the)i(k)m(eyb)s(oard.)1110 4646 y(This)36 b(is)h(called)h(putting)f
-(the)h(terminal)f(in)m(to)h Fe(brac)m(k)m(eted)h(paste)e(mo)s(de)5
-b Fo(;)40 b(it)1110 4756 y(prev)m(en)m(ts)30 b(Readline)h(from)e
-(executing)i(an)m(y)f(editing)h(commands)e(b)s(ound)f(to)1110
-4865 y(k)m(ey)j(sequences)g(app)s(earing)f(in)g(the)g(pasted)h(text.)42
-b(The)29 b(default)i(is)f(`)p Fn(On)p Fo('.)630 5011
-y Fn(enable-keypad)1110 5121 y Fo(When)23 b(set)h(to)g(`)p
-Fn(on)p Fo(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f
-(application)i(k)m(eypad)1110 5230 y(when)h(it)h(is)f(called.)41
-b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m
-(eys.)1110 5340 y(The)j(default)g(is)h(`)p Fn(off)p Fo('.)p
+b(Command)29 b(Line)i(Editing)2153 b(7)1110 299 y(the)47
+b(n)m(um)m(b)s(er)e(of)i(p)s(ossible)f(completions)i(is)e(greater)i
+(than)e(or)h(equal)g(to)1110 408 y(this)38 b(v)-5 b(alue,)41
+b(Readline)e(asks)f(whether)f(or)h(not)h(the)f(user)f(wishes)h(to)h
+(view)1110 518 y(them;)33 b(otherwise,)g(Readline)g(simply)f(lists)h
+(the)f(completions.)47 b(This)31 b(v)-5 b(ari-)1110 628
+y(able)32 b(m)m(ust)f(b)s(e)g(set)h(to)g(an)g(in)m(teger)g(v)-5
+b(alue)32 b(greater)h(than)e(or)h(equal)g(to)g(zero.)1110
+737 y(A)e(zero)h(v)-5 b(alue)30 b(means)g(Readline)g(should)f(nev)m(er)
+h(ask;)g(negativ)m(e)i(v)-5 b(alues)31 b(are)1110 847
+y(treated)g(as)g(zero.)42 b(The)29 b(default)i(limit)g(is)g
+Fn(100)p Fo(.)630 1011 y Fn(convert-meta)1110 1121 y
+Fo(If)36 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(con)m(v)m(erts)h
+(c)m(haracters)g(it)f(reads)f(that)h(ha)m(v)m(e)h(the)1110
+1230 y(eigh)m(th)e(bit)f(set)h(to)g(an)f Fh(asci)r(i)g
+Fo(k)m(ey)h(sequence)f(b)m(y)g(clearing)i(the)e(eigh)m(th)h(bit)1110
+1340 y(and)25 b(pre\014xing)g(an)h Fn(ESC)f Fo(c)m(haracter,)k(con)m(v)
+m(erting)e(them)f(to)h(a)f(meta-pre\014xed)1110 1450
+y(k)m(ey)f(sequence.)39 b(The)23 b(default)h(v)-5 b(alue)25
+b(is)f(`)p Fn(on)p Fo(',)h(but)e(Readline)i(sets)f(it)h(to)f(`)p
+Fn(off)p Fo(')1110 1559 y(if)h(the)g(lo)s(cale)i(con)m(tains)f(c)m
+(haracters)h(whose)e(enco)s(dings)g(ma)m(y)h(include)e(b)m(ytes)1110
+1669 y(with)g(the)h(eigh)m(th)g(bit)f(set.)40 b(This)23
+b(v)-5 b(ariable)25 b(is)g(dep)s(enden)m(t)e(on)i(the)f
+Fn(LC_CTYPE)1110 1778 y Fo(lo)s(cale)i(category)-8 b(,)28
+b(and)23 b(ma)m(y)i(c)m(hange)g(if)f(the)g(lo)s(cale)h(c)m(hanges.)40
+b(This)23 b(v)-5 b(ariable)1110 1888 y(also)23 b(a\013ects)h(k)m(ey)g
+(bindings;)g(see)f(the)f(description)h(of)g Fn(force-meta-prefix)1110
+1998 y Fo(b)s(elo)m(w.)630 2162 y Fn(disable-completion)1110
+2271 y Fo(If)k(set)h(to)g(`)p Fn(On)p Fo(',)g(Readline)g(inhibits)f(w)m
+(ord)g(completion.)41 b(Completion)28 b(c)m(har-)1110
+2381 y(acters)44 b(are)f(inserted)g(in)m(to)h(the)f(line)g(as)g(if)g
+(they)g(had)g(b)s(een)f(mapp)s(ed)f(to)1110 2491 y Fn(self-insert)p
+Fo(.)d(The)30 b(default)g(is)g(`)p Fn(off)p Fo('.)630
+2655 y Fn(echo-control-characters)1110 2765 y Fo(When)g(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 2874 y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m
+(haracter)i(corresp)s(onding)d(to)i(a)f(signal)h(generated)1110
+2984 y(from)h(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)23 b Fn(editing-mode)d Fo(v)-5 b(ariable)24 b(con)m(trols)g(the)
+g(default)f(set)h(of)g(k)m(ey)g(bindings.)1110 3367 y(By)37
+b(default,)i(Readline)f(starts)g(up)d(in)i(emacs)h(editing)g(mo)s(de,)g
+(where)f(the)1110 3477 y(k)m(eystrok)m(es)d(are)g(most)f(similar)g(to)g
+(Emacs.)48 b(This)32 b(v)-5 b(ariable)34 b(can)f(b)s(e)f(set)h(to)1110
+3587 y(either)e(`)p Fn(emacs)p Fo(')e(or)i(`)p Fn(vi)p
+Fo('.)630 3751 y Fn(emacs-mode-string)1110 3861 y Fo(If)i(the)h
+Ff(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 3970 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 4080 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 4189 y(ing,)j(so)d(the)h(standard)f(set)h(of)g(meta-)h(and)
+e(con)m(trol-)i(pre\014xes)e(and)g(bac)m(kslash)1110
+4299 y(escap)s(e)32 b(sequences)f(is)h(a)m(v)-5 b(ailable.)46
+b(The)31 b(`)p Fn(\\1)p Fo(')g(and)g(`)p Fn(\\2)p Fo(')g(escap)s(es)h
+(b)s(egin)f(and)1110 4408 y(end)25 b(sequences)h(of)g(non-prin)m(ting)g
+(c)m(haracters,)i(whic)m(h)e(can)g(b)s(e)f(used)g(to)i(em-)1110
+4518 y(b)s(ed)i(a)i(terminal)g(con)m(trol)h(sequence)f(in)m(to)h(the)e
+(mo)s(de)h(string.)41 b(The)30 b(default)1110 4628 y(is)g(`)p
+Fn(@)p Fo('.)630 4792 y Fn(enable-active-region)1110
+4902 y Ff(p)s(oin)m(t)d Fo(is)e(the)h(curren)m(t)f(cursor)f(p)s
+(osition,)j(and)d Ff(mark)31 b Fo(refers)24 b(to)i(a)g(sa)m(v)m(ed)g
+(cur-)1110 5011 y(sor)33 b(p)s(osition)g(\(see)h(Section)g(1.4.1)h
+([Commands)d(F)-8 b(or)34 b(Mo)m(ving],)i(page)d(18\).)1110
+5121 y(The)46 b(text)h(b)s(et)m(w)m(een)h(the)e(p)s(oin)m(t)h(and)f
+(mark)g(is)g(referred)g(to)h(as)g(the)g Ff(re-)1110 5230
+y(gion)p Fo(.)80 b(When)44 b(this)f(v)-5 b(ariable)44
+b(is)f(set)h(to)g(`)p Fn(On)p Fo(',)j(Readline)d(allo)m(ws)h(certain)
+1110 5340 y(commands)37 b(to)h(designate)h(the)e(region)h(as)g
+Ff(activ)m(e)p Fo(.)64 b(When)37 b(the)h(region)g(is)p
 eop end
 %%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(enable-meta-key)
-1110 408 y Fo(When)40 b(set)g(to)g(`)p Fn(on)p Fo(',)j(Readline)d(will)
-g(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110
-518 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h
-(is)g(called.)76 b(On)41 b(man)m(y)1110 628 y(terminals,)c(the)e(meta)h
-(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56
-b(The)1110 737 y(default)31 b(is)f(`)p Fn(on)p Fo('.)630
-894 y Fn(expand-tilde)1110 1003 y Fo(If)d(set)h(to)h(`)p
-Fn(on)p Fo(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h
-(Readline)h(attempts)1110 1113 y(w)m(ord)i(completion.)42
-b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1270
-y Fn(history-preserve-point)1110 1379 y Fo(If)41 b(set)h(to)h(`)p
+b(Command)29 b(Line)i(Editing)2153 b(8)1110 299 y(activ)m(e,)43
+b(Readline)38 b(highligh)m(ts)h(the)g(text)g(in)e(the)i(region)g(using)
+e(the)h(v)-5 b(alue)1110 408 y(of)35 b(the)g Fn
+(active-region-start-color)p Fo(,)30 b(whic)m(h)35 b(defaults)g(to)h
+(the)f(string)1110 518 y(that)23 b(enables)f(the)g(terminal's)h
+(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d(sho)m(ws)1110
+628 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m(eted-paste)i(and)e
+(an)m(y)g(matc)m(hing)h(text)g(found)1110 737 y(b)m(y)f(incremen)m(tal)
+i(and)e(non-incremen)m(tal)i(history)e(searc)m(hes.)48
+b(The)32 b(default)1110 847 y(is)e(`)p Fn(On)p Fo('.)630
+1011 y Fn(enable-bracketed-paste)1110 1121 y Fo(When)36
+b(set)h(to)g(`)p Fn(On)p Fo(',)h(Readline)f(con\014gures)f(the)h
+(terminal)f(to)i(insert)e(eac)m(h)1110 1230 y(paste)27
+b(in)m(to)g(the)f(editing)h(bu\013er)e(as)h(a)h(single)g(string)f(of)g
+(c)m(haracters,)j(instead)1110 1340 y(of)d(treating)i(eac)m(h)g(c)m
+(haracter)f(as)g(if)f(it)h(had)f(b)s(een)f(read)i(from)e(the)i(k)m(eyb)
+s(oard.)1110 1450 y(This)36 b(is)h(called)h(putting)f(the)h(terminal)f
+(in)m(to)h Ff(brac)m(k)m(eted)h(paste)e(mo)s(de)5 b Fo(;)40
+b(it)1110 1559 y(prev)m(en)m(ts)30 b(Readline)h(from)e(executing)i(an)m
+(y)f(editing)h(commands)e(b)s(ound)f(to)1110 1669 y(k)m(ey)j(sequences)
+g(app)s(earing)f(in)g(the)g(pasted)h(text.)42 b(The)29
+b(default)i(is)f(`)p Fn(On)p Fo('.)630 1833 y Fn(enable-keypad)1110
+1943 y Fo(When)k(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(tries)g(to)g
+(enable)g(the)g(application)h(k)m(eypad)1110 2052 y(when)26
+b(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f(to)h(enable)
+g(the)g(arro)m(w)g(k)m(eys.)1110 2162 y(The)j(default)g(is)h(`)p
+Fn(off)p Fo('.)630 2326 y Fn(enable-meta-key)1110 2436
+y Fo(When)22 b(set)h(to)f(`)p Fn(on)p Fo(',)i(Readline)f(tries)g(to)g
+(enable)f(an)m(y)h(meta)g(mo)s(di\014er)e(k)m(ey)i(the)1110
+2545 y(terminal)35 b(claims)f(to)h(supp)s(ort)d(when)i(it)g(is)g
+(called.)53 b(On)33 b(man)m(y)h(terminals,)1110 2655
+y(the)45 b(Meta)i(k)m(ey)f(is)f(used)f(to)i(send)e(eigh)m(t-bit)j(c)m
+(haracters;)54 b(this)45 b(v)-5 b(ariable)1110 2765 y(c)m(hec)m(ks)37
+b(for)e(the)h(terminal)g(capabilit)m(y)i(that)e(indicates)h(the)e
+(terminal)i(can)1110 2874 y(enable)f(and)f(disable)h(a)g(mo)s(de)f
+(that)h(sets)g(the)g(eigh)m(th)g(bit)g(of)f(a)h(c)m(haracter)1110
+2984 y(\(0200\))31 b(if)d(the)g(Meta)i(k)m(ey)f(is)f(held)g(do)m(wn)g
+(when)f(the)h(c)m(haracter)i(is)e(t)m(yp)s(ed)g(\(a)1110
+3093 y(meta)j(c)m(haracter\).)43 b(The)30 b(default)g(is)h(`)p
+Fn(on)p Fo('.)630 3258 y Fn(expand-tilde)1110 3367 y
+Fo(If)h(set)h(to)h(`)p Fn(on)p Fo(',)f(Readline)h(attempts)f(tilde)h
+(expansion)e(when)g(it)h(attempts)1110 3477 y(w)m(ord)d(completion.)42
+b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 3641
+y Fn(force-meta-prefix)1110 3751 y Fo(If)h(set)i(to)g(`)p
+Fn(on)p Fo(',)f(Readline)h(mo)s(di\014es)e(its)h(b)s(eha)m(vior)g(when)
+f(binding)g(k)m(ey)h(se-)1110 3861 y(quences)22 b(con)m(taining)i
+Fg(\\M-)e Fo(or)h Fn(Meta-)e Fo(\(see)i Fn(Key)29 b(Bindings)21
+b Fo(in)h(Section)h(1.3.1)1110 3970 y([Readline)36 b(Init)f(File)i(Syn)
+m(tax],)g(page)f(4\))g(b)m(y)g(con)m(v)m(erting)h(a)e(k)m(ey)i
+(sequence)1110 4080 y(of)k(the)h(form)e Fg(\\M-)p Ff(C)48
+b Fo(or)41 b Fn(Meta-)p Ff(C)48 b Fo(to)41 b(the)h(t)m(w)m(o-c)m
+(haracter)i(sequence)e Fg(ESC)1110 4189 y Ff(C)e Fo(\(adding)32
+b(the)g(meta)h(pre\014x\).)46 b(If)32 b Fn(force-meta-prefix)27
+b Fo(is)33 b(set)f(to)h(`)p Fn(off)p Fo(')1110 4299 y(\(the)25
+b(default\),)i(Readline)e(uses)f(the)h(v)-5 b(alue)25
+b(of)f(the)h Fn(convert-meta)c Fo(v)-5 b(ariable)1110
+4408 y(to)30 b(determine)f(whether)f(to)i(p)s(erform)d(this)i(con)m(v)m
+(ersion:)41 b(if)29 b Fn(convert-meta)1110 4518 y Fo(is)37
+b(`)p Fn(on)p Fo(',)i(Readline)f(p)s(erforms)d(the)j(con)m(v)m(ersion)g
+(describ)s(ed)e(ab)s(o)m(v)m(e;)42 b(if)37 b(it)h(is)1110
+4628 y(`)p Fn(off)p Fo(',)24 b(Readline)g(con)m(v)m(erts)g
+Ff(C)30 b Fo(to)23 b(a)h(meta)f(c)m(haracter)i(b)m(y)d(setting)i(the)f
+(eigh)m(th)1110 4737 y(bit)30 b(\(0200\).)44 b(The)29
+b(default)i(is)f(`)p Fn(off)p Fo('.)630 4902 y Fn
+(history-preserve-point)1110 5011 y Fo(If)41 b(set)h(to)h(`)p
 Fn(on)p Fo(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f
-(p)s(oin)m(t)f(\(the)1110 1489 y(curren)m(t)35 b(cursor)g(p)s
+(p)s(oin)m(t)f(\(the)1110 5121 y(curren)m(t)35 b(cursor)g(p)s
 (osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g
-(line)1110 1598 y(retriev)m(ed)h(with)f Fn(previous-history)c
+(line)1110 5230 y(retriev)m(ed)h(with)f Fn(previous-history)c
 Fo(or)37 b Fn(next-history)p Fo(.)55 b(The)36 b(default)1110
-1708 y(is)30 b(`)p Fn(off)p Fo('.)630 1864 y Fn(history-size)1110
-1974 y Fo(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
-(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 2084
+5340 y(is)30 b(`)p Fn(off)p Fo('.)p eop end
+%%Page: 9 12
+TeXDict begin 9 11 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2153 b(9)630 299 y Fn(history-size)1110
+408 y Fo(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
+(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 518
 y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f
-(en)m(tries)g(are)g(deleted)h(and)e(no)1110 2193 y(new)e(en)m(tries)i
+(en)m(tries)g(are)g(deleted)h(and)e(no)1110 628 y(new)e(en)m(tries)i
 (are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5
 b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110
-2303 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
+737 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110
-2412 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is)
-f(made)g(to)h(set)f Fe(history-size)39 b Fo(to)1110 2522
-y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m
-(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 2632
-y(b)s(e)c(set)h(to)g(500.)630 2788 y Fn(horizontal-scroll-mode)1110
-2898 y Fo(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f
-(`)p Fn(on)p Fo(')g(or)g(`)p Fn(off)p Fo('.)57 b(Setting)36
-b(it)g(to)h(`)p Fn(on)p Fo(')1110 3007 y(means)26 b(that)h(the)f(text)h
-(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
-(tally)1110 3117 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
-(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 3226
-y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i
-(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3336
-y(automatically)k(set)e(to)g(`)p Fn(on)p Fo(')f(for)g(terminals)g(of)h
-(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3446
-y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Fn(off)p Fo('.)630
-3602 y Fn(input-meta)1110 3712 y Fo(If)f(set)g(to)h(`)p
-Fn(on)p Fo(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
-i(will)f(not)h(clear)1110 3821 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
-(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110
-3931 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79
-b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Fn(off)p
-Fo(',)j(but)1110 4041 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p
-Fn(on)p Fo(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m
-(haracters.)1110 4150 y(The)k(name)g Fn(meta-flag)e Fo(is)i(a)h(synon)m
-(ym)f(for)g(this)g(v)-5 b(ariable.)42 b(This)28 b(v)-5
-b(ariable)1110 4260 y(is)35 b(dep)s(enden)m(t)f(on)h(the)g
-Fn(LC_CTYPE)e Fo(lo)s(cale)k(category)-8 b(,)39 b(and)34
-b(ma)m(y)i(c)m(hange)g(if)1110 4369 y(the)31 b(lo)s(cale)h(is)e(c)m
-(hanged.)630 4526 y Fn(isearch-terminators)1110 4635
-y Fo(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j
-(an)f(incremen)m(tal)1110 4745 y(searc)m(h)25 b(without)g(subsequen)m
-(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110
-4855 y(\(see)45 b(Section)h(1.2.5)g([Searc)m(hing],)j(page)d(3\).)84
-b(If)44 b(this)g(v)-5 b(ariable)45 b(has)g(not)1110 4964
-y(b)s(een)35 b(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h
-Fn(ESC)d Fo(and)h Fg(C-J)g Fo(will)h(terminate)g(an)1110
-5074 y(incremen)m(tal)c(searc)m(h.)630 5230 y Fn(keymap)192
-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 5340 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(,)p eop end
-%%Page: 9 12
-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 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 408 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
-518 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
-628 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 737 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 909 y Fn(keyseq-timeout)1110 1019 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 1129 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
-1238 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 1348 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 1457 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
-1567 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 1677
-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
-1786 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 1896 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
-(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23
-b(is)1110 2005 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
-(equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5
-b(alue,)1110 2115 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
-(k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110
-2225 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)g Fn(500)p Fo(.)630 2397 y Fn(mark-directories)1110
-2506 y Fo(If)38 b(set)g(to)h(`)p Fn(on)p Fo(',)i(completed)e(directory)
-f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
-2616 y(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630
-2788 y Fn(mark-modified-lines)1110 2898 y Fo(This)k(v)-5
-b(ariable,)38 b(when)d(set)h(to)h(`)p Fn(on)p Fo(',)g(causes)g
-(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3007 y(terisk)f(\(`)p
-Fn(*)p Fo('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f
-(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3117 y(This)d(v)-5
-b(ariable)31 b(is)f(`)p Fn(off)p Fo(')g(b)m(y)g(default.)630
-3289 y Fn(mark-symlinked-directori)o(es)1110 3399 y Fo(If)59
-b(set)h(to)g(`)p Fn(on)p Fo(',)67 b(completed)60 b(names)f(whic)m(h)g
-(are)h(sym)m(b)s(olic)g(links)f(to)1110 3508 y(directories)71
-b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70
-b(to)g(the)g(v)-5 b(alue)70 b(of)1110 3618 y Fn(mark-directories)p
-Fo(\).)37 b(The)30 b(default)g(is)g(`)p Fn(off)p Fo('.)630
-3790 y Fn(match-hidden-files)1110 3900 y Fo(This)21 b(v)-5
-b(ariable,)25 b(when)d(set)g(to)h(`)p Fn(on)p Fo(',)h(causes)f
-(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 4009
+847 y(en)m(tries)24 b(is)g(not)g(limited.)39 b(If)24
+b(y)m(ou)g(try)f(to)i(set)f Ff(history-size)30 b Fo(to)24
+b(a)g(non-n)m(umeric)1110 956 y(v)-5 b(alue,)31 b(the)g(maxim)m(um)f(n)
+m(um)m(b)s(er)f(of)i(history)f(en)m(tries)h(will)g(b)s(e)e(set)i(to)g
+(500.)630 1110 y Fn(horizontal-scroll-mode)1110 1219
+y Fo(Setting)i(this)e(v)-5 b(ariable)33 b(to)g(`)p Fn(on)p
+Fo(')e(means)h(that)g(the)g(text)h(of)f(the)g(lines)g(b)s(eing)1110
+1329 y(edited)d(will)h(scroll)g(horizon)m(tally)h(on)e(a)g(single)h
+(screen)f(line)g(when)f(the)i(lines)1110 1439 y(are)k(longer)h(than)e
+(the)h(width)g(of)g(the)g(screen,)h(instead)f(of)g(wrapping)f(on)m(to)
+1110 1548 y(a)42 b(new)f(screen)h(line.)74 b(This)41
+b(v)-5 b(ariable)42 b(is)g(automatically)i(set)e(to)h(`)p
+Fn(on)p Fo(')e(for)1110 1658 y(terminals)31 b(of)f(heigh)m(t)i(1.)41
+b(By)30 b(default,)h(this)f(v)-5 b(ariable)32 b(is)e(set)h(to)g(`)p
+Fn(off)p Fo('.)630 1811 y Fn(input-meta)1110 1921 y Fo(If)g(set)h(to)h
+(`)p Fn(on)p Fo(',)f(Readline)g(enables)g(eigh)m(t-bit)i(input)c
+(\(that)j(is,)f(it)g(do)s(es)g(not)1110 2030 y(clear)j(the)g(eigh)m(th)
+g(bit)f(in)g(the)g(c)m(haracters)i(it)f(reads\),)g(regardless)g(of)f
+(what)1110 2140 y(the)45 b(terminal)g(claims)h(it)g(can)f(supp)s(ort.)
+82 b(The)45 b(default)g(v)-5 b(alue)45 b(is)g(`)p Fn(off)p
+Fo(',)1110 2250 y(but)31 b(Readline)i(sets)g(it)g(to)g(`)p
+Fn(on)p Fo(')f(if)g(the)g(lo)s(cale)i(con)m(tains)f(c)m(haracters)h
+(whose)1110 2359 y(enco)s(dings)c(ma)m(y)h(include)f(b)m(ytes)h(with)f
+(the)g(eigh)m(th)h(bit)f(set.)42 b(This)29 b(v)-5 b(ariable)1110
+2469 y(is)37 b(dep)s(enden)m(t)f(on)i(the)f Fn(LC_CTYPE)e
+Fo(lo)s(cale)k(category)-8 b(,)41 b(and)c(its)h(v)-5
+b(alue)37 b(ma)m(y)1110 2578 y(c)m(hange)g(if)f(the)g(lo)s(cale)h(c)m
+(hanges.)58 b(The)35 b(name)h Fn(meta-flag)d Fo(is)j(a)g(synon)m(ym)
+1110 2688 y(for)30 b Fn(input-meta)p Fo(.)630 2841 y
+Fn(isearch-terminators)1110 2951 y Fo(The)51 b(string)h(of)g(c)m
+(haracters)h(that)f(should)e(terminate)j(an)f(incremen)m(tal)1110
+3061 y(searc)m(h)84 b(without)f(subsequen)m(tly)g(executing)h(the)f(c)m
+(haracter)i(as)f(a)1110 3170 y(command)38 b(\(see)g(Section)h(1.2.5)g
+([Searc)m(hing],)i(page)e(3\).)63 b(If)37 b(this)h(v)-5
+b(ariable)1110 3280 y(has)33 b(not)g(b)s(een)g(giv)m(en)h(a)f(v)-5
+b(alue,)35 b(the)e(c)m(haracters)i Fn(ESC)d Fo(and)h
+Fg(C-j)f Fo(terminate)1110 3389 y(an)e(incremen)m(tal)i(searc)m(h.)630
+3543 y Fn(keymap)192 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
+3652 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 3762
+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
+3871 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 3981 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 4091 y(ma)m(y)35 b(add)f(additional)h
+(names.)52 b(The)34 b(default)h(v)-5 b(alue)34 b(is)h
+Fn(emacs)p Fo(;)g(the)f(v)-5 b(alue)1110 4200 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 4354 y Fn(keyseq-timeout)1110
+4463 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 4573
+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 4682 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 4792 y(to)27 b(complete)h(a)f(longer)g(k)m(ey)g(sequence\).)40
+b(If)26 b(Readline)h(do)s(esn't)f(receiv)m(e)j(an)m(y)1110
+4902 y(input)j(within)f(the)i(timeout,)h(it)f(uses)g(the)f(shorter)g
+(but)g(complete)i(k)m(ey)f(se-)1110 5011 y(quence.)39
+b(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 5121 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 5230 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 5340
+y(Readline)32 b(will)f(w)m(ait)h(one)g(second)f(for)g(additional)h
+(input.)42 b(If)30 b(this)h(v)-5 b(ariable)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)1110 299 y(is)40
+b(set)g(to)h(a)f(v)-5 b(alue)40 b(less)g(than)g(or)g(equal)g(to)h
+(zero,)i(or)d(to)g(a)g(non-n)m(umeric)1110 408 y(v)-5
+b(alue,)34 b(Readline)g(w)m(aits)g(un)m(til)g(another)f(k)m(ey)h(is)f
+(pressed)f(to)i(decide)f(whic)m(h)1110 518 y(k)m(ey)e(sequence)g(to)g
+(complete.)42 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h
+Fn(500)p Fo(.)630 671 y Fn(mark-directories)1110 781
+y Fo(If)38 b(set)g(to)h(`)p Fn(on)p Fo(',)i(completed)e(directory)f
+(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110 891
+y(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630 1044
+y Fn(mark-modified-lines)1110 1154 y Fo(When)c(this)g(v)-5
+b(ariable)28 b(is)f(set)g(to)h(`)p Fn(on)p Fo(',)g(Readline)f(displa)m
+(ys)g(an)g(asterisk)h(\(`)p Fn(*)p Fo('\))1110 1263 y(at)c(the)g(start)
+g(of)f(history)g(lines)h(whic)m(h)f(ha)m(v)m(e)i(b)s(een)d(mo)s
+(di\014ed.)38 b(This)22 b(v)-5 b(ariable)1110 1373 y(is)30
+b(`)p Fn(off)p Fo(')g(b)m(y)h(default.)630 1526 y Fn
+(mark-symlinked-directori)o(es)1110 1636 y Fo(If)59 b(set)h(to)g(`)p
+Fn(on)p Fo(',)67 b(completed)60 b(names)f(whic)m(h)g(are)h(sym)m(b)s
+(olic)g(links)f(to)1110 1745 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)
+g(app)s(ended,)77 b(sub)5 b(ject)70 b(to)g(the)g(v)-5
+b(alue)70 b(of)1110 1855 y Fn(mark-directories)p Fo(.)36
+b(The)30 b(default)h(is)f(`)p Fn(off)p Fo('.)630 2008
+y Fn(match-hidden-files)1110 2118 y Fo(This)24 b(v)-5
+b(ariable,)26 b(when)e(set)h(to)g(`)p Fn(on)p Fo(',)g(forces)g
+(Readline)g(to)g(matc)m(h)h(\014les)e(whose)1110 2228
 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Fn(.)p Fo(')g(\(hidden)f
-(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 4119
-y(completion.)75 b(If)41 b(set)g(to)h(`)p Fn(off)p Fo(',)i(the)e
-(leading)g(`)p Fn(.)p Fo(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)1110
-4228 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)
-53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Fn(on)p Fo(')g(b)m(y)1110
-4338 y(default.)630 4510 y Fn(menu-complete-display-pr)o(efix)1110
-4620 y Fo(If)f(set)h(to)g(`)p Fn(on)p Fo(',)h(men)m(u)e(completion)i
+(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 2337
+y(completion.)f(If)28 b(set)i(to)g(`)p Fn(off)p Fo(',)f(the)g(user)f(m)
+m(ust)h(include)g(the)g(leading)h(`)p Fn(.)p Fo(')f(in)1110
+2447 y(the)i(\014lename)f(to)h(b)s(e)f(completed.)42
+b(This)29 b(v)-5 b(ariable)31 b(is)g(`)p Fn(on)p Fo(')f(b)m(y)g
+(default.)630 2600 y Fn(menu-complete-display-pr)o(efix)1110
+2710 y Fo(If)j(set)h(to)g(`)p Fn(on)p Fo(',)h(men)m(u)e(completion)i
 (displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110
-4729 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)
-s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 4839 y(through)30
+2819 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)
+s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 2929 y(through)30
 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Fn(off)p
-Fo('.)630 5011 y Fn(output-meta)1110 5121 y Fo(If)35
-b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(will)g(displa)m(y)f(c)m
-(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 5230 y(set)h(directly)g
-(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59
-b(The)1110 5340 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)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)1110 299 y(eigh)m(t-bit)38
-b(c)m(haracters.)61 b(This)36 b(v)-5 b(ariable)37 b(is)g(dep)s(enden)m
-(t)e(on)h(the)h Fn(LC_CTYPE)1110 408 y Fo(lo)s(cale)32
-b(category)-8 b(,)33 b(and)d(ma)m(y)h(c)m(hange)g(if)g(the)f(lo)s(cale)
-i(is)f(c)m(hanged.)630 581 y Fn(page-completions)1110
-690 y Fo(If)i(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
-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
-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
-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
+Fo('.)630 3082 y Fn(output-meta)1110 3192 y Fo(If)23
+b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)e(displa)m(ys)h(c)m
+(haracters)g(with)f(the)g(eigh)m(th)h(bit)f(set)h(di-)1110
+3302 y(rectly)29 b(rather)e(than)h(as)g(a)g(meta-pre\014xed)g(escap)s
+(e)g(sequence.)40 b(The)28 b(default)1110 3411 y(is)e(`)p
+Fn(off)p Fo(',)h(but)e(Readline)h(sets)h(it)f(to)h(`)p
+Fn(on)p Fo(')f(if)g(the)g(lo)s(cale)h(con)m(tains)g(c)m(haracters)1110
+3521 y(whose)36 b(enco)s(dings)g(ma)m(y)h(include)f(b)m(ytes)h(with)f
+(the)h(eigh)m(th)g(bit)g(set.)59 b(This)1110 3630 y(v)-5
+b(ariable)24 b(is)e(dep)s(enden)m(t)g(on)h(the)g Fn(LC_CTYPE)e
+Fo(lo)s(cale)j(category)-8 b(,)27 b(and)22 b(its)h(v)-5
+b(alue)1110 3740 y(ma)m(y)31 b(c)m(hange)g(if)g(the)f(lo)s(cale)i(c)m
+(hanges.)630 3893 y Fn(page-completions)1110 4003 y Fo(If)24
+b(set)g(to)h(`)p Fn(on)p Fo(',)h(Readline)f(uses)f(an)g(in)m(ternal)h
+(pager)f(resem)m(bling)h Fe(mor)-5 b(e)7 b Fo(\(1\))26
+b(to)1110 4113 y(displa)m(y)j(a)g(screenful)g(of)f(p)s(ossible)h
+(completions)h(at)f(a)g(time.)41 b(This)28 b(v)-5 b(ariable)1110
+4222 y(is)30 b(`)p Fn(on)p Fo(')h(b)m(y)f(default.)630
+4376 y Fn(prefer-visible-bell)1110 4485 y Fo(See)h Fn(bell-style)p
+Fo(.)630 4639 y Fn(print-completions-horizo)o(ntal)o(ly)1110
+4748 y Fo(If)38 b(set)h(to)g(`)p Fn(on)p Fo(',)h(Readline)f(displa)m
+(ys)f(completions)h(with)f(matc)m(hes)i(sorted)1110 4858
+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 4967 y(The)30 b(default)g(is)h(`)p
+Fn(off)p Fo('.)630 5121 y Fn(revert-all-at-newline)1110
+5230 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
-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
+5340 y(returning)35 b(when)f(executing)j Fn(accept-line)p
+Fo(.)54 b(By)36 b(default,)h(history)f(lines)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)1110 299 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 2021 y Fn(readline\(\))p Fo(.)38
-b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 2193
-y Fn(show-all-if-ambiguous)1110 2303 y Fo(This)e(alters)i(the)f
+(across)g(calls)h(to)1110 408 y Fn(readline\(\))p Fo(.)38
+b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 591
+y Fn(search-ignore-case)1110 701 y Fo(If)j(set)g(to)h(`)p
+Fn(on)p Fo(',)h(Readline)e(p)s(erforms)f(incremen)m(tal)i(and)f
+(non-incremen)m(tal)1110 810 y(history)27 b(list)g(searc)m(hes)h(in)f
+(a)g(case-insensitiv)m(e)j(fashion.)39 b(The)26 b(default)h(v)-5
+b(alue)1110 920 y(is)30 b(`)p Fn(off)p Fo('.)630 1103
+y Fn(show-all-if-ambiguous)1110 1212 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 2412 y(to)f(`)p Fn(on)p Fo(',)g(w)m(ords)f(whic)m(h)
+b(If)29 b(set)1110 1322 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 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
+1110 1431 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 1541 y(The)30
 b(default)g(v)-5 b(alue)31 b(is)g(`)p Fn(off)p Fo('.)630
-2804 y Fn(show-all-if-unmodified)1110 2913 y Fo(This)38
+1724 y Fn(show-all-if-unmodified)1110 1833 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 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 3133 y(ha)m(v)m(e)32
+(functions)e(in)h(a)1110 1943 y(fashion)25 b(similar)h(to)g
+Ff(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 2052 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 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
+(ossible)f(par-)1110 2162 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 2271
 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 3461 y(ing)g(the)f(b)s(ell.)41
+(immediately)i(instead)e(of)h(ring-)1110 2381 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 3634 y Fn(show-mode-in-prompt)1110 3743 y Fo(If)24
+Fo('.)630 2564 y Fn(show-mode-in-prompt)1110 2673 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
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 2783
 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
+h(insertion.)49 b(The)32 b(mo)s(de)1110 2892 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Ff(emacs-mo)s(de-string)8
+b Fo(\).)87 b(The)45 b(default)1110 3002 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 3185 y Fn(skip-completed-text)1110
+3294 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
+3404 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)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46
-b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 4682 y(not)41
+3513 y(ing)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46
+b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 3623 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
+(c)m(haracters)1110 3733 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
+3842 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(`)
-p Fn(Makefilefile)p Fo(',)1110 5230 y(assuming)d(there)g(is)h(a)f
-(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5
-b(alue)1110 5340 y(is)30 b(`)p Fn(off)p Fo('.)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
-(vi-cmd-mode-string)1110 408 y Fo(If)33 b(the)h Fe(sho)m(w-mo)s
+3952 y(abled,)h(attempting)h(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(\014rst)f(`)p Fn(e)p Fo(')1110 4061 y(in)23
+b(`)p Fn(Makefile)p Fo(')f(will)h(result)h(in)f(`)p Fn(Makefile)p
+Fo(')e(rather)i(than)h(`)p Fn(Makefilefile)p Fo(',)1110
+4171 y(assuming)35 b(there)g(is)h(a)f(single)h(p)s(ossible)f
+(completion.)56 b(The)35 b(default)g(v)-5 b(alue)1110
+4281 y(is)30 b(`)p Fn(off)p Fo('.)630 4463 y Fn(vi-cmd-mode-string)1110
+4573 y Fo(If)j(the)h Ff(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
+4682 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 4792 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 4902 y(panded)23
+b(lik)m(e)j(a)e(k)m(ey)h(binding,)g(so)g(the)f(standard)g(set)h(of)f
+(meta-)h(and)f(con)m(trol-)1110 5011 y(pre\014xes)31
+b(and)h(bac)m(kslash)g(escap)s(e)h(sequences)f(is)g(a)m(v)-5
+b(ailable.)48 b(The)32 b(`)p Fn(\\1)p Fo(')g(and)1110
+5121 y(`)p Fn(\\2)p Fo(')40 b(escap)s(es)h(b)s(egin)g(and)f(end)f
+(sequences)i(of)g(non-prin)m(ting)f(c)m(haracters,)1110
+5230 y(whic)m(h)35 b(can)g(b)s(e)f(used)g(to)i(em)m(b)s(ed)e(a)i
+(terminal)f(con)m(trol)i(sequence)e(in)m(to)h(the)1110
+5340 y(mo)s(de)30 b(string.)41 b(The)30 b(default)g(is)g(`)p
+Fn(\(cmd\))p Fo('.)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 Fn
+(vi-ins-mode-string)1110 408 y Fo(If)33 b(the)h Ff(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
+628 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
+737 y(panded)23 b(lik)m(e)j(a)e(k)m(ey)h(binding,)g(so)g(the)f
+(standard)g(set)h(of)f(meta-)h(and)f(con)m(trol-)1110
+847 y(pre\014xes)31 b(and)h(bac)m(kslash)g(escap)s(e)h(sequences)f(is)g
+(a)m(v)-5 b(ailable.)48 b(The)32 b(`)p Fn(\\1)p Fo(')g(and)1110
+956 y(`)p Fn(\\2)p Fo(')40 b(escap)s(es)h(b)s(egin)g(and)f(end)f
+(sequences)i(of)g(non-prin)m(ting)f(c)m(haracters,)1110
+1066 y(whic)m(h)35 b(can)g(b)s(e)f(used)g(to)i(em)m(b)s(ed)e(a)i
+(terminal)f(con)m(trol)i(sequence)e(in)m(to)h(the)1110
+1176 y(mo)s(de)30 b(string.)41 b(The)30 b(default)g(is)g(`)p
+Fn(\(ins\))p Fo('.)630 1353 y Fn(visible-stats)1110 1462
 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
+1572 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 1749
+y(Key)f(Bindings)630 1858 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)
+b(First)43 b(y)m(ou)630 1968 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
+b(The)27 b(follo)m(wing)630 2078 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
+m(y)-8 b(,)630 2187 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 2330 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
+(the)g(init)630 2440 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
+630 2550 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 3669 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(and)630 2659 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 3778 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+b(The)40 b(name)h(of)630 2769 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 3888 y(comfortable.)630
-4025 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h
+(what)h(y)m(ou)g(\014nd)e(most)630 2878 y(comfortable.)630
+3022 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h
 (k)m(eys)g(to)f(b)s(e)f(b)s(ound)f(to)i(a)g(string)630
-4134 y(that)d(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 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 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
+3131 y(that)i(is)f(inserted)f(when)g(the)i(k)m(ey)f(is)g(pressed)f(\(a)
+i Ff(macro)5 b Fo(\).)55 b(The)35 b(di\013erence)g(b)s(et)m(w)m(een)h
+(a)630 3241 y(macro)31 b(and)f(a)h(command)f(is)g(that)h(a)g(macro)g
+(is)f(enclosed)h(in)f(single)h(or)g(double)f(quotes.)630
+3418 y Ff(k)m(eyname)5 b Fo(:)42 b Ff(function-name)35
+b Fo(or)c Ff(macro)1110 3528 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 3671 y Fn(Control-u:)45
+b(universal-argument)1350 3780 y(Meta-Rubout:)f(backward-kill-word)1350
+3890 y(Control-o:)h(">)i(output")1110 4033 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 5011 y Fn(universal-argument)p
+(to)i(the)f(function)1110 4143 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 5230 y(expressed)45
+4253 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 4362 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 5340 y(output)p Fo(')29 b(in)m(to)i(the)g
-(line\).)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)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
-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 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
-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
-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 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 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 5340 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))p
-eop end
+h(text)h(`)p Fn(>)1110 4472 y(output)p Fo(')29 b(in)m(to)i(the)g
+(line\).)1110 4615 y(This)26 b(k)m(ey)h(binding)e(syn)m(tax)i
+(recognizes)i(a)e(n)m(um)m(b)s(er)e(of)h(sym)m(b)s(olic)h(c)m(haracter)
+1110 4725 y(names:)43 b Ff(DEL)p Fo(,)32 b Ff(ESC)p Fo(,)f
+Ff(ESCAPE)p Fo(,)g Ff(LFD)p Fo(,)h Ff(NEWLINE)p Fo(,)h
+Ff(RET)p Fo(,)e Ff(RETURN)p Fo(,)1110 4834 y Ff(R)m(UBOUT)37
+b Fo(\(a)31 b(destructiv)m(e)h(bac)m(kspace\),)g Ff(SP)-8
+b(A)m(CE)p Fo(,)31 b Ff(SPC)p Fo(,)e(and)h Ff(T)-8 b(AB)p
+Fo(.)630 5011 y Fn(")p Ff(k)m(eyseq)r Fn(")p Fo(:)41
+b Ff(function-name)36 b Fo(or)30 b Ff(macro)1110 5121
+y(k)m(eyseq)24 b Fo(di\013ers)c(from)g Ff(k)m(eyname)27
+b Fo(ab)s(o)m(v)m(e)22 b(in)e(that)h(strings)g(denoting)f(an)h(en)m
+(tire)1110 5230 y(k)m(ey)i(sequence)f(can)h(b)s(e)e(sp)s(eci\014ed,)j
+(b)m(y)e(placing)h(the)f(k)m(ey)h(sequence)g(in)e(double)1110
+5340 y(quotes.)46 b(Some)32 b Fh(gnu)f Fo(Emacs)h(st)m(yle)h(k)m(ey)g
+(escap)s(es)f(can)g(b)s(e)f(used,)h(as)g(in)g(the)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)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
+b(Command)29 b(Line)i(Editing)2107 b(13)1110 299 y(follo)m(wing)47
+b(example,)j(but)44 b(none)i(of)f(the)g(sp)s(ecial)h(c)m(haracter)h
+(names)f(are)1110 408 y(recognized.)1350 543 y Fn("\\C-u":)g
+(universal-argument)1350 652 y("\\C-x\\C-r":)f(re-read-init-file)1350
+762 y("\\e[11~":)g("Function)h(Key)g(1")1110 896 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 1006 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 1115 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 1225 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 1384 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 1493 y(k)m(ey)i(sequences:)630
+1652 y Fg(\\C-)336 b Fo(A)30 b(con)m(trol)i(pre\014x.)630
+1811 y Fg(\\M-)336 b Fo(Adding)33 b(the)h(meta)g(pre\014x)f(or)h(con)m
+(v)m(erting)h(the)f(follo)m(wing)h(c)m(haracter)g(to)g(a)1110
+1921 y(meta)27 b(c)m(haracter,)h(as)e(describ)s(ed)e(ab)s(o)m(v)m(e)j
+(under)d Fn(force-meta-prefix)d Fo(\(see)1110 2030 y
+Fn(Variable)28 b(Settings)42 b Fo(in)h(Section)i(1.3.1)g([Readline)g
+(Init)e(File)i(Syn)m(tax],)1110 2140 y(page)31 b(4\).)630
+2299 y Fg(\\e)384 b Fo(An)30 b(escap)s(e)h(c)m(haracter.)630
+2458 y Fg(\\\\)384 b Fo(Bac)m(kslash.)630 2617 y Fg(\\)p
+Fn(")g(")p Fo(,)30 b(a)h(double)f(quotation)i(mark.)630
+2776 y Fg(\\')384 b Fn(')p Fo(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe.)630 2934 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 3044 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+3203 y Fn(\\a)384 b Fo(alert)31 b(\(b)s(ell\))630 3362
+y Fn(\\b)384 b Fo(bac)m(kspace)630 3521 y Fn(\\d)g Fo(delete)630
+3680 y Fn(\\f)g Fo(form)30 b(feed)630 3839 y Fn(\\n)384
+b Fo(newline)630 3998 y Fn(\\r)g Fo(carriage)32 b(return)630
+4156 y Fn(\\t)384 b Fo(horizon)m(tal)32 b(tab)630 4315
+y Fn(\\v)384 b Fo(v)m(ertical)32 b(tab)630 4474 y Fn(\\)p
+Fg(nnn)288 b Fo(The)31 b(eigh)m(t-bit)j(c)m(haracter)f(whose)f(v)-5
+b(alue)32 b(is)f(the)h(o)s(ctal)h(v)-5 b(alue)33 b Ff(nnn)d
+Fo(\(one)i(to)1110 4584 y(three)f(digits\).)630 4743
+y Fn(\\x)p Fg(HH)288 b Fo(The)34 b(eigh)m(t-bit)j(c)m(haracter)f(whose)
+f(v)-5 b(alue)35 b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36
+b Ff(HH)1110 4852 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\).)630
+5011 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
+5121 y(indicate)d(a)f(macro)g(de\014nition.)45 b(Unquoted)32
+b(text)g(is)g(assumed)f(to)i(b)s(e)e(a)h(function)g(name.)630
+5230 y(The)27 b(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m
+(e)i(are)g(expanded)f(in)g(the)g(macro)h(b)s(o)s(dy)-8
+b(.)39 b(Bac)m(k-)630 5340 y(slash)e(will)h(quote)h(an)m(y)f(other)f(c)
+m(haracter)j(in)d(the)h(macro)g(text,)j(including)c(`)p
+Fn(")p Fo(')h(and)f(`)p Fn(')p Fo('.)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)630 299 y(F)-8
+b(or)29 b(example,)h(the)e(follo)m(wing)i(binding)e(will)g(mak)m(e)i(`)
+p Fg(C-x)f Fn(\\)p Fo(')g(insert)f(a)h(single)g(`)p Fn(\\)p
+Fo(')f(in)m(to)i(the)630 408 y(line:)870 542 y Fn("\\C-x\\\\":)45
+b("\\\\")150 740 y Fd(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)150
+887 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
+996 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 1106 y(result)f(of)h(tests.)41
+b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(a)m(v)-5
+b(ailable.)150 1264 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 1373 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 1483 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 1592 y(noted,)i(no)f(c)m
+(haracters)i(are)f(required)e(to)i(isolate)i(it.)630
+1750 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
+1860 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 1969 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
+2079 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 2188 y(starting)f(out)g
+(in)f Fn(emacs)f Fo(mo)s(de.)630 2346 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 2800 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 2456 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 2910 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 2565 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 3020 y(b)s(oth)k(the)h(full)g
+Fn(=)p Fo(')g(is)g(tested)h(against)1110 2675 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 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 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
+(terminal)1110 2785 y(name)j(b)s(efore)f(the)h(\014rst)f(`)p
+Fn(-)p Fo('.)47 b(This)32 b(allo)m(ws)i Fn(xterm)e Fo(to)h(matc)m(h)g
+(b)s(oth)f Fn(xterm)1110 2894 y Fo(and)e Fn(xterm-256color)p
+Fo(,)d(for)j(instance.)630 3052 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 3161 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 3271 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 3381 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
+3490 y(the)23 b(righ)m(t)h(side)f(of)g(the)g(op)s(erator)h(consists)f
+(of)h(a)f(ma)5 b(jor)23 b(v)m(ersion)h(n)m(um)m(b)s(er,)f(an)1110
+3600 y(optional)29 b(decimal)g(p)s(oin)m(t,)g(and)f(an)g(optional)h
+(minor)f(v)m(ersion)g(\(e.g.,)j(`)p Fn(7.1)p Fo('\).)1110
+3709 y(If)24 b(the)h(minor)g(v)m(ersion)g(is)g(omitted,)i(it)e
+(defaults)g(to)h(`)p Fn(0)p Fo('.)39 b(The)24 b(op)s(erator)h(ma)m(y)
+1110 3819 y(b)s(e)g(separated)h(from)g(the)g(string)g
+Fn(version)d Fo(and)j(from)f(the)h(v)m(ersion)g(n)m(um)m(b)s(er)1110
+3929 y(argumen)m(t)34 b(b)m(y)g(whitespace.)51 b(The)34
+b(follo)m(wing)h(example)f(sets)g(a)g(v)-5 b(ariable)35
+b(if)1110 4038 y(the)c(Readline)g(v)m(ersion)f(b)s(eing)g(used)g(is)g
+(7.0)i(or)e(new)m(er:)1350 4172 y Fn($if)47 b(version)f(>=)h(7.0)1350
+4281 y(set)g(show-mode-in-prompt)42 b(on)1350 4391 y($endif)630
+4549 y(application)1110 4658 y Fo(The)21 b Ff(application)j
 Fo(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)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
-5230 y(name)p Fo(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+(set-)1110 4768 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(Readline)g(library)g(sets)g(the)g Ff(application)1110
+4878 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
-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: 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)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 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 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 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 3440 y(conditional)j(syn)m
-(tax.)p eop end
+4987 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 5097
+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 5206 y(the)e(curren)m(t)f(or)g(previous)
+g(w)m(ord)g(in)g(Bash:)1350 5340 y Fn($if)47 b(Bash)p
+eop end
 %%Page: 15 18
 TeXDict begin 15 17 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(15)390 408 y Fn(#)47
-b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h
-(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h
+b(Command)29 b(Line)i(Editing)2107 b(15)1350 299 y Fn(#)47
+b(Quote)g(the)g(current)f(or)h(previous)e(word)1350 408
+y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 518 y($endif)630
+677 y(variable)96 b Fo(The)33 b Ff(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 787 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 897 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 1006 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 1116 y(from)36 b(the)h(v)-5 b(alue)37
+b(on)f(the)h(righ)m(t)g(hand)f(side)g(b)m(y)g(whitespace.)60
+b(String)37 b(and)1110 1225 y(b)s(o)s(olean)29 b(v)-5
+b(ariables)29 b(ma)m(y)h(b)s(e)e(tested.)41 b(Bo)s(olean)30
+b(v)-5 b(ariables)29 b(m)m(ust)g(b)s(e)f(tested)1110
+1335 y(against)33 b(the)e(v)-5 b(alues)32 b Ff(on)f Fo(and)g
+Ff(o\013)p Fo(.)44 b(The)31 b(follo)m(wing)i(example)f(is)f(equiv)-5
+b(alen)m(t)1110 1445 y(to)31 b(the)g Fn(mode=emacs)c
+Fo(test)32 b(describ)s(ed)d(ab)s(o)m(v)m(e:)1350 1579
+y Fn($if)47 b(editing-mode)d(==)k(emacs)1350 1689 y(set)f
+(show-mode-in-prompt)42 b(on)1350 1798 y($endif)150 1958
+y($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 2117 y Fn($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 2276 y Fn($include)96 b Fo(This)27 b(directiv)m(e)i
+(tak)m(es)g(a)f(single)g(\014lename)g(as)g(an)g(argumen)m(t)g(and)f
+(reads)g(commands)h(and)630 2386 y(k)m(ey)40 b(bindings)f(from)g(that)h
+(\014le.)68 b(F)-8 b(or)40 b(example,)j(the)d(follo)m(wing)h(directiv)m
+(e)g(reads)e(from)630 2496 y Fn(/etc/inputrc)p Fo(:)870
+2630 y Fn($include)46 b(/etc/inputrc)150 2829 y Fd(1.3.3)63
+b(Sample)41 b(Init)g(File)150 2976 y Fo(Here)27 b(is)f(an)h(example)g
+(of)f(an)h Ff(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
+3086 y(conditional)j(syn)m(tax.)p eop end
+%%Page: 16 19
+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 408 y Fn(#)47
+b(This)g(file)g(controls)e(the)i(behavior)f(of)h(line)g(input)f
+(editing)g(for)390 518 y(#)h(programs)f(that)h(use)g(the)f(GNU)h
 (Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include)
 g(FTP,)g(Bash,)h(and)g(GDB.)390 737 y(#)390 847 y(#)g(You)g(can)g
 (re-read)f(the)h(inputrc)f(file)g(with)h(C-x)g(C-r.)390
@@ -6338,9 +6449,9 @@ h(function)f(name)g(is)h(ignored)p 3970 2401 42 76 v
 4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode)
 390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390
 5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end
-%%Page: 16 19
-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(#"\\M-\\C-[A":)331
+%%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)390 299 y Fn(#"\\M-\\C-[A":)331
 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390
 628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066
 y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the)
@@ -6373,571 +6484,633 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
 g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user)
 g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g
 (completion-query-items)42 b(150)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)390 299 y Fn(#)47
+%%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)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 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
+847 y($endif)150 1072 y Fm(1.4)68 b(Bindable)45 b(Readline)i(Commands)
+150 1231 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 1358 y(names)30 b(without)h(an)f(accompan)m(ying)i(k)m
+b(Command)150 1341 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
-1493 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Fe(p)s(oin)m(t)h
+1467 y(In)25 b(the)h(follo)m(wing)i(descriptions,)f Ff(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 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
-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
-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
-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 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-display)c
-(\(M-C-l\))630 5230 y Fo(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s
+Ff(mark)31 b Fo(refers)150 1577 y(to)24 b(a)g(cursor)f(p)s(osition)g
+(sa)m(v)m(ed)i(b)m(y)e(the)h Fn(set-mark)d Fo(command.)38
+b(The)23 b(text)h(b)s(et)m(w)m(een)g(the)g(p)s(oin)m(t)f(and)g(mark)150
+1686 y(is)31 b(referred)g(to)h(as)f(the)h Ff(region)p
+Fo(.)44 b(Readline)32 b(has)f(the)h(concept)g(of)f(an)h
+Fe(active)h(r)-5 b(e)g(gion)7 b Fo(:)44 b(when)30 b(the)h(region)150
+1796 y(is)k(activ)m(e,)k(Readline)c(redispla)m(y)h(highligh)m(ts)f(the)
+h(region)f(using)g(the)g(v)-5 b(alue)35 b(of)h(the)f
+Fn(active-region-)150 1906 y(start-color)26 b Fo(v)-5
+b(ariable.)41 b(The)29 b Fn(enable-active-region)24 b
+Fo(v)-5 b(ariable)30 b(turns)d(this)j(on)f(and)f(o\013.)41
+b(Sev)m(eral)150 2015 y(commands)30 b(set)h(the)f(region)h(to)h(activ)m
+(e;)g(those)f(are)g(noted)g(b)s(elo)m(w.)150 2199 y Fd(1.4.1)63
+b(Commands)42 b(F)-10 b(or)41 b(Mo)m(ving)150 2363 y
+Fn(beginning-of-line)26 b(\(C-a\))630 2472 y Fo(Mo)m(v)m(e)k(to)e(the)g
+(start)g(of)f(the)h(curren)m(t)f(line.)40 b(This)27 b(ma)m(y)h(also)h
+(b)s(e)e(b)s(ound)e(to)j(the)g(Home)g(k)m(ey)630 2582
+y(on)i(some)h(k)m(eyb)s(oards.)150 2725 y Fn(end-of-line)c(\(C-e\))630
+2835 y Fo(Mo)m(v)m(e)34 b(to)f(the)f(end)f(of)i(the)f(line.)46
+b(This)31 b(ma)m(y)i(also)g(b)s(e)e(b)s(ound)f(to)j(the)f(End)f(k)m(ey)
+i(on)f(some)630 2944 y(k)m(eyb)s(oards.)150 3088 y Fn(forward-char)27
+b(\(C-f\))630 3198 y Fo(Mo)m(v)m(e)35 b(forw)m(ard)d(a)i(c)m(haracter.)
+50 b(This)32 b(ma)m(y)i(also)g(b)s(e)e(b)s(ound)f(to)i(the)h(righ)m(t)f
+(arro)m(w)g(k)m(ey)h(on)630 3307 y(some)d(k)m(eyb)s(oards.)150
+3451 y Fn(backward-char)c(\(C-b\))630 3560 y Fo(Mo)m(v)m(e)32
+b(bac)m(k)f(a)g(c)m(haracter.)42 b(This)29 b(ma)m(y)i(also)g(b)s(e)e(b)
+s(ound)f(to)j(the)g(left)f(arro)m(w)h(k)m(ey)g(on)f(some)630
+3670 y(k)m(eyb)s(oards.)150 3813 y Fn(forward-word)d(\(M-f\))630
+3923 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 4033 y(digits.)150 4176 y Fn(backward-word)27
+b(\(M-b\))630 4286 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 4395 y(of)d(letters)g(and)f
+(digits.)150 4539 y Fn(previous-screen-line)25 b(\(\))630
+4648 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
+4758 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 4868 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 4977 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i
+(screen)f(width.)150 5121 y Fn(next-screen-line)c(\(\))630
+5230 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
+5340 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)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)630 299 y(not)27
+b(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
+408 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 556 y Fn(clear-display)c
+(\(M-C-l\))630 665 y Fo(Clear)33 b(the)g(screen)g(and,)h(if)e(p)s
 (ossible,)i(the)f(terminal's)g(scrollbac)m(k)i(bu\013er,)e(then)f
-(redra)m(w)630 5340 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e
-(curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)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)150 299 y Fn(clear-screen)27
-b(\(C-l\))630 408 y Fo(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g
-(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g
-(the)630 518 y(top)c(of)f(the)h(screen.)150 665 y Fn
-(redraw-current-line)25 b(\(\))630 775 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 962 y Fd(1.4.2)63 b(Commands)42 b(F)-10 b(or)41
-b(Manipulating)h(The)f(History)150 1128 y Fn(accept-line)27
-b(\(Newline)h(or)i(Return\))630 1237 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
-1347 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 1457 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 1604 y Fn(previous-history)26 b(\(C-p\))630
-1713 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 1861 y Fn(next-history)d
-(\(C-n\))630 1970 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
-2117 y Fn(beginning-of-history)25 b(\(M-<\))630 2227
+(redra)m(w)630 775 y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e
+(curren)m(t)h(line)f(at)h(the)g(top)g(of)f(the)h(screen.)150
+922 y Fn(clear-screen)c(\(C-l\))630 1032 y Fo(Clear)35
+b(the)f(screen,)i(then)e(redra)m(w)g(the)h(curren)m(t)f(line,)i(lea)m
+(ving)g(the)f(curren)m(t)f(line)h(at)g(the)630 1141 y(top)e(of)h(the)f
+(screen.)49 b(If)33 b(giv)m(en)h(a)g(n)m(umeric)f(argumen)m(t,)i(this)e
+(refreshes)f(the)i(curren)m(t)f(line)630 1251 y(without)d(clearing)i
+(the)f(screen.)150 1398 y Fn(redraw-current-line)25 b(\(\))630
+1508 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 1695 y Fd(1.4.2)63
+b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f(History)150
+1861 y Fn(accept-line)27 b(\(Newline)h(or)i(Return\))630
+1970 y Fo(Accept)h(the)g(line)f(regardless)h(of)f(where)g(the)g(cursor)
+f(is.)41 b(If)30 b(this)g(line)g(is)h(non-empt)m(y)-8
+b(,)31 b(y)m(ou)630 2080 y(can)36 b(add)f(it)i(to)f(the)g(history)g
+(list)h(using)e Fn(add_history\(\))p Fo(.)54 b(If)35
+b(this)h(line)g(is)g(a)g(mo)s(di\014ed)630 2189 y(history)30
+b(line,)h(then)f(restore)h(the)g(history)f(line)h(to)g(its)g(original)g
+(state.)150 2337 y Fn(previous-history)26 b(\(C-p\))630
+2446 y Fo(Mo)m(v)m(e)h(`bac)m(k')f(through)f(the)g(history)g(list,)i
+(fetc)m(hing)f(the)f(previous)f(command.)39 b(This)24
+b(ma)m(y)630 2556 y(also)31 b(b)s(e)f(b)s(ound)e(to)j(the)g(up)e(arro)m
+(w)i(k)m(ey)g(on)f(some)h(k)m(eyb)s(oards.)150 2703 y
+Fn(next-history)c(\(C-n\))630 2813 y Fo(Mo)m(v)m(e)k(`forw)m(ard')d
+(through)g(the)h(history)f(list,)i(fetc)m(hing)f(the)g(next)g(command.)
+40 b(This)27 b(ma)m(y)630 2922 y(also)k(b)s(e)f(b)s(ound)e(to)j(the)g
+(do)m(wn)f(arro)m(w)g(k)m(ey)i(on)e(some)h(k)m(eyb)s(oards.)150
+3069 y Fn(beginning-of-history)25 b(\(M-<\))630 3179
 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 2374 y Fn(end-of-history)26 b(\(M->\))630 2484
+b(.)150 3326 y Fn(end-of-history)26 b(\(M->\))630 3436
 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
-2631 y Fn(reverse-search-history)24 b(\(C-r\))630 2741
+3583 y Fn(reverse-search-history)24 b(\(C-r\))630 3693
 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
-2850 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f
+3802 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f
 (incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f
-(region)630 2960 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5
-b(ates)33 b(the)d(mark.)150 3107 y Fn(forward-search-history)24
-b(\(C-s\))630 3217 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+(region)630 3912 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5
+b(ates)33 b(the)d(region.)150 4059 y Fn(forward-search-history)24
+b(\(C-s\))630 4169 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 3326 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38
+630 4278 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38
 b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37
-b(command)h(sets)h(the)630 3436 y(region)31 b(to)g(the)g(matc)m(hed)g
-(text)g(and)f(activ)-5 b(ates)33 b(the)d(mark.)150 3583
-y Fn(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-p\))630 3693 y Fo(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
+b(command)h(sets)h(the)630 4388 y(region)31 b(to)g(the)g(matc)m(hed)g
+(text)g(and)f(activ)-5 b(ates)33 b(the)d(region.)150
+4535 y Fn(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-p\))630 4645 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 3802 y(tory)36 b(as)g(necessary)h(using)e(a)i(non-incremen)m
+(his-)630 4754 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
-3912 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 4059 y Fn
+4864 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 5011 y Fn
 (non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-n\))630 4169 y Fo(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+b(\(M-n\))630 5121 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 4278 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
+630 5230 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
-4388 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 4535 y Fn
-(history-search-forward)24 b(\(\))630 4645 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 4754 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
-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 4974 y(command)d(is)h(un)m(b)s(ound.)150
-5121 y Fn(history-search-backward)24 b(\(\))630 5230
-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
-5340 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)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)630 299 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 408 y(command)d(is)h(un)m
-(b)s(ound.)150 566 y Fn(history-substring-search)o(-for)o(ward)24
-b(\(\))630 676 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 785 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 895 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 1005 y(is)e(un)m(b)s(ound.)150
-1162 y Fn(history-substring-search)o(-bac)o(kwar)o(d)24
-b(\(\))630 1272 y Fo(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h
+5340 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.)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
+(history-search-backward)24 b(\(\))630 408 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 518 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
+628 y(b)s(eginning)44 b(of)g(a)h(history)g(line.)83 b(This)44
+b(is)g(a)h(non-incremen)m(tal)h(searc)m(h.)84 b(By)44
+b(default,)630 737 y(this)32 b(command)h(is)f(un)m(b)s(ound,)f(but)h
+(ma)m(y)h(b)s(e)f(b)s(ound)e(to)j(the)g(P)m(age)h(Do)m(wn)f(k)m(ey)g
+(on)g(some)630 847 y(k)m(eyb)s(oards.)150 1029 y Fn
+(history-search-forward)24 b(\(\))630 1139 y Fo(Searc)m(h)f(forw)m(ard)
+e(through)h(the)h(history)f(for)g(the)g(string)h(of)f(c)m(haracters)i
+(b)s(et)m(w)m(een)f(the)f(start)630 1249 y(of)g(the)h(curren)m(t)f
+(line)g(and)g(the)g(p)s(oin)m(t.)38 b(The)22 b(searc)m(h)g(string)g(m)m
+(ust)g(matc)m(h)h(at)g(the)g(b)s(eginning)630 1358 y(of)33
+b(a)g(history)f(line.)48 b(This)32 b(is)h(a)g(non-incremen)m(tal)h
+(searc)m(h.)48 b(By)33 b(default,)h(this)e(command)630
+1468 y(is)e(un)m(b)s(ound,)e(but)i(ma)m(y)h(b)s(e)f(b)s(ound)e(to)j
+(the)g(P)m(age)h(Up)e(k)m(ey)h(on)f(some)h(k)m(eyb)s(oards.)150
+1650 y Fn(history-substring-search)o(-bac)o(kwar)o(d)24
+b(\(\))630 1760 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 1381 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h
+(the)630 1870 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 1491 y(in)i(a)h(history)g(line.)47 b(This)32
+(an)m(ywhere)630 1979 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 1601 y(is)e(un)m(b)s(ound.)150
-1758 y Fn(yank-nth-arg)d(\(M-C-y\))630 1868 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 1978 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 2087 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
-2197 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
-2306 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
-2416 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 2574 y Fn(yank-last-arg)d(\(M-.)i(or)h
-(M-_\))630 2683 y Fo(Insert)k(last)i(argumen)m(t)g(to)g(the)f(previous)
+b(default,)h(this)e(command)630 2089 y(is)e(un)m(b)s(ound.)150
+2271 y Fn(history-substring-search)o(-for)o(ward)24 b(\(\))630
+2381 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
+2491 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 2600 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 2710 y(is)e(un)m(b)s(ound.)150 2892 y Fn(yank-nth-arg)d
+(\(M-C-y\))630 3002 y Fo(Insert)e(the)i(\014rst)e(argumen)m(t)h(to)h
+(the)f(previous)g(command)f(\(usually)h(the)g(second)g(w)m(ord)g(on)630
+3112 y(the)k(previous)g(line\))g(at)h(p)s(oin)m(t.)40
+b(With)31 b(an)f(argumen)m(t)g Ff(n)p Fo(,)g(insert)f(the)i
+Ff(n)p Fo(th)e(w)m(ord)g(from)h(the)630 3221 y(previous)c(command)h
+(\(the)h(w)m(ords)e(in)h(the)g(previous)f(command)h(b)s(egin)f(with)h
+(w)m(ord)g(0\).)40 b(A)630 3331 y(negativ)m(e)28 b(argumen)m(t)e
+(inserts)f(the)h Ff(n)p Fo(th)f(w)m(ord)g(from)g(the)h(end)f(of)h(the)g
+(previous)f(command.)630 3440 y(Once)32 b(the)f(argumen)m(t)h
+Ff(n)f Fo(is)h(computed,)g(this)f(uses)h(the)f(history)h(expansion)f
+(facilities)j(to)630 3550 y(extract)e(the)e Ff(n)p Fo(th)g(w)m(ord,)g
+(as)h(if)f(the)h(`)p Fn(!)p Fg(n)p Fo(')f(history)g(expansion)h(had)e
+(b)s(een)h(sp)s(eci\014ed.)150 3733 y Fn(yank-last-arg)d(\(M-.)i(or)h
+(M-_\))630 3842 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
-2793 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+3952 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 2902 y(Successiv)m(e)26 b(calls)g(to)f Fn(yank-last-arg)c
+Fo(.)630 4061 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 3012 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+(inserting)630 4171 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 3122 y(in)36 b(turn.)58 b(An)m(y)36
+(of)f(eac)m(h)h(line)630 4281 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 3231 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(calls)h(determines)630 4390 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 3341 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 3450 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 3560 y(sp)s(eci\014ed.)150 3718 y
-Fn(operate-and-get-next)e(\(C-o\))630 3827 y Fo(Accept)30
-b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g
-(application)h(as)e(if)g(a)h(newline)f(had)630 3937 y(b)s(een)22
-b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f
-(the)f(curren)m(t)g(line)h(from)f(the)g(history)630 4046
-y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f
-(supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630
-4156 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 4314
-y Fn(fetch-history)d(\(\))630 4423 y Fo(With)e(a)f(n)m(umeric)g
-(argumen)m(t,)i(fetc)m(h)f(that)g(en)m(try)f(from)g(the)g(history)g
-(list)h(and)e(mak)m(e)i(it)g(the)630 4533 y(curren)m(t)30
-b(line.)41 b(Without)30 b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g
-(to)f(the)g(\014rst)f(en)m(try)h(in)g(the)g(history)630
-4643 y(list.)150 4840 y Fd(1.4.3)63 b(Commands)42 b(F)-10
-b(or)41 b(Changing)g(T)-10 b(ext)150 5011 y Fg(end-of-file)27
-b Fn(\(usually)h(C-d\))630 5121 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 5230
-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
-5340 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(.)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(delete-char)27
-b(\(C-d\))630 408 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 518 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 669 y Fn(backward-delete-char)25 b(\(Rubout\))630
-779 y Fo(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
+(switc)m(hes)h(the)630 4500 y(direction)23 b(through)e(the)i(history)f
+(\(bac)m(k)h(or)g(forw)m(ard\).)37 b(This)22 b(uses)g(the)g(history)g
+(expansion)630 4609 y(facilities)44 b(to)e(extract)g(the)g(last)g(w)m
+(ord,)i(as)e(if)f(the)g(`)p Fn(!$)p Fo(')h(history)f(expansion)g(had)g
+(b)s(een)630 4719 y(sp)s(eci\014ed.)150 4902 y Fn(operate-and-get-next)
+25 b(\(C-o\))630 5011 y Fo(Accept)30 b(the)g(curren)m(t)e(line)i(for)f
+(return)f(to)h(the)h(calling)g(application)h(as)e(if)g(a)h(newline)f
+(had)630 5121 y(b)s(een)22 b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)
+g(line)h(relativ)m(e)h(to)f(the)f(curren)m(t)g(line)h(from)f(the)g
+(history)630 5230 y(for)31 b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)
+m(t,)i(if)f(supplied,)f(sp)s(eci\014es)h(the)g(history)f(en)m(try)i(to)
+f(use)630 5340 y(instead)g(of)f(the)h(curren)m(t)f(line.)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(fetch-history)27
+b(\(\))630 408 y Fo(With)e(a)f(n)m(umeric)g(argumen)m(t,)i(fetc)m(h)f
+(that)g(en)m(try)f(from)g(the)g(history)g(list)h(and)e(mak)m(e)i(it)g
+(the)630 518 y(curren)m(t)30 b(line.)41 b(Without)30
+b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g(to)f(the)g(\014rst)f(en)m
+(try)h(in)g(the)g(history)630 628 y(list.)150 835 y Fd(1.4.3)63
+b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10 b(ext)150
+1011 y Fg(end-of-file)27 b Fn(\(usually)h(C-d\))630 1121
+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
+1230 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
+1340 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
+1507 y Fn(delete-char)e(\(C-d\))630 1617 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 1727
+y(as)i(the)f(tt)m(y)i Fh(eof)e Fo(c)m(haracter,)j(as)e
+Fg(C-d)e Fo(commonly)j(is,)f(see)g(ab)s(o)m(v)m(e)h(for)e(the)h
+(e\013ects.)55 b(This)630 1836 y(ma)m(y)31 b(also)g(b)s(e)f(b)s(ound)e
+(to)j(the)g(Delete)i(k)m(ey)e(on)f(some)h(k)m(eyb)s(oards.)150
+2004 y Fn(backward-delete-char)25 b(\(Rubout\))630 2113
+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
-889 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
-1040 y Fn(forward-backward-delete-)o(char)24 b(\(\))630
-1149 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
-1259 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
-1369 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
-1520 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1630
+2223 y(c)m(haracters,)h(sa)m(ving)f(them)g(on)f(the)h(kill)g(ring,)f
+(instead)h(of)f(deleting)i(them.)150 2391 y Fn
+(forward-backward-delete-)o(char)24 b(\(\))630 2500 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 2610
+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
+2719 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+2887 y Fn(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2997
 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
-1739 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)150
-1891 y Fn(tab-insert)e(\(M-TAB\))630 2000 y Fo(Insert)i(a)h(tab)f(c)m
-(haracter.)150 2151 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
-(\))630 2261 y Fo(Insert)g(y)m(ourself.)150 2412 y Fn
-(bracketed-paste-begin)25 b(\(\))630 2522 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
-2632 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 2741 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
-2851 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
-2960 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
-3070 y(commands.)630 3200 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h
-(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and)
-g(the)g(mark\))630 3310 y(to)j(the)g(inserted)f(text.)65
-b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Ff(active)i(mark)10
-b Fo(:)57 b(when)38 b(the)g(mark)630 3420 y(is)d(activ)m(e,)k(Readline)
-c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i
-(denote)g(the)630 3529 y(region.)150 3680 y Fn(transpose-chars)26
-b(\(C-t\))630 3790 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 3900 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 4009 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 4119 y(ha)m(v)m(e)32
-b(no)e(e\013ect.)150 4270 y Fn(transpose-words)c(\(M-t\))630
-4380 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 4489 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 4599 y(last)j(t)m(w)m(o)h(w)m
-(ords)e(on)g(the)h(line.)150 4750 y Fn(upcase-word)c(\(M-u\))630
-4860 y Fo(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
+3106 y(sequences)d(lik)m(e)g Fg(C-q)p Fo(,)f(for)g(example.)150
+3274 y Fn(tab-insert)e(\(M-TAB\))630 3383 y Fo(Insert)i(a)h(tab)f(c)m
+(haracter.)150 3551 y Fn(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o
+(\))630 3661 y Fo(Insert)g(the)g(c)m(haracter)i(t)m(yp)s(ed.)150
+3828 y Fn(bracketed-paste-begin)25 b(\(\))630 3938 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 4047 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 4157 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 4267 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 4376 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 4486 y(commands.)630 4624 y(Brac)m(k)m(eted)38 b(paste)f(sets)f
+(the)h(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)
+f(and)g(the)g(mark\))630 4734 y(to)31 b(the)g(inserted)f(text.)42
+b(It)30 b(sets)h(the)f Fe(active)j(r)-5 b(e)g(gion)p
+Fo(.)150 4902 y Fn(transpose-chars)26 b(\(C-t\))630 5011
+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
+5121 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 5230 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 5340 y(ha)m(v)m(e)32 b(no)e(e\013ect.)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 Fn(transpose-words)26
+b(\(M-t\))630 408 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 518 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 628 y(last)j(t)m(w)m(o)h
+(w)m(ords)e(on)g(the)h(line.)150 797 y Fn(upcase-word)c(\(M-u\))630
+907 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
-4969 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 5121 y Fn(downcase-word)d(\(M-l\))630
-5230 y Fo(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+1016 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 1186 y Fn(downcase-word)d(\(M-l\))630
+1296 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 5340 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.)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(capitalize-word)26
-b(\(M-c\))630 408 y Fo(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+(ercase)630 1405 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 1575 y Fn(capitalize-word)26
+b(\(M-c\))630 1684 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 518 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 678 y Fn(overwrite-mode)26
-b(\(\))630 788 y Fo(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+(capitalize)630 1794 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 1964 y Fn(overwrite-mode)26
+b(\(\))630 2073 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 897 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+h(switc)m(hes)630 2183 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 1007 y(insert)30 b(mo)s(de.)41
+(t,)i(switc)m(hes)e(to)630 2292 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 1116
+Fn(vi)f Fo(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 2402
 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
-1251 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
+2541 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
-1361 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
+2651 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
-1470 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 1605
-y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
-1805 y Fd(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
-1977 y Fn(kill-line)28 b(\(C-k\))630 2087 y Fo(Kill)k(the)f(text)i
-(from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44
-b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630
-2197 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h
-(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150
-2357 y Fn(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
-2466 y Fo(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g
-(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41
-b(a)630 2576 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50
-b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the)
-630 2685 y(curren)m(t)30 b(line.)150 2845 y Fn(unix-line-discard)c
-(\(C-u\))630 2955 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
-3115 y Fn(kill-whole-line)c(\(\))630 3225 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
-3334 y(this)30 b(is)h(un)m(b)s(ound.)150 3494 y Fn(kill-word)d(\(M-d\))
-630 3604 y Fo(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+2761 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 2900
+y(By)g(default,)g(this)g(command)f(is)h(un)m(b)s(ound,)d(but)i(ma)m(y)h
+(b)s(e)f(b)s(ound)e(to)k(the)f(Insert)f(k)m(ey)h(on)630
+3010 y(some)g(k)m(eyb)s(oards.)150 3219 y Fd(1.4.4)63
+b(Killing)42 b(And)e(Y)-10 b(anking)150 3396 y Fn(kill-line)28
+b(\(C-k\))630 3506 y Fo(Kill)e(the)h(text)g(from)e(p)s(oin)m(t)h(to)h
+(the)f(end)f(of)h(the)h(curren)m(t)e(line.)40 b(With)27
+b(a)f(negativ)m(e)i(n)m(umeric)630 3615 y(argumen)m(t,)j(kill)g(bac)m
+(kw)m(ard)g(from)f(the)g(cursor)g(to)h(the)g(b)s(eginning)e(of)i(the)g
+(line.)150 3785 y Fn(backward-kill-line)25 b(\(C-x)30
+b(Rubout\))630 3895 y Fo(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h
+(cursor)g(to)g(the)g(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70
+b(With)41 b(a)630 4004 y(negativ)m(e)31 b(n)m(umeric)e(argumen)m(t,)h
+(kill)g(forw)m(ard)f(from)f(the)i(cursor)e(to)i(the)f(end)g(of)g(the)g
+(line.)150 4174 y Fn(unix-line-discard)d(\(C-u\))630
+4283 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 4453
+y Fn(kill-whole-line)c(\(\))630 4562 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 4672 y(this)30
+b(is)h(un)m(b)s(ound.)150 4842 y Fn(kill-word)d(\(M-d\))630
+4951 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 3713 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+(the)g(end)630 5061 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 3874 y Fn(backward-kill-word)25 b(\(M-DEL\))630
-3983 y Fo(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+Fo(.)150 5230 y Fn(backward-kill-word)25 b(\(M-DEL\))630
+5340 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 4143 y Fn(shell-transpose-words)c
-(\(M-C-t\))630 4253 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 4362 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 4472 y(last)j(t)m(w)m(o)h
-(w)m(ords)d(on)i(the)f(line.)41 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h
-(the)h(same)f(as)h Fn(shell-forward-)630 4582 y(word)e
-Fo(and)h Fn(shell-backward-word)p Fo(.)150 4742 y Fn(unix-word-rubout)c
-(\(C-w\))630 4851 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 4961 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)
-f(kill-ring.)150 5121 y Fn(unix-filename-rubout)25 b(\(\))630
-5230 y Fo(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+Fn(backward-word)p Fo(.)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(unix-word-rubout)
+26 b(\(C-w\))630 408 y Fo(Kill)33 b(the)f(w)m(ord)g(b)s(ehind)f(p)s
+(oin)m(t,)i(using)f(white)g(space)h(as)f(a)h(w)m(ord)f(b)s(oundary)-8
+b(,)32 b(sa)m(ving)h(the)630 518 y(killed)e(text)g(on)g(the)f
+(kill-ring.)150 713 y Fn(unix-filename-rubout)25 b(\(\))630
+822 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
-5340 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.)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 Fn
-(delete-horizontal-space)24 b(\(\))630 408 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 564
-y Fn(kill-region)d(\(\))630 673 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 829 y Fn(copy-region-as-kill)25 b(\(\))630
-938 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 1048 y(By)31 b(default,)f(this)h(command)f(is)g(un)m
-(b)s(ound.)150 1203 y Fn(copy-backward-word)25 b(\(\))630
-1313 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 1422 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
-1578 y Fn(copy-forward-word)26 b(\(\))630 1687 y Fo(Cop)m(y)31
+932 y(w)m(ord)30 b(b)s(oundaries,)f(sa)m(ving)i(the)g(killed)g(text)g
+(on)g(the)f(kill-ring.)150 1126 y Fn(delete-horizontal-space)24
+b(\(\))630 1236 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
+1430 y Fn(kill-region)d(\(\))630 1540 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 1734 y Fn(copy-region-as-kill)25
+b(\(\))630 1844 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 1954 y(By)31 b(default,)f(this)h(command)
+f(is)g(un)m(b)s(ound.)150 2148 y Fn(copy-backward-word)25
+b(\(\))630 2258 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 2367 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
+2562 y Fn(copy-forward-word)26 b(\(\))630 2671 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
-1797 y(same)f(as)f Fn(forward-word)p Fo(.)38 b(By)30
+2781 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
-1952 y Fn(yank)f(\(C-y\))630 2062 y Fo(Y)-8 b(ank)31
+2975 y Fn(yank)f(\(C-y\))630 3085 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 2217 y Fn(yank-pop)d(\(M-y\))630 2327
+(p)s(oin)m(t.)150 3279 y Fn(yank-pop)d(\(M-y\))630 3389
 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
-2436 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p
-Fo(.)150 2631 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
-(ts)150 2801 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 2911 y Fo(Add)d(this)h(digit)g
+3499 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p
+Fo(.)150 3733 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 3922 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 4032 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 3020 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i
-(argumen)m(t.)150 3176 y Fn(universal-argument)25 b(\(\))630
-3285 y Fo(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
+(new)f(argumen)m(t.)630 4142 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 3395 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
+(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
-3505 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
+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
-3614 y Fo(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+4774 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
-3724 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
+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
-3833 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+4994 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
-3943 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+5103 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
-4053 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+5213 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
-4162 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 4357 y Fd(1.4.6)63
+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: 24 27
+TeXDict begin 24 26 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(24)150 299 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 4527 y Fn(complete)28 b(\(TAB\))630
-4637 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
-4746 y(p)s(erformed)29 b(is)h(application-sp)s(eci\014c.)42
+b(Y)-10 b(ou)150 468 y Fn(complete)28 b(\(TAB\))630 578
+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
+687 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
-4902 y Fn(possible-completions)25 b(\(M-?\))630 5011
-Fo(List)35 b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s
+841 y Fn(possible-completions)25 b(\(M-?\))630 951 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
-5121 y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i
+1061 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 5230 y Fn(completion-display-width)o
+b(alue)33 b(of)630 1170 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 5340 y(or)30 b(the)h(screen)f
-(width,)g(in)g(that)h(order.)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
-(insert-completions)25 b(\(M-*\))630 408 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 518
-y(b)m(y)g Fn(possible-completions)p Fo(.)150 673 y Fn(menu-complete)d
-(\(\))630 783 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 893 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
-1002 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
-1112 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
-1221 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 1331 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 1441 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 1550 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
-(y)i(default.)150 1705 y Fn(menu-complete-backward)24
-b(\(\))630 1815 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 1925 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
-2080 y Fn(delete-char-or-list)25 b(\(\))630 2190 y Fo(Deletes)41
+b(ariable)38 b Fn(COLUMNS)p Fo(,)630 1280 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 1434 y Fn(insert-completions)25
+b(\(M-*\))630 1544 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 1653 y(b)m(y)g Fn(possible-completions)p
+Fo(,)25 b(separated)31 b(b)m(y)f(a)h(space.)150 1807
+y Fn(menu-complete)c(\(\))630 1917 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 2026 y(from)41
+b(the)h(list)g(of)g(p)s(ossible)f(completions.)76 b(Rep)s(eatedly)42
+b(executing)h Fn(menu-complete)630 2136 y Fo(steps)28
+b(through)e(the)i(list)h(of)e(p)s(ossible)g(completions,)j(inserting)e
+(eac)m(h)g(matc)m(h)h(in)e(turn.)39 b(A)m(t)630 2246
+y(the)h(end)f(of)h(the)f(list)i(of)f(completions,)j Fn(menu-complete)36
+b Fo(rings)j(the)h(b)s(ell)f(\(sub)5 b(ject)40 b(to)630
+2355 y(the)d(setting)h(of)e Fn(bell-style)p Fo(\))e(and)i(restores)h
+(the)g(original)h(text.)60 b(An)37 b(argumen)m(t)g(of)f
+Ff(n)630 2465 y Fo(mo)m(v)m(es)i Ff(n)e Fo(p)s(ositions)g(forw)m(ard)g
+(in)g(the)h(list)g(of)f(matc)m(hes;)41 b(a)c(negativ)m(e)i(argumen)m(t)
+e(mo)m(v)m(es)630 2574 y(bac)m(kw)m(ard)29 b(through)f(the)h(list.)41
+b(This)28 b(command)g(is)h(in)m(tended)g(to)g(b)s(e)f(b)s(ound)f(to)i
+Fn(TAB)p Fo(,)g(but)630 2684 y(is)h(un)m(b)s(ound)e(b)m(y)i(default.)
+150 2838 y Fn(menu-complete-backward)24 b(\(\))630 2948
+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
+3057 y(completions,)j(as)e(if)g Fn(menu-complete)c Fo(had)j(b)s(een)h
+(giv)m(en)g(a)g(negativ)m(e)i(argumen)m(t.)58 b(This)630
+3167 y(command)30 b(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150
+3321 y Fn(export-completions)25 b(\(\))630 3431 y Fo(P)m(erform)43
+b(completion)h(on)e(the)h(w)m(ord)g(b)s(efore)f(p)s(oin)m(t)h(as)g
+(describ)s(ed)f(ab)s(o)m(v)m(e)i(and)e(write)630 3540
+y(the)28 b(list)h(of)f(p)s(ossible)f(completions)j(to)e(Readline's)h
+(output)f(stream)g(using)f(the)h(follo)m(wing)630 3650
+y(format,)j(writing)f(information)h(on)f(separate)i(lines:)705
+3782 y Fl(\017)60 b Fo(the)31 b(n)m(um)m(b)s(er)e(of)h(matc)m(hes)i
+Ff(N)10 b Fo(;)705 3914 y Fl(\017)60 b Fo(the)31 b(w)m(ord)f(b)s(eing)g
+(completed;)705 4045 y Fl(\017)60 b Ff(S)5 b Fo(:)p Ff(E)p
+Fo(,)24 b(where)e Ff(S)27 b Fo(and)22 b Ff(E)28 b Fo(are)23
+b(the)f(start)h(and)f(end)g(o\013sets)h(of)g(the)f(w)m(ord)h(in)f(the)g
+(Readline)810 4155 y(line)31 b(bu\013er;)e(then)705 4287
+y Fl(\017)60 b Fo(eac)m(h)32 b(matc)m(h,)f(one)g(p)s(er)e(line)630
+4441 y(If)j(there)h(are)g(no)f(matc)m(hes,)j(the)e(\014rst)e(line)i
+(will)g(b)s(e)f(\\0",)j(and)d(this)g(command)g(do)s(es)h(not)630
+4551 y(prin)m(t)42 b(an)m(y)h(output)e(after)i(the)g
+Ff(S)5 b Fo(:)p Ff(E)p Fo(.)76 b(If)42 b(there)g(is)h(only)f(a)h
+(single)g(matc)m(h,)j(this)c(prin)m(ts)630 4660 y(a)f(single)g(line)g
+(con)m(taining)h(it.)72 b(If)40 b(there)h(is)f(more)h(than)f(one)h
+(matc)m(h,)j(this)d(prin)m(ts)f(the)630 4770 y(common)31
+b(pre\014x)f(of)g(the)h(matc)m(hes,)h(whic)m(h)f(ma)m(y)g(b)s(e)f(empt)
+m(y)-8 b(,)32 b(on)f(the)g(\014rst)e(line)j(after)f(the)630
+4879 y Ff(S)5 b Fo(:)p Ff(E)p Fo(,)28 b(then)e(the)i(matc)m(hes)g(on)f
+(subsequen)m(t)f(lines.)40 b(In)26 b(this)h(case,)i Ff(N)37
+b Fo(will)27 b(include)g(the)g(\014rst)630 4989 y(line)k(with)f(the)g
+(common)h(pre\014x.)630 5121 y(The)41 b(user)g(or)g(application)i
+(should)d(b)s(e)h(able)h(to)g(accommo)s(date)h(the)f(p)s(ossibilit)m(y)
+g(of)g(a)630 5230 y(blank)25 b(line.)39 b(The)25 b(in)m(ten)m(t)i(is)e
+(that)h(the)g(user)e(or)i(application)g(reads)f Ff(N)36
+b Fo(lines)25 b(after)h(the)g(line)630 5340 y(con)m(taining)j
+Ff(S)5 b Fo(:)p Ff(E)33 b Fo(to)28 b(obtain)g(the)g(matc)m(h)g(list.)41
+b(This)26 b(command)i(is)f(un)m(b)s(ound)e(b)m(y)i(default.)p
+eop end
+%%Page: 25 28
+TeXDict begin 25 27 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(25)150 299 y Fn
+(delete-char-or-list)25 b(\(\))630 408 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 2299 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 2409
-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 2604 y Fd(1.4.7)63 b(Keyb)s(oard)41
-b(Macros)150 2774 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630
-2883 y Fo(Begin)i(sa)m(ving)h(the)e(c)m(haracters)i(t)m(yp)s(ed)e(in)m
+(eginning)e(or)h(end)f(of)h(the)630 518 y(line)49 b(\(lik)m(e)g
+Fn(delete-char)p Fo(\).)92 b(A)m(t)49 b(the)f(end)g(of)g(the)g(line,)54
+b(it)48 b(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)630
+628 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 813 y Fd(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 978 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630
+1088 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
-3039 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 3148 y Fo(Stop)e(sa)m(ving)h
+1233 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 1343 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 3258
-y(de\014nition.)150 3413 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630
-3523 y Fo(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)f(macro)h
+(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i(the)630 1452
+y(de\014nition.)150 1598 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630
+1707 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
-3632 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 3788 y Fn(print-last-kbd-macro)25 b(\(\))630
-3897 y Fo(Prin)m(t)30 b(the)g(last)h(k)m(eyb)s(oard)f(macro)h
+1817 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 1962 y Fn(print-last-kbd-macro)25 b(\(\))630
+2072 y Fo(Prin)m(t)30 b(the)g(last)h(k)m(eyb)s(oard)f(macro)h
 (de\014ned)e(in)h(a)g(format)h(suitable)g(for)f(the)g
-Fe(inputrc)35 b Fo(\014le.)150 4092 y Fd(1.4.8)63 b(Some)41
-b(Miscellaneous)i(Commands)150 4262 y Fn(re-read-init-file)26
-b(\(C-x)j(C-r\))630 4372 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 4481 y(assignmen)m(ts)31
-b(found)e(there.)150 4637 y Fn(abort)g(\(C-g\))630 4746
+Ff(inputrc)35 b Fo(\014le.)150 2257 y Fd(1.4.8)63 b(Some)41
+b(Miscellaneous)i(Commands)150 2422 y Fn(re-read-init-file)26
+b(\(C-x)j(C-r\))630 2532 y Fo(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)
+f(the)g Ff(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 2642 y(assignmen)m(ts)31
+b(found)e(there.)150 2787 y Fn(abort)g(\(C-g\))630 2897
 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
-4856 y(setting)j(of)g Fn(bell-style)p Fo(\).)150 5011
+3006 y(setting)j(of)g Fn(bell-style)p Fo(\).)150 3152
 y Fn(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fg(x)p
-Fn(,)g(...)o(\))630 5121 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 5230 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w)
+Fn(,)g(...)o(\))630 3261 y Fo(If)35 b(the)g(meta\014ed)g(c)m(haracter)i
+Ff(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 3371 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 5340 y Fe(x)37 b Fo(is)30 b(already)h(lo)m(w)m
-(er)h(case.)p eop end
-%%Page: 24 27
-TeXDict begin 24 26 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fn(prefix-meta)27
-b(\(ESC\))630 408 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 518 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 704 y Fn(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630
-814 y Fo(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s(ered)f(for)g
-(eac)m(h)i(line.)150 1000 y Fn(revert-line)27 b(\(M-r\))630
-1110 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 1219 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f
-(b)s(eginning.)150 1406 y Fn(tilde-expand)d(\(M-~\))630
-1515 y Fo(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
-(ord.)150 1702 y Fn(set-mark)d(\(C-@\))630 1811 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
-1921 y(to)f(that)g(p)s(osition.)150 2107 y Fn(exchange-point-and-mark)
-24 b(\(C-x)29 b(C-x\))630 2217 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 2326 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
-2513 y Fn(character-search)26 b(\(C-]\))630 2622 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 2732 y(A)30
-b(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
-(ccurrences.)150 2918 y Fn(character-search-backwar)o(d)24
-b(\(M-C-]\))630 3028 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 3137 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(argumen)m(t)f
-(searc)m(hes)g(for)g(subsequen)m(t)e(o)s(ccurrences.)150
-3324 y Fn(skip-csi-sequence)d(\(\))630 3433 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 3543 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 3652 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 3762 y(ducing)29
-b(suc)m(h)g(sequences)g(will)h(ha)m(v)m(e)h(no)e(e\013ect)i(unless)d
-(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630 3871 y(command,)j
-(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 3981 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
-4167 y Fn(insert-comment)26 b(\(M-#\))630 4277 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 4387 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,)630 4496 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 4606 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 4715
-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 4825
-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 5011 y Fn(dump-functions)d
-(\(\))630 5121 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
-5230 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(unde\014ned)e(if)630 3481 y Ff(x)37 b Fo(is)30 b(already)h(lo)m(w)m
+(er)h(case.)150 3626 y Fn(prefix-meta)27 b(\(ESC\))630
+3736 y Fo(Metafy)32 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)40
+b(T)m(yping)30 b(`)p Fn(ESC)g(f)p Fo(')g(is)h(equiv)-5
+b(alen)m(t)31 b(to)h(t)m(yping)e Fg(M-f)p Fo(.)150 3881
+y Fn(undo)f(\(C-_)g(or)h(C-x)g(C-u\))630 3991 y Fo(Incremen)m(tal)h
+(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
+4136 y Fn(revert-line)27 b(\(M-r\))630 4246 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
+4355 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(initial)i
+(state.)150 4501 y Fn(tilde-expand)27 b(\(M-~\))630 4611
+y Fo(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)
+150 4756 y Fn(set-mark)d(\(C-@\))630 4866 y Fo(Set)k(the)g(mark)f(to)h
+(the)g(p)s(oin)m(t.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
+(supplied,)f(set)h(the)g(mark)f(to)630 4975 y(that)g(p)s(osition.)150
+5121 y Fn(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+5230 y Fo(Sw)m(ap)38 b(the)g(p)s(oin)m(t)h(with)f(the)g(mark.)65
+b(Set)38 b(the)h(curren)m(t)f(cursor)g(p)s(osition)g(to)h(the)g(sa)m(v)
+m(ed)630 5340 y(p)s(osition,)31 b(then)f(set)h(the)f(mark)g(to)h(the)g
+(old)g(cursor)e(p)s(osition.)p eop end
+%%Page: 26 29
+TeXDict begin 26 28 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(26)150 299 y Fn(character-search)
+26 b(\(C-]\))630 408 y Fo(Read)33 b(a)h(c)m(haracter)g(and)e(mo)m(v)m
+(e)j(p)s(oin)m(t)e(to)h(the)f(next)g(o)s(ccurrence)g(of)g(that)h(c)m
+(haracter.)50 b(A)630 518 y(negativ)m(e)33 b(argumen)m(t)d(searc)m(hes)
+i(for)e(previous)g(o)s(ccurrences.)150 687 y Fn
+(character-search-backwar)o(d)24 b(\(M-C-]\))630 796
+y Fo(Read)30 b(a)g(c)m(haracter)h(and)e(mo)m(v)m(e)i(p)s(oin)m(t)e(to)i
+(the)e(previous)g(o)s(ccurrence)h(of)g(that)g(c)m(haracter.)630
+906 y(A)g(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(subsequen)m
+(t)g(o)s(ccurrences.)150 1074 y Fn(skip-csi-sequence)c(\(\))630
+1184 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
+1293 y(for)i(k)m(eys)g(lik)m(e)h(Home)g(and)e(End.)39
+b(CSI)29 b(sequences)h(b)s(egin)f(with)h(a)g(Con)m(trol)h(Sequence)e
+(In-)630 1403 y(dicator)e(\(CSI\),)f(usually)f Fg(ESC)30
+b([)p Fo(.)38 b(If)26 b(this)g(sequence)g(is)g(b)s(ound)d(to)k
+Fn("\\)p Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro)s(ducing)630
+1513 y(CSI)33 b(sequences)h(ha)m(v)m(e)h(no)f(e\013ect)h(unless)e
+(explicitly)j(b)s(ound)c(to)i(a)g(Readline)h(command,)630
+1622 y(instead)27 b(of)f(inserting)h(stra)m(y)f(c)m(haracters)i(in)m
+(to)g(the)e(editing)h(bu\013er.)38 b(This)26 b(is)g(un)m(b)s(ound)e(b)m
+(y)630 1732 y(default,)31 b(but)e(usually)i(b)s(ound)d(to)j
+Fg(ESC)e([)p Fo(.)150 1900 y Fn(insert-comment)d(\(M-#\))630
+2010 y Fo(Without)34 b(a)g(n)m(umeric)g(argumen)m(t,)h(insert)f(the)f
+(v)-5 b(alue)35 b(of)e(the)h Fn(comment-begin)c Fo(v)-5
+b(ariable)630 2119 y(at)38 b(the)g(b)s(eginning)f(of)h(the)f(curren)m
+(t)h(line.)63 b(If)37 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)g
+(this)630 2229 y(command)i(acts)h(as)f(a)g(toggle:)62
+b(if)40 b(the)g(c)m(haracters)i(at)e(the)g(b)s(eginning)g(of)g(the)g
+(line)g(do)630 2339 y(not)35 b(matc)m(h)g(the)g(v)-5
+b(alue)35 b(of)f Fn(comment-begin)p Fo(,)f(insert)h(the)h(v)-5
+b(alue;)37 b(otherwise)e(delete)h(the)630 2448 y(c)m(haracters)28
+b(in)f Fn(comment-begin)c Fo(from)j(the)h(b)s(eginning)f(of)h(the)g
+(line.)40 b(In)26 b(either)h(case,)i(the)630 2558 y(line)i(is)f
+(accepted)i(as)e(if)h(a)g(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150
+2726 y Fn(dump-functions)d(\(\))630 2836 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 2946 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 3055 y(it)f(can)g(b)s(e)e(made)i
+(part)f(of)g(an)h Ff(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
+3224 y Fn(dump-variables)26 b(\(\))630 3333 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
+3443 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
-5340 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fe(inputrc)k
+3552 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Ff(inputrc)k
 Fo(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
-(default.)p eop end
-%%Page: 25 28
-TeXDict begin 25 27 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(25)150 299 y Fn(dump-variables)26
-b(\(\))630 408 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 518 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 628 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 787 y Fn(dump-macros)c(\(\))630
-897 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
-1006 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
-1116 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 1225 y(default.)150 1385 y Fn(emacs-editing-mode)e(\(C-e\))
-630 1494 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
-1654 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 1763 y Fo(When)k(in)g
+(default.)150 3721 y Fn(dump-macros)c(\(\))630 3830 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
+3940 y(output)e(to)h(the)f(Readline)h(output)f(stream.)46
+b(If)32 b(a)g(n)m(umeric)g(argumen)m(t)h(is)f(supplied,)g(the)630
+4050 y(output)g(is)f(formatted)i(in)f(suc)m(h)f(a)h(w)m(a)m(y)h(that)g
+(it)f(can)g(b)s(e)g(made)g(part)f(of)h(an)g Ff(inputrc)37
+b Fo(\014le.)630 4159 y(This)30 b(command)g(is)g(un)m(b)s(ound)e(b)m(y)
+i(default.)150 4328 y Fn(execute-named-command)25 b(\(M-x\))630
+4437 y Fo(Read)g(a)h(bindable)f(Readline)g(command)g(name)h(from)e(the)
+i(input)e(and)h(execute)h(the)g(func-)630 4547 y(tion)g(to)h(whic)m(h)f
+(it's)g(b)s(ound,)f(as)h(if)g(the)g(k)m(ey)h(sequence)f(to)h(whic)m(h)e
+(it)i(w)m(as)f(b)s(ound)e(app)s(eared)630 4657 y(in)37
+b(the)h(input.)61 b(If)37 b(this)h(function)f(is)g(supplied)g(with)g(a)
+h(n)m(umeric)f(argumen)m(t,)j(it)e(passes)630 4766 y(that)31
+b(argumen)m(t)g(to)g(the)f(function)h(it)f(executes.)150
+4935 y Fn(emacs-editing-mode)25 b(\(C-e\))630 5044 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
+5213 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 5322 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 2004 y Fm(1.5)68 b(Readline)47
-b(vi)e(Mo)t(de)150 2164 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
-2273 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f(the)g(line.)52
+Fn(vi)f Fo(editing)h(mo)s(de.)p eop end
+%%Page: 27 30
+TeXDict begin 27 29 bop 150 -116 a Fo(Chapter)30 b(1:)41
+b(Command)29 b(Line)i(Editing)2107 b(27)150 299 y Fm(1.5)68
+b(Readline)47 b(vi)e(Mo)t(de)150 458 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
+568 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 2383 y(the)e Fh(posix)e Fo(standard.)275
-2517 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 2627 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 2736 y Fo(mo)s(de\).)k(The)30
-b(Readline)h(default)f(is)g Fn(emacs)f Fo(mo)s(de.)275
-2871 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 2980 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
-3090 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 3200 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: 26 29
-TeXDict begin 26 28 bop 3659 -116 a Fo(26)150 299 y Fk(App)t(endix)52
+(eci\014ed)f(in)150 677 y(the)e Fn(sh)e Fo(description)i(in)f(the)g
+Fh(posix)g Fo(standard.)275 812 y(In)e(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
+922 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 1031 y Fo(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g
+Fn(emacs)f Fo(mo)s(de.)275 1166 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 1275 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 1385 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 1494 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: 28 31
+TeXDict begin 28 30 bop 3659 -116 a Fo(28)150 299 y Fk(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 Fo(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 Fl(\015)e
@@ -6949,7 +7122,7 @@ y Fn(http://fsf.org/)390 964 y Fo(Ev)m(ery)m(one)g(is)g(p)s(ermitted)f
 (is)f(not)h(allo)m(w)m(ed.)199 1207 y(0.)61 b(PREAMBLE)330
 1340 y(The)37 b(purp)s(ose)e(of)i(this)g(License)h(is)f(to)h(mak)m(e)g
 (a)g(man)m(ual,)h(textb)s(o)s(ok,)h(or)d(other)g(functional)h(and)330
-1450 y(useful)29 b(do)s(cumen)m(t)h Fe(free)36 b Fo(in)29
+1450 y(useful)29 b(do)s(cumen)m(t)h Ff(free)36 b Fo(in)29
 b(the)i(sense)f(of)g(freedom:)41 b(to)31 b(assure)e(ev)m(ery)m(one)j
 (the)e(e\013ectiv)m(e)j(freedom)330 1559 y(to)f(cop)m(y)g(and)f
 (redistribute)g(it,)h(with)g(or)f(without)g(mo)s(difying)g(it,)i
@@ -7018,10 +7191,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: 27 30
-TeXDict begin 27 29 bop 150 -116 a Fo(App)s(endix)29
+%%Page: 29 32
+TeXDict begin 29 31 bop 150 -116 a Fo(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(27)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(29)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
@@ -7112,10 +7285,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: 28 31
-TeXDict begin 28 30 bop 150 -116 a Fo(App)s(endix)29
+%%Page: 30 33
+TeXDict begin 30 32 bop 150 -116 a Fo(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(28)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+b(30)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
@@ -7205,10 +7378,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: 29 32
-TeXDict begin 29 31 bop 150 -116 a Fo(App)s(endix)29
+%%Page: 31 34
+TeXDict begin 31 33 bop 150 -116 a Fo(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(29)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+b(31)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
@@ -7287,10 +7460,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: 30 33
-TeXDict begin 30 32 bop 150 -116 a Fo(App)s(endix)29
+%%Page: 32 35
+TeXDict begin 32 34 bop 150 -116 a Fo(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(30)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(32)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
@@ -7375,10 +7548,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: 31 34
-TeXDict begin 31 33 bop 150 -116 a Fo(App)s(endix)29
+%%Page: 33 36
+TeXDict begin 33 35 bop 150 -116 a Fo(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(31)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+b(33)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
@@ -7463,10 +7636,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: 32 35
-TeXDict begin 32 34 bop 150 -116 a Fo(App)s(endix)29
+%%Page: 34 37
+TeXDict begin 34 36 bop 150 -116 a Fo(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(32)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)330
+b(34)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
@@ -7530,10 +7703,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: 33 36
-TeXDict begin 33 35 bop 150 -116 a Fo(App)s(endix)29
+%%Page: 35 38
+TeXDict begin 35 37 bop 150 -116 a Fo(App)s(endix)29
 b(A:)h(GNU)h(F)-8 b(ree)32 b(Do)s(cumen)m(tation)g(License)1603
-b(33)150 299 y Fm(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+b(35)150 299 y Fm(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 Fo(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
index ae9ec6eb4f8f267d80202adccfe193aa622b7fd1..6265c63c5d632b0265c2f40c0cdcd21388aba897 100644 (file)
@@ -2,8 +2,8 @@
 @comment %**start of header (This is for running Texinfo on a region.)
 @setfilename rluserman.info
 @settitle GNU Readline Library
-@include version.texi
 
+@include version.texi
 @comment %**end of header (This is for running Texinfo on a region.)
 
 @copying
@@ -12,7 +12,7 @@ This manual describes the end user interface of the GNU Readline Library
 consistency of user interface across discrete programs which provide
 a command line interface.
 
-Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2025 Free Software Foundation, Inc.
 
 @quotation
 Permission is granted to copy, distribute and/or modify this document
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 13b5588..dd5adb2
@@ -4855,9 +4855,9 @@ sub update_sec_num {
     my $ret;
 
     $level--; # here we start at 0
-    if ($name =~ /^appendix/ || defined(@appendix_sec_num)) {
+    if ($name =~ /^appendix/ || @appendix_sec_num) {
        # appendix style
-       if (defined(@appendix_sec_num)) {
+       if (@appendix_sec_num) {
            &incr_sec_num($level, @appendix_sec_num);
        } else {
            @appendix_sec_num = ('A', 0, 0, 0);
@@ -4865,7 +4865,7 @@ sub update_sec_num {
        $ret = join('.', @appendix_sec_num[0..$level]);
     } else {
        # normal style
-       if (defined(@normal_sec_num)) 
+       if (@normal_sec_num)
        {
          &incr_sec_num($level, @normal_sec_num);
        } 
index d310273405152877ce211fe53d644851f6fad667..9faa386904d9d848392c5c088d0138ffb63b904b 100644 (file)
@@ -1,11 +1,11 @@
 @ignore
-Copyright (C) 1988-2022 Free Software Foundation, Inc. 
+Copyright (C) 1988-2025 Free Software Foundation, Inc. 
 @end ignore
 
-@set EDITION 8.2
-@set VERSION 8.2
+@set EDITION 8.3
+@set VERSION 8.3
 
-@set UPDATED 19 September 2022
-@set UPDATED-MONTH September 2022
+@set UPDATED 30 December 2024
+@set UPDATED-MONTH December 2024
 
-@set LASTCHANGE Mon Sep 19 11:15:16 EDT 2022
+@set LASTCHANGE Mon Dec 30 11:27:03 EST 2024
index 02597dad31a4811bb55d44a30914b7b955eb2871..cf2adcc1a015d3b9865bed397c25cb210f9d6bed 100644 (file)
@@ -448,7 +448,7 @@ KEYMAP_ENTRY_ARRAY emacs_meta_keymap = {
   { ISFUNC, rl_upcase_word },          /* Meta-u */
   { ISFUNC, (rl_command_func_t *)0x0 },        /* Meta-v */
   { ISFUNC, (rl_command_func_t *)0x0 },        /* Meta-w */
-  { ISFUNC, (rl_command_func_t *)0x0 },        /* Meta-x */
+  { ISFUNC, rl_execute_named_command },        /* Meta-x */
   { ISFUNC, rl_yank_pop },             /* Meta-y */
   { ISFUNC, (rl_command_func_t *)0x0 },        /* Meta-z */
 
index 291c6b7adf8256de95e0ab47a806c199bd284cc3..62e7fbb1b249845cd298a70b63eedd75cbe288f3 100644 (file)
@@ -71,7 +71,8 @@ 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 \
-               rltest2.c rl-callbacktest.c hist_erasedups.c hist_purgecmd.c \
+               rl-callbacktest.c rl-callbacktest2.c rl-callbacktest3.c \
+               hist_erasedups.c hist_purgecmd.c \
                rlkeymaps.c rl-timeout.c
 
 EXECUTABLES = fileman$(EXEEXT) rltest$(EXEEXT) rl$(EXEEXT) rlcat$(EXEEXT) \
@@ -81,7 +82,7 @@ EXECUTABLES = fileman$(EXEEXT) rltest$(EXEEXT) rl$(EXEEXT) rlcat$(EXEEXT) \
                rlkeymaps$(EXEEXT) rl-timeout$(EXEEXT)
 
 OBJECTS = fileman.o rltest.o rl.o rlevent.o rlcat.o rlversion.o histexamp.o \
-         rltest2.o rl-callbacktest.o rlbasic.o hist_erasedups.o hist_purgecmd.o \
+         rl-callbacktest.o rlbasic.o hist_erasedups.o hist_purgecmd.o \
          rlkeymaps.o rl-timeout.o
 
 OTHEREXE = rlptytest$(EXEEXT)
@@ -138,6 +139,12 @@ rltest2$(EXEEXT): rltest2.o $(READLINE_LIB)
 rl-callbacktest$(EXEEXT): rl-callbacktest.o $(READLINE_LIB)
        $(CC) $(LDFLAGS) -o $@ rl-callbacktest.o $(READLINE_LIB) $(TERMCAP_LIB)
 
+rl-callbacktest2$(EXEEXT): rl-callbacktest2.o $(READLINE_LIB)
+       $(CC) $(LDFLAGS) -o $@ rl-callbacktest2.o $(READLINE_LIB) $(TERMCAP_LIB)
+
+rl-callbacktest3$(EXEEXT): rl-callbacktest3.o $(READLINE_LIB)
+       $(CC) $(LDFLAGS) -o $@ rl-callbacktest3.o $(READLINE_LIB) $(TERMCAP_LIB)
+
 rlptytest$(EXEEXT): rlptytest.o $(READLINE_LIB)
        $(CC) $(LDFLAGS) -o $@ rlptytest.o $(READLINE_LIB) $(TERMCAP_LIB) $(LIBUTIL)
 
@@ -156,14 +163,29 @@ hist_erasedups$(EXEEXT): hist_erasedups.o $(HISTORY_LIB)
 hist_purgecmd$(EXEEXT): hist_purgecmd.o $(HISTORY_LIB)
        $(CC) $(LDFLAGS) -o $@ hist_purgecmd.o -lhistory $(TERMCAP_LIB)
 
-clean mostlyclean:
+rlfe:  force
+       ( rlfe_srcdir=${srcdir}/rlfe ; \
+         if test -d rlfe; then :; else mkdir rlfe; fi; \
+         cd rlfe && $(SHELL) $$rlfe_srcdir/configure -C && ${MAKE}  )
+
+force:
+
+.PHONY: clean maintainer-clean distclean mostlyclean
+
+mostlyclean:
        $(RM) $(OBJECTS) $(OTHEROBJ)
        $(RM) $(EXECUTABLES) $(OTHEREXE) *.exe
+       -( cd rlfe && ${MAKE} $@ )
+
+clean: mostlyclean
+       -( cd rlfe && ${MAKE} $@ )
 
 distclean maintainer-clean: clean
        $(RM) Makefile
+       -( cd rlfe && ${MAKE} $@ )
 
 fileman.o: fileman.c
+manexamp.o: manexamp.c
 rltest.o: rltest.c
 rltest2.o: rltest2.c
 rl.o: rl.c
@@ -179,6 +201,7 @@ rl-callbacktest.o: rl-callbacktest.c
 rl-timeout.o: rl-timeout.c
 
 fileman.o: $(top_srcdir)/readline.h
+manexamp.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
index 0a0988320a6ee22fe79fc69c9209d50e02bc6849..11de3c23ad7cf5f0e53f226bdefc730d7eabb6e3 100644 (file)
@@ -11,8 +11,8 @@ AC_CACHE_VAL(bash_cv_termcap_lib,
   [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
     [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,
-                [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw,
+           [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw,
+                [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
                    bash_cv_termcap_lib=gnutermcap)])])])])])])
 if test "X$_bash_needmsg" = "Xyes"; then
 AC_MSG_CHECKING(which library has the termcap functions)
@@ -28,14 +28,20 @@ TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libtinfo; then
 TERMCAP_LIB=-ltinfo
 TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libncursesw; then
+TERMCAP_LIB=-lncursesw
+TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libncurses; then
 TERMCAP_LIB=-lncurses
 TERMCAP_DEP=
+elif test $bash_cv_termcap_lib = libcurses; then
+TERMCAP_LIB=-lcurses
+TERMCAP_DEP=
 elif test $bash_cv_termcap_lib = libc; then
 TERMCAP_LIB=
 TERMCAP_DEP=
 else
-TERMCAP_LIB=-lcurses
+TERMCAP_LIB=-lncurses
 TERMCAP_DEP=
 fi
 ])
index 923c9238b6ecaf9d799171ec6aa9002f4089c1a5..3f2744ee65315238e0f9d08ffed7c35f9ccd3a3a 100644 (file)
@@ -19,7 +19,7 @@ My example shows how, using the alternate interface, you can
 interactively change the prompt (which is very nice imo). Also, I
 point out that you must roll your own terminal setting when using the
 alternate interface because readline depreps (using your parlance) the
-terminal while in the user callback. I try to demostrate what I mean
+terminal while in the user callback. I try to demonstrate what I mean
 with an example. I've included the program below.
 
 To compile, I just put the program in the examples directory and made
@@ -54,8 +54,10 @@ Copyright (C) 1999 Jeff Solomon
 
 #ifdef READLINE_LIBRARY
 #  include "readline.h"
+#  include "history.h"
 #else
 #  include <readline/readline.h>
+#  include <readline/history.h>
 #endif
 
 #ifndef STDIN_FILENO
@@ -72,7 +74,7 @@ Copyright (C) 1999 Jeff Solomon
  * alternate interface. The first is the ability to interactively change the
  * prompt, which can't be done using the regular interface since rl_prompt is
  * read-only.
- * 
+ *
  * The second feature really highlights a subtle point when using the alternate
  * interface. That is, readline will not alter the terminal when inside your
  * callback handler. So let's so, your callback executes a user command that
@@ -92,7 +94,7 @@ Copyright (C) 1999 Jeff Solomon
  */
 
 void process_line(char *line);
-int  change_prompt(void);
+int  change_prompt(int, int);
 char *get_prompt(void);
 
 int prompt = 1;
@@ -101,8 +103,8 @@ tcflag_t old_lflag;
 cc_t     old_vtime;
 struct termios term;
 
-int 
-main()
+int
+main(int c, char **v)
 {
     fd_set fds;
 
@@ -170,31 +172,20 @@ process_line(char *line)
 }
 
 int
-change_prompt(void)
+change_prompt(int count, int key)
 {
   /* toggle the prompt variable */
   prompt = !prompt;
 
-  /* save away the current contents of the line */
-  strcpy(line_buf, rl_line_buffer);
-
-  /* install a new handler which will change the prompt and erase the current line */
-  rl_callback_handler_install(get_prompt(), process_line);
-
-  /* insert the old text on the new line */
-  rl_insert_text(line_buf);
-
-  /* redraw the current line - this is an undocumented function. It invokes the
-   * redraw-current-line command.
-   */
-  rl_refresh_line(0, 0);
+  rl_set_prompt (get_prompt ());
+  return 0;
 }
 
 char *
 get_prompt(void)
 {
   /* The prompts can even be different lengths! */
-  sprintf(prompt_buf, "%s", 
+  sprintf(prompt_buf, "%s",
     prompt ? "Hit ctrl-t to toggle prompt> " : "Pretty cool huh?> ");
   return prompt_buf;
 }
index 2a8b097ad146b74abce85369c906a6cf426280ac..c26bccf099be81a5e9cd70cefa3082ddb8c2c2fb 100644 (file)
@@ -1,6 +1,6 @@
 /* fileman.c - file manager example for readline library. */
 
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2009,2023 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.
 #  include <readline/history.h>
 #endif
 
-extern char *xmalloc PARAMS((size_t));
+extern char *xmalloc (size_t);
 
-void initialize_readline PARAMS((void));
-void too_dangerous PARAMS((char *));
+void initialize_readline (void);
+void too_dangerous (char *);
 
-int execute_line PARAMS((char *));
-int valid_argument PARAMS((char *, char *));
+int execute_line (char *);
+int valid_argument (char *, char *);
 
 /* The names of functions that actually do the manipulation. */
-int com_list PARAMS((char *));
-int com_view PARAMS((char *));
-int com_rename PARAMS((char *));
-int com_stat PARAMS((char *));
-int com_pwd PARAMS((char *));
-int com_delete PARAMS((char *));
-int com_help PARAMS((char *));
-int com_cd PARAMS((char *));
-int com_quit PARAMS((char *));
+int com_list (char *);
+int com_view (char *);
+int com_rename (char *);
+int com_stat (char *);
+int com_pwd (char *);
+int com_delete (char *);
+int com_help (char *);
+int com_cd (char *);
+int com_quit (char *);
 
 /* A structure which contains information on the commands this program
    can understand. */
@@ -105,8 +105,11 @@ COMMAND commands[] = {
 };
 
 /* Forward declarations. */
-char *stripwhite ();
-COMMAND *find_command ();
+char *dupstr (char *);
+int execute_line (char *);
+char *stripwhite (char *);
+
+COMMAND *find_command (char *);
 
 /* The name of this program, as taken from argv[0]. */
 char *progname;
@@ -115,8 +118,7 @@ char *progname;
 int done;
 
 char *
-dupstr (s)
-     char *s;
+dupstr (char *s)
 {
   char *r;
 
@@ -125,45 +127,9 @@ dupstr (s)
   return (r);
 }
 
-int
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  char *line, *s;
-
-  progname = argv[0];
-
-  initialize_readline ();      /* Bind our completer. */
-
-  /* Loop reading and executing lines until the user quits. */
-  for ( ; done == 0; )
-    {
-      line = readline ("FileMan: ");
-
-      if (!line)
-        break;
-
-      /* Remove leading and trailing whitespace from the line.
-         Then, if there is anything left, add it to the history list
-         and execute it. */
-      s = stripwhite (line);
-
-      if (*s)
-        {
-          add_history (s);
-          execute_line (s);
-        }
-
-      free (line);
-    }
-  exit (0);
-}
-
 /* Execute a command line. */
 int
-execute_line (line)
-     char *line;
+execute_line (char *line)
 {
   register int i;
   COMMAND *command;
@@ -202,8 +168,7 @@ execute_line (line)
 /* Look up NAME as the name of a command, and return a pointer to that
    command.  Return a NULL pointer if NAME isn't a command name. */
 COMMAND *
-find_command (name)
-     char *name;
+find_command (char *name)
 {
   register int i;
 
@@ -217,8 +182,7 @@ find_command (name)
 /* Strip whitespace from the start and end of STRING.  Return a pointer
    into STRING. */
 char *
-stripwhite (string)
-     char *string;
+stripwhite (char *string)
 {
   register char *s, *t;
 
@@ -242,14 +206,14 @@ stripwhite (string)
 /*                                                                  */
 /* **************************************************************** */
 
-char *command_generator PARAMS((const char *, int));
-char **fileman_completion PARAMS((const char *, int, int));
+char *command_generator (const char *, int);
+char **fileman_completion (const char *, int, int);
 
 /* Tell the GNU Readline library how to complete.  We want to try to complete
    on command names if this is the first word in the line, or on filenames
    if not. */
 void
-initialize_readline ()
+initialize_readline (void)
 {
   /* Allow conditional parsing of the ~/.inputrc file. */
   rl_readline_name = "FileMan";
@@ -264,9 +228,7 @@ initialize_readline ()
    in case we want to do some simple parsing.  Return the array of matches,
    or NULL if there aren't any. */
 char **
-fileman_completion (text, start, end)
-     const char *text;
-     int start, end;
+fileman_completion (const char *text, int start, int end)
 {
   char **matches;
 
@@ -285,9 +247,7 @@ fileman_completion (text, start, end)
    to start from scratch; without any state (i.e. STATE == 0), then we
    start at the top of the list. */
 char *
-command_generator (text, state)
-     const char *text;
-     int state;
+command_generator (const char *text, int state)
 {
   static int list_index, len;
   char *name;
@@ -326,43 +286,39 @@ static char syscom[1024];
 
 /* List the file(s) named in arg. */
 int
-com_list (arg)
-     char *arg;
+com_list (char *arg)
 {
   if (!arg)
     arg = "";
 
-  sprintf (syscom, "ls -FClg %s", arg);
+  snprintf (syscom, sizeof (syscom), "ls -FClg %s", arg);
   return (system (syscom));
 }
 
 int
-com_view (arg)
-     char *arg;
+com_view (char *arg)
 {
   if (!valid_argument ("view", arg))
     return 1;
 
 #if defined (__MSDOS__)
   /* more.com doesn't grok slashes in pathnames */
-  sprintf (syscom, "less %s", arg);
+  snprintf (syscom, sizeof (syscom), "less %s", arg);
 #else
-  sprintf (syscom, "more %s", arg);
+  snprintf (syscom, sizeof (syscom), "more %s", arg);
 #endif
   return (system (syscom));
 }
 
 int
-com_rename (arg)
-     char *arg;
+com_rename (char *arg)
 {
   too_dangerous ("rename");
   return (1);
 }
 
 int
-com_stat (arg)
-     char *arg;
+com_stat (char *arg)
 {
   struct stat finfo;
 
@@ -390,8 +346,7 @@ com_stat (arg)
 }
 
 int
-com_delete (arg)
-     char *arg;
+com_delete (char *arg)
 {
   too_dangerous ("delete");
   return (1);
@@ -400,8 +355,7 @@ com_delete (arg)
 /* Print out help for ARG, or for all of the commands if ARG is
    not present. */
 int
-com_help (arg)
-     char *arg;
+com_help (char *arg)
 {
   register int i;
   int printed = 0;
@@ -440,8 +394,7 @@ com_help (arg)
 
 /* Change to the directory ARG. */
 int
-com_cd (arg)
-     char *arg;
+com_cd (char *arg)
 {
   if (chdir (arg) == -1)
     {
@@ -455,8 +408,7 @@ com_cd (arg)
 
 /* Print out the current working directory. */
 int
-com_pwd (ignore)
-     char *ignore;
+com_pwd (char *ignore)
 {
   char dir[1024], *s;
 
@@ -473,8 +425,7 @@ com_pwd (ignore)
 
 /* The user wishes to quit using this program.  Just set DONE non-zero. */
 int
-com_quit (arg)
-     char *arg;
+com_quit (char *arg)
 {
   done = 1;
   return (0);
@@ -482,8 +433,7 @@ com_quit (arg)
 
 /* Function which tells you that you can't do this. */
 void
-too_dangerous (caller)
-     char *caller;
+too_dangerous (char *caller)
 {
   fprintf (stderr,
            "%s: Too dangerous for me to distribute.  Write it yourself.\n",
@@ -493,8 +443,7 @@ too_dangerous (caller)
 /* Return non-zero if ARG is a valid argument for CALLER, else print
    an error message and return zero. */
 int
-valid_argument (caller, arg)
-     char *caller, *arg;
+valid_argument (char *caller, char *arg)
 {
   if (!arg || !*arg)
     {
@@ -504,3 +453,36 @@ valid_argument (caller, arg)
 
   return (1);
 }
+
+int
+main (int argc, char **argv)
+{
+  char *line, *s;
+
+  progname = argv[0];
+
+  initialize_readline ();      /* Bind our completer. */
+
+  /* Loop reading and executing lines until the user quits. */
+  for ( ; done == 0; )
+    {
+      line = readline ("FileMan: ");
+
+      if (!line)
+        break;
+
+      /* Remove leading and trailing whitespace from the line.
+         Then, if there is anything left, add it to the history list
+         and execute it. */
+      s = stripwhite (line);
+
+      if (*s)
+        {
+          add_history (s);
+          execute_line (s);
+        }
+
+      free (line);
+    }
+  exit (0);
+}
index f820eba6aaab4db0c1835dde183c9f85532e7bd5..717bb7e23bd622e8ddcb39f9455df87a2e179c2c 100644 (file)
@@ -1,6 +1,6 @@
 /* hist_erasedups -- remove all duplicate entries from history file */
 
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011,2023 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.
 int hist_erasedups (void);
 
 static void
-usage()
+usage(void)
 {
   fprintf (stderr, "hist_erasedups: usage: hist_erasedups [-t] [filename]\n");
   exit (2);
 }
 
 int
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char *fn;
   int r;
@@ -94,7 +92,7 @@ main (argc, argv)
 }
 
 int
-hist_erasedups ()
+hist_erasedups (void)
 {
   int r, n;
   HIST_ENTRY *h, *temp;
index 7992d810dd00c96fa1c6eecb1a8544b1624dfa56..3adb699b735e2c9a32880a2a5b92ec04cb7b189c 100644 (file)
@@ -1,7 +1,7 @@
 /* hist_purgecmd -- remove all instances of command or pattern from history
    file */
 
-/* Copyright (C) 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2011,2023 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.
 int hist_purgecmd (char *, int);
 
 static void
-usage()
+usage(void)
 {
   fprintf (stderr, "hist_purgecmd: usage: hist_purgecmd [-r] [-t] [-f filename] command-spec\n");
   exit (2);
 }
 
 int
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char *fn;
   int r, flags;
@@ -109,9 +107,7 @@ main (argc, argv)
 }
 
 int
-hist_purgecmd (cmd, flags)
-     char *cmd;
-     int flags;
+hist_purgecmd (char *cmd, int flags)
 {
   int r, n, rflags;
   HIST_ENTRY *temp;
index 309d769b3845e254132dab0aac3fb11050b4e150..d592b7e10fbe1ceaeca75f5763ae4168b20253c6 100644 (file)
@@ -32,9 +32,7 @@
 #include <string.h>
 
 int
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char line[1024], *t;
   int len, done;
@@ -91,6 +89,7 @@ main (argc, argv)
          register HIST_ENTRY **the_list;
          register int i;
          time_t tt;
+         struct tm *tm;
          char timestr[128];
 
          the_list = history_list ();
@@ -98,8 +97,9 @@ main (argc, argv)
            for (i = 0; the_list[i]; i++)
              {
                tt = history_get_time (the_list[i]);
-               if (tt)
-                 strftime (timestr, sizeof (timestr), "%a %R", localtime(&tt));
+               tm = tt ? localtime (&tt) : 0;
+               if (tm)
+                 strftime (timestr, sizeof (timestr), "%a %R", tm);
                else
                  strcpy (timestr, "??");
                printf ("%d: %s: %s\n", i + history_base, timestr, the_list[i]->line);
@@ -110,7 +110,7 @@ main (argc, argv)
          int which;
          if ((sscanf (line + 6, "%d", &which)) == 1)
            {
-             HIST_ENTRY *entry = remove_history (which);
+             HIST_ENTRY *entry = remove_history (which - history_base);
              if (!entry)
                fprintf (stderr, "No such entry %d\n", which);
              else
index 351c6285ed7ecc8bf65bcd574189da65264452b6..ce33877f2f454a42e1e6c2dc311ffb926e9d14b9 100644 (file)
@@ -1,6 +1,6 @@
 /* manexamp.c -- The examples which appear in the documentation are here. */
 
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2009,2023 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.
    You should have received a copy of the GNU General Public License
    along with Readline.  If not, see <http://www.gnu.org/licenses/>.
 */
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
 
+#ifdef HAVE_UNISTD_H
+#  include <unistd.h>
+#endif
+
+
+#include <stdlib.h>
 #include <stdio.h>
-#include <readline/readline.h>
+
+#include <ctype.h>
+#include <string.h>
+#include <errno.h>
+   
+#include <locale.h>
+
+#ifndef errno
+extern int errno;
+#endif
+
+#if defined (READLINE_LIBRARY)
+#  include "readline.h"
+#  include "history.h"
+#else
+#  include <readline/readline.h>
+#  include <readline/history.h>
+#endif
 
 /* **************************************************************** */
 /*                                                                  */
@@ -33,7 +59,7 @@ static char *line_read = (char *)NULL;
 
 /* Read a string, and return a pointer to it.  Returns NULL on EOF. */
 char *
-rl_gets ()
+rl_gets (void)
 {
   /* If the buffer has already been allocated, return the memory
      to the free pool. */
@@ -60,23 +86,16 @@ rl_gets ()
 /* **************************************************************** */
 
 /* Invert the case of the COUNT following characters. */
-invert_case_line (count, key)
-     int count, key;
+int
+invert_case_line (int count, int key)
 {
-  register int start, end;
+  int start, end;
+  int direction;
 
   start = rl_point;
 
-  if (count < 0)
-    {
-      direction = -1;
-      count = -count;
-    }
-  else
-    direction = 1;
-      
   /* Find the end of the range to modify. */
-  end = start + (count * direction);
+  end = start + count;
 
   /* Force it to be within range. */
   if (end > rl_end)
@@ -84,6 +103,14 @@ invert_case_line (count, key)
   else if (end < 0)
     end = -1;
 
+  if (start == end)
+    return 0;
+
+  /* For positive arguments, put point after the last changed character. For
+     negative arguments, put point before the last changed character. */
+  rl_point = end;
+
+  /* Swap start and end if we are moving backwards */
   if (start > end)
     {
       int temp = start;
@@ -91,14 +118,11 @@ invert_case_line (count, key)
       end = temp;
     }
 
-  if (start == end)
-    return;
-
   /* Tell readline that we are modifying the line, so save the undo
      information. */
   rl_modifying (start, end);
 
-  for (; start != end; start += direction)
+  for (; start != end; start++)
     {
       if (_rl_uppercase_p (rl_line_buffer[start]))
        rl_line_buffer[start] = _rl_to_lower (rl_line_buffer[start]);
@@ -106,6 +130,5 @@ invert_case_line (count, key)
        rl_line_buffer[start] = _rl_to_upper (rl_line_buffer[start]);
     }
 
-  /* Move point to on top of the last character changed. */
-  rl_point = end - direction;
+  return 0;
 }
index 7febacd14c47f69ddc9f71cfbc2d6e9b6791b8b8..4468c325824ddb18c9599a2701149c66258f16ec 100644 (file)
 #  include <readline/history.h>
 #endif
 
+#if !defined (errno)
 extern int errno;
+#endif
 
 static void cb_linehandler (char *);
 static void signandler (int);
 
-int running, sigwinch_received;
+int running;
+int sigwinch_received;
 const char *prompt = "rltest$ ";
 
 /* Handle SIGWINCH and window size changes when readline is not active and
@@ -73,10 +76,14 @@ main (int c, char **v)
   fd_set fds;
   int r;
 
+  /* Set the default locale values according to environment variables. */
   setlocale (LC_ALL, "");
 
-  /* Handle SIGWINCH */
+#if defined (SIGWINCH)
+  /* Handle window size changes when readline is not active and reading
+     characters. */
   signal (SIGWINCH, sighandler);
+#endif
   
   /* Install the line handler. */
   rl_callback_handler_install (prompt, cb_linehandler);
diff --git a/examples/rl-callbacktest2.c b/examples/rl-callbacktest2.c
new file mode 100644 (file)
index 0000000..84904d5
--- /dev/null
@@ -0,0 +1,148 @@
+/* Standard include files. stdio.h is required. */
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+/* Used for select(2) */
+#include <sys/types.h>
+#include <sys/select.h>
+
+#include <signal.h>
+
+#include <errno.h>
+#include <stdio.h>
+
+#include <locale.h>
+
+/* Standard readline include files. */
+#if defined (READLINE_LIBRARY)
+#  include "readline.h"
+#  include "history.h"
+#else
+#  include <readline/readline.h>
+#  include <readline/history.h>
+#endif
+
+#if !defined (errno)
+extern int errno;
+#endif
+
+static void cb_linehandler (char *);
+static void sigint_sighandler (int);
+static int sigint_handler (int);
+
+static int saw_signal = 0;
+
+int running;
+const char *prompt = "rltest$ ";
+char *input_string;
+
+/* Callback function called for each line when accept-line executed, EOF
+   seen, or EOF character read.  This sets a flag and returns; it could
+   also call exit(3). */
+static void
+cb_linehandler (char *line)
+{
+  if (line && *line)
+    add_history (line);
+  printf ("input line: %s\n", line ? line : "");
+  input_string = line;
+  rl_callback_handler_remove ();
+}
+
+static char *
+cb_readline (void)
+{
+  fd_set fds;
+  int r, err;
+  char *not_done = "";
+
+  /* Install the line handler. */
+  rl_callback_handler_install (prompt, cb_linehandler);
+
+  if (RL_ISSTATE (RL_STATE_ISEARCH))
+    fprintf(stderr, "cb_readline: after handler install, state (ISEARCH) = %lu", rl_readline_state);
+  else if (RL_ISSTATE (RL_STATE_NSEARCH))
+    fprintf(stderr, "cb_readline: after handler install, state (NSEARCH) = %lu", rl_readline_state);
+  /* MULTIKEY VIMOTION NUMERICARG _rl_callback_func */
+
+  FD_ZERO (&fds);
+  FD_SET (fileno (rl_instream), &fds);
+
+  input_string = not_done;
+
+  while (input_string == not_done)
+    {
+      r = err = 0;
+      /* Enter a simple event loop.  This waits until something is available
+        to read on readline's input stream (defaults to standard input) and
+        calls the builtin character read callback to read it.  It does not
+        have to modify the user's terminal settings. */
+      while (r == 0)
+       {
+         struct timeval timeout = {0, 100000};
+         struct timeval *timeoutp = NULL;
+
+         timeoutp = &timeout;
+         FD_SET (fileno (rl_instream), &fds);
+         r = select (FD_SETSIZE, &fds, NULL, NULL, timeoutp);
+         err = errno;
+       }
+
+      if (saw_signal)
+        sigint_handler (saw_signal);
+
+      if (r < 0)
+       {
+         perror ("rltest: select");
+         rl_callback_handler_remove ();
+         break;
+       }
+
+      /* if (FD_ISSET (fileno (rl_instream), &fds)) */
+      if (r > 0)
+       rl_callback_read_char ();
+    }
+  return input_string;
+}
+
+void
+sigint_sighandler (int s)
+{
+  saw_signal = s;
+}
+
+int
+sigint_handler (int s)
+{
+  rl_free_line_state ();
+  rl_callback_sigcleanup ();
+  rl_cleanup_after_signal ();
+  rl_callback_handler_remove ();
+  saw_signal = 0;
+  return s;  
+}
+
+int
+main (int c, char **v)
+{
+  char *p;
+
+  setlocale (LC_ALL, "");
+
+  running = 1;
+  rl_catch_signals = 1;
+
+  rl_bind_key_in_map ('r', rl_history_search_backward, emacs_meta_keymap);
+  rl_bind_key_in_map ('s', rl_history_search_forward, emacs_meta_keymap);
+
+  signal (SIGINT, sigint_sighandler);
+  while (running)
+    {
+      p = cb_readline ();
+      if (p == 0 || strcmp (p, "exit") == 0)
+        break;
+    }
+  printf ("rl-callbacktest2: Event loop has exited\n");
+  return 0;
+}
diff --git a/examples/rl-callbacktest3.c b/examples/rl-callbacktest3.c
new file mode 100644 (file)
index 0000000..3534822
--- /dev/null
@@ -0,0 +1,145 @@
+/* Standard include files. stdio.h is required. */
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <locale.h>
+
+/* Used for select(2) */
+#include <sys/types.h>
+#include <sys/select.h>
+
+#include <signal.h>
+
+#include <stdio.h>
+
+/* Standard readline include files. */
+#include "readline.h"
+#include "history.h"
+
+static void cb_linehandler (char *);
+static void sigwinch_handler (int);
+static void sigint_handler (int);
+
+int running;
+int sigwinch_received;
+int sigint_received;
+const char *prompt = "rltest$ ";
+
+/* Handle SIGWINCH and window size changes when readline is not active and
+   reading a character. */
+static void
+sigwinch_handler (int sig)
+{
+  sigwinch_received = 1;
+}
+
+/* Handle SIGWINCH and window size changes when readline is not active and
+   reading a character. */
+static void
+sigint_handler (int sig)
+{
+  sigint_received = 1;
+}
+
+/* Callback function called for each line when accept-line executed, EOF
+   seen, or EOF character read.  This sets a flag and returns; it could
+   also call exit(3). */
+static void
+cb_linehandler (char *line)
+{
+  /* Can use ^D (stty eof) or `exit' to exit. */
+  if (line == NULL || strcmp (line, "exit") == 0)
+    {
+      if (line == 0)
+        printf ("\n");
+      printf ("exit\n");
+      /* This function needs to be called to reset the terminal settings,
+         and calling it from the line handler keeps one extra prompt from
+         being displayed. */
+      rl_callback_handler_remove ();
+
+      running = 0;
+    }
+  else
+    {
+      if (*line)
+        add_history (line);
+      printf ("input line: %s\n", line);
+      free (line);
+    }
+}
+
+/* replace with something more complex if desired */
+static int
+my_getc (FILE *stream)
+{
+  int ch = rl_getc (stream);
+
+  return ch;
+}
+
+
+int
+main (int c, char **v)
+{
+  fd_set fds;
+  int r;
+
+  /* Set the default locale values according to environment variables. */
+  setlocale (LC_ALL, "");
+
+  /* Handle window size changes when readline is not active and reading
+     characters. */
+#ifdef SIGWINCH
+  signal (SIGWINCH, sigwinch_handler);
+#endif
+  signal (SIGINT, sigint_handler);
+
+  rl_getc_function = my_getc;
+
+  /* Install the line handler. */
+  rl_callback_handler_install (prompt, cb_linehandler);
+
+  /* Enter a simple event loop.  This waits until something is available
+     to read on readline's input stream (defaults to standard input) and
+     calls the builtin character read callback to read it.  It does not
+     have to modify the user's terminal settings. */
+  running = 1;
+  while (running)
+    {
+      FD_ZERO (&fds);
+      FD_SET (fileno (rl_instream), &fds);
+
+      r = select (FD_SETSIZE, &fds, NULL, NULL, NULL);
+      if (r < 0 && errno != EINTR)
+        {
+          perror ("rltest: select");
+          rl_callback_handler_remove ();
+          break;
+        }
+      if (sigwinch_received)
+        {
+          rl_resize_terminal ();
+          sigwinch_received = 0;
+        }
+      if (sigint_received)
+        {
+          printf ("Quit\n");
+
+          rl_callback_handler_remove ();
+          rl_callback_handler_install (prompt, cb_linehandler);
+
+          sigint_received = 0;
+          continue;
+        }
+      if (r < 0)
+        continue;
+
+      if (FD_ISSET (fileno (rl_instream), &fds))
+        rl_callback_read_char ();
+    }
+
+  printf ("rltest: Event loop has exited\n");
+  return 0;
+}
index b8a24bafb94fcd8670a73ba977f8ca6eaf6e0907..81f00f5d129bf3b3ee9f343bed46bf29b32b778f 100644 (file)
@@ -56,7 +56,7 @@ const char *prompt = "rl-timeout$ ";
 /* **************************************************************** */
 
 void
-rltest_timeout_readline1 ()
+rltest_timeout_readline1 (void)
 {
   const char *temp;
 
@@ -78,14 +78,14 @@ rltest_timeout_readline1 ()
 /* **************************************************************** */
 
 static int
-timeout_handler ()
+timeout_handler (void)
 {
   printf ("timeout\n");
   return READERR;
 }
 
 void
-rltest_timeout_readline2 ()
+rltest_timeout_readline2 (void)
 {
   const char *temp;
 
@@ -134,7 +134,7 @@ cb_linehandler (char *line)
 }
 
 void
-rltest_timeout_callback1 ()
+rltest_timeout_callback1 (void)
 {
   fd_set fds;
   int r;
@@ -180,7 +180,7 @@ rltest_timeout_callback1 ()
 /* **************************************************************** */
 
 static int
-cb_timeouthandler ()
+cb_timeouthandler (void)
 {
   printf ("timeout\n");
   rl_callback_handler_remove ();
@@ -189,7 +189,7 @@ cb_timeouthandler ()
 }
 
 void
-rltest_timeout_callback2 ()
+rltest_timeout_callback2 (void)
 {
   int r;
 
index 39e5b8ebb5d1be6b748a9d8bab3d3feb190e0784..dd8f88d49c32ba2da5f224bc40d4612d1b6aaa02 100644 (file)
@@ -5,7 +5,7 @@
  * usage: rl [-p prompt] [-u unit] [-d default] [-n nchars]
  */
 
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2023 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.
@@ -55,15 +55,11 @@ extern void exit();
 extern int optind;
 extern char *optarg;
 
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strrchr();
-#endif
-
 static char *progname;
 static char *deftext;
 
 static int
-set_deftext ()
+set_deftext (void)
 {
   if (deftext)
     {
@@ -75,16 +71,14 @@ set_deftext ()
 }
 
 static void
-usage()
+usage(void)
 {
   fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n",
                progname, progname);
 }
 
 int
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char *temp, *prompt;
   struct stat sb;
index f1b036260cdc28211c4906fd9ec9807b91fb5b1a..419a1973a0fcd7a096fb0b215e70404e1d72e2ad 100644 (file)
@@ -4,7 +4,7 @@
  * usage: rlcat
  */
 
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2009,2023 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,21 +64,20 @@ extern int errno;
 extern int optind;
 extern char *optarg;
 
-static int stdcat();
+static int fcopy(FILE *);
+static int stdcat(int, char **);
 
 static char *progname;
 static int vflag;
 
 static void
-usage()
+usage(void)
 {
   fprintf (stderr, "%s: usage: %s [-vEVN] [filename]\n", progname, progname);
 }
 
 int
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char *temp;
   int opt, Vflag, Nflag;
@@ -134,8 +133,7 @@ main (argc, argv)
 }
 
 static int
-fcopy(fp)
-     FILE *fp;
+fcopy(FILE *fp)
 {
   int c;
   char *x;
@@ -155,9 +153,7 @@ fcopy(fp)
 }
 
 int
-stdcat (argc, argv)
-     int argc;
-     char **argv;
+stdcat (int argc, char **argv)
 {
   int  i, fd, r;
   char *s;
index 1b7f4eb25a433f8bcd4a872313c99129f06d044d..57e4b4bc9195a041a9d9401d96d682cab8379b78 100644 (file)
@@ -69,7 +69,7 @@ static char *progname;
 static char *deftext;
 
 static int
-event_hook ()
+event_hook (void)
 {
   fprintf (stderr, "ding!\n");
   sleep (1);
@@ -77,7 +77,7 @@ event_hook ()
 }
 
 static int
-set_deftext ()
+set_deftext (void)
 {
   if (deftext)
     {
@@ -89,16 +89,14 @@ set_deftext ()
 }
 
 static void
-usage()
+usage(void)
 {
   fprintf (stderr, "%s: usage: %s [-p prompt] [-u unit] [-d default] [-n nchars]\n",
                progname, progname);
 }
 
 int
-main (argc, argv)
-     int argc;
-     char **argv;
+main (int argc, char **argv)
 {
   char *temp, *prompt;
   struct stat sb;
index 7d6fd53a20d69da04bd42f596779dbf77a5822c0..5cb2f39061c8e107eb6e2fcfcf8897c26ffc3ab4 100644 (file)
@@ -7,6 +7,8 @@
 srcdir = @srcdir@
 VPATH = @srcdir@
 
+INCDIR = @INCDIR@
+
 DESTDIR = 
 
 # Where to install screen.
@@ -43,7 +45,7 @@ SHELL=/bin/sh
 
 CFILES=        rlfe.c pty.c
 HFILES= extern.h os.h screen.h
-EXTRA_DIST=configure.in configure Makefile.in config.h.in ChangeLog README
+EXTRA_DIST=configure.ac configure Makefile.in config.h.in ChangeLog README
 OFILES=        rlfe.o pty.o
 
 all:   rlfe
@@ -100,11 +102,9 @@ clean celan: mostlyclean
 # Delete all files from the current directory that are created by 
 # configuring or building the program.
 # building of term.h/comm.h requires awk. Keep it in the distribution
-# we keep config.h, as this file knows where 'make dist' finds the ETCSCREENRC.
-#distclean:    mostlyclean
-#      rm -f $(SCREEN).tar $(SCREEN).tar.gz
-#      rm -f config.status Makefile
-#      rm -f osdef.h doc/Makefile
+
+distclean:     mostlyclean
+       rm -f config.status config.cache config.log config.h Makefile
 
 maintainer-clean:
        @echo "This command is not even intended for maintainers to use;"
@@ -175,10 +175,16 @@ Makefile makefile:        config.status $(srcdir)/Makefile.in
 config.status: $(srcdir)/configure
        $(SHELL) ./config.status --recheck
 
-$(srcdir)/configure:   $(srcdir)/configure.in
+$(srcdir)/configure:   $(srcdir)/configure.ac
        cd $(srcdir) && autoconf
 
 ###############################################################################
 
 ### Dependencies:
-pty.o: pty.c config.h
+rlfe.o: rlfe.c
+pty.o: pty.c
+
+pty.o: config.h os.h extern.h
+rlfe.o: config.h os.h extern.h
+
index a843fecc4ac824b8f67483fbbf0e8b2b834b7a09..33c427bdf4cebf98c978b740172c1ab2db69bfe8 100644 (file)
  * Boing, never say "works everywhere" unless you checked SCO UNIX.
  * Their memove fails the test in the configure script. Sigh. (Juergen)
  */
+
 #undef USEBCOPY
 #undef USEMEMCPY
 #undef USEMEMMOVE
 
+#undef HAVE_SETEUID
+#undef HAVE_SETREUID
+
 /*
  * If your system has vsprintf() and requires the use of the macros in
  * "varargs.h" to use functions with variable arguments,
 #undef NAME_MAX                /* KEEP_UNDEF_HERE override system value */
 #undef NAME_MAX
 
+#undef HAVE_BCOPY
+#undef HAVE_MEMCPY
+#undef HAVE_MEMMOVE
+
+#undef HAVE_MKFIFO
+
 /*
  * define HAVE_RENAME if your system has a rename() function
  */
index 39283314646ea53f2a680af8d907fb1e8f0d254a..265a606ff3cc77524c6bec2a0d8cded855862db7 100755 (executable)
@@ -1,11 +1,10 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68.
+# Generated by GNU Autoconf 2.72 for rlfe 0.4.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation,
+# Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""       $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -81,13 +82,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -96,58 +90,69 @@ case $0 in #((
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed 'exec'.
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in #(
+else case e in #(
+  e) case \`(set -o) 2>/dev/null\` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 "
@@ -162,41 +167,55 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
 as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
 
-else
-  exitcode=1; echo positional parameters were not saved.
+else case e in #(
+  e) exitcode=1; echo positional parameters were not saved. ;;
+esac
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
 test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
+  if (eval "$as_required") 2>/dev/null
+then :
   as_have_required=yes
-else
-  as_have_required=no
+else case e in #(
+  e) as_have_required=no ;;
+esac
 fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
 
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+else case e in #(
+  e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
   as_found=:
   case $as_dir in #(
         /*)
           for as_base in sh bash ksh sh5; do
             # Try only shells that exist, to save several forks.
-            as_shell=$as_dir/$as_base
+            as_shell=$as_dir$as_base
             if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+                   as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
   CONFIG_SHELL=$as_shell as_have_required=yes
-                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+                  if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
   break 2
 fi
 fi
@@ -204,45 +223,59 @@ fi
        esac
   as_found=false
 done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
-  CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
 IFS=$as_save_IFS
+if $as_found
+then :
 
-
-      if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-       # neutralization value for shells without unset; and this also
-       # works around shells that cannot unset nonexistent variables.
-       # Preserve -v and -x to the replacement shell.
-       BASH_ENV=/dev/null
-       ENV=/dev/null
-       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-       export CONFIG_SHELL
-       case $- in # ((((
-         *v*x* | *x*v* ) as_opts=-vx ;;
-         *v* ) as_opts=-v ;;
-         *x* ) as_opts=-x ;;
-         * ) as_opts= ;;
-       esac
-       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+else case e in #(
+  e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi ;;
+esac
 fi
 
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+
+      if test "x$CONFIG_SHELL" != x
+then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed 'exec'.
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno
+then :
+  printf "%s\n" "$0: This script requires a shell more modern than all"
+  printf "%s\n" "$0: the shells that I found on your system."
+  if test ${ZSH_VERSION+y} ; then
+    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system,
 $0: including any error possibly output before this
 $0: message. Then install a modern shell, or manually run
 $0: the script under such a shell if you do have one."
   fi
   exit 1
-fi
+fi ;;
+esac
 fi
 fi
 SHELL=${CONFIG_SHELL-/bin/sh}
@@ -263,6 +296,7 @@ as_fn_unset ()
 }
 as_unset=as_fn_unset
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -294,7 +328,7 @@ as_fn_mkdir_p ()
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -303,7 +337,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$as_dir" : 'X\(//\)[^/]' \| \
         X"$as_dir" : 'X\(//\)$' \| \
         X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -328,22 +362,32 @@ $as_echo X"$as_dir" |
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -351,16 +395,18 @@ fi # as_fn_append
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
 
@@ -374,9 +420,9 @@ as_fn_error ()
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -403,7 +449,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
         X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
            s//\1/
            q
@@ -436,6 +482,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
     /[$]LINENO/=
   ' <$as_myself |
     sed '
+      t clear
+      :clear
       s/[$]LINENO.*/&-/
       t lineno
       b
@@ -447,8 +495,12 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -457,6 +509,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   exit
 }
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -470,6 +526,12 @@ case `echo -n x` in #(((((
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -481,18 +543,18 @@ if (echo >conf$$.file) 2>/dev/null; then
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -504,34 +566,16 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 
 test -n "$DJDIR" || exec 7<&0 </dev/null
@@ -555,57 +599,52 @@ MFLAGS=
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
+PACKAGE_NAME='rlfe'
+PACKAGE_TARNAME='rlfe'
+PACKAGE_VERSION='0.4'
+PACKAGE_STRING='rlfe 0.4'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
 
 ac_unique_file="rlfe.c"
 # Factoring default headers for most tests.
 ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
 #endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
 # include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
 #endif
 #ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
 # include <string.h>
 #endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
 #ifdef HAVE_INTTYPES_H
 # include <inttypes.h>
 #endif
 #ifdef HAVE_STDINT_H
 # include <stdint.h>
 #endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif"
 
+ac_header_c_list=
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 XTERMPATH
 WRITEPATH
 AWK
-EGREP
-GREP
+SET_MAKE
 CPP
 OBJEXT
 EXEEXT
@@ -614,6 +653,7 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+INCDIR
 VERSION
 target_alias
 host_alias
@@ -634,6 +674,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -706,9 +747,10 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
 infodir='${datarootdir}/info'
 htmldir='${docdir}'
 dvidir='${docdir}'
@@ -735,8 +777,6 @@ do
   *)    ac_optarg=yes ;;
   esac
 
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
   case $ac_dashdash$ac_option in
   --)
     ac_dashdash=yes ;;
@@ -777,9 +817,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -803,9 +843,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -958,6 +998,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1007,9 +1056,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1023,9 +1072,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: '$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1053,8 +1102,8 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) as_fn_error $? "unrecognized option: \`$ac_option'
-Try \`$0 --help' for more information"
+  -*) as_fn_error $? "unrecognized option: '$ac_option'
+Try '$0 --help' for more information"
     ;;
 
   *=*)
@@ -1062,16 +1111,16 @@ Try \`$0 --help' for more information"
     # Reject names that are not valid shell variable names.
     case $ac_envvar in #(
       '' | [0-9]* | *[!_$as_cr_alnum]* )
-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+      as_fn_error $? "invalid variable name: '$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
     : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
@@ -1087,7 +1136,7 @@ if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
     fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+    *)     printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
 
@@ -1095,7 +1144,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir
+               libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1112,7 +1161,7 @@ do
   as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
-# There might be people who depend on the old broken behavior: `$host'
+# There might be people who depend on the old broken behavior: '$host'
 # used to hold the argument of --host etc.
 # FIXME: To remove some day.
 build=$build_alias
@@ -1123,8 +1172,6 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1153,7 +1200,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$as_myself" : 'X\(//\)[^/]' \| \
         X"$as_myself" : 'X\(//\)$' \| \
         X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -1182,7 +1229,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
   as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work"
 ac_abs_confdir=`(
        cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
        pwd)`
@@ -1210,7 +1257,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 this package to adapt to many kinds of systems.
+'configure' configures rlfe 0.4 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1224,11 +1271,11 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking ...' messages
+  -q, --quiet, --silent   do not print 'checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -C, --config-cache      alias for '--cache-file=config.cache'
   -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+      --srcdir=DIR        find the sources in DIR [configure dir or '..']
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
@@ -1236,10 +1283,10 @@ Installation directories:
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                           [PREFIX]
 
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
+By default, 'make install' will install all the files in
+'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than '$ac_default_prefix' using '--prefix',
+for instance '--prefix=\$HOME'.
 
 For better control, use the options below.
 
@@ -1250,6 +1297,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1258,7 +1306,7 @@ Fine tuning of the installation directories:
   --infodir=DIR           info documentation [DATAROOTDIR/info]
   --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
   --mandir=DIR            man documentation [DATAROOTDIR/man]
-  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/rlfe]
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1270,7 +1318,9 @@ _ACEOF
 fi
 
 if test -n "$ac_init_help"; then
-
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of rlfe 0.4:";;
+   esac
   cat <<\_ACEOF
 
 Optional Packages:
@@ -1289,7 +1339,7 @@ Some influential environment variables:
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
 
-Use these variables to override the choices made by `configure' or to help
+Use these variables to override the choices made by 'configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to the package provider.
@@ -1308,9 +1358,9 @@ if test "$ac_init_help" = "recursive"; then
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1338,7 +1388,8 @@ esac
 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
     cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
+    # Check for configure.gnu first; this name is used for a wrapper for
+    # Metaconfig's "Configure" on case-insensitive file systems.
     if test -f "$ac_srcdir/configure.gnu"; then
       echo &&
       $SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1346,7 +1397,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1355,10 +1406,10 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-configure
-generated by GNU Autoconf 2.68
+rlfe configure 0.4
+generated by GNU Autoconf 2.72
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1375,14 +1426,14 @@ fi
 ac_fn_c_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
+  rm -f conftest.$ac_objext conftest.beam
   if { { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -1390,17 +1441,19 @@ $as_echo "$ac_try_echo"; } >&5
     cat conftest.er1 >&5
     mv -f conftest.er1 conftest.err
   fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && {
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
+       } && test -s conftest.$ac_objext
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_retval=1
+       ac_retval=1 ;;
+esac
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
@@ -1419,7 +1472,7 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -1427,73 +1480,64 @@ $as_echo "$ac_try_echo"; } >&5
     cat conftest.er1 >&5
     mv -f conftest.er1 conftest.err
   fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } > conftest.i && {
         test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
         test ! -s conftest.err
-       }; then :
+       }
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-    ac_retval=1
+    ac_retval=1 ;;
+esac
 fi
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_try_cpp
 
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  eval "$3=yes"
+else case e in #(
+  e) eval "$3=no" ;;
 esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    grep -v '^ *+' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-    mv -f conftest.er1 conftest.err
-  fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=1
 fi
-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
-  # interfere with the next link command; also delete a directory that is
-  # left behind by Apple's compiler.  We do this before executing the actions.
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
+fi
+eval ac_res=\$$3
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} # ac_fn_c_check_header_compile
 
 # ac_fn_c_try_run LINENO
 # ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
 ac_fn_c_try_run ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1503,28 +1547,30 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
   { { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+       printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_retval=$ac_status
+       ac_retval=$ac_status ;;
+esac
 fi
   rm -rf conftest.dSYM conftest_ipa8_conftest.oo
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
@@ -1532,34 +1578,76 @@ fi
 
 } # ac_fn_c_try_run
 
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        test -x conftest$ac_exeext
+       }
+then :
+  ac_retval=0
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1 ;;
+esac
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
 # ac_fn_c_check_func LINENO FUNC VAR
 # ----------------------------------
 # Tests whether FUNC exists, setting the cache variable VAR accordingly
 ac_fn_c_check_func ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
 #define $2 innocuous_$2
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+   which can conflict with char $2 (void); below.  */
 
+#include <limits.h>
 #undef $2
 
 /* Override any GCC internal prototype to avoid an error.
@@ -1568,7 +1656,7 @@ else
 #ifdef __cplusplus
 extern "C"
 #endif
-char $2 ();
+char $2 (void);
 /* The GNU C library defines this for functions which it implements
     to always fail with ENOSYS.  Some functions are actually named
     something starting with __ and the normal name is an alias.  */
@@ -1577,153 +1665,58 @@ choke me
 #endif
 
 int
-main ()
+main (void)
 {
 return $2 ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   eval "$3=yes"
-else
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+              { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_func
+ac_configure_args_raw=
+for ac_arg
+do
+  case $ac_arg in
+  *\'*)
+    ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
+case $ac_configure_args_raw in
+  *$as_nl*)
+    ac_safe_unquote= ;;
+  *)
+    ac_unsafe_z='|&;<>()$`\\"*?[ ''    ' # This string ends in space, tab.
+    ac_unsafe_a="$ac_unsafe_z#~"
+    ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+    ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
 esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
-} # ac_fn_c_check_header_compile
 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 $as_me, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by rlfe $as_me 0.4, which was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
-  $ $0 $@
+  $ $0$ac_configure_args_raw
 
 _ACEOF
 exec 5>>config.log
@@ -1756,8 +1749,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    printf "%s\n" "PATH: $as_dir"
   done
 IFS=$as_save_IFS
 
@@ -1792,7 +1789,7 @@ do
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
     1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -1827,11 +1824,13 @@ done
 # WARNING: Use '\'' to represent an apostrophe within the trap.
 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
+  # Sanitize IFS.
+  IFS=" ""     $as_nl"
   # Save into config.log some information that might help in debugging.
   {
     echo
 
-    $as_echo "## ---------------- ##
+    printf "%s\n" "## ---------------- ##
 ## Cache variables. ##
 ## ---------------- ##"
     echo
@@ -1842,8 +1841,8 @@ trap 'exit_status=$?
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -1867,7 +1866,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    $as_echo "## ----------------- ##
+    printf "%s\n" "## ----------------- ##
 ## Output variables. ##
 ## ----------------- ##"
     echo
@@ -1875,14 +1874,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      $as_echo "$ac_var='\''$ac_val'\''"
+      printf "%s\n" "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
+      printf "%s\n" "## ------------------- ##
 ## File substitutions. ##
 ## ------------------- ##"
       echo
@@ -1890,15 +1889,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       do
        eval ac_val=\$$ac_var
        case $ac_val in
-       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
        esac
-       $as_echo "$ac_var='\''$ac_val'\''"
+       printf "%s\n" "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      $as_echo "## ----------- ##
+      printf "%s\n" "## ----------- ##
 ## confdefs.h. ##
 ## ----------- ##"
       echo
@@ -1906,8 +1905,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       echo
     fi
     test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
+      printf "%s\n" "$as_me: caught signal $ac_signal"
+    printf "%s\n" "$as_me: exit $exit_status"
   } >&5
   rm -f core *.core core.conftest.* &&
     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -1921,65 +1920,50 @@ ac_signal=0
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
 
 # Predefined preprocessor variables.
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
 
 
 # Let the site file select an alternate cache file if it wants to.
 # Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
+  ac_site_files="$CONFIG_SITE"
 elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
+  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
 else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
+  ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
 fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
 do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+  case $ac_site_file in #(
+  */*) :
+     ;; #(
+  *) :
+    ac_site_file=./$ac_site_file ;;
+esac
+  if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
   fi
 done
 
@@ -1987,19 +1971,355 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special files
   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
   if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
       *)                      . "./$cache_file";;
     esac
   fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+   Do not test the value of __STDC__, because some compilers set it to 0
+   while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (char **p, int i)
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* C89 style stringification. */
+#define noexpand_stringify(a) #a
+const char *stringified = noexpand_stringify(arbitrary+token=sequence);
+
+/* C89 style token pasting.  Exercises some of the corner cases that
+   e.g. old MSVC gets wrong, but not very hard. */
+#define noexpand_concat(a,b) a##b
+#define expand_concat(a,b) noexpand_concat(a,b)
+extern int vA;
+extern int vbee;
+#define aye A
+#define bee B
+int *pvA = &expand_concat(v,aye);
+int *pvbee = &noexpand_concat(v,bee);
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not \xHH hex character constants.
+   These do not provoke an error unfortunately, instead are silently treated
+   as an "x".  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously \x00 != x always comes out true, for an
+   array size at least.  It is necessary to write \x00 == 0 to get something
+   that is true only with -std.  */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+               int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+/* Does the compiler advertise C99 conformance? */
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+// See if C++-style comments work.
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+extern void free (void *);
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+  #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str = "";
+  int number = 0;
+  float fnumber = 0;
+
+  while (*format)
+    {
+      switch (*format++)
+       {
+       case '\''s'\'': // string
+         str = va_arg (args_copy, const char *);
+         break;
+       case '\''d'\'': // int
+         number = va_arg (args_copy, int);
+         break;
+       case '\''f'\'': // float
+         fnumber = va_arg (args_copy, double);
+         break;
+       default:
+         break;
+       }
+    }
+  va_end (args_copy);
+  va_end (args);
+
+  return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+  // Check bool.
+  _Bool success = false;
+  success |= (argc != 0);
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+  // Work around memory leak warnings.
+  free (ia);
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[0] = argv[0][0];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+        || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+/* Does the compiler advertise C11 conformance? */
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+  int_alignment = _Alignof (int),
+  int_array_alignment = _Alignof (int[100]),
+  char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+  int x;
+  _Static_assert (sizeof (int) <= sizeof (long int),
+                  "_Static_assert does not work in struct");
+  long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+  union {
+    struct { int i; int j; };
+    struct { int k; long int l; } w;
+  };
+  int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+  _Static_assert ((offsetof (struct anonymous, i)
+                  == offsetof (struct anonymous, w.k)),
+                 "Anonymous union alignment botch");
+  v1.i = 2;
+  v1.w.k = 5;
+  ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  ${ac_c_conftest_c99_main}
+  ${ac_c_conftest_c11_main}
+  return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  ${ac_c_conftest_c99_main}
+  return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
@@ -2010,12 +2330,12 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
@@ -2024,24 +2344,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
        ac_old_val_w=`echo x $ac_old_val`
        ac_new_val_w=`echo x $ac_new_val`
        if test "$ac_old_val_w" != "$ac_new_val_w"; then
-         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;}
          ac_cache_corrupted=:
        else
-         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;}
          eval $ac_var=\$ac_old_val
        fi
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  '$ac_old_val'" >&5
+printf "%s\n" "$as_me:   former value:  '$ac_old_val'" >&2;}
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: '$ac_new_val'" >&5
+printf "%s\n" "$as_me:   current value: '$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
@@ -2051,11 +2371,12 @@ $as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
   fi
 done
 if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file'
+           and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -2068,13 +2389,24 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+
 ac_config_headers="$ac_config_headers config.h"
 
-VERSION=0.4
+
+
 
 
 
 old_CFLAGS="$CFLAGS"
+
+
+
+
+
+
+
+
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -2083,38 +2415,44 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2123,38 +2461,44 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -2162,8 +2506,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -2176,38 +2520,44 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2216,12 +2566,13 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
   ac_prog_rejected=no
@@ -2229,15 +2580,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -2253,18 +2608,19 @@ if test $ac_prog_rejected = yes; then
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
     shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+    ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
   fi
 fi
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2275,38 +2631,44 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2319,38 +2681,44 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -2362,34 +2730,140 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi ;;
+esac
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
   fi
+else
+  CC="$ac_cv_prog_CC"
 fi
 
 fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
 set X $ac_compile
 ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
   { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -2399,7 +2873,7 @@ $as_echo "$ac_try_echo"; } >&5
     cat conftest.er1 >&5
   fi
   rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
 done
 
@@ -2407,7 +2881,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
@@ -2419,9 +2893,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
 # The possible output files:
 ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -2442,13 +2916,14 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'.
+# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
 # so that the user can short-circuit this test for compilers unknown to
 # Autoconf.
@@ -2463,12 +2938,12 @@ do
        # certainly right.
        break;;
     *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
        then :; else
           ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
        fi
        # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
+       # safe: cross compilers may not add the suffix if given an '-o'
        # argument, so we may need to know it at that point already.
        # Even if this section looks crufty: it has the advantage of
        # actually working.
@@ -2479,48 +2954,52 @@ do
 done
 test "$ac_cv_exeext" = no && ac_cv_exeext=
 
-else
-  ac_file=''
+else case e in #(
+  e) ac_file='' ;;
+esac
 fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; } ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
 
 rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
 if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
+  # If both 'conftest.exe' and 'conftest' are 'present' (well, observable)
+# catch 'conftest.exe'.  For instance with Cygwin, 'ls conftest' will
+# work properly (i.e., refer to 'conftest.exe'), while it won't with
+# 'rm'.
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
@@ -2530,15 +3009,16 @@ for ac_file in conftest.exe conftest conftest.*; do
     * ) break;;
   esac
 done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+  e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
 rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
@@ -2547,9 +3027,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdio.h>
 int
-main ()
+main (void)
 {
 FILE *f = fopen ("conftest.out", "w");
+ if (!f)
+  return 1;
  return ferror (f) || fclose (f) != 0;
 
   ;
@@ -2559,8 +3041,8 @@ _ACEOF
 ac_clean_files="$ac_clean_files conftest.out"
 # Check that the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
 if test "$cross_compiling" != yes; then
   { { ac_try="$ac_link"
 case "(($ac_try" in
@@ -2568,10 +3050,10 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
   if { ac_try='./conftest$ac_cv_exeext'
   { { case "(($ac_try" in
@@ -2579,39 +3061,41 @@ $as_echo "$ac_try_echo"; } >&5
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; }; then
     cross_compiling=no
   else
     if test "$cross_compiling" = maybe; then
        cross_compiling=yes
     else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
+       { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
+If you meant to cross compile, use '--host'.
+See 'config.log' for more details" "$LINENO" 5; }
     fi
   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
 
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+rm -f conftest.$ac_ext conftest$ac_cv_exeext \
+  conftest.o conftest.obj conftest.out
 ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
@@ -2625,11 +3109,12 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
   for ac_file in conftest.o conftest.obj conftest.*; do
   test -f "$ac_file" || continue;
   case $ac_file in
@@ -2638,31 +3123,34 @@ $as_echo "$ac_try_echo"; } >&5
        break;;
   esac
 done
-else
-  $as_echo "$as_me: failed program was:" >&5
+else case e in #(
+  e) printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
+rm -f conftest.$ac_cv_objext conftest.$ac_ext ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 #ifndef __GNUC__
        choke me
@@ -2672,30 +3160,36 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
+else case e in #(
+  e) ac_compiler_gnu=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
+ ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 if test $ac_compiler_gnu = yes; then
   GCC=yes
 else
   GCC=
 fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
 ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
@@ -2703,57 +3197,63 @@ else
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
+else case e in #(
+  e) CFLAGS=""
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
 
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
+else case e in #(
+  e) ac_c_werror_flag=$ac_save_c_werror_flag
         CFLAGS="-g"
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_g=yes
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
   if test "$GCC" = yes; then
@@ -2768,95 +3268,153 @@ else
     CFLAGS=
   fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) ac_cv_prog_cc_c11=no
 ac_save_CC=$CC
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
+$ac_c_conftest_c11_program
 _ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -std=gnu11
 do
   CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c11=$ac_arg
 fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c11" != "xno" && break
 done
 rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+CC=$ac_save_CC ;;
 esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
+fi
+
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c11" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+     CC="$CC $ac_cv_prog_cc_c11" ;;
+esac
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+  ac_prog_cc_stdc=c11 ;;
+esac
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC ;;
+esac
+fi
+
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c99" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+     CC="$CC $ac_cv_prog_cc_c99" ;;
+esac
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+  ac_prog_cc_stdc=c99 ;;
+esac
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_c_conftest_c89_program
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC ;;
+esac
+fi
+
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else case e in #(
+  e) if test "x$ac_cv_prog_cc_c89" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+     CC="$CC $ac_cv_prog_cc_c89" ;;
+esac
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+  ac_prog_cc_stdc=c89 ;;
+esac
+fi
 fi
 
 ac_ext=c
@@ -2870,42 +3428,39 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+  if test ${ac_cv_prog_CPP+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e)     # Double quotes because $CC needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
     do
       ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
   # Use a header file that comes with gcc, so configuring glibc
   # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
                     Syntax error
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
 
-else
-  # Broken: fails on valid input.
-continue
+else case e in #(
+  e) # Broken: fails on valid input.
+continue ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
@@ -2915,56 +3470,56 @@ rm -f conftest.err conftest.i conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
   # Broken: success on invalid input.
 continue
-else
-  # Passes both tests.
+else case e in #(
+  e) # Passes both tests.
 ac_preproc_ok=:
-break
+break ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
   break
 fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+   ;;
+esac
 fi
   CPP=$ac_cv_prog_CPP
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
   # Use a header file that comes with gcc, so configuring glibc
   # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
                     Syntax error
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
 
-else
-  # Broken: fails on valid input.
-continue
+else case e in #(
+  e) # Broken: fails on valid input.
+continue ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
@@ -2974,26 +3529,30 @@ rm -f conftest.err conftest.i conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
   # Broken: success on invalid input.
 continue
-else
-  # Passes both tests.
+else case e in #(
+  e) # Passes both tests.
 ac_preproc_ok=:
-break
+break ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
 
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else case e in #(
+  e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+See 'config.log' for more details" "$LINENO" 5; } ;;
+esac
 fi
 
 ac_ext=c
@@ -3003,250 +3562,235 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval test \${ac_cv_prog_make_${ac_make}_set+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
 esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
+rm -f conftest.make ;;
+esac
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+  SET_MAKE=
 else
-  ac_cv_path_GREP=$GREP
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
 fi
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
 do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+  if test $ac_cache; then
+    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+      printf "%s\n" "#define $ac_item 1" >> confdefs.h
     fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+    ac_header= ac_cache=
+  elif test $ac_header; then
+    ac_cache=$ac_item
+  else
+    ac_header=$ac_item
   fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
+done
 
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
 
 
-if test $ac_cv_c_compiler_gnu = yes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
-$as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if ${ac_cv_prog_gcc_traditional+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    ac_pattern="Autoconf.*'x'"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sgtty.h>
-Autoconf TIOCGETP
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
-  ac_cv_prog_gcc_traditional=yes
-else
-  ac_cv_prog_gcc_traditional=no
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
 fi
-rm -f conftest*
 
 
-  if test $ac_cv_prog_gcc_traditional = no; then
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test ${ac_cv_safe_to_define___extensions__+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <termio.h>
-Autoconf TCGETA
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
-  ac_cv_prog_gcc_traditional=yes
-fi
-rm -f conftest*
 
-  fi
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_safe_to_define___extensions__=yes
+else case e in #(
+  e) ac_cv_safe_to_define___extensions__=no ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
-$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
-  if test $ac_cv_prog_gcc_traditional = yes; then
-    CC="$CC -traditional"
-  fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) ac_cv_should_define__xopen_source=no
+    if test $ac_cv_header_wchar_h = yes
+then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
-$as_echo_n "checking for library containing strerror... " >&6; }
-if ${ac_cv_search_strerror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+          #include <wchar.h>
+          mbstate_t x;
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else case e in #(
+  e) 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 strerror ();
+            #define _XOPEN_SOURCE 500
+            #include <wchar.h>
+            mbstate_t x;
 int
-main ()
+main (void)
 {
-return strerror ();
+
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' cposix; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_strerror=$ac_res
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_should_define__xopen_source=yes
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_strerror+:} false; then :
-  break
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-done
-if ${ac_cv_search_strerror+:} false; then :
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
 
-else
-  ac_cv_search_strerror=no
+  printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
+
+  printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+
+  printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
+
+  printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
+
+  printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
+
+  printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
+
+  printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
+
+  printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
+
+  printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+  if test $ac_cv_header_minix_config_h = yes
+then :
+  MINIX=yes
+    printf "%s\n" "#define _MINIX 1" >>confdefs.h
+
+    printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
+
+    printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+else case e in #(
+  e) MINIX= ;;
+esac
 fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+  if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+  printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
-$as_echo "$ac_cv_search_strerror" >&6; }
-ac_res=$ac_cv_search_strerror
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+  if test $ac_cv_should_define__xopen_source = yes
+then :
+  printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
 
 fi
 
 
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-main(){exit(0);}
+int main(){return (0);}
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
+if ac_fn_c_try_run "$LINENO"
+then :
 
+else case e in #(
+  e)
 if test $CC != cc ; then
 echo "Your $CC failed - restarting with CC=cc" 1>&6
 
@@ -3256,60 +3800,69 @@ CC=cc
 export CC
 exec $0 $configure_args
 fi
-
+ ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-main(){exit(0);}
+int main(){return(0);}
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
-else
-  exec 5>&2
+else case e in #(
+  e) exec 5>&2
 eval $ac_link
 echo "CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;" 1>&6
 
 echo "$ac_compile" 1>&6
 
-as_fn_error $? "Can't run the compiler - sorry" "$LINENO" 5
+as_fn_error $? "Can't run the compiler - sorry" "$LINENO" 5 ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-main()
+int main()
 {
   int __something_strange_();
   __something_strange_(0);
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   as_fn_error $? "Your compiler does not set the exit status - sorry" "$LINENO" 5
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 
@@ -3317,38 +3870,44 @@ for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$AWK"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -3357,108 +3916,382 @@ done
 
 
 if test -f etc/toolcheck; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for buggy tools..." >&5
-$as_echo "$as_me: checking for buggy tools..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for buggy tools" >&5
+printf %s "checking for buggy tools... " >&6; }
 sh etc/toolcheck 1>&6
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for System V..." >&5
-$as_echo "$as_me: checking for System V..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for System V" >&5
+printf %s "checking for System V... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <signal.h>
 #include <fcntl.h>
 int
-main ()
+main (void)
 {
 int x = SIGCHLD | FNDELAY;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else case e in #(
+  e) printf "%s\n" "#define SYSV 1" >>confdefs.h
+ ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5
+printf "%s\n" "done" >&6; }
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Solaris 2.x" >&5
+printf %s "checking for Solaris 2.x... " >&6; }
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in grep ggrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
+*GNU*)
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
+      $ac_path_EGREP_TRADITIONAL_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
+  fi
 else
-  $as_echo "#define SYSV 1" >>confdefs.h
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
+fi
+
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
+then :
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in egrep
+   do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
+*GNU*)
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
+*)
+  ac_count=0
+  printf %s 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_TRADITIONAL_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
+fi
+ ;;
+esac
+fi ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if defined(SVR4) && defined(sun)
+  yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
+then :
+  LIBS="$LIBS -lsocket -lnsl -lkstat"
+fi
+rm -rf conftest*
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for POSIX" >&5
+printf %s "checking for POSIX... " >&6; }
+if test "$cross_compiling" = yes
+then :
+  posix=yes
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <unistd.h>
+#include <stdlib.h>
+
+int
+main()
+{
+#ifdef _POSIX_VERSION
+  return (0);
+#else
+  return (1);
+#endif
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+  posix=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
+fi
+
+if test -n "$posix"; then
+printf "%s\n" "#define POSIX 1" >>confdefs.h
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid"
+if test "x$ac_cv_func_seteuid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETEUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid"
+if test "x$ac_cv_func_setreuid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "_exit" "ac_cv_func__exit"
+if test "x$ac_cv_func__exit" = xyes
+then :
+  printf "%s\n" "#define HAVE__EXIT 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd"
+if test "x$ac_cv_func_getcwd" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memcpy" "ac_cv_func_memcpy"
+if test "x$ac_cv_func_memcpy" = xyes
+then :
+  printf "%s\n" "#define HAVE_MEMCPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove"
+if test "x$ac_cv_func_memmove" = xyes
+then :
+  printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo"
+if test "x$ac_cv_func_mkfifo" = xyes
+then :
+  printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
+if test "x$ac_cv_func_strerror" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
+if test "x$ac_cv_func_strftime" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
+if test "x$ac_cv_func_utimes" = xyes
+then :
+  printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "nl_langinfo" "ac_cv_func_nl_langinfo"
+if test "x$ac_cv_func_nl_langinfo" = xyes
+then :
+  printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h
+
+fi
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking select" >&5
+printf %s "checking select... " >&6; }
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris 2.x..." >&5
-$as_echo "$as_me: checking for Solaris 2.x..." >&6;}
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#if defined(SVR4) && defined(sun)
-  yes
-#endif
+ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select"
+if test "x$ac_cv_func_select" = xyes
+then :
+  printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then :
-  LIBS="$LIBS -lsocket -lnsl -lkstat"
 fi
-rm -f conftest*
 
 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking select..." >&5
-$as_echo "$as_me: checking select..." >&6;}
+if test X$av_cv_func_select = Xno; then
+LIBS="$LIBS -lnet -lnsl"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking select with $LIBS" >&5
+printf %s "checking select with $LIBS... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+    #include <sys/select.h>
+
 int
-main ()
+main (void)
 {
-select(0, 0, 0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
 
-else
-  LIBS="$LIBS -lnet -lnsl"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking select with $LIBS..." >&5
-$as_echo "$as_me: checking select with $LIBS..." >&6;}
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+    select(0, 0, 0, 0, 0);
 
-int
-main ()
-{
-select(0, 0, 0, 0, 0);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
-  as_fn_error $? "!!! no select - no screen" "$LINENO" 5
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else case e in #(
+  e) as_fn_error $? "!!! no select - no screen" "$LINENO" 5
+ ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking select return value..." >&5
-$as_echo "$as_me: checking select return value..." >&6;}
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking select return value" >&5
+printf %s "checking select return value... " >&6; }
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <unistd.h>
 
 char *nam = "/tmp/conftest$$";
 
@@ -3472,6 +4305,7 @@ char *nam = "/tmp/conftest$$";
 #endif
 
 
+int
 main()
 {
 #ifdef FD_SET
@@ -3506,6 +4340,7 @@ main()
 #include <sys/socket.h>
 #include <sys/un.h>
 
+int
 main()
 {
   int s1, s2, l;
@@ -3555,277 +4390,323 @@ main()
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   echo "- select is ok" 1>&6
 
-else
-  echo "- select can't count" 1>&6
- $as_echo "#define SELECT_BROKEN 1" >>confdefs.h
-
+else case e in #(
+  e) echo "- select can't count" 1>&6
+ printf "%s\n" "#define SELECT_BROKEN 1" >>confdefs.h
+ ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent..." >&5
-$as_echo "$as_me: checking for tgetent..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent" >&5
+printf %s "checking for tgetent... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+extern char tgetent(void);
 int
-main ()
+main (void)
 {
-tgetent((char *)0, (char *)0);
+tgetent();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-else
-  olibs="$LIBS"
+else case e in #(
+  e) olibs="$LIBS"
 LIBS="-lcurses $olibs"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking libcurses..." >&5
-$as_echo "$as_me: checking libcurses..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libcurses" >&5
+printf %s "checking libcurses... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+extern char tgetent(void);
 int
-main ()
+main (void)
 {
 
 #ifdef __hpux
 __sorry_hpux_libcurses_is_totally_broken_in_10_10();
 #else
-tgetent((char *)0, (char *)0);
+tgetent();
 #endif
 
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-else
-  LIBS="-ltermcap $olibs"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking libtermcap..." >&5
-$as_echo "$as_me: checking libtermcap..." >&6;}
+else case e in #(
+  e) LIBS="-ltermcap $olibs"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtermcap" >&5
+printf %s "checking libtermcap... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+extern char tgetent(void);
 int
-main ()
+main (void)
 {
-tgetent((char *)0, (char *)0);
+tgetent();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-else
-  LIBS="-ltermlib $olibs"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking libtermlib..." >&5
-$as_echo "$as_me: checking libtermlib..." >&6;}
+else case e in #(
+  e) LIBS="-ltermlib $olibs"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libtermlib" >&5
+printf %s "checking libtermlib... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+extern char tgetent(void);
 int
-main ()
+main (void)
 {
-tgetent((char *)0, (char *)0);
+tgetent();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-else
-  LIBS="-lncurses $olibs"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking libncurses..." >&5
-$as_echo "$as_me: checking libncurses..." >&6;}
+else case e in #(
+  e) LIBS="-lncurses $olibs"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking libncurses" >&5
+printf %s "checking libncurses... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+extern char tgetent(void);
 int
-main ()
+main (void)
 {
-tgetent((char *)0, (char *)0);
+tgetent();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
 
-else
-  as_fn_error $? "!!! no tgetent - no screen" "$LINENO" 5
+else case e in #(
+  e) as_fn_error $? "!!! no tgetent - no screen" "$LINENO" 5 ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+#include <string.h>
 extern char *tgoto();
+int
 main()
 {
exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
return(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   echo "- you use the termcap database" 1>&6
 
-else
-  echo "- you use the terminfo database" 1>&6
- $as_echo "#define TERMINFO 1" >>confdefs.h
-
+else case e in #(
+  e) echo "- you use the terminfo database" 1>&6
+ printf "%s\n" "#define TERMINFO 1" >>confdefs.h
+ ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking ospeed..." >&5
-$as_echo "$as_me: checking ospeed..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking ospeed" >&5
+printf %s "checking ospeed... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 extern short ospeed;
 int
-main ()
+main (void)
 {
 ospeed=5;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
+if ac_fn_c_try_link "$LINENO"
+then :
+  have_ospeed=yes
+else case e in #(
+  e) have_ospeed=no ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_ospeed" >&5
+printf "%s\n" "$have_ospeed" >&6; }
+if test $have_ospeed = yes; then
+       :
 else
-  $as_echo "#define NEED_OSPEED 1" >>confdefs.h
+printf "%s\n" "#define NEED_OSPEED 1" >>confdefs.h
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc..." >&5
-$as_echo "$as_me: checking for /dev/ptc..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5
+printf %s "checking for /dev/ptc... " >&6; }
 if test -r /dev/ptc; then
-$as_echo "#define HAVE_DEV_PTC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DEV_PTC 1" >>confdefs.h
 
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SVR4 ptys..." >&5
-$as_echo "$as_me: checking for SVR4 ptys..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SVR4 ptys" >&5
+printf %s "checking for SVR4 ptys... " >&6; }
 sysvr4ptys=
 if test -c /dev/ptmx ; then
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <stdlib.h>
 int
-main ()
+main (void)
 {
 ptsname(0);grantpt(0);unlockpt(0);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  $as_echo "#define HAVE_SVR4_PTYS 1" >>confdefs.h
+if ac_fn_c_try_link "$LINENO"
+then :
+  printf "%s\n" "#define HAVE_SVR4_PTYS 1" >>confdefs.h
 
 sysvr4ptys=1
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 fi
+if test -n "$sysvr4ptys"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
 
-for ac_func in getpt
-do :
-  ac_fn_c_check_func "$LINENO" "getpt" "ac_cv_func_getpt"
-if test "x$ac_cv_func_getpt" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPT 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "getpt" "ac_cv_func_getpt"
+if test "x$ac_cv_func_getpt" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETPT 1" >>confdefs.h
 
 fi
-done
 
 
 if test -z "$sysvr4ptys"; then
-for ac_func in openpty
+
+  for ac_func in openpty
 do :
   ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty"
-if test "x$ac_cv_func_openpty" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENPTY 1
-_ACEOF
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5
-$as_echo_n "checking for openpty in -lutil... " >&6; }
-if ${ac_cv_lib_util_openpty+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
+if test "x$ac_cv_func_openpty" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
+
+else case e in #(
+  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5
+printf %s "checking for openpty in -lutil... " >&6; }
+if test ${ac_cv_lib_util_openpty+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) ac_check_lib_save_LIBS=$LIBS
 LIBS="-lutil  $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.  */
+   builtin and then its argument prototype would still apply.
+   The 'extern "C"' is for builds by C++ compilers;
+   although this is not generally supported in C code supporting it here
+   has little cost and some practical benefit (sr 110532).  */
 #ifdef __cplusplus
 extern "C"
 #endif
-char openpty ();
+char openpty (void);
 int
-main ()
+main (void)
 {
 return openpty ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_util_openpty=yes
-else
-  ac_cv_lib_util_openpty=no
+else case e in #(
+  e) ac_cv_lib_util_openpty=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+LIBS=$ac_check_lib_save_LIBS ;;
+esac
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5
-$as_echo "$ac_cv_lib_util_openpty" >&6; }
-if test "x$ac_cv_lib_util_openpty" = xyes; then :
-  $as_echo "#define HAVE_OPENPTY 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5
+printf "%s\n" "$ac_cv_lib_util_openpty" >&6; }
+if test "x$ac_cv_lib_util_openpty" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
  LIBS="$LIBS -lutil"
 fi
-
+ ;;
+esac
 fi
-done
 
+done
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ptyranges..." >&5
-$as_echo "$as_me: checking for ptyranges..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ptyranges" >&5
+printf %s "checking for ptyranges... " >&6; }
 if test -d /dev/ptym ; then
 pdir='/dev/ptym'
 else
@@ -3839,65 +4720,67 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then :
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
+then :
   ptys=`echo /dev/ptyp??`
-else
-  ptys=`echo $pdir/pty??`
+else case e in #(
+  e) ptys=`echo $pdir/pty??` ;;
+esac
 fi
-rm -f conftest*
+rm -rf conftest*
 
 if test "$ptys" != "$pdir/pty??" ; then
 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
-cat >>confdefs.h <<_ACEOF
-#define PTYRANGE0 "$p0"
-_ACEOF
+printf "%s\n" "#define PTYRANGE0 \"$p0\"" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PTYRANGE1 "$p1"
-_ACEOF
+printf "%s\n" "#define PTYRANGE1 \"$p1\"" >>confdefs.h
 
 fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5
+printf "%s\n" "done" >&6; }
 
 
 # Check whether --with-pty-mode was given.
-if test "${with_pty_mode+set}" = set; then :
+if test ${with_pty_mode+y}
+then :
   withval=$with_pty_mode;  ptymode="${withval}"
 fi
 
 
 # Check whether --with-pty-group was given.
-if test "${with_pty_group+set}" = set; then :
+if test ${with_pty_group+y}
+then :
   withval=$with_pty_group;  ptygrp="${withval}"
 fi
 
 test -n "$ptymode" || ptymode=0620
 if test -n "$ptygrp" ; then
-cat >>confdefs.h <<_ACEOF
-#define PTYMODE $ptymode
-_ACEOF
+printf "%s\n" "#define PTYMODE $ptymode" >>confdefs.h
 
-cat >>confdefs.h <<_ACEOF
-#define PTYGROUP $ptygrp
-_ACEOF
+printf "%s\n" "#define PTYGROUP $ptygrp" >>confdefs.h
 
 else
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking default tty permissions/group..." >&5
-$as_echo "$as_me: checking default tty permissions/group..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking default tty permissions/group" >&5
+printf %s "checking default tty permissions/group... " >&6; }
 rm -f conftest_grp
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+int
 main()
 {
   struct stat sb;
@@ -3924,37 +4807,35 @@ main()
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
     if test -f conftest_grp; then
        ptygrp=`cat conftest_grp`
        echo "- pty mode: $ptymode, group: $ptygrp" 1>&6
 
-       cat >>confdefs.h <<_ACEOF
-#define PTYMODE $ptymode
-_ACEOF
+       printf "%s\n" "#define PTYMODE $ptymode" >>confdefs.h
 
-       cat >>confdefs.h <<_ACEOF
-#define PTYGROUP $ptygrp
-_ACEOF
+       printf "%s\n" "#define PTYGROUP $ptygrp" >>confdefs.h
 
     else
        echo "- ptys are world accessable" 1>&6
 
     fi
 
-else
-
+else case e in #(
+  e)
     WRITEPATH=''
     XTERMPATH=''
     # Extract the first word of "write", so it can be a program name with args.
 set dummy write; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_WRITEPATH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $WRITEPATH in
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_WRITEPATH+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) case $WRITEPATH in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_WRITEPATH="$WRITEPATH" # Let the user override the test with a path.
   ;;
@@ -3963,11 +4844,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_WRITEPATH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_WRITEPATH="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -3975,26 +4860,28 @@ done
 IFS=$as_save_IFS
 
   ;;
+esac ;;
 esac
 fi
 WRITEPATH=$ac_cv_path_WRITEPATH
 if test -n "$WRITEPATH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WRITEPATH" >&5
-$as_echo "$WRITEPATH" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WRITEPATH" >&5
+printf "%s\n" "$WRITEPATH" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
     # Extract the first word of "xterm", so it can be a program name with args.
 set dummy xterm; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XTERMPATH+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $XTERMPATH in
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_XTERMPATH+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) case $XTERMPATH in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_XTERMPATH="$XTERMPATH" # Let the user override the test with a path.
   ;;
@@ -4003,11 +4890,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_XTERMPATH="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_XTERMPATH="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4015,15 +4906,16 @@ done
 IFS=$as_save_IFS
 
   ;;
+esac ;;
 esac
 fi
 XTERMPATH=$ac_cv_path_XTERMPATH
 if test -n "$XTERMPATH"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XTERMPATH" >&5
-$as_echo "$XTERMPATH" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XTERMPATH" >&5
+printf "%s\n" "$XTERMPATH" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -4049,13 +4941,9 @@ fi
        ptygrp=`ls -ln$lsfollow $found | sed -n -e 1p | $AWK '{print $4}'`
        echo "- pty mode: $ptymode, group: $ptygrp" 1>&6
 
-       cat >>confdefs.h <<_ACEOF
-#define PTYMODE $ptymode
-_ACEOF
+       printf "%s\n" "#define PTYMODE $ptymode" >>confdefs.h
 
-       cat >>confdefs.h <<_ACEOF
-#define PTYGROUP $ptygrp
-_ACEOF
+       printf "%s\n" "#define PTYGROUP $ptygrp" >>confdefs.h
 
       else
        echo "- ptys are world accessable" 1>&6
@@ -4066,10 +4954,12 @@ _ACEOF
 
     fi
 
-
+ ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
 rm -f conftest_grp
@@ -4079,13 +4969,14 @@ if test -n "$posix" ; then
 
 echo "assuming posix signal definition" 1>&6
 
-$as_echo "#define SIGVOID 1" >>confdefs.h
+printf "%s\n" "#define SIGVOID 1" >>confdefs.h
 
+printf "%s\n" "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h
 
 else
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers..." >&5
-$as_echo "$as_me: checking return type of signal handlers..." >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
+printf %s "checking return type of signal handlers... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
@@ -4095,20 +4986,21 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #endif
 extern void (*signal ()) ();
 int
-main ()
+main (void)
 {
 int i;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  $as_echo "#define SIGVOID 1" >>confdefs.h
+if ac_fn_c_try_compile "$LINENO"
+then :
+  printf "%s\n" "#define SIGVOID 1" >>confdefs.h
 
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sigset..." >&5
-$as_echo "$as_me: checking sigset..." >&6;}
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking sigset" >&5
+printf %s "checking sigset... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -4116,7 +5008,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 #include <signal.h>
 
 int
-main ()
+main (void)
 {
 
 #ifdef SIGVOID
@@ -4129,21 +5021,23 @@ sigset(0, (int (*)())0);
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  $as_echo "#define USESIGSET 1" >>confdefs.h
+if ac_fn_c_try_link "$LINENO"
+then :
+  printf "%s\n" "#define USESIGSET 1" >>confdefs.h
 
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking signal implementation..." >&5
-$as_echo "$as_me: checking signal implementation..." >&6;}
-if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking signal implementation" >&5
+printf %s "checking signal implementation... " >&6; }
+if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+See 'config.log' for more details" "$LINENO" 5; }
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/types.h>
@@ -4166,6 +5060,7 @@ hand()
   got++;
 }
 
+int
 main()
 {
   /* on hpux we use sigvec to get bsd signals */
@@ -4174,179 +5069,60 @@ main()
   kill(getpid(), SIGCLD);
   kill(getpid(), SIGCLD);
   if (got < 2)
-    exit(1);
+    return(1);
 #endif
-  exit(0);
+  return(0);
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  $as_echo "#define SYSVSIGS 1" >>confdefs.h
+if ac_fn_c_try_run "$LINENO"
+then :
 
+else case e in #(
+  e) printf "%s\n" "#define SYSVSIGS 1" >>confdefs.h
+ ;;
+esac
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
+  conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
 
 fi
 
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stropts.h" "ac_cv_header_sys_stropts_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stropts_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_STROPTS_H 1" >>confdefs.h
 
 fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_wait_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
 
 fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "sgtty.h" "ac_cv_header_sgtty_h" "$ac_includes_default"
+if test "x$ac_cv_header_sgtty_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SGTTY_H 1" >>confdefs.h
 
 fi
-
-done
-
-
-for ac_header in sys/stropts.h sys/wait.h sgtty.h sys/select.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
 
 fi
 
-done
-
-for ac_header in term.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "term.h" "ac_cv_header_term_h" "$ac_includes_default"
-if test "x$ac_cv_header_term_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_TERM_H 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" "$ac_includes_default"
+if test "x$ac_cv_header_term_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_TERM_H 1" >>confdefs.h
 
 fi
 
-done
-
 
 ac_config_files="$ac_config_files Makefile"
 
@@ -4360,8 +5136,8 @@ cat >confcache <<\_ACEOF
 # config.status only pays attention to the cache file if you give it
 # the --recheck option to rerun configure.
 #
-# `ac_cv_env_foo' variables (set or unset) will be overridden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# 'ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* 'ac_cv_foo' will be assigned the
 # following values.
 
 _ACEOF
@@ -4377,8 +5153,8 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -4391,14 +5167,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes: double-quote
+      # 'set' does not quote correctly, so add quotes: double-quote
       # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
        "s/'/'\\\\''/g;
          s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
       ;; #(
     *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      # 'set' quotes correctly as required by POSIX, so do not add quotes.
       sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
     esac |
@@ -4408,15 +5184,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
      /^ac_cv_env_/b end
      t clear
      :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
      t end
      s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
       if test ! -f "$cache_file" || test -h "$cache_file"; then
        cat confcache >"$cache_file"
       else
@@ -4430,8 +5206,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;}
       fi
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -4448,7 +5224,7 @@ U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -4464,8 +5240,8 @@ LTLIBOBJS=$ac_ltlibobjs
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
 as_write_fail=0
 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
@@ -4488,63 +5264,65 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
+else case e in #(
+  e) case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
   *) :
      ;;
+esac ;;
 esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""       $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -4553,13 +5331,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -4568,43 +5339,27 @@ case $0 in #((
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
      ;;
 esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
+# We did not find ourselves, most probably we were run as 'sh COMMAND'
 # in which case we are not to be found in the path.
 if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -4617,9 +5372,9 @@ as_fn_error ()
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-  $as_echo "$as_me: error: $2" >&2
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -4650,22 +5405,25 @@ as_fn_unset ()
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
+
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
-  as_fn_append ()
+else case e in #(
+  e) as_fn_append ()
   {
     eval $1=\$$1\$2
-  }
+  } ;;
+esac
 fi # as_fn_append
 
 # as_fn_arith ARG...
@@ -4673,16 +5431,18 @@ fi # as_fn_append
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
-  as_fn_arith ()
+else case e in #(
+  e) as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
-  }
+  } ;;
+esac
 fi # as_fn_arith
 
 
@@ -4709,7 +5469,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
         X"$0" : 'X\(//\)$' \| \
         X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
            s//\1/
            q
@@ -4731,6 +5491,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -4744,6 +5508,12 @@ case `echo -n x` in #(((((
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -4755,18 +5525,18 @@ if (echo >conf$$.file) 2>/dev/null; then
   if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
     # ... but there are two gotchas:
-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable.
+    # In both cases, we have to default to 'cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -4785,7 +5555,7 @@ as_fn_mkdir_p ()
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -4794,7 +5564,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$as_dir" : 'X\(//\)[^/]' \| \
         X"$as_dir" : 'X\(//\)$' \| \
         X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -4826,34 +5596,24 @@ else
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-       test -d "$1/.";
-      else
-       case $1 in #(
-       -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated
 
 # Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed '$as_sed_sh'" # deprecated
 
 
 exec 6>&1
@@ -4868,8 +5628,8 @@ 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 $as_me, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by rlfe $as_me 0.4, which was
+generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -4900,7 +5660,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files and other configuration actions
+'$as_me' instantiates files and other configuration actions
 from templates according to the current configuration.  Unless the files
 and actions are specified as TAGs, all are instantiated by default.
 
@@ -4927,14 +5687,16 @@ $config_headers
 Report bugs to the package provider."
 
 _ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.68,
+rlfe config.status 0.4
+configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2023 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -4972,15 +5734,15 @@ do
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
+    printf "%s\n" "$ac_cs_version"; exit ;;
   --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
+    printf "%s\n" "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -4988,23 +5750,23 @@ do
   --header | --heade | --head | --hea )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error $? "ambiguous option: \`$1'
-Try \`$0 --help' for more information.";;
+    as_fn_error $? "ambiguous option: '$1'
+Try '$0 --help' for more information.";;
   --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
+    printf "%s\n" "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error $? "unrecognized option: \`$1'
-Try \`$0 --help' for more information." ;;
+  -*) as_fn_error $? "unrecognized option: '$1'
+Try '$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
@@ -5023,9 +5785,9 @@ fi
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
   exec "\$@"
@@ -5039,7 +5801,7 @@ exec 5>>config.log
   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 ## Running $as_me. ##
 _ASBOX
-  $as_echo "$ac_log"
+  printf "%s\n" "$ac_log"
 } >&5
 
 _ACEOF
@@ -5055,7 +5817,7 @@ do
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
 
-  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
@@ -5065,8 +5827,8 @@ done
 # We use the long form for the default assignment because of an extremely
 # bizarre bug on SunOS 4.1.3.
 if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+  test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
@@ -5074,7 +5836,7 @@ fi
 # creating and moving files from /tmp can sometimes cause problems.
 # Hook for its removal unless debugging.
 # Note that there is a small window in which the directory will not be cleaned:
-# after its creation but before its name has been assigned to `$tmp'.
+# after its creation but before its name has been assigned to '$tmp'.
 $debug ||
 {
   tmp= ac_tmp=
@@ -5098,7 +5860,7 @@ ac_tmp=$tmp
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
-# This happens for instance with `./config.status config.h'.
+# This happens for instance with './config.status config.h'.
 if test -n "$CONFIG_FILES"; then
 
 
@@ -5256,13 +6018,13 @@ fi # test -n "$CONFIG_FILES"
 
 # Set up the scripts for CONFIG_HEADERS section.
 # No need to generate them if there are no CONFIG_HEADERS.
-# This happens for instance with `./config.status Makefile'.
+# This happens for instance with './config.status Makefile'.
 if test -n "$CONFIG_HEADERS"; then
 cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
 BEGIN {
 _ACEOF
 
-# Transform confdefs.h into an awk script `defines.awk', embedded as
+# Transform confdefs.h into an awk script 'defines.awk', embedded as
 # here-document in config.status, that substitutes the proper values into
 # config.h.in to produce config.h.
 
@@ -5372,7 +6134,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -5394,33 +6156,33 @@ do
       -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
         # (if the path is not absolute).  The absolute path cannot be DOS-style,
-        # because $ac_f cannot contain `:'.
+        # because $ac_f cannot contain ':'.
         test -f "$ac_f" ||
           case $ac_f in
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+          as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;;
       esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
     done
 
-    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # Let's still pretend it is 'configure' which instantiates (i.e., don't
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
     configure_input='Generated from '`
-         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+         printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
        `' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
     case $configure_input in #(
     *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
+       ac_sed_conf_input=`printf "%s\n" "$configure_input" |
        sed 's/[\\\\&|]/\\\\&/g'`;; #(
     *) ac_sed_conf_input=$configure_input;;
     esac
@@ -5437,7 +6199,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$ac_file" : 'X\(//\)[^/]' \| \
         X"$ac_file" : 'X\(//\)$' \| \
         X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -5461,9 +6223,9 @@ $as_echo X"$ac_file" |
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -5516,8 +6278,8 @@ ac_sed_dataroot='
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
@@ -5530,7 +6292,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 esac
 _ACEOF
 
-# Neutralize VPATH when `$srcdir' = `.'.
+# Neutralize VPATH when '$srcdir' = '.'.
 # Shell code in configure.ac might set extrasub.
 # FIXME: do we really want to maintain this feature?
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
@@ -5559,9 +6321,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
       "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$ac_tmp/stdin"
@@ -5577,20 +6339,20 @@ which seems to be undefined.  Please make sure it is defined" >&2;}
   #
   if test x"$ac_file" != x-; then
     {
-      $as_echo "/* $configure_input  */" \
+      printf "%s\n" "/* $configure_input  */" >&1 \
       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
     } >"$ac_tmp/config.h" \
       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
       mv "$ac_tmp/config.h" "$ac_file" \
        || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
-    $as_echo "/* $configure_input  */" \
+    printf "%s\n" "/* $configure_input  */" >&1 \
       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
       || as_fn_error $? "could not create -" "$LINENO" 5
   fi
@@ -5631,7 +6393,8 @@ if test "$no_create" != yes; then
   $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+
similarity index 74%
rename from examples/rlfe/configure.in
rename to examples/rlfe/configure.ac
index ad7ce65fc06ba9a8196a8c3b13ae5d282bd03c86..2b86a7676b7b44d5721a5abea333338e808eb7ae 100644 (file)
@@ -1,10 +1,16 @@
 dnl Process this file with autoconf to produce a configure script.
+dnl last update: Fri May 10 10:45:29 EDT 2024
 
-AC_INIT(rlfe.c)
-AC_CONFIG_HEADER(config.h)
 VERSION=0.4
+
+AC_INIT(rlfe, 0.4)
+AC_CONFIG_SRCDIR(rlfe.c)
+AC_CONFIG_HEADERS(config.h)
 AC_SUBST(VERSION)
 
+dnl we don't do anything with this yet
+AC_SUBST(INCDIR)
+
 dnl
 dnl Define some useful macros
 dnl
@@ -21,16 +27,18 @@ rm -f conftest*
 ])dnl
 dnl
 define(AC_NOTE,
-[echo "$1" 1>&AC_FD_MSG
+[echo "$1" 1>&AS_MESSAGE_FD
 ])dnl
 
 old_CFLAGS="$CFLAGS"
 AC_PROG_CC
 AC_PROG_CPP
-AC_PROG_GCC_TRADITIONAL
-AC_ISC_POSIX
 
-AC_TRY_RUN(main(){exit(0);},,[
+AC_PROG_MAKE_SET
+
+AC_USE_SYSTEM_EXTENSIONS
+
+AC_TRY_RUN(int main(){return (0);},,[
 if test $CC != cc ; then
 AC_NOTE(Your $CC failed - restarting with CC=cc)
 AC_NOTE()
@@ -40,7 +48,7 @@ exec $0 $configure_args
 fi
 ])
 
-AC_TRY_RUN(main(){exit(0);},,
+AC_TRY_RUN(int main(){return(0);},,
 exec 5>&2
 eval $ac_link
 AC_NOTE(CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;)
@@ -48,7 +56,7 @@ AC_NOTE($ac_compile)
 AC_MSG_ERROR(Can't run the compiler - sorry))
 
 AC_TRY_RUN([
-main()
+int main()
 {
   int __something_strange_();
   __something_strange_(0);
@@ -58,47 +66,99 @@ main()
 AC_PROG_AWK
 
 if test -f etc/toolcheck; then
-AC_CHECKING(for buggy tools)
-sh etc/toolcheck 1>&AC_FD_MSG
+AC_MSG_CHECKING(for buggy tools)
+sh etc/toolcheck 1>&AS_MESSAGE_FD
 fi
 
 dnl
 dnl    ****  special unix variants  ****
 dnl
 
-AC_CHECKING(for System V)
+AC_MSG_CHECKING(for System V)
 AC_TRY_COMPILE(
 [#include <sys/types.h>
 #include <signal.h>
 #include <fcntl.h>], [int x = SIGCHLD | FNDELAY;], , AC_DEFINE(SYSV))
+AC_MSG_RESULT(done)
 
-AC_CHECKING(for Solaris 2.x)
+AC_MSG_CHECKING(for Solaris 2.x)
 AC_EGREP_CPP(yes,
 [#if defined(SVR4) && defined(sun)
   yes
 #endif
 ], LIBS="$LIBS -lsocket -lnsl -lkstat")
 
+AC_MSG_CHECKING(for POSIX)
+AC_TRY_RUN([
+#include <unistd.h>
+#include <stdlib.h>
+
+int
+main()
+{
+#ifdef _POSIX_VERSION
+  return (0);
+#else
+  return (1);
+#endif
+}
+], posix=yes, , posix=yes)
+if test -n "$posix"; then
+AC_DEFINE(POSIX)
+AC_MSG_RESULT(yes)
+else
+AC_MSG_RESULT(no)
+fi
+
+dnl
+dnl libc
+dnl
+
+dnl system calls
+AC_CHECK_FUNCS(seteuid setreuid _exit)
+
+dnl library functions
+AC_CHECK_FUNCS(getcwd memcpy memmove mkfifo strerror strftime utimes)
+
+dnl locale
+AC_CHECK_FUNCS(setlocale nl_langinfo)
+
 dnl
 dnl    ****  select()  ****
 dnl
 
-AC_CHECKING(select)
-AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, 
+AC_MSG_CHECKING(select)
+AC_CHECK_HEADERS(sys/select.h)
+AC_CHECK_FUNCS(select)
+
+if test X$av_cv_func_select = Xno; then
 LIBS="$LIBS -lnet -lnsl"
-AC_CHECKING(select with $LIBS)
-AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, 
-AC_MSG_ERROR(!!! no select - no screen))
+AC_MSG_CHECKING(select with $LIBS)
+AC_TRY_LINK(
+[
+    #include <sys/select.h>
+],
+[ 
+    select(0, 0, 0, 0, 0);
+],
+AC_MSG_RESULT(yes), 
+AC_MSG_ERROR(!!! no select - no screen)
 )
+fi
+
 dnl
 dnl    ****  check the select implementation ****
 dnl
 
-AC_CHECKING(select return value)
+AC_MSG_CHECKING(select return value)
 AC_TRY_RUN([
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <unistd.h>
 
 char *nam = "/tmp/conftest$$";
 
@@ -112,6 +172,7 @@ char *nam = "/tmp/conftest$$";
 #endif
 
 
+int
 main()
 {
 #ifdef FD_SET
@@ -146,6 +207,7 @@ main()
 #include <sys/socket.h>
 #include <sys/un.h>
 
+int
 main()
 {
   int s1, s2, l;
@@ -199,53 +261,69 @@ AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN))
 dnl
 dnl    ****  termcap or terminfo  ****
 dnl
-AC_CHECKING(for tgetent)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_MSG_CHECKING(for tgetent)
+AC_TRY_LINK([extern char tgetent(void);],tgetent();,,
 olibs="$LIBS"
 LIBS="-lcurses $olibs"
-AC_CHECKING(libcurses)
-AC_TRY_LINK(,[
+AC_MSG_CHECKING(libcurses)
+AC_TRY_LINK([extern char tgetent(void);],[
 #ifdef __hpux
 __sorry_hpux_libcurses_is_totally_broken_in_10_10();
 #else
-tgetent((char *)0, (char *)0);
+tgetent();
 #endif
 ],,
 LIBS="-ltermcap $olibs"
-AC_CHECKING(libtermcap)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_MSG_CHECKING(libtermcap)
+AC_TRY_LINK([extern char tgetent(void);],tgetent();,,
 LIBS="-ltermlib $olibs"
-AC_CHECKING(libtermlib)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_MSG_CHECKING(libtermlib)
+AC_TRY_LINK([extern char tgetent(void);],tgetent();,,
 LIBS="-lncurses $olibs"
-AC_CHECKING(libncurses)
-AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+AC_MSG_CHECKING(libncurses)
+AC_TRY_LINK([extern char tgetent(void);],tgetent();,,
 AC_MSG_ERROR(!!! no tgetent - no screen))))))
 
 AC_TRY_RUN([
+#include <string.h>
 extern char *tgoto();
+int
 main()
 {
exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
return(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
 }], AC_NOTE(- you use the termcap database),
 AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO))
-AC_CHECKING(ospeed)
-AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
+AC_MSG_CHECKING(ospeed)
+AC_TRY_LINK([extern short ospeed;],[ospeed=5;],have_ospeed=yes,have_ospeed=no)
+AC_MSG_RESULT($have_ospeed)
+if test $have_ospeed = yes; then
+       :
+else
+AC_DEFINE(NEED_OSPEED)
+fi
 
 dnl
 dnl    ****  PTY specific things  ****
 dnl
-AC_CHECKING(for /dev/ptc)
+AC_MSG_CHECKING(for /dev/ptc)
 if test -r /dev/ptc; then
 AC_DEFINE(HAVE_DEV_PTC)
+AC_MSG_RESULT(yes)
+else
+AC_MSG_RESULT(no)
 fi
 
-AC_CHECKING(for SVR4 ptys)
+AC_MSG_CHECKING(for SVR4 ptys)
 sysvr4ptys=
 if test -c /dev/ptmx ; then
-AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS)
+AC_TRY_LINK([#include <stdlib.h>],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS)
 sysvr4ptys=1])
 fi
+if test -n "$sysvr4ptys"; then
+AC_MSG_RESULT(yes)
+else
+AC_MSG_RESULT(no)
+fi
 
 AC_CHECK_FUNCS(getpt)
 
@@ -255,7 +333,7 @@ AC_CHECK_FUNCS(openpty,,
 [AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])])
 fi
 
-AC_CHECKING(for ptyranges)
+AC_MSG_CHECKING(for ptyranges)
 if test -d /dev/ptym ; then
 pdir='/dev/ptym'
 else
@@ -278,6 +356,7 @@ p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\
 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
 fi
+AC_MSG_RESULT(done)
 
 dnl    ****  pty mode/group handling ****
 dnl
@@ -290,12 +369,15 @@ AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
 else
 
-AC_CHECKING(default tty permissions/group)
+AC_MSG_CHECKING(default tty permissions/group)
 rm -f conftest_grp
 AC_TRY_RUN([
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+int
 main()
 {
   struct stat sb;
@@ -376,10 +458,10 @@ if test -n "$posix" ; then
 dnl POSIX has reliable signals with void return type.
 AC_NOTE(assuming posix signal definition)
 AC_DEFINE(SIGVOID)
-
+AC_DEFINE(HAVE_POSIX_SIGNALS)
 else
 
-AC_CHECKING(return type of signal handlers)
+AC_MSG_CHECKING(return type of signal handlers)
 AC_TRY_COMPILE(
 [#include <sys/types.h>
 #include <signal.h>
@@ -387,7 +469,7 @@ AC_TRY_COMPILE(
 #undef signal
 #endif
 extern void (*signal ()) ();], [int i;], AC_DEFINE(SIGVOID))
-AC_CHECKING(sigset)
+AC_MSG_CHECKING(sigset)
 AC_TRY_LINK([
 #include <sys/types.h>
 #include <signal.h>
@@ -398,7 +480,7 @@ sigset(0, (void (*)())0);
 sigset(0, (int (*)())0);
 #endif
 ], AC_DEFINE(USESIGSET))
-AC_CHECKING(signal implementation)
+AC_MSG_CHECKING(signal implementation)
 AC_TRY_RUN([
 #include <sys/types.h>
 #include <signal.h>
@@ -420,6 +502,7 @@ hand()
   got++;
 }
 
+int
 main()
 {
   /* on hpux we use sigvec to get bsd signals */
@@ -428,9 +511,9 @@ main()
   kill(getpid(), SIGCLD);
   kill(getpid(), SIGCLD);
   if (got < 2)
-    exit(1);
+    return(1);
 #endif
-  exit(0);
+  return(0);
 }
 ],,AC_DEFINE(SYSVSIGS))
 
@@ -439,4 +522,5 @@ fi
 AC_CHECK_HEADERS(sys/stropts.h sys/wait.h sgtty.h sys/select.h)
 AC_CHECK_HEADERS(term.h)
 
-AC_OUTPUT(Makefile)
+AC_CONFIG_FILES(Makefile)
+AC_OUTPUT
index df06c758099209b836c438595ccf94a52f66845c..3aac7ec6d1559cf58e5d0eedad985707ed003609 100644 (file)
@@ -144,7 +144,8 @@ extern int errno;
 #endif
 
 #ifndef USEBCOPY
-# ifdef USEMEMMOVE
+# undef bcopy
+# ifdef HAVE_MEMMOVE
 #  define bcopy(s,d,len) memmove(d,s,len)
 # else
 #  ifdef USEMEMCPY
@@ -428,7 +429,7 @@ extern int errno;
 #define SIGCHLD SIGCLD
 #endif
 
-#if defined(POSIX) || defined(hpux)
+#if defined(hpux)
 # define signal xsignal
 #else
 # ifdef USESIGSET
index 556272040c60a87aba5c7820d6e58d12eab1297b..1403c687f61bdabd57f6fcd401b1758b704af23a 100644 (file)
@@ -26,7 +26,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <signal.h>
-
+#include <stdlib.h>
 #include <unistd.h>
 
 #include "screen.h"
@@ -112,8 +112,7 @@ int pty_preopen = 0;
 /***************************************************************/
 
 static void
-initmaster(f)
-int f;
+initmaster(int f)
 {
 #ifdef POSIX
   tcflush(f, TCIOFLUSH);
@@ -128,8 +127,7 @@ int f;
 }
 
 void
-InitPTY(f)
-int f;
+InitPTY(int f)
 {
   if (f < 0)
     return;
@@ -150,8 +148,7 @@ int f;
 #if defined(OSX) && !defined(PTY_DONE)
 #define PTY_DONE
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   register int f;
   if ((f = open_controlling_pty(TtyName)) < 0)
@@ -167,8 +164,7 @@ char **ttyn;
 #if (defined(sequent) || defined(_SEQUENT_)) && !defined(PTY_DONE)
 #define PTY_DONE
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   char *m, *s;
   register int f;
@@ -191,8 +187,7 @@ char **ttyn;
 #if defined(__sgi) && !defined(PTY_DONE)
 #define PTY_DONE
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   int f;
   char *name, *_getpty(); 
@@ -219,8 +214,7 @@ char **ttyn;
 #if defined(MIPS) && defined(HAVE_DEV_PTC) && !defined(PTY_DONE)
 #define PTY_DONE
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   register int f;
   struct stat buf;
@@ -245,11 +239,11 @@ char **ttyn;
 #if defined(HAVE_SVR4_PTYS) && !defined(PTY_DONE)
 #define PTY_DONE
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   register int f;
-  char *m, *ptsname();
+  char *m;
+  char *ptsname __P((int));
   int unlockpt __P((int)), grantpt __P((int));
 #if defined(HAVE_GETPT) && defined(linux)
   int getpt __P((void));
@@ -289,8 +283,7 @@ char **ttyn;
 #define PTY_DONE
 
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   register int f;
 
@@ -318,8 +311,7 @@ char **ttyn;
 #if defined(HAVE_OPENPTY) && !defined(PTY_DONE)
 #define PTY_DONE
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   int f, s;
   if (openpty(&f, &s, TtyName, NULL, NULL) != 0)
@@ -336,8 +328,7 @@ char **ttyn;
 
 #ifndef PTY_DONE
 int
-OpenPTY(ttyn)
-char **ttyn;
+OpenPTY(char **ttyn)
 {
   register char *p, *q, *l, *d;
   register int f;
index f40b2ddaf00fcd060a2d8b1b895d759481bc92ea..0e8ef2b8246dedcf2e16da87637bd19a3433ef22 100644 (file)
 #  else
 #    define memmove(d, s, n)   memcpy(d, s, n)
 #  endif
-#else
-#  define memmove(d, s, n)     memcpy(d, s, n)
 #endif
 
 #define APPLICATION_NAME "rlfe"
 
 static int in_from_inferior_fd;
 static int out_to_inferior_fd;
-static void set_edit_mode ();
-static void usage_exit ();
+static void set_edit_mode (void);
+static void usage_exit (void);
 static char *hist_file = 0;
 static int  hist_size = 0;
 
@@ -267,7 +265,7 @@ static void maybe_emphasize_input (int on)
   if (on == current_emphasize_input
       || (on && ! do_emphasize_input))
     return;
-  fprintf (rl_outstream, on ? start_input_mode : end_input_mode);
+  fprintf (rl_outstream, "%s", on ? start_input_mode : end_input_mode);
   fflush (rl_outstream);
   current_emphasize_input = on;
 }
@@ -278,7 +276,7 @@ null_prep_terminal (int meta)
 }
 
 static void
-null_deprep_terminal ()
+null_deprep_terminal (void)
 {
   maybe_emphasize_input (0);
 }
@@ -756,7 +754,7 @@ main(int argc, char** argv)
     }
 }
 
-static void set_edit_mode ()
+static void set_edit_mode (void)
 {
   int vi = 0;
   char *shellopts;
@@ -785,7 +783,7 @@ static void set_edit_mode ()
 }
 
 
-static void usage_exit ()
+static void usage_exit (void)
 {
   fprintf (stderr, "Usage: rlfe [-h histfile] [-s size] cmd [arg1] [arg2] ...\n\n");
   exit (1);
index d170f62ff822cc12d66319e6dec2af2633d37bb4..0368728c1f84b83d0b0fd38040ba4bc5389a9722 100644 (file)
@@ -19,6 +19,7 @@
 
 #include <signal.h>
 
+/* Need a configure check here to turn this into a real application. */
 #if 1  /* LINUX */
 #include <pty.h>
 #else
 
 #ifdef READLINE_LIBRARY
 #  include "readline.h"
+#  include "history.h"
 #else
 #  include <readline/readline.h>
+#  include <readline/history.h>
 #endif
 
+int tty_reset(int fd);
+
 /**
  * Master/Slave PTY used to keep readline off of stdin/stdout.
  */
@@ -42,8 +47,7 @@ static int masterfd = -1;
 static int slavefd;
 
 void
-sigint (s)
-     int s;
+sigint (int s)
 {
   tty_reset (STDIN_FILENO);
   close (masterfd);
@@ -53,14 +57,13 @@ sigint (s)
 }
 
 void
-sigwinch (s)
-     int s;
+sigwinch (int s)
 {
   rl_resize_terminal ();
 }
 
 static int 
-user_input()
+user_input(void)
 {
   int size;
   const int MAX = 1024;
@@ -78,7 +81,7 @@ user_input()
 }
 
 static int 
-readline_input()
+readline_input(void)
 {
   const int MAX = 1024;
   char *buf = (char *)malloc(MAX+1);
@@ -124,7 +127,7 @@ rlctx_send_user_command(char *line)
 }
 
 static void 
-custom_deprep_term_function ()
+custom_deprep_term_function (void)
 {
 }
 
@@ -226,9 +229,10 @@ static enum { RESET, TCBREAK } ttystate = RESET;
  * 
  * Returns: 0 on success, -1 on error
  */
-int tty_cbreak(int fd){
+int tty_cbreak(int fd)
+{
    struct termios buf;
-    int ttysavefd = -1;
+   int ttysavefd = -1;
    
    if(tcgetattr(fd, &save_termios) < 0)
       return -1;
@@ -302,7 +306,8 @@ tty_off_xon_xoff (int fd)
  * 
  * Returns: 0 on success, -1 on error
  */
-int tty_reset(int fd)
+int
+tty_reset(int fd)
 {
    if(ttystate != TCBREAK)
       return (0);
@@ -316,7 +321,7 @@ int tty_reset(int fd)
 }
 
 int 
-main()
+main(int c, char **v)
 {
   int val;
 
@@ -332,7 +337,9 @@ main()
   if (val == -1)
     return -1;
 
+#ifdef SIGWINCH
   signal (SIGWINCH, sigwinch);
+#endif
   signal (SIGINT, sigint);
 
   val = init_readline (slavefd, slavefd);
index 8b7c00c8c49a0e7f071c09f1d93d818b597afd23..feab90f22a9369852241e2b893c718a7c27910b4 100644 (file)
@@ -4,7 +4,7 @@
 /*                                                                 */
 /* **************************************************************** */
 
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2009,2023 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.
@@ -48,10 +48,8 @@ extern void exit();
 #  include <readline/history.h>
 #endif
 
-extern HIST_ENTRY **history_list ();
-
 int
-main ()
+main (int c, char **v)
 {
   char *temp, *prompt;
   int done;
diff --git a/examples/rlwrap-0.46.1.tar.gz b/examples/rlwrap-0.46.1.tar.gz
new file mode 100644 (file)
index 0000000..598003d
Binary files /dev/null and b/examples/rlwrap-0.46.1.tar.gz differ
index 8b1cb4028db7fb0afe1e677d08d2a0ee12cac007..b5773ce6e9976092b188acdd572d40240e98c96d 100644 (file)
--- a/funmap.c
+++ b/funmap.c
@@ -1,6 +1,6 @@
 /* funmap.c -- attach names to functions. */
 
-/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2024 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.      
 
 #include "xmalloc.h"
 
-#ifdef __STDC__
 typedef int QSFUNC (const void *, const void *);
-#else
-typedef int QSFUNC ();
-#endif
 
 extern int _rl_qsort_string_compare (char **, char **);
 
 FUNMAP **funmap;
-static int funmap_size;
+static size_t funmap_size;
 static int funmap_entry;
 
 /* After initializing the function map, this is the index of the first
@@ -93,6 +89,8 @@ static const FUNMAP default_funmap[] = {
   { "end-of-history", rl_end_of_history },
   { "end-of-line", rl_end_of_line },
   { "exchange-point-and-mark", rl_exchange_point_and_mark },
+  { "execute-named-command", rl_execute_named_command },
+  { "export-completions", rl_export_completions },
   { "fetch-history", rl_fetch_history },
   { "forward-backward-delete-char", rl_rubout_or_delete },
   { "forward-byte", rl_forward_byte },
@@ -251,7 +249,7 @@ const char **
 rl_funmap_names (void)
 {
   const char **result;
-  int result_size, result_index;
+  size_t result_size, result_index;
 
   /* Make sure that the function map has been initialized. */
   rl_initialize_funmap ();
@@ -268,6 +266,7 @@ rl_funmap_names (void)
       result[result_index + 1] = (char *)NULL;
     }
 
-  qsort (result, result_index, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
+  if (result)
+    qsort (result, result_index, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);
   return (result);
 }
diff --git a/gettimeofday.c b/gettimeofday.c
new file mode 100644 (file)
index 0000000..76b1657
--- /dev/null
@@ -0,0 +1,131 @@
+/* Provide gettimeofday for systems that don't have it or for which it's broken.
+
+   Copyright (C) 2001-2003, 2005-2007, 2009-2025 Free Software Foundation, Inc.
+
+   This file is free software: you can redistribute it and/or modify
+   it under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 of the
+   License, or (at your option) any later version.
+
+   This file 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 Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public License
+   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
+
+/* written by Jim Meyering */
+
+/* A version of gettimeofday that just sets tv_sec from time(3) on Unix-like
+   systems that don't have it, or a version for Win32 systems. From gnulib */
+
+#include <config.h>
+
+#if !defined (HAVE_GETTIMEOFDAY)
+
+#include "posixtime.h"
+
+#if defined _WIN32 && ! defined __CYGWIN__
+# define WINDOWS_NATIVE
+# include <windows.h>
+#endif
+
+#ifdef WINDOWS_NATIVE
+
+# if !(_WIN32_WINNT >= _WIN32_WINNT_WIN8)
+
+/* Avoid warnings from gcc -Wcast-function-type.  */
+#  define GetProcAddress \
+    (void *) GetProcAddress
+
+/* GetSystemTimePreciseAsFileTime was introduced only in Windows 8.  */
+typedef void (WINAPI * GetSystemTimePreciseAsFileTimeFuncType) (FILETIME *lpTime);
+static GetSystemTimePreciseAsFileTimeFuncType GetSystemTimePreciseAsFileTimeFunc = NULL;
+static BOOL initialized = FALSE;
+
+static void
+initialize (void)
+{
+  HMODULE kernel32 = LoadLibrary ("kernel32.dll");
+  if (kernel32 != NULL)
+    {
+      GetSystemTimePreciseAsFileTimeFunc =
+        (GetSystemTimePreciseAsFileTimeFuncType) GetProcAddress (kernel32, "GetSystemTimePreciseAsFileTime");
+    }
+  initialized = TRUE;
+}
+
+# else /* !(_WIN32_WINNT >= _WIN32_WINNT_WIN8) */
+
+#  define GetSystemTimePreciseAsFileTimeFunc GetSystemTimePreciseAsFileTime
+
+# endif /* !(_WIN32_WINNT >= _WIN32_WINNT_WIN8) */
+
+#endif /* WINDOWS_NATIVE */
+
+/* This is a wrapper for gettimeofday.  It is used only on systems
+   that lack this function, or whose implementation of this function
+   causes problems.
+   Work around the bug in some systems whereby gettimeofday clobbers
+   the static buffer that localtime uses for its return value.  The
+   gettimeofday function from Mac OS X 10.0.4 (i.e., Darwin 1.3.7) has
+   this problem.  */
+
+int
+gettimeofday (struct timeval *restrict tv, void *restrict tz)
+{
+#undef gettimeofday
+#ifdef WINDOWS_NATIVE
+
+  /* On native Windows, there are two ways to get the current time:
+     GetSystemTimeAsFileTime
+     <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimeasfiletime>
+     or
+     GetSystemTimePreciseAsFileTime
+     <https://docs.microsoft.com/en-us/windows/desktop/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime>.
+     GetSystemTimeAsFileTime produces values that jump by increments of
+     15.627 milliseconds (!) on average.
+     Whereas GetSystemTimePreciseAsFileTime values usually jump by 1 or 2
+     microseconds.
+     More discussion on this topic:
+     <http://www.windowstimestamp.com/description>.  */
+  FILETIME current_time;
+
+# if !(_WIN32_WINNT >= _WIN32_WINNT_WIN8)
+  if (!initialized)
+    initialize ();
+# endif
+  if (GetSystemTimePreciseAsFileTimeFunc != NULL)
+    GetSystemTimePreciseAsFileTimeFunc (&current_time);
+  else
+    GetSystemTimeAsFileTime (&current_time);
+
+  /* Convert from FILETIME to 'struct timeval'.  */
+  /* FILETIME: <https://docs.microsoft.com/en-us/windows/desktop/api/minwinbase/ns-minwinbase-filetime> */
+  ULONGLONG since_1601 =
+    ((ULONGLONG) current_time.dwHighDateTime << 32)
+    | (ULONGLONG) current_time.dwLowDateTime;
+  /* Between 1601-01-01 and 1970-01-01 there were 280 normal years and 89 leap
+     years, in total 134774 days.  */
+  ULONGLONG since_1970 =
+    since_1601 - (ULONGLONG) 134774 * (ULONGLONG) 86400 * (ULONGLONG) 10000000;
+  ULONGLONG microseconds_since_1970 = since_1970 / (ULONGLONG) 10;
+  *tv = (struct timeval) {
+    .tv_sec  = microseconds_since_1970 / (ULONGLONG) 1000000,
+    .tv_usec = microseconds_since_1970 % (ULONGLONG) 1000000
+  };
+
+  return 0;
+
+#else /* !WINDOWS_NATIVE */
+
+  tv->tv_sec = (time_t) time ((time_t *)0);
+  tv->tv_usec = 0;
+
+  return 0;
+
+#endif /* !WINDOWS_NATIVE */
+}
+
+#endif /* !HAVE_GETTIMEOFDAY */
index 8ab68091e64cd750c58d785f2aa1a05a061a3d9b..c8e674151e73c84feb57aabb53ef7423eb754790 100644 (file)
@@ -1,6 +1,6 @@
 /* histexpand.c -- history expansion. */
 
-/* Copyright (C) 1989-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2021,2023-2025 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
@@ -70,12 +70,12 @@ static int subst_rhs_len;
    specifications from word designators.  Static for now */
 static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS;
 
-static char *get_history_word_specifier (char *, char *, int *);
+static char *get_history_word_specifier (const char *, char *, int *);
 static int history_tokenize_word (const char *, int);
 static char **history_tokenize_internal (const char *, int, int *);
 static char *history_substring (const char *, int, int);
 static void freewords (char **, int);
-static char *history_find_word (char *, int);
+static char *history_find_word (const char *, int);
 
 static char *quote_breaks (char *);
 
@@ -90,8 +90,7 @@ char history_subst_char = '^';
 
 /* During tokenization, if this character is seen as the first character
    of a word, then it, and all subsequent characters up to a newline are
-   ignored.  For a Bourne shell, this should be '#'.  Bash special cases
-   the interactive comment character to not be a comment delimiter. */
+   ignored.  For a Bourne shell, this should be '#'. */
 char history_comment_char = '\0';
 
 /* The list of characters which inhibit the expansion of text if found
@@ -142,7 +141,7 @@ get_history_event (const char *string, int *caller_index, int delimiting_quote)
   register char c;
   HIST_ENTRY *entry;
   int which, sign, local_index, substring_okay;
-  _hist_search_func_t *search_func;
+  int search_flags, old_offset;
   char *temp;
 
   /* The event can be specified in a number of ways.
@@ -252,9 +251,10 @@ get_history_event (const char *string, int *caller_index, int delimiting_quote)
 
   *caller_index = i;
 
+  old_offset = history_offset;         /* XXX */
 #define FAIL_SEARCH() \
   do { \
-    history_offset = history_length; xfree (temp) ; return (char *)NULL; \
+    history_offset = old_offset; xfree (temp) ; return (char *)NULL; \
   } while (0)
 
   /* If there is no search string, try to use the previous search string,
@@ -270,10 +270,10 @@ get_history_event (const char *string, int *caller_index, int delimiting_quote)
         FAIL_SEARCH ();
     }
 
-  search_func = substring_okay ? history_search : history_search_prefix;
+  search_flags = substring_okay ? NON_ANCHORED_SEARCH : ANCHORED_SEARCH;
   while (1)
     {
-      local_index = (*search_func) (temp, -1);
+      local_index = _hs_history_search (temp, -1, -1, search_flags);
 
       if (local_index < 0)
        FAIL_SEARCH ();
@@ -283,7 +283,7 @@ get_history_event (const char *string, int *caller_index, int delimiting_quote)
          entry = current_history ();
          if (entry == 0)
            FAIL_SEARCH ();
-         history_offset = history_length;
+         history_offset = old_offset;  /* XXX - was history_length */
        
          /* If this was a substring search, then remember the
             string that we matched for word substitution. */
@@ -319,7 +319,7 @@ get_history_event (const char *string, int *caller_index, int 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 (char *string, int *sindex, int flags)
+hist_string_extract_single_quoted (const char *string, int *sindex, int flags)
 {
   register int i;
 
@@ -374,7 +374,7 @@ quote_breaks (char *s)
 }
 
 static char *
-hist_error(char *s, int start, int current, int errtype)
+hist_error(const char *s, int start, int current, int errtype)
 {
   char *temp;
   const char *emsg;
@@ -434,7 +434,7 @@ hist_error(char *s, int start, int current, int errtype)
    subst_rhs is allowed to be set to the empty string. */
 
 static char *
-get_subst_pattern (char *str, int *iptr, int delimiter, int is_rhs, int *lenptr)
+get_subst_pattern (const char *str, int *iptr, int delimiter, int is_rhs, int *lenptr)
 {
   register int si, i, j, k;
   char *s;
@@ -509,7 +509,7 @@ postproc_subst_rhs (void)
          /* a single backslash protects the `&' from lhs interpolation */
          if (subst_rhs[i] == '\\' && subst_rhs[i + 1] == '&')
            i++;
-         if (j >= new_size)
+         if (j + 1 >= new_size)
            new = (char *)xrealloc (new, new_size *= 2);
          new[j++] = subst_rhs[i];
        }
@@ -527,12 +527,12 @@ postproc_subst_rhs (void)
    *END_INDEX_PTR, and the expanded specifier in *RET_STRING. */
 /* need current line for !# */
 static int
-history_expand_internal (char *string, int start, int qc, int *end_index_ptr, char **ret_string, char *current_line)
+history_expand_internal (const 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;
   char *event, *temp, *result, *tstr, *t, c, *word_spec;
-  int result_len;
+  size_t result_len;
 #if defined (HANDLE_MULTIBYTE)
   mbstate_t ps;
 
@@ -679,7 +679,7 @@ history_expand_internal (char *string, int start, int qc, int *end_index_ptr, ch
        case 's':
          {
            char *new_event;
-           int delimiter, failed, si, l_temp, ws, we;
+           int delimiter, failed, si, l_temp, we;
 
            if (c == 's')
              {
@@ -730,7 +730,7 @@ history_expand_internal (char *string, int start, int qc, int *end_index_ptr, ch
 
                /* If `&' appears in the rhs, it's supposed to be replaced
                   with the lhs. */
-               if (member ('&', subst_rhs))
+               if (subst_lhs && member ('&', subst_rhs))
                  postproc_subst_rhs ();
              }
            else
@@ -778,7 +778,6 @@ history_expand_internal (char *string, int start, int qc, int *end_index_ptr, ch
                  {
                    for (; temp[si] && fielddelim (temp[si]); si++)
                      ;
-                   ws = si;
                    we = history_tokenize_word (temp, si);
                  }
 
@@ -881,7 +880,7 @@ history_expand_internal (char *string, int start, int qc, int *end_index_ptr, ch
 #define ADD_STRING(s) \
        do \
          { \
-           int sl = strlen (s); \
+           size_t sl = strlen (s); \
            j += sl; \
            if (j >= result_len) \
              { \
@@ -896,7 +895,7 @@ history_expand_internal (char *string, int start, int qc, int *end_index_ptr, ch
 #define ADD_CHAR(c) \
        do \
          { \
-           if (j >= result_len - 1) \
+           if ((j + 1) >= result_len) \
              result = (char *)xrealloc (result, result_len += 64); \
            result[j++] = c; \
            result[j] = '\0'; \
@@ -904,14 +903,15 @@ history_expand_internal (char *string, int start, int qc, int *end_index_ptr, ch
        while (0)
 
 int
-history_expand (char *hstring, char **output)
+history_expand (const char *hstring, char **output)
 {
-  register int j;
-  int i, r, l, passc, cc, modified, eindex, only_printing, dquote, squote, flag;
+  int j;
+  int i, r, passc, cc, modified, eindex, only_printing, dquote, squote, flag;
+  size_t l;
   char *string;
 
   /* The output string, and its length. */
-  int result_len;
+  size_t result_len;
   char *result;
 
 #if defined (HANDLE_MULTIBYTE)
@@ -949,7 +949,7 @@ history_expand (char *hstring, char **output)
   /* The quick substitution character is a history expansion all right.  That
      is to say, "^this^that^" is equivalent to "!!:s^this^that^", and in fact,
      that is the substitution that we do. */
-  if (hstring[0] == history_subst_char)
+  if ((history_quoting_state != '\'' || history_quotes_inhibit_expansion == 0) && hstring[0] == history_subst_char)
     {
       string = (char *)xmalloc (l + 5);
 
@@ -965,7 +965,7 @@ history_expand (char *hstring, char **output)
       memset (&ps, 0, sizeof (mbstate_t));
 #endif
 
-      string = hstring;
+      string = (char *)hstring;
       /* If not quick substitution, still maybe have to do expansion. */
 
       /* `!' followed by one of the characters in history_no_expand_chars
@@ -983,6 +983,8 @@ history_expand (char *hstring, char **output)
          squote = 0;
          if (string[i])
            i++;
+         if (i >= l)
+           i = l;
        }
 
       for ( ; string[i]; i++)
@@ -1053,6 +1055,11 @@ history_expand (char *hstring, char **output)
              flag = (i > 0 && string[i - 1] == '$');
              i++;
              hist_string_extract_single_quoted (string, &i, flag);
+             if (i >= l)
+               {
+                 i = l;
+                 break;
+               }
            }
          else if (history_quotes_inhibit_expansion && string[i] == '\\')
            {
@@ -1063,7 +1070,7 @@ history_expand (char *hstring, char **output)
            }
          
        }
-         
+
       if (string[i] != history_expansion_char)
        {
          xfree (result);
@@ -1113,7 +1120,7 @@ history_expand (char *hstring, char **output)
 
          c = tchar;
          memset (mb, 0, sizeof (mb));
-         for (k = 0; k < MB_LEN_MAX; k++)
+         for (k = 0; k < MB_LEN_MAX && i < l; k++)
            {
              mb[k] = (char)c;
              memset (&ps, 0, sizeof (mbstate_t));
@@ -1303,7 +1310,7 @@ history_expand (char *hstring, char **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 (char *spec, char *from, int *caller_index)
+get_history_word_specifier (const char *spec, char *from, int *caller_index)
 {
   register int i = *caller_index;
   int first, last;
@@ -1418,7 +1425,7 @@ history_arg_extract (int first, int last, const char *string)
 {
   register int i, len;
   char *result;
-  int size, offset;
+  size_t size, offset;
   char **list;
 
   /* XXX - think about making history_tokenize return a struct array,
@@ -1475,7 +1482,7 @@ history_arg_extract (int first, int last, const char *string)
 static int
 history_tokenize_word (const char *string, int ind)
 {
-  register int i, j;
+  int i, j;
   int delimiter, nestdelim, delimopen;
 
   i = ind;
@@ -1562,6 +1569,8 @@ get_word:
          (delimiter != '"' || member (string[i], slashify_in_quotes)))
        {
          i++;
+         if (string[i] == 0)
+           break;
          continue;
        }
 
@@ -1589,7 +1598,9 @@ get_word:
       /* Command and process substitution; shell extended globbing patterns */
       if (nestdelim == 0 && delimiter == 0 && member (string[i], "<>$!@?+*") && string[i+1] == '(') /*)*/
        {
-         i += 2;
+         i++;                  /* string[i] == '(' */ /*)*/
+         if (string[i+1] == 0)
+           break;              /* could just return i here */
          delimopen = '(';
          delimiter = ')';
          nestdelim = 1;
@@ -1627,7 +1638,8 @@ static char **
 history_tokenize_internal (const char *string, int wind, int *indp)
 {
   char **result;
-  register int i, start, result_index, size;
+  int i, start, result_index;
+  size_t size;
 
   /* If we're searching for a string that's not part of a word (e.g., " "),
      make sure we set *INDP to a reasonable value. */
@@ -1636,7 +1648,7 @@ history_tokenize_internal (const char *string, int wind, int *indp)
 
   /* Get a token, and stuff it into RESULT.  The tokens are split
      exactly where the shell would split them. */
-  for (i = result_index = size = 0, result = (char **)NULL; string[i]; )
+  for (i = result_index = 0, size = 0, result = (char **)NULL; string[i]; )
     {
       /* Skip leading whitespace. */
       for (; string[i] && fielddelim (string[i]); i++)
@@ -1696,7 +1708,7 @@ freewords (char **words, int start)
    in the history line LINE.  Used to save the word matched by the
    last history !?string? search. */
 static char *
-history_find_word (char *line, int ind)
+history_find_word (const char *line, int ind)
 {
   char **words, *s;
   int i, wind;
index 3bfec5500db515ebafc2310555019711bdd93f4a..11bdd84ba90ad30146f3e9dfc4f1069edf3db2f5 100644 (file)
@@ -1,6 +1,6 @@
 /* histfile.c - functions to manipulate the history file. */
 
-/* Copyright (C) 1989-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2019,2023-2025 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
@@ -153,7 +153,7 @@ history_filename (const char *filename)
 {
   char *return_val;
   const char *home;
-  int home_len;
+  size_t home_len;
 
   return_val = filename ? savestring (filename) : (char *)NULL;
 
@@ -168,9 +168,8 @@ history_filename (const char *filename)
 
   if (home == 0)
     return (NULL);
-  else
-    home_len = strlen (home);
 
+  home_len = strlen (home);
   return_val = (char *)xmalloc (2 + home_len + 8); /* strlen(".history") == 8 */
   strcpy (return_val, home);
   return_val[home_len] = '/';
@@ -183,6 +182,7 @@ history_filename (const char *filename)
   return (return_val);
 }
 
+#if defined (DEBUG)
 static char *
 history_backupfile (const char *filename)
 {
@@ -190,7 +190,6 @@ history_backupfile (const char *filename)
   char *ret, linkbuf[PATH_MAX+1];
   size_t len;
   ssize_t n;
-  struct stat fs;
 
   fn = filename;  
 #if defined (HAVE_READLINK)
@@ -210,6 +209,7 @@ history_backupfile (const char *filename)
   ret[len+1] = '\0';
   return ret;
 }
+#endif
   
 static char *
 history_tempfile (const char *filename)
@@ -218,7 +218,6 @@ history_tempfile (const char *filename)
   char *ret, linkbuf[PATH_MAX+1];
   size_t len;
   ssize_t n;
-  struct stat fs;
   int pid;
 
   fn = filename;  
@@ -270,6 +269,7 @@ read_history_range (const char *filename, int from, int to)
   register char *line_start, *line_end, *p;
   char *input, *buffer, *bufend, *last_ts;
   int file, current_line, chars_read, has_timestamps, reset_comment_char;
+  int skipblanks, default_skipblanks;
   struct stat finfo;
   size_t file_size;
 #if defined (EFBIG)
@@ -284,7 +284,10 @@ read_history_range (const char *filename, int from, int to)
 
   buffer = last_ts = (char *)NULL;
   input = history_filename (filename);
-  file = input ? open (input, O_RDONLY|O_BINARY, 0666) : -1;
+  if (input == 0)
+    return 0;
+  errno = 0;
+  file = open (input, O_RDONLY|O_BINARY, 0666);
 
   if ((file < 0) || (fstat (file, &finfo) == -1))
     goto error_and_exit;
@@ -298,21 +301,24 @@ read_history_range (const char *filename, int from, int to)
 #endif
       goto error_and_exit;
     }
-
-  file_size = (size_t)finfo.st_size;
-
-  /* check for overflow on very large files */
-  if (file_size != finfo.st_size || file_size + 1 < file_size)
-    {
-      errno = overflow_errno;
-      goto error_and_exit;
-    }
-
-  if (file_size == 0)
+  else
     {
-      xfree (input);
-      close (file);
-      return 0;        /* don't waste time if we don't have to */
+      /* regular file */
+      file_size = (size_t)finfo.st_size;
+
+      /* check for overflow on very large files */
+      if (file_size != finfo.st_size || file_size + 1 < file_size)
+       {
+         errno = overflow_errno;
+         goto error_and_exit;
+       }
+
+      if (file_size == 0)
+       {
+         xfree (input);
+         close (file);
+         return 0;     /* don't waste time if we don't have to */
+       }
     }
 
 #ifdef HISTORY_USE_MMAP
@@ -377,6 +383,9 @@ read_history_range (const char *filename, int from, int to)
   has_timestamps = HIST_TIMESTAMP_START (buffer);
   history_multiline_entries += has_timestamps && history_write_timestamps;
 
+  /* default is to skip blank lines unless history entries are multiline */
+  default_skipblanks = history_multiline_entries == 0;
+
   /* Skip lines until we are at FROM. */
   if (has_timestamps)
     last_ts = buffer;
@@ -402,6 +411,8 @@ read_history_range (const char *filename, int from, int to)
          }
       }
 
+  skipblanks = default_skipblanks;
+
   /* If there are lines left to gobble, then gobble them now. */
   for (line_end = line_start; line_end < bufend; line_end++)
     if (*line_end == '\n')
@@ -412,10 +423,16 @@ read_history_range (const char *filename, int from, int to)
        else
          *line_end = '\0';
 
-       if (*line_start)
+       if (*line_start || skipblanks == 0)
          {
            if (HIST_TIMESTAMP_START(line_start) == 0)
              {
+               /* If we have multiline entries (default_skipblanks == 0), we
+                  don't want to skip blanks here, since we turned that on at
+                  the last timestamp line. Consider doing this even if
+                  default_skipblanks == 1 in order not to lose blank lines in
+                  commands. */
+               skipblanks = default_skipblanks;
                if (last_ts == NULL && history_length > 0 && history_multiline_entries)
                  _hs_append_history_line (history_length - 1, line_start);
                else
@@ -430,6 +447,9 @@ read_history_range (const char *filename, int from, int to)
              {
                last_ts = line_start;
                current_line--;
+               /* Even if we're not skipping blank lines by default, we want
+                  to skip leading blank lines after a timestamp. */
+               skipblanks = 1;
              }
          }
 
@@ -467,6 +487,7 @@ history_rename (const char *old, const char *new)
 #endif
 }
 
+#if defined (DEBUG)
 /* Save FILENAME to BACK, handling case where FILENAME is a symlink
    (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */
 static int
@@ -485,6 +506,7 @@ histfile_backup (const char *filename, const char *back)
 #endif
   return (history_rename (filename, back));
 }
+#endif
 
 /* Restore ORIG from BACKUP handling case where ORIG is a symlink
    (e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */
@@ -526,10 +548,14 @@ history_truncate_file (const char *fname, int lines)
 
   buffer = (char *)NULL;
   filename = history_filename (fname);
+  if (filename == 0)
+    return 0;
   tempname = 0;
-  file = filename ? open (filename, O_RDONLY|O_BINARY, 0666) : -1;
+  file = open (filename, O_RDONLY|O_BINARY, 0666);
   rv = exists = 0;
 
+  orig_lines = lines;
+
   /* Don't try to truncate non-regular files. */
   if (file == -1 || fstat (file, &finfo) == -1)
     {
@@ -578,6 +604,15 @@ history_truncate_file (const char *fname, int lines)
       goto truncate_exit;
     }
 
+  /* Don't bother with any of this if we're truncating to zero length. */
+  if (lines == 0)
+    {
+      close (file);
+      buffer[chars_read = 0] = '\0';
+      bp = buffer;
+      goto truncate_write;
+    }
+
   chars_read = read (file, buffer, file_size);
   close (file);
 
@@ -586,31 +621,38 @@ history_truncate_file (const char *fname, int lines)
       rv = (chars_read < 0) ? errno : 0;
       goto truncate_exit;
     }
+  buffer[chars_read] = '\0';   /* for the initial check of bp1[1] */
 
-  orig_lines = lines;
   /* Count backwards from the end of buffer until we have passed
      LINES lines.  bp1 is set funny initially.  But since bp[1] can't
      be a comment character (since it's off the end) and *bp can't be
-     both a newline and the history comment character, it should be OK. */
-  for (bp1 = bp = buffer + chars_read - 1; lines && bp > buffer; bp--)
+     both a newline and the history comment character, it should be OK.
+     If we are writing history timestamps, we need to add one to LINES
+     because we decrement it one extra time the first time through the loop
+     and we need the final timestamp line. */
+  lines += history_write_timestamps;
+  for (bp1 = bp = buffer + chars_read - 1; lines > 0 && bp > buffer; bp--)
     {
       if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0)
        lines--;
       bp1 = bp;
     }
 
-  /* If this is the first line, then the file contains exactly the
+  /* This is the right line, so move to its start. If we're writing history
+     timestamps, we want to go back until *bp == '\n' and bp1 starts a
+     history timestamp. If we're not, just move back to *bp == '\n'.
+     If this is the first line, then the file contains exactly the
      number of lines we want to truncate to, so we don't need to do
-     anything.  It's the first line if we don't find a newline between
-     the current value of i and 0.  Otherwise, write from the start of
-     this line until the end of the buffer. */
+     anything, and we'll end up with bp == buffer.
+     Otherwise, write from the start of this line until the end of the
+     buffer. */
   for ( ; bp > buffer; bp--)
     {
-      if (*bp == '\n' && HIST_TIMESTAMP_START(bp1) == 0)
-        {
+      if (*bp == '\n' && (history_write_timestamps == 0 || HIST_TIMESTAMP_START(bp1)))
+       {
          bp++;
          break;
-        }
+       }
       bp1 = bp;
     }
 
@@ -624,17 +666,25 @@ history_truncate_file (const char *fname, int lines)
       goto truncate_exit;
     }
 
+truncate_write:
   tempname = history_tempfile (filename);
 
+  rv = 0;
   if ((file = open (tempname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0600)) != -1)
     {
       if (write (file, bp, chars_read - (bp - buffer)) < 0)
-       rv = errno;
-
-      if (fstat (file, &nfinfo) < 0 && rv == 0)
-       rv = errno;
-
-      if (close (file) < 0 && rv == 0)
+       {
+         rv = errno;
+         close (file);
+       }
+
+      if (rv == 0 && fstat (file, &nfinfo) < 0)
+       {
+         rv = errno;
+         close (file);
+       }
+
+      if (rv == 0 && close (file) < 0)
        rv = errno;
     }
   else
@@ -671,6 +721,38 @@ history_truncate_file (const char *fname, int lines)
   return rv;
 }
 
+/* Use stdio to write the history file after mmap or malloc fails, on the
+   assumption that the stdio library can allocate the smaller buffers it uses. */
+static int
+history_write_slow (int fd, HIST_ENTRY **the_history, int nelements, int overwrite)
+{
+  FILE *fp;
+  int i, e;
+
+  fp = fdopen (fd, overwrite ? "w" : "a");
+  if (fp == 0)
+    return -1;
+
+  for (i = history_length - nelements; i < history_length; i++)
+    {
+      if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0])
+       fprintf (fp, "%s\n", the_history[i]->timestamp);
+      if (fprintf (fp, "%s\n", the_history[i]->line) < 0)
+       goto slow_write_error;
+    }
+  if (fflush (fp) < 0)
+    {
+slow_write_error:
+      e = errno;
+      fclose (fp);
+      errno = e;
+      return -1;
+    }
+  if (fclose (fp) < 0)
+    return -1;
+  return 0;
+}
+
 /* Workhorse function for writing history.  Writes the last NELEMENT entries
    from the history list to FILENAME.  OVERWRITE is non-zero if you
    wish to replace FILENAME with the entries. */
@@ -680,12 +762,16 @@ history_do_write (const char *filename, int nelements, int overwrite)
   register int i;
   char *output, *tempname, *histname;
   int file, mode, rv, exists;
-  struct stat finfo, nfinfo;
+  struct stat finfo;
 #ifdef HISTORY_USE_MMAP
-  size_t cursize;
+  size_t cursize, newsize;
+  off_t offset;
 
   history_lines_written_to_file = 0;
 
+  if (nelements < 0)
+    return (0);
+
   mode = overwrite ? O_RDWR|O_CREAT|O_TRUNC|O_BINARY : O_RDWR|O_APPEND|O_BINARY;
 #else
   mode = overwrite ? O_WRONLY|O_CREAT|O_TRUNC|O_BINARY : O_WRONLY|O_APPEND|O_BINARY;
@@ -718,8 +804,8 @@ history_do_write (const char *filename, int nelements, int overwrite)
      Suggested by Peter Ho (peter@robosts.oxford.ac.uk). */
   {
     HIST_ENTRY **the_history;  /* local */
-    register int j;
-    int buffer_size;
+    size_t j;
+    size_t buffer_size;
     char *buffer;
 
     the_history = history_list ();
@@ -735,10 +821,16 @@ history_do_write (const char *filename, int nelements, int overwrite)
 #ifdef HISTORY_USE_MMAP
     if (ftruncate (file, buffer_size+cursize) == -1)
       goto mmap_error;
-    buffer = (char *)mmap (0, buffer_size, PROT_READ|PROT_WRITE, MAP_WFLAGS, file, cursize);
+    /* for portability, ensure that we round cursize to a multiple of the
+       page size. */
+    offset = cursize & ~(getpagesize () - 1);
+    newsize = buffer_size + cursize - offset;
+    buffer = (char *)mmap (0, newsize, PROT_READ|PROT_WRITE, MAP_WFLAGS, file, offset);
     if ((void *)buffer == MAP_FAILED)
       {
 mmap_error:
+       if ((rv = history_write_slow (file, the_history, nelements, overwrite)) == 0)
+         goto write_success;
        rv = errno;
        close (file);
        if (tempname)
@@ -747,10 +839,13 @@ mmap_error:
        FREE (tempname);
        return rv;
       }
+    j = cursize - offset;
 #else    
     buffer = (char *)malloc (buffer_size);
     if (buffer == 0)
       {
+       if ((rv = history_write_slow (file, the_history, nelements, overwrite)) == 0)
+         goto write_success;
        rv = errno;
        close (file);
        if (tempname)
@@ -759,9 +854,10 @@ mmap_error:
        FREE (tempname);
        return rv;
       }
+    j = 0;
 #endif
 
-    for (j = 0, i = history_length - nelements; i < history_length; i++)
+    for (i = history_length - nelements; i < history_length; i++)
       {
        if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0])
          {
@@ -775,7 +871,10 @@ mmap_error:
       }
 
 #ifdef HISTORY_USE_MMAP
-    if (msync (buffer, buffer_size, MS_ASYNC) != 0 || munmap (buffer, buffer_size) != 0)
+    /* make sure we unmap the pages even if the sync fails */
+    if (msync (buffer, newsize, MS_ASYNC) != 0)
+      rv = errno;
+    if (munmap (buffer, newsize) != 0 && rv == 0)
       rv = errno;
 #else
     if (write (file, buffer, buffer_size) < 0)
@@ -789,6 +888,7 @@ mmap_error:
   if (close (file) < 0 && rv == 0)
     rv = errno;
 
+write_success:
   if (rv == 0 && histname && tempname)
     rv = histfile_restore (tempname, histname);
 
index 29fc4d2e5781dc24d6885f6317f2604695799002..d41b4ea12c62d0af404c483affa15640d871d8ff 100644 (file)
--- a/histlib.h
+++ b/histlib.h
@@ -1,6 +1,6 @@
 /* histlib.h -- internal definitions for the history library. */
 
-/* Copyright (C) 1989-2009,2021-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2009,2021-2023 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
                                    : ((a)[0] == (b)[0]) && (strncmp ((a), (b), (n)) == 0))
 #endif
 
+#if !defined (HAVE_STRCASECMP)
+#define strcasecmp(a,b)        strcmp ((a), (b))
+#define strncasecmp(a, b, n)   strncmp ((a), (b), (n))
+#endif
+
 #ifndef savestring
 #define savestring(x) strcpy (xmalloc (1 + strlen (x)), (x))
 #endif
@@ -51,9 +56,6 @@
 #endif
 
 #ifndef member
-#  if !defined (strchr) && !defined (__STDC__)
-extern char *strchr ();
-#  endif /* !strchr && !__STDC__ */
 #define member(c, s) ((c) ? ((char *)strchr ((s), (c)) != (char *)NULL) : 0)
 #endif
 
@@ -72,6 +74,7 @@ extern char *strchr ();
 #define NON_ANCHORED_SEARCH    0
 #define ANCHORED_SEARCH                0x01
 #define PATTERN_SEARCH         0x02
+#define CASEFOLD_SEARCH                0x04
 
 /* Possible definitions for what style of writing the history file we want. */
 #define HISTORY_APPEND 0
@@ -80,10 +83,12 @@ extern char *strchr ();
 /* internal extern function declarations used by other parts of the library */
 
 /* histsearch.c */
-extern int _hs_history_patsearch (const char *, int, int);
+extern int _hs_history_patsearch (const char *, int, int, int);
+extern int _hs_history_search (const char *, int, int, int);
 
 /* history.c */
 extern void _hs_replace_history_data (int, histdata_t *, histdata_t *);
+extern int _hs_search_history_data (histdata_t *);
 extern int _hs_at_end_of_history (void);
 
 /* histfile.c */
index 81d4c1687b659045f9da5b3b82c58ff9bb4d37b7..f695f36bba3d53176c5d3ad6ce4e2e536c980235 100644 (file)
--- a/history.c
+++ b/history.c
@@ -1,6 +1,6 @@
 /* history.c -- standalone history library */
 
-/* Copyright (C) 1989-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2025 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
@@ -42,6 +42,7 @@
 #  endif
 #  include <unistd.h>
 #endif
+#include "posixtime.h"
 
 #include <errno.h>
 
@@ -60,24 +61,39 @@ extern int errno;
 #define MAX_HISTORY_INITIAL_SIZE       8192
 
 /* The number of slots to increase the_history by. */
-#define DEFAULT_HISTORY_GROW_SIZE 50
+#define DEFAULT_HISTORY_GROW_SIZE 256
 
 static char *hist_inittime (void);
 
+static int history_list_grow_size (void);
+static void history_list_resize (int);         /* XXX - size_t? */
+static void advance_history (void);
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     History Functions                           */
 /*                                                                 */
 /* **************************************************************** */
 
-/* An array of HIST_ENTRY.  This is where we store the history. */
+/* An array of HIST_ENTRY.  This is where we store the history. the_history is
+   a roving pointer somewhere into this, so the user-visible history list is
+   a window into real_history starting at the_history and extending
+   history_length entries. */
+static HIST_ENTRY **real_history = (HIST_ENTRY **)NULL;
+
+/* The current number of slots allocated to the input_history. */
+static int real_history_size = 0;
+
+/* A pointer to somewhere in real_history, where the user-visible history
+   starts. */
 static HIST_ENTRY **the_history = (HIST_ENTRY **)NULL;
 
 /* Non-zero means that we have enforced a limit on the amount of
    history that we save. */
 static int history_stifled;
 
-/* The current number of slots allocated to the input_history. */
+/* The number of history entries available for user use, starting at the_history.
+   real_history_size - history_size == the_history - real_history */
 static int history_size;
 
 /* If HISTORY_STIFLED is non-zero, then this is the maximum number of
@@ -89,12 +105,59 @@ int max_input_history;     /* backwards compatibility */
    life easier for outside callers. */
 int history_offset;
 
-/* The number of strings currently stored in the history list. */
+/* The number of strings currently stored in the history list. This is
+   always <= real_history_length */
 int history_length;
 
 /* The logical `base' of the history array.  It defaults to 1. */
 int history_base = 1;
 
+/* Compute the number of bits required to store a given nonnegative integer.
+
+   NOTE: _bit_length(0) == 0 */
+static inline unsigned
+_bit_length(unsigned n)
+{
+  /* This implementation is for simplicity, not for performance, but it is
+     fast enough for our purposes here. */
+  unsigned count = 0;
+  while (n)
+    {
+      n >>= 1;
+      count++;
+    }
+  return count;
+}
+
+/* Compute a grow size that adjusts to the size of the history.
+
+   We aim to grow by roughly sqrt(history_size) in order to amortize the cost of
+   realloc() and memmove().  This reduces the total cost of the memmoves from
+   O(N^2) to O(N*sqrt(N)). */
+static int
+history_list_grow_size (void)
+{
+  int width, r;
+  /* Handle small positive values and guard against history_length accidentally
+     being negative. */
+  const int MIN_BITS = 10;
+  if (history_length < (1 << MIN_BITS))
+    return DEFAULT_HISTORY_GROW_SIZE;
+
+  /* For other values, we just want something easy to compute that grows roughly
+     as sqrt(N), where N=history_length.  We use approximately 2^((k+1)/2),
+     where k is the bit length of N.  This bounds the value between sqrt(2N) and
+     2*sqrt(N). */
+  width = MIN_BITS + _bit_length(history_length >> MIN_BITS);
+
+  /* If width is odd then this is 2^((width+1)/2).  An even width gives a value
+     of 3*2^((width-2)/2) ~ 1.06*2^((width+1)/2). */
+  r = (1 << (width / 2)) + (1 << ((width - 1) / 2));
+
+  /* Make sure we always expand the list by at least DEFAULT_HISTORY_GROW_SIZE */
+  return ((r < DEFAULT_HISTORY_GROW_SIZE) ? DEFAULT_HISTORY_GROW_SIZE : r);
+}
+
 /* Return the current HISTORY_STATE of the history. */
 HISTORY_STATE *
 history_get_history_state (void)
@@ -139,7 +202,7 @@ using_history (void)
 int
 history_total_bytes (void)
 {
-  register int i, result;
+  int i, result;
 
   for (i = result = 0; the_history && the_history[i]; i++)
     result += HISTENT_BYTES (the_history[i]);
@@ -261,7 +324,7 @@ hist_inittime (void)
   time_t t;
   char ts[64], *ret;
 
-  t = (time_t) time ((time_t *)0);
+  t = getnow ();
 #if defined (HAVE_VSNPRINTF)           /* assume snprintf if vsnprintf exists */
   snprintf (ts, sizeof (ts) - 1, "X%lu", (unsigned long) t);
 #else
@@ -273,6 +336,48 @@ hist_inittime (void)
   return ret;
 }
 
+/* Ensure space for new history entries by resetting the start pointer
+   (the_history) and resizing real_history if necessary. */
+static void
+history_list_resize (int new_size)
+{
+  /* Do nothing there is already enough user space. history_length is always <=
+     real_history_size */
+  if (new_size < history_length)
+    return;
+
+  /* If we need to, reset the_history to the start of real_history and
+     start over. */
+  if (the_history != real_history)
+    memmove (real_history, the_history, history_length * sizeof (HIST_ENTRY *));
+
+  /* Don't bother if real_history_size is already big enough, since at this
+     point the_history == real_history and we will set history_size to
+     real_history_size. We don't shrink the history list. */
+  if (new_size > real_history_size)
+    {
+      real_history = (HIST_ENTRY **) xrealloc (real_history, new_size * sizeof (HIST_ENTRY *));
+      real_history_size = new_size;
+    }
+  the_history = real_history;
+  history_size = real_history_size;
+
+  if (history_size > history_length)
+    memset (real_history + history_length, 0, (history_size - history_length) * sizeof (HIST_ENTRY *));
+}
+
+static void
+advance_history (void)
+{
+  /* Advance 'the_history' pointer to simulate dropping the first entry. */
+  the_history++;
+  history_size--;
+
+  /* If full, move all the entries (and trailing NULL) to the beginning. */
+  if (history_length == history_size)
+    history_list_resize (history_length + history_list_grow_size ());
+}
+
 /* Place STRING at the end of the history list.  The data field
    is  set to NULL. */
 void
@@ -283,8 +388,6 @@ add_history (const char *string)
 
   if (history_stifled && (history_length == history_max_entries))
     {
-      register int i;
-
       /* If the history is stifled, and history_length is zero,
         and it equals history_max_entries, we don't save items. */
       if (history_length == 0)
@@ -294,9 +397,8 @@ add_history (const char *string)
       if (the_history[0])
        (void) free_history_entry (the_history[0]);
 
-      /* Copy the rest of the entries, moving down one slot.  Copy includes
-        trailing NULL.  */
-      memmove (the_history, the_history + 1, history_length * sizeof (HIST_ENTRY *));
+      /* Advance the pointer into real_history, resizing if necessary. */
+      advance_history ();
 
       new_length = history_length;
       history_base++;
@@ -305,23 +407,20 @@ add_history (const char *string)
     {
       if (history_size == 0)
        {
+         int initial_size;
          if (history_stifled && history_max_entries > 0)
-           history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
+           initial_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
                                ? MAX_HISTORY_INITIAL_SIZE
                                : history_max_entries + 2;
          else
-           history_size = DEFAULT_HISTORY_INITIAL_SIZE;
-         the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENTRY *));
+           initial_size = DEFAULT_HISTORY_INITIAL_SIZE;
+         history_list_resize (initial_size);
          new_length = 1;
        }
       else
        {
          if (history_length == (history_size - 1))
-           {
-             history_size += DEFAULT_HISTORY_GROW_SIZE;
-             the_history = (HIST_ENTRY **)
-               xrealloc (the_history, history_size * sizeof (HIST_ENTRY *));
-           }
+           history_list_resize (real_history_size + history_list_grow_size ());
          new_length = history_length + 1;
        }
     }
@@ -446,7 +545,7 @@ void
 _hs_replace_history_data (int which, histdata_t *old, histdata_t *new)
 {
   HIST_ENTRY *entry;
-  register int i, last;
+  int i, last;
 
   if (which < -2 || which >= history_length || history_length == 0 || the_history == 0)
     return;
@@ -460,7 +559,7 @@ _hs_replace_history_data (int which, histdata_t *old, histdata_t *new)
     }
 
   last = -1;
-  for (i = 0; i < history_length; i++)
+  for (i = history_length - 1; i >= 0; i--)
     {
       entry = the_history[i];
       if (entry == 0)
@@ -477,7 +576,27 @@ _hs_replace_history_data (int which, histdata_t *old, histdata_t *new)
       entry = the_history[last];
       entry->data = new;       /* XXX - we don't check entry->old */
     }
-}      
+}
+
+int
+_hs_search_history_data (histdata_t *needle)
+{
+  int i;
+  HIST_ENTRY *entry;
+
+  if (history_length == 0 || the_history == 0)
+    return -1;
+
+  for (i = history_length - 1; i >= 0; i--)
+    {
+      entry = the_history[i];
+      if (entry == 0)
+       continue;
+      if (entry->data == needle)
+       return i;
+    }
+  return -1;
+}
   
 /* Remove history element WHICH from the history.  The removed
    element is returned to you so you can free the line, data,
@@ -486,10 +605,11 @@ HIST_ENTRY *
 remove_history (int which)
 {
   HIST_ENTRY *return_value;
-  register int i;
 #if 1
   int nentries;
   HIST_ENTRY **start, **end;
+#else
+  int i;
 #endif
 
   if (which < 0 || which >= history_length || history_length ==  0 || the_history == 0)
index 5208f9a463b2a18c5a6e9ee32d120980e989eaaf..4721e3a29f488c0e5a1e2dd0337426ca883d070e 100644 (file)
--- a/history.h
+++ b/history.h
@@ -1,6 +1,6 @@
 /* history.h -- the names of functions that you can call in history. */
 
-/* Copyright (C) 1989-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2023 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
@@ -36,15 +36,11 @@ extern "C" {
 #  include <readline/rltypedefs.h>
 #endif
 
-#ifdef __STDC__
 typedef void *histdata_t;
-#else
-typedef char *histdata_t;
-#endif
 
 /* Let's not step on anyone else's define for now, since we don't use this yet. */
 #ifndef HS_HISTORY_VERSION
-#  define HS_HISTORY_VERSION 0x0802    /* History 8.2 */
+#  define HS_HISTORY_VERSION 0x0803    /* History 8.3 */
 #endif
 
 /* The structure used to store a history entry. */
@@ -54,6 +50,10 @@ typedef struct _hist_entry {
   histdata_t data;
 } HIST_ENTRY;
 
+#ifndef HIST_ENTRY_DEFINED
+#  define HIST_ENTRY_DEFINED
+#endif
+
 /* Size of the history-library-managed space in history entry HS. */
 #define HISTENT_BYTES(hs)      (strlen ((hs)->line) + strlen ((hs)->timestamp))
 
@@ -232,7 +232,7 @@ extern int history_truncate_file (const char *, int);
 
   If an error occurred in expansion, then OUTPUT contains a descriptive
   error message. */
-extern int history_expand (char *, char **);
+extern int history_expand (const char *, char **);
 
 /* Extract a string segment consisting of the FIRST through LAST
    arguments present in STRING.  Arguments are broken up as in
index b62c06b7bf066a32fcc4b24bc8b3aa8c8910488c..36c469963c994ef998ccdb570946321136305c52 100644 (file)
@@ -1,6 +1,6 @@
 /* histsearch.c -- searching the history list. */
 
-/* Copyright (C) 1989, 1992-2009,2017,2021 Free Software Foundation, Inc.
+/* Copyright (C) 1989, 1992-2009,2017,2021-2024 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
 #include "histlib.h"
 #include "xmalloc.h"
 
+#include "rlmbutil.h"
+
 /* The list of alternate characters that can delimit a history search
    string. */
 char *history_search_delimiter_chars = (char *)NULL;
 
-static int history_search_internal (const char *, int, int);
+static int history_search_internal (const char *, int, int, int);
 
 /* Search the history for STRING, starting at history_offset.
-   If DIRECTION < 0, then the search is through previous entries, else
-   through subsequent.  If ANCHORED is non-zero, the string must
+   If LISTDIR < 0, then the search is through previous entries, else
+   through subsequent. If ANCHORED is non-zero, the string must
    appear at the beginning of a history line, otherwise, the string
-   may appear anywhere in the line.  If the string is found, then
+   may appear anywhere in the line. If the search is not anchored, LINEDIR
+   determines how the line is searched: if it is < 0, the search proceeds
+   from the end of the line to the beginning, otherwise the substring search
+   starts at the beginning of each history entry. If PATSEARCH is non-zero,
+   and fnmatch(3) is available, fnmatch is used to match the string instead
+   of a simple string comparison. If IGNORECASE is set, the string comparison
+   is performed case-insensitively. If the string is found, then
    current_history () is the history entry, and the value of this
-   function is the offset in the line of that history entry that the
-   string was found in.  Otherwise, nothing is changed, and a -1 is
-   returned. */
+   function is the offset in the line of that history entry in which the
+   string was found. Otherwise, nothing is changed, and a -1 is returned. */
 
 static int
-history_search_internal (const char *string, int direction, int flags)
+history_search_internal (const char *string, int listdir, int linedir, int flags)
 {
-  register int i, reverse;
-  register char *line;
-  register int line_index;
-  int string_len, anchored, patsearch;
+  int i, reverse;
+  char *line;
+  size_t string_len, line_len;
+  int line_index;              /* can't be unsigned */
+  int anchored, patsearch, igncase;
+  int found, mb_cur_max;
   HIST_ENTRY **the_history;    /* local */
 
   i = history_offset;
-  reverse = (direction < 0);
+  reverse = (listdir < 0);
   anchored = (flags & ANCHORED_SEARCH);
 #if defined (HAVE_FNMATCH)
   patsearch = (flags & PATTERN_SEARCH);
 #else
   patsearch = 0;
 #endif
+  igncase = (flags & CASEFOLD_SEARCH);
 
   /* Take care of trivial cases first. */
   if (string == 0 || *string == '\0')
@@ -91,6 +101,8 @@ history_search_internal (const char *string, int direction, int flags)
   if (reverse && (i >= history_length))
     i = history_length - 1;
 
+  mb_cur_max = MB_CUR_MAX;
+
 #define NEXT_LINE() do { if (reverse) i--; else i++; } while (0)
 
   the_history = history_list ();
@@ -104,7 +116,7 @@ history_search_internal (const char *string, int direction, int flags)
        return (-1);
 
       line = the_history[i]->line;
-      line_index = strlen (line);
+      line_len = line_index = strlen (line);
 
       /* If STRING is longer than line, no match. */
       if (patsearch == 0 && (string_len > line_index))
@@ -116,18 +128,27 @@ history_search_internal (const char *string, int direction, int flags)
       /* Handle anchored searches first. */
       if (anchored == ANCHORED_SEARCH)
        {
+         found = 0;
 #if defined (HAVE_FNMATCH)
          if (patsearch)
+           found = fnmatch (string, line, 0) == 0;
+         else
+#endif
+         if (igncase)
            {
-             if (fnmatch (string, line, 0) == 0)
-               {
-                 history_offset = i;
-                 return (0);
-               }
+#if defined (HANDLE_MULTIBYTE)
+             if (mb_cur_max > 1)       /* no rl_byte_oriented equivalent */
+               found = _rl_mb_strcaseeqn (string, string_len,
+                                          line, line_len,
+                                          string_len, 0);
+             else
+#endif
+               found = strncasecmp (string, line, string_len) == 0;
            }
          else
-#endif
-         if (STREQN (string, line, string_len))
+           found = STREQN (string, line, string_len);
+
+         if (found)
            {
              history_offset = i;
              return (0);
@@ -138,57 +159,82 @@ history_search_internal (const char *string, int direction, int flags)
        }
 
       /* Do substring search. */
-      if (reverse)
+      if (linedir < 0)         /* search backwards from end */
        {
-         line_index -= (patsearch == 0) ? string_len : 1;
+         size_t ll;
+
+         ll = (patsearch == 0) ? string_len : 1;
+         line_index -= ll;
+         found = 0;
 
          while (line_index >= 0)
            {
 #if defined (HAVE_FNMATCH)
              if (patsearch)
+               found = fnmatch (string, line + line_index, 0) == 0;
+             else
+#endif
+             if (igncase)
                {
-                 if (fnmatch (string, line + line_index, 0) == 0)
-                   {
-                     history_offset = i;
-                     return (line_index);
-                   }
+#if defined (HANDLE_MULTIBYTE)
+                 if (mb_cur_max > 1)   /* no rl_byte_oriented equivalent */
+                   found = _rl_mb_strcaseeqn (string, string_len,
+                                              line + line_index, ll,
+                                              string_len, 0);
+                 else
+#endif
+                 found = strncasecmp (string, line + line_index, string_len) == 0;
                }
              else
-#endif
-             if (STREQN (string, line + line_index, string_len))
+               found = STREQN (string, line + line_index, string_len);
+
+             if (found)
                {
                  history_offset = i;
                  return (line_index);
                }
              line_index--;
+             ll++;
            }
        }
       else
        {
          register int limit;
+         size_t ll;
 
+         ll = line_len;
          limit = line_index - string_len + 1;
          line_index = 0;
+         found = 0;
 
          while (line_index < limit)
            {
 #if defined (HAVE_FNMATCH)
              if (patsearch)
+               found = fnmatch (string, line + line_index, 0) == 0;
+             else
+#endif
+             if (igncase)
                {
-                 if (fnmatch (string, line + line_index, 0) == 0)
-                   {
-                     history_offset = i;
-                     return (line_index);
-                   }
+#if defined (HANDLE_MULTIBYTE)
+                 if (mb_cur_max > 1)   /* no rl_byte_oriented equivalent */
+                   found = _rl_mb_strcaseeqn (string, string_len,
+                                              line + line_index, ll,
+                                              string_len, 0);
+                 else
+#endif
+                 found = strncasecmp (string, line + line_index, string_len) == 0;
                }
              else
-#endif
-             if (STREQN (string, line + line_index, string_len))
+               found = STREQN (string, line + line_index, string_len);
+
+             if (found)
                {
                  history_offset = i;
                  return (line_index);
                }
              line_index++;
+             ll--;
            }
        }
       NEXT_LINE ();
@@ -196,7 +242,7 @@ history_search_internal (const char *string, int direction, int flags)
 }
 
 int
-_hs_history_patsearch (const char *string, int direction, int flags)
+_hs_history_patsearch (const char *string, int listdir, int linedir, int flags)
 {
   char *pat;
   size_t len, start;
@@ -245,38 +291,48 @@ _hs_history_patsearch (const char *string, int direction, int flags)
   pat = string;
 #endif
 
-  ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH);
+  ret = history_search_internal (pat, listdir, linedir, flags|PATTERN_SEARCH);
 
   if (pat != string)
     xfree (pat);
   return ret;
 }
        
-/* Do a non-anchored search for STRING through the history in DIRECTION. */
+/* Do a non-anchored search for STRING through the history list in direction
+   LISTDIR. */
+int
+history_search (const char *string, int listdir)
+{
+  return (history_search_internal (string, listdir, listdir, NON_ANCHORED_SEARCH));
+}
+
+/* Do an anchored search for string through the history list in direction
+   LISTDIR. */
 int
-history_search (const char *string, int direction)
+history_search_prefix (const char *string, int listdir)
 {
-  return (history_search_internal (string, direction, NON_ANCHORED_SEARCH));
+  return (history_search_internal (string, listdir, listdir, ANCHORED_SEARCH));
 }
 
-/* Do an anchored search for string through the history in DIRECTION. */
+/* Perform a history search for STRING, letting the caller specify the flags.
+   At some point, make this public for users of the history library. */
 int
-history_search_prefix (const char *string, int direction)
+_hs_history_search (const char *string, int listdir, int linedir, int flags)
 {
-  return (history_search_internal (string, direction, ANCHORED_SEARCH));
+  return (history_search_internal (string, listdir, linedir, flags));
 }
 
-/* Search for STRING in the history list.  DIR is < 0 for searching
-   backwards.  POS is an absolute index into the history list at
-   which point to begin searching. */
+/* Search for STRING in the history list.  LISTDIR is < 0 for searching
+   backwards through the list.  POS is an absolute index into the history
+   list where the search should begin. */
 int
-history_search_pos (const char *string, int dir, int pos)
+history_search_pos (const char *string, int listdir, int pos)
 {
   int ret, old;
 
   old = where_history ();
   history_set_pos (pos);
-  if (history_search (string, dir) == -1)
+  if (history_search (string, listdir) == -1)
     {
       history_set_pos (old);
       return (-1);
diff --git a/input.c b/input.c
index f68fcac553c33a1a75e4c43912d4f4464d421db1..e6a39e26b64a75aee21138a85d27132e9261502e 100644 (file)
--- a/input.c
+++ b/input.c
@@ -1,6 +1,6 @@
 /* input.c -- character input functions for readline. */
 
-/* Copyright (C) 1994-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2025 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.      
 #  include <floss.h>
 #endif
 
+/* These are needed to get the declaration of 'alarm' when including
+   <unistd.h>. I'm not sure it's needed, but the compiler might require it. */
+#if defined (__MINGW32__)
+#  define __USE_MINGW_ALARM
+#  define _POSIX
+#endif
+
 #if defined (HAVE_CONFIG_H)
 #  include <config.h>
 #endif
@@ -138,19 +145,13 @@ win32_isatty (int fd)
 
 /* Readline timeouts */
 
-/* I don't know how to set a timeout for _getch() in MinGW32, so we use
-   SIGALRM. */
-#if (defined (HAVE_PSELECT) || defined (HAVE_SELECT)) && !defined (__MINGW32__)
-#  define RL_TIMEOUT_USE_SELECT
-#else
-#  define RL_TIMEOUT_USE_SIGALRM
-#endif
+/* We now define RL_TIMEOUT_USE_SELECT or RL_TIMEOUT_USE_SIGALRM in rlprivate.h */
 
 int rl_set_timeout (unsigned int, unsigned int);
 int rl_timeout_remaining (unsigned int *, unsigned int *);
 
 int _rl_timeout_init (void);
-int _rl_timeout_sigalrm_handler (void);
+int _rl_timeout_handle_sigalrm (void);
 #if defined (RL_TIMEOUT_USE_SELECT)
 int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
 #endif
@@ -255,33 +256,48 @@ rl_gather_tyi (void)
   struct timeval timeout;
 #endif
 
+  result = -1;
   chars_avail = 0;
   input = 0;
   tty = fileno (rl_instream);
 
+  /* Move this up here to give it first shot, but it can't set chars_avail */
+  /* XXX - need rl_chars_available_hook? */
+  if (rl_input_available_hook)
+    {
+      result = (*rl_input_available_hook) ();
+      if (result == 0)
+        result = -1;
+    }
+
 #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
-  FD_ZERO (&readfds);
-  FD_ZERO (&exceptfds);
-  FD_SET (tty, &readfds);
-  FD_SET (tty, &exceptfds);
-  USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout);
+  if (result == -1)
+    {
+      FD_ZERO (&readfds);
+      FD_ZERO (&exceptfds);
+      FD_SET (tty, &readfds);
+      FD_SET (tty, &exceptfds);
+      USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout);
 #if defined (RL_TIMEOUT_USE_SELECT)
-  result = _rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL);
+      result = _rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL);
 #else
-  result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout);
+      result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout);
 #endif
-  if (result <= 0)
-    return 0;  /* Nothing to read. */
+      if (result <= 0)
+       return 0;       /* Nothing to read. */
+    }
 #endif
 
-  result = -1;
-  errno = 0;
 #if defined (FIONREAD)
-  result = ioctl (tty, FIONREAD, &chars_avail);
-  if (result == -1 && errno == EIO)
-    return -1;
   if (result == -1)
-    chars_avail = 0;
+    {
+      errno = 0;
+      result = ioctl (tty, FIONREAD, &chars_avail);
+      if (result == -1 && errno == EIO)
+       return -1;
+      if (result == -1)
+       chars_avail = 0;
+    }
 #endif
 
 #if defined (O_NDELAY)
@@ -308,8 +324,11 @@ rl_gather_tyi (void)
 #if defined (__MINGW32__)
   /* Use getch/_kbhit to check for available console input, in the same way
      that we read it normally. */
-   chars_avail = isatty (tty) ? _kbhit () : 0;
-   result = 0;
+   if (result == -1)
+     {
+       chars_avail = isatty (tty) ? _kbhit () : 0;
+       result = 0;
+     }
 #endif
 
   /* If there's nothing available, don't waste time trying to read
@@ -535,7 +554,16 @@ reset_alarm ()
   timerclear (&it.it_value);
   setitimer (ITIMER_REAL, &it, NULL);
 }
-#  else
+#  else /* !HAVE_SETITIMER */
+#    if defined (__MINGW32_MAJOR_VERSION)
+/* mingw.org's MinGW doesn't have alarm(3).  */
+unsigned int
+alarm (unsigned int seconds)
+{
+  return 0;
+}
+#    endif /* __MINGW32_MAJOR_VERSION */
+
 static int
 set_alarm (unsigned int *secs, unsigned int *usecs)
 {
@@ -550,8 +578,8 @@ reset_alarm ()
 {
   alarm (0);
 }
-#  endif
-#endif
+#  endif /* !HAVE_SETITIMER */
+#endif /* RL_TIMEOUT_USE_SIGALRM */
 
 /* Set a timeout which will be used for the next call of `readline
    ()'.  When (0, 0) are specified the timeout is cleared.  */
@@ -651,7 +679,7 @@ rl_timeout_remaining (unsigned int *secs, unsigned int *usecs)
 
 /* This should only be called if RL_TIMEOUT_USE_SELECT is defined. */
 
-#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+#if defined (RL_TIMEOUT_USE_SELECT)
 int
 _rl_timeout_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, const sigset_t *sigmask)
 {
@@ -834,7 +862,7 @@ rl_getc (FILE *stream)
       /* We know at this point that _rl_caught_signal == 0 */
 
 #if defined (__MINGW32__)
-      if (isatty (fd)
+      if (isatty (fd))
        return (_getch ());     /* "There is no error return." */
 #endif
       result = 0;
@@ -893,7 +921,7 @@ rl_getc (FILE *stream)
 
 /* fprintf(stderr, "rl_getc: result = %d errno = %d\n", result, errno); */
 
-handle_error:
+      /* Handle errors here. */
       osig = _rl_caught_signal;
       ostate = rl_readline_state;
 
index 227b69217a3a48b6b1ef165265e984489abedaec..7b845c20dc7d03808582b6998a1aacb4b4ef695c 100644 (file)
--- a/isearch.c
+++ b/isearch.c
@@ -6,7 +6,7 @@
 /*                                                                 */
 /* **************************************************************** */
 
-/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021,2023,2025 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.      
@@ -59,6 +59,8 @@ char *_rl_isearch_terminators = (char *)NULL;
 
 _rl_search_cxt *_rl_iscxt = 0;
 
+int _rl_search_case_fold = 0;
+
 static int rl_search_history (int, int);
 
 static _rl_search_cxt *_rl_isearch_init (int);
@@ -150,7 +152,7 @@ static void
 rl_display_search (char *search_string, int flags, int where)
 {
   char *message;
-  int msglen, searchlen;
+  size_t msglen, searchlen;
 
   searchlen = (search_string && *search_string) ? strlen (search_string) : 0;
 
@@ -216,7 +218,7 @@ _rl_isearch_init (int direction)
 
   /* Create an array of pointers to the lines that we want to search. */
   hlist = history_list ();
-  rl_maybe_replace_line ();
+  _rl_maybe_replace_line (1);
   i = 0;
   if (hlist)
     for (i = 0; hlist[i]; i++);
@@ -340,7 +342,7 @@ _rl_search_getchar (_rl_search_cxt *cxt)
 int
 _rl_isearch_dispatch (_rl_search_cxt *cxt, int c)
 {
-  int n, wstart, wlen, limit, cval, incr;
+  int n, wstart, wlen, limit, cval;
   char *paste;
   size_t pastelen;
   int j;
@@ -449,6 +451,8 @@ add_character:
        cxt->lastc = -6;
       else if (f == rl_bracketed_paste_begin)
        cxt->lastc = -7;
+      else if (c == CTRL('V') || f == rl_quoted_insert)
+       cxt->lastc = -8;
     }
 
   /* If we changed the keymap earlier while translating a key sequence into
@@ -467,6 +471,11 @@ add_character:
        {
          rl_stuff_char (cxt->lastc);
          rl_execute_next (cxt->prevc);
+
+         /* We're going to read the last two characters again. */
+         _rl_del_executing_keyseq ();
+         _rl_del_executing_keyseq ();
+
          /* XXX - do we insert everything in cxt->pmb? */
          return (0);
        }
@@ -481,6 +490,8 @@ add_character:
          /* Make lastc be the next character read */
          /* XXX - do we insert everything in cxt->mb? */
          rl_execute_next (cxt->lastc);
+         _rl_del_executing_keyseq ();
+
          /* Dispatch on the previous character (insert into search string) */
          cxt->lastc = cxt->prevc;
 #if defined (HANDLE_MULTIBYTE)
@@ -528,7 +539,10 @@ add_character:
         settable keyboard timeout value, this could alternatively
         use _rl_input_queued(100000) */
       if (cxt->lastc == ESC && (_rl_pushed_input_available () || _rl_input_available ()))
-       rl_execute_next (ESC);
+       {
+         rl_execute_next (ESC);
+         _rl_del_executing_keyseq ();
+       }
       return (0);
     }
 
@@ -540,6 +554,7 @@ add_character:
          /* This sets rl_pending_input to LASTC; it will be picked up the next
             time rl_read_key is called. */
          rl_execute_next (cxt->lastc);
+         _rl_del_executing_keyseq ();
          return (0);
        }
     }
@@ -550,6 +565,7 @@ add_character:
        /* This sets rl_pending_input to LASTC; it will be picked up the next
           time rl_read_key is called. */
        rl_execute_next (cxt->lastc);
+       _rl_del_executing_keyseq ();
        return (0);
       }
 
@@ -702,13 +718,35 @@ opcode_dispatch:
       xfree (paste);
       break;
 
+    case -8:   /* quoted insert */
+#if defined (HANDLE_SIGNALS)
+      if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
+       _rl_disable_tty_signals ();
+#endif
+      c = _rl_search_getchar (cxt);
+#if defined (HANDLE_SIGNALS)
+      if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
+       _rl_restore_tty_signals ();
+#endif
+
+      if (c < 0)
+       {
+         cxt->sflags |= SF_FAILED;
+         cxt->history_pos = cxt->last_found_line;
+         return -1;
+       }
+      
+      _rl_add_executing_keyseq (c);
+
+      /*FALLTHROUGH*/
     /* Add character to search string and continue search. */
     default:
 #if defined (HANDLE_MULTIBYTE)
-      wlen = (cxt->mb[0] == 0 || cxt->mb[1] == 0) ? 1 : RL_STRLEN (cxt->mb);
-#else
-      wlen = 1;
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       wlen = (cxt->mb[0] == 0 || cxt->mb[1] == 0) ? 1 : RL_STRLEN (cxt->mb);
+      else
 #endif
+      wlen = 1;
       if (cxt->search_string_index + wlen + 1 >= cxt->search_string_size)
        {
          cxt->search_string_size += 128;       /* 128 much greater than MB_CUR_MAX */
@@ -717,13 +755,13 @@ opcode_dispatch:
 #if defined (HANDLE_MULTIBYTE)
       if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
        {
-         int j;
+         int w;
 
          if (cxt->mb[0] == 0 || cxt->mb[1] == 0)
            cxt->search_string[cxt->search_string_index++] = cxt->mb[0];
          else
-           for (j = 0; j < wlen; )
-             cxt->search_string[cxt->search_string_index++] = cxt->mb[j++];
+           for (w = 0; w < wlen; )
+             cxt->search_string[cxt->search_string_index++] = cxt->mb[w++];
        }
       else
 #endif
@@ -745,7 +783,27 @@ opcode_dispatch:
       /* Search the current line. */
       while ((cxt->sflags & SF_REVERSE) ? (cxt->sline_index >= 0) : (cxt->sline_index < limit))
        {
-         if (STREQN (cxt->search_string, cxt->sline + cxt->sline_index, cxt->search_string_index))
+         int found;
+
+         if (_rl_search_case_fold)
+           {
+#if defined (HANDLE_MULTIBYTE)
+             if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+               found = _rl_mb_strcaseeqn (cxt->search_string,
+                                          cxt->search_string_index,
+                                          cxt->sline + cxt->sline_index,
+                                          limit,
+                                          cxt->search_string_index, 0);
+             else
+               found = _rl_strnicmp (cxt->search_string,
+                                     cxt->sline + cxt->sline_index,
+                                     cxt->search_string_index) == 0;
+#endif
+           }
+         else
+           found = STREQN (cxt->search_string, cxt->sline + cxt->sline_index, cxt->search_string_index);
+
+         if (found)
            {
              cxt->sflags |= SF_FOUND;
              break;
@@ -753,7 +811,7 @@ opcode_dispatch:
          else
            cxt->sline_index += cxt->direction;
 
-         if (cxt->sline_index < 0)
+         if (cxt->sline_index < 0 || cxt->sline_index > cxt->sline_len)
            {
              cxt->sline_index = 0;
              break;
@@ -786,8 +844,8 @@ opcode_dispatch:
 
       if (cxt->sflags & SF_FAILED)
        {
-         /* XXX - reset sline_index if < 0 */
-         if (cxt->sline_index < 0)
+         /* XXX - reset sline_index if < 0 or longer than the history line */
+         if (cxt->sline_index < 0 || cxt->sline_index > cxt->sline_len)
            cxt->sline_index = 0;
          break;
        }
@@ -889,6 +947,13 @@ _rl_isearch_callback (_rl_search_cxt *cxt)
   int c, r;
 
   c = _rl_search_getchar (cxt);
+
+  if (c < 0)                                   /* EOF */
+    return 1;
+
+  if (RL_ISSTATE (RL_STATE_ISEARCH) == 0)      /* signal could turn it off */
+    return 1;
+
   /* We might want to handle EOF here */
   r = _rl_isearch_dispatch (cxt, cxt->lastc);
 
diff --git a/kill.c b/kill.c
index 4cf933b20096ec0ceafa573fa3f06d43f4a178af..ca92ea1345b4b81967cf98846e111951a9a7b5b2 100644 (file)
--- a/kill.c
+++ b/kill.c
@@ -1,6 +1,6 @@
 /* kill.c -- kill ring management. */
 
-/* Copyright (C) 1994-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2024 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.      
@@ -348,15 +348,15 @@ rl_unix_filename_rubout (int count, int key)
       if (count <= 0)
        count = 1;
 
-      while (count--)
+      while (rl_point > 0 && count--)
        {
          c = rl_line_buffer[rl_point - 1];
 
          /* First move backwards through whitespace */
          while (rl_point && whitespace (c))
            {
-             rl_point--;
-             c = rl_line_buffer[rl_point - 1];
+             if (--rl_point)
+               c = rl_line_buffer[rl_point - 1];
            }
 
          /* Consume one or more slashes. */
@@ -377,14 +377,14 @@ rl_unix_filename_rubout (int count, int key)
 
          while (rl_point && (whitespace (c) || c == '/'))
            {
-             rl_point--;
-             c = rl_line_buffer[rl_point - 1];
+             if (--rl_point)
+               c = rl_line_buffer[rl_point - 1];
            }
 
          while (rl_point && (whitespace (c) == 0) && c != '/')
            {
-             rl_point--;       /* XXX - multibyte? */
-             c = rl_line_buffer[rl_point - 1];
+             if (--rl_point)   /* XXX - multibyte? */
+               c = rl_line_buffer[rl_point - 1];
            }
        }
 
@@ -569,7 +569,7 @@ rl_vi_yank_pop (int count, int key)
     }
 
   l = strlen (rl_kill_ring[rl_kill_index]);
-#if 0 /* TAG:readline-8.3 8/29/2022 matteopaolini1995@gmail.com */
+#if 1
   origpoint = rl_point;
   n = rl_point - l + 1;
 #else
@@ -577,7 +577,7 @@ rl_vi_yank_pop (int count, int key)
 #endif
   if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l))
     {
-#if 0 /* TAG:readline-8.3 */
+#if 1
       rl_delete_text (n, n + l);               /* remember vi cursor positioning */
       rl_point = origpoint - l;
 #else
@@ -737,12 +737,9 @@ _rl_bracketed_text (size_t *lenp)
     }
   RL_UNSETSTATE (RL_STATE_MOREINPUT);
 
-  if (c >= 0)
-    {
-      if (len == cap)
-       buf = xrealloc (buf, cap + 1);
-      buf[len] = '\0';
-    }
+  if (len == cap)
+    buf = xrealloc (buf, cap + 1);
+  buf[len] = '\0';
 
   if (lenp)
     *lenp = len;
@@ -756,8 +753,8 @@ _rl_bracketed_text (size_t *lenp)
 int
 rl_bracketed_paste_begin (int count, int key)
 {
-  int retval, c;
-  size_t len, cap;
+  int retval;
+  size_t len;
   char *buf;
 
   buf = _rl_bracketed_text (&len);
@@ -774,12 +771,12 @@ int
 _rl_read_bracketed_paste_prefix (int c)
 {
   char pbuf[BRACK_PASTE_SLEN+1], *pbpref;
-  int key, ind, j;
+  int key, ind;
 
   pbpref = BRACK_PASTE_PREF;           /* XXX - debugging */
   if (c != pbpref[0])
     return (0);
-  pbuf[ind = 0] = c;
+  pbuf[ind = 0] = key = c;
   while (ind < BRACK_PASTE_SLEN-1 &&
         (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) &&
          _rl_pushed_input_available () == 0 &&
@@ -846,7 +843,7 @@ _rl_bracketed_read_key ()
 int
 _rl_bracketed_read_mbstring (char *mb, int mlen)
 {
-  int c, r;
+  int c;
 
   c = _rl_bracketed_read_key ();
   if (c < 0)
@@ -865,6 +862,8 @@ _rl_bracketed_read_mbstring (char *mb, int mlen)
 
 /* A special paste command for Windows users. */
 #if defined (_WIN32)
+#define WIN32_LEAN_AND_MEAN
+
 #include <windows.h>
 
 int
index 280f556fe83dfb4ac832f8533cfc5610feb57275..9230acaf16e1dc80732058a4ce80716fa74eb17f 100644 (file)
@@ -1,5 +1,5 @@
 # codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019 Free Software
+dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2022 Free Software
 dnl Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -18,6 +18,7 @@ AC_DEFUN([AM_LANGINFO_CODESET],
        [am_cv_langinfo_codeset=no])
     ])
   if test $am_cv_langinfo_codeset = yes; then
+    AC_DEFINE([HAVE_NL_LANGINFO], [1])
     AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
       [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
   fi
diff --git a/macro.c b/macro.c
index 231a24bcda3d2a865f7c4890010cfd0e8dcd5ca5..9ac258d51abfca8e6a7317fd0904b3a6e315e1a9 100644 (file)
--- a/macro.c
+++ b/macro.c
@@ -69,7 +69,7 @@ static int executing_macro_index;
 static char *current_macro = (char *)NULL;
 
 /* The size of the buffer allocated to current_macro. */
-static int current_macro_size;
+static size_t current_macro_size;
 
 /* The index at which characters are being added to current_macro. */
 static int current_macro_index;
index 47e9100a68cc3eb525cd1a90f4ac1c05421ff074..5243fd7b2b12ac28ba6f59908206b38dafa2d228 100644 (file)
--- a/mbutil.c
+++ b/mbutil.c
@@ -1,6 +1,6 @@
 /* mbutil.c -- readline multibyte character utility functions */
 
-/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2024 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.      
@@ -147,8 +147,63 @@ _rl_utf8_mblen (const char *s, size_t n)
   return -1;
 }
 
+static size_t
+_rl_utf8_mbstrlen (const char *s)
+{
+  size_t clen, nc;
+  int mb_cur_max;
+
+  nc = 0;
+  mb_cur_max = MB_CUR_MAX;
+  while (*s && (clen = (size_t)_rl_utf8_mblen(s, mb_cur_max)) != 0)
+    {
+      if (MB_INVALIDCH (clen))
+       clen = 1;
+      s += clen;
+      nc++;
+    }
+  return nc;
+}
+
+static size_t
+_rl_gen_mbstrlen (const char *s)
+{
+  size_t clen, nc;
+  mbstate_t mbs = { 0 }, mbsbak = { 0 };
+  int f, mb_cur_max;
+
+  nc = 0;
+  mb_cur_max = MB_CUR_MAX;
+  while (*s && (clen = (f = _rl_is_basic (*s)) ? 1 : mbrlen(s, mb_cur_max, &mbs)) != 0)
+    {
+      if (MB_INVALIDCH(clen))
+       {
+         clen = 1;     /* assume single byte */
+         mbs = mbsbak;
+       }
+
+      if (f == 0)
+       mbsbak = mbs;
+
+      s += clen;
+      nc++;
+    }
+  return nc;
+}
+
+size_t
+_rl_mbstrlen (const char *s)
+{
+  if (MB_CUR_MAX == 1)
+    return (strlen (s));
+  else if (_rl_utf8locale)
+    return (_rl_utf8_mbstrlen (s));
+  else
+    return (_rl_gen_mbstrlen (s));
+}
+
 static int
-_rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_zero)
+_rl_find_next_mbchar_internal (const char *string, int seed, int count, int find_non_zero)
 {
   size_t tmp, len;
   mbstate_t ps;
@@ -216,11 +271,13 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z
 
   if (find_non_zero)
     {
-      tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps);
+      len = strlen (string + point);
+      tmp = MBRTOWC (&wc, string + point, len, &ps);
       while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && WCWIDTH (wc) == 0)
        {
          point += tmp;
-         tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps);
+         len -= tmp;
+         tmp = MBRTOWC (&wc, string + point, len, &ps);
        }
     }
 
@@ -228,7 +285,7 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z
 }
 
 static inline int
-_rl_test_nonzero (char *string, int ind, int len)
+_rl_test_nonzero (const char *string, int ind, int len)
 {
   size_t tmp;
   WCHAR_T wc;
@@ -242,9 +299,8 @@ _rl_test_nonzero (char *string, int ind, int len)
 
 /* experimental -- needs to handle zero-width characters better */
 static int
-_rl_find_prev_utf8char (char *string, int seed, int find_non_zero)
+_rl_find_prev_utf8char (const char *string, int seed, int find_non_zero)
 {
-  char *s;
   unsigned char b;
   int save, prev;
   size_t len;
@@ -262,11 +318,16 @@ _rl_find_prev_utf8char (char *string, int seed, int find_non_zero)
       save = prev;
 
       /* Move back until we're not in the middle of a multibyte char */
+#if 0
       if (UTF8_MBCHAR (b))
        {
          while (prev > 0 && (b = (unsigned char)string[--prev]) && UTF8_MBCHAR (b))
            ;
        }
+#else
+      while (prev > 0 && (b = (unsigned char)string[--prev]) && UTF8_MBFIRSTCHAR (b) == 0)
+       ;
+#endif
 
       if (UTF8_MBFIRSTCHAR (b))
        {
@@ -288,7 +349,7 @@ _rl_find_prev_utf8char (char *string, int seed, int find_non_zero)
 }  
 
 /*static*/ int
-_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)
+_rl_find_prev_mbchar_internal (const char *string, int seed, int find_non_zero)
 {
   mbstate_t ps;
   int prev, non_zero_prev, point, length;
@@ -356,19 +417,19 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int 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 (char *src, mbstate_t *ps)
+_rl_get_char_len (const char *src, mbstate_t *ps)
 {
   size_t tmp, l;
   int mb_cur_max;
 
   /* Look at no more than MB_CUR_MAX characters */
-  l = (size_t)strlen (src);
-  if (_rl_utf8locale && l > 0 && UTF8_SINGLEBYTE(*src))
+  l = 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);
+      tmp = mbrlen(src, (l < mb_cur_max) ? l : mb_cur_max, ps);
     }
   if (tmp == (size_t)(-2))
     {
@@ -394,7 +455,7 @@ _rl_get_char_len (char *src, mbstate_t *ps)
 /* compare the specified two characters. If the characters matched,
    return 1. Otherwise return 0. */
 int
-_rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, mbstate_t *ps2)
+_rl_compare_chars (const char *buf1, int pos1, mbstate_t *ps1, const char *buf2, int pos2, mbstate_t *ps2)
 {
   int i, w1, w2;
 
@@ -417,7 +478,7 @@ _rl_compare_chars (char *buf1, int pos1, mbstate_t *ps1, char *buf2, int pos2, m
    if point is invalid (point < 0 || more than string length),
    it returns -1 */
 int
-_rl_adjust_point (char *string, int point, mbstate_t *ps)
+_rl_adjust_point (const char *string, int point, mbstate_t *ps)
 {
   size_t tmp;
   int length, pos;
@@ -457,7 +518,7 @@ _rl_adjust_point (char *string, int point, mbstate_t *ps)
 }
 
 int
-_rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length)
+_rl_is_mbchar_matched (const char *string, int seed, int end, char *mbchar, int length)
 {
   int i;
 
@@ -471,19 +532,19 @@ _rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length
 }
 
 WCHAR_T
-_rl_char_value (char *buf, int ind)
+_rl_char_value (const char *buf, int ind)
 {
   size_t tmp;
   WCHAR_T wc;
   mbstate_t ps;
-  int l;
+  size_t l;
 
   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)
+  if (ind + 1 >= l)
     return ((WCHAR_T) buf[ind]);
   if (l < ind)                 /* Sanity check */
     l = strlen (buf+ind);
@@ -500,7 +561,7 @@ _rl_char_value (char *buf, int ind)
    characters. */
 #undef _rl_find_next_mbchar
 int
-_rl_find_next_mbchar (char *string, int seed, int count, int flags)
+_rl_find_next_mbchar (const char *string, int seed, int count, int flags)
 {
 #if defined (HANDLE_MULTIBYTE)
   return _rl_find_next_mbchar_internal (string, seed, count, flags);
@@ -514,7 +575,7 @@ _rl_find_next_mbchar (char *string, int seed, int count, int flags)
    we look for non-zero-width multibyte characters. */
 #undef _rl_find_prev_mbchar
 int
-_rl_find_prev_mbchar (char *string, int seed, int flags)
+_rl_find_prev_mbchar (const char *string, int seed, int flags)
 {
 #if defined (HANDLE_MULTIBYTE)
   return _rl_find_prev_mbchar_internal (string, seed, flags);
@@ -522,3 +583,78 @@ _rl_find_prev_mbchar (char *string, int seed, int flags)
   return ((seed == 0) ? seed : seed - 1);
 #endif
 }
+
+/* Compare the first N characters of S1 and S2 without regard to case. If
+   FLAGS&1, apply the mapping specified by completion-map-case and make
+   `-' and `_' equivalent. Returns 1 if the strings are equal. */
+int
+_rl_mb_strcaseeqn (const char *s1, size_t l1, const char *s2, size_t l2, size_t n, int flags)
+{
+  size_t v1, v2;
+  mbstate_t ps1, ps2;
+  WCHAR_T wc1, wc2;
+
+  memset (&ps1, 0, sizeof (mbstate_t));
+  memset (&ps2, 0, sizeof (mbstate_t));
+
+  do
+    {
+      v1 = MBRTOWC(&wc1, s1, l1, &ps1);
+      v2 = MBRTOWC(&wc2, s2, l2, &ps2);
+      if (v1 == 0 && v2 == 0)
+       return 1;
+      else if (MB_INVALIDCH(v1) || MB_INVALIDCH(v2))
+       {
+         int d;
+         d = _rl_to_lower (*s1) - _rl_to_lower (*s2);  /* do byte comparison */
+         if ((flags & 1) && (*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_'))
+           d = 0;              /* case insensitive character mapping */
+         if (d != 0)
+           return 0;
+         s1++;
+         s2++;
+         n--;
+         continue;
+       }
+      wc1 = towlower(wc1);
+      wc2 = towlower(wc2);
+      s1 += v1;
+      s2 += v1;
+      n -= v1;
+      if ((flags & 1) && (wc1 == L'-' || wc1 == L'_') && (wc2 == L'-' || wc2 == L'_'))
+       continue;
+      if (wc1 != wc2)
+       return 0;
+    }
+  while (n != 0);
+
+  return 1;
+}
+
+/* Return 1 if the multibyte characters pointed to by S1 and S2 are equal
+   without regard to case. If FLAGS&1, apply the mapping specified by
+   completion-map-case and make `-' and `_' equivalent. */
+int
+_rl_mb_charcasecmp (const char *s1, mbstate_t *ps1, const char *s2, mbstate_t *ps2, int flags)
+{
+  int d;
+  size_t v1, v2;
+  wchar_t wc1, wc2;
+
+  d = MB_CUR_MAX;
+  v1 = MBRTOWC(&wc1, s1, d, ps1);
+  v2 = MBRTOWC(&wc2, s2, d, ps2);
+  if (v1 == 0 && v2 == 0)
+    return 1;
+  else if (MB_INVALIDCH(v1) || MB_INVALIDCH(v2))
+    {
+      if ((flags & 1) && (*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_'))
+       return 1;
+      return (_rl_to_lower (*s1) == _rl_to_lower (*s2));
+    }
+  wc1 = towlower(wc1);
+  wc2 = towlower(wc2);
+  if ((flags & 1) && (wc1 == L'-' || wc1 == L'_') && (wc2 == L'-' || wc2 == L'_'))
+    return 1;
+  return (wc1 == wc2);
+}
diff --git a/misc.c b/misc.c
index 4bca9c586101954061d5ccae5ac2153ac6526186..49ed74b9aa0ecfc9d58466b4ca08fbf50c7ad2ff 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1,6 +1,6 @@
 /* misc.c -- miscellaneous bindable readline functions. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2024 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.      
@@ -150,6 +150,7 @@ _rl_arg_dispatch (_rl_arg_cxt cxt, int c)
 
   if (_rl_digit_p (c))
     {
+      _rl_add_executing_keyseq (key);
       r = _rl_digit_value (c);         
       rl_numeric_arg = rl_explicit_arg ? (rl_numeric_arg * 10) +  r : r;
       rl_explicit_arg = 1;
@@ -157,6 +158,7 @@ _rl_arg_dispatch (_rl_arg_cxt cxt, int c)
     }
   else if (c == '-' && rl_explicit_arg == 0)
     {
+      _rl_add_executing_keyseq (key);
       rl_numeric_arg = 1;
       _rl_argcxt |= NUM_SAWMINUS;
       rl_arg_sign = -1;
@@ -235,6 +237,7 @@ rl_digit_argument (int ignore, int key)
   else
     {
       rl_execute_next (key);
+      _rl_del_executing_keyseq ();
       return (rl_digit_loop ());
     }
 }
@@ -306,9 +309,11 @@ void
 _rl_start_using_history (void)
 {
   using_history ();
-  if (_rl_saved_line_for_history)
-    _rl_free_saved_history_line ();
-  _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
+#if 1
+  if (_rl_saved_line_for_history && _rl_saved_line_for_history->data)
+    _rl_free_undo_list ((UNDO_LIST *)_rl_saved_line_for_history->data);
+#endif
+  _rl_free_saved_history_line ();
   _rl_history_search_pos = -99;                /* some random invalid history position */
 }
 
@@ -327,7 +332,7 @@ _rl_free_history_entry (HIST_ENTRY *entry)
 
 /* Perhaps put back the current line if it has changed. */
 int
-rl_maybe_replace_line (void)
+_rl_maybe_replace_line (int clear_undo)
 {
   HIST_ENTRY *temp;
 
@@ -339,64 +344,90 @@ rl_maybe_replace_line (void)
       xfree (temp->line);
       FREE (temp->timestamp);
       xfree (temp);
+      /* What about _rl_saved_line_for_history? if the saved undo list is
+        rl_undo_list, and we just put that into a history entry, should
+        we set the saved undo list to NULL? */
+      if (_rl_saved_line_for_history && (UNDO_LIST *)_rl_saved_line_for_history->data == rl_undo_list)
+       _rl_saved_line_for_history->data = 0;
+      /* Do we want to set rl_undo_list = 0 here since we just saved it into
+        a history entry? We let the caller decide. */
+      if (clear_undo)
+       rl_undo_list = 0;
     }
   return 0;
 }
 
+int
+rl_maybe_replace_line (void)
+{
+  return (_rl_maybe_replace_line (0));
+}
+
+void
+_rl_unsave_line (HIST_ENTRY *entry)
+{
+  /* Can't call with `1' because rl_undo_list might point to an undo
+     list from a history entry, as in rl_replace_from_history() below. */
+  rl_replace_line (entry->line, 0);
+  rl_undo_list = (UNDO_LIST *)entry->data;
+
+  /* Doesn't free `data'. */
+  _rl_free_history_entry (entry);
+
+  rl_point = rl_end;   /* rl_replace_line sets rl_end */
+}
+
 /* Restore the _rl_saved_line_for_history if there is one. */
 int
 rl_maybe_unsave_line (void)
 {
   if (_rl_saved_line_for_history)
     {
-      /* Can't call with `1' because rl_undo_list might point to an undo
-        list from a history entry, as in rl_replace_from_history() below. */
-      rl_replace_line (_rl_saved_line_for_history->line, 0);
-      rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data;
-
-      /* Doesn't free `data'. */
-      _rl_free_history_entry (_rl_saved_line_for_history);
+      _rl_unsave_line (_rl_saved_line_for_history);
       _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-      rl_point = rl_end;       /* rl_replace_line sets rl_end */
     }
   else
     rl_ding ();
   return 0;
 }
 
+HIST_ENTRY *
+_rl_alloc_saved_line (void)
+{
+  HIST_ENTRY *ret;
+
+  ret = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
+
+  ret->line = savestring (rl_line_buffer);
+  ret->timestamp = (char *)NULL;
+  ret->data = (char *)rl_undo_list;
+
+  return ret;
+}
+
 /* Save the current line in _rl_saved_line_for_history. */
 int
 rl_maybe_save_line (void)
 {
   if (_rl_saved_line_for_history == 0)
-    {
-      _rl_saved_line_for_history = (HIST_ENTRY *)xmalloc (sizeof (HIST_ENTRY));
-      _rl_saved_line_for_history->line = savestring (rl_line_buffer);
-      _rl_saved_line_for_history->timestamp = (char *)NULL;
-      _rl_saved_line_for_history->data = (char *)rl_undo_list;
-    }
+    _rl_saved_line_for_history = _rl_alloc_saved_line ();
 
   return 0;
 }
 
+/* Just a wrapper, any self-respecting compiler will inline it. */
+void
+_rl_free_saved_line (HIST_ENTRY *entry)
+{
+  _rl_free_history_entry (entry);
+}
+
 int
 _rl_free_saved_history_line (void)
 {
-  UNDO_LIST *orig;
+  _rl_free_saved_line (_rl_saved_line_for_history);
+  _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
 
-  if (_rl_saved_line_for_history)
-    {
-      if (rl_undo_list && rl_undo_list == (UNDO_LIST *)_rl_saved_line_for_history->data)
-       rl_undo_list = 0;
-      /* Have to free this separately because _rl_free_history entry can't:
-        it doesn't know whether or not this has application data. Only the
-        callers that know this is _rl_saved_line_for_history can know that
-        it's an undo list. */
-      if (_rl_saved_line_for_history->data)
-       _rl_free_undo_list ((UNDO_LIST *)_rl_saved_line_for_history->data);
-      _rl_free_history_entry (_rl_saved_line_for_history);
-      _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
-    }
   return 0;
 }
 
@@ -554,20 +585,11 @@ rl_end_of_history (int count, int key)
   return 0;
 }
 
-/* Move down to the next history line. */
 int
-rl_get_next_history (int count, int key)
+_rl_next_history_internal (int count)
 {
   HIST_ENTRY *temp;
 
-  if (count < 0)
-    return (rl_get_previous_history (-count, key));
-
-  if (count == 0)
-    return 0;
-
-  rl_maybe_replace_line ();
-
   /* either not saved by rl_newline or at end of line, so set appropriately. */
   if (_rl_history_saved_point == -1 && (rl_point || rl_end))
     _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
@@ -582,41 +604,53 @@ rl_get_next_history (int count, int key)
     }
 
   if (temp == 0)
-    rl_maybe_unsave_line ();
+    return 0;
   else
     {
       rl_replace_from_history (temp, 0);
       _rl_history_set_point ();
+      return 1;
     }
-  return 0;
 }
 
-/* Get the previous item out of our interactive history, making it the current
-   line.  If there is no previous history, just ding. */
+/* Move down to the next history line. */
 int
-rl_get_previous_history (int count, int key)
+rl_get_next_history (int count, int key)
 {
-  HIST_ENTRY *old_temp, *temp;
-  int had_saved_line;
+  int r;
 
   if (count < 0)
-    return (rl_get_next_history (-count, key));
+    return (rl_get_previous_history (-count, key));
 
-  if (count == 0 || history_list () == 0)
+  if (count == 0)
     return 0;
 
-  /* either not saved by rl_newline or at end of line, so set appropriately. */
-  if (_rl_history_saved_point == -1 && (rl_point || rl_end))
-    _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
-
-  /* If we don't have a line saved, then save this one. */
-  had_saved_line = _rl_saved_line_for_history != 0;
-  rl_maybe_save_line ();
-
   /* If the current line has changed, save the changes. */
+#if 0  /* XXX old code can leak or corrupt rl_undo_list */
   rl_maybe_replace_line ();
+#else
+  _rl_maybe_replace_line (1);
+#endif
+
+  r = _rl_next_history_internal (count);
+
+  if (r == 0)
+    rl_maybe_unsave_line ();
+
+  return 0;
+}
+
+int
+_rl_previous_history_internal (int count)
+{
+  HIST_ENTRY *old_temp, *temp;
 
   temp = old_temp = (HIST_ENTRY *)NULL;
+
+  /* either not saved by rl_newline or at end of line, so set appropriately. */
+  if (_rl_history_saved_point == -1 && (rl_point || rl_end))
+    _rl_history_saved_point = (rl_point == rl_end) ? -1 : rl_point;
+
   while (count)
     {
       temp = previous_history ();
@@ -634,15 +668,50 @@ rl_get_previous_history (int count, int key)
 
   if (temp == 0)
     {
-      if (had_saved_line == 0)
-       _rl_free_saved_history_line ();
       rl_ding ();
+      return 0;
     }
   else
     {
       rl_replace_from_history (temp, 0);
       _rl_history_set_point ();
+      return 1;
     }
+}
+       
+/* 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 (int count, int key)
+{
+  int had_saved_line, r;
+
+  if (count < 0)
+    return (rl_get_next_history (-count, key));
+
+  if (count == 0 || history_list () == 0)
+    return 0;
+
+  /* If we don't have a line saved, then save this one. */
+  had_saved_line = _rl_saved_line_for_history != 0;
+
+  /* XXX - if we are not editing a history line and we already had a saved
+     line, we're going to lose this undo list. Not sure what the right thing
+     is here - replace the saved line? */
+
+  rl_maybe_save_line ();
+
+  /* If the current line has changed, save the changes. */
+#if 0  /* XXX old code can leak or corrupt rl_undo_list */
+  rl_maybe_replace_line ();
+#else
+  _rl_maybe_replace_line (1);
+#endif
+
+  r = _rl_previous_history_internal (count);
+
+  if (r == 0 && had_saved_line == 0)   /* failed to find previous history */
+    _rl_free_saved_history_line ();
 
   return 0;
 }
@@ -693,7 +762,7 @@ static int saved_history_logical_offset = -1;
 #define HISTORY_FULL() (history_is_stifled () && history_length >= history_max_entries)
 
 static int
-set_saved_history ()
+set_saved_history (void)
 {
   int absolute_offset, count;
 
@@ -762,7 +831,10 @@ _rl_set_insert_mode (int im, int force)
   _rl_set_cursor (im, force);
 #endif
 
+  RL_UNSETSTATE (RL_STATE_OVERWRITE);
   rl_insert_mode = im;
+  if (rl_insert_mode == RL_IM_OVERWRITE)
+    RL_SETSTATE (RL_STATE_OVERWRITE);
 }
 
 /* Toggle overwrite mode.  A positive explicit argument selects overwrite
diff --git a/nls.c b/nls.c
index 8c027d6be500d06d90a7549e70127c3ba16093a6..e04991dab7a6fe5a18c6cee4c593f7981d5e904d 100644 (file)
--- a/nls.c
+++ b/nls.c
@@ -107,12 +107,13 @@ static int
 utf8locale (char *lspec)
 {
   char *cp;
-  size_t len;
 
 #if HAVE_LANGINFO_CODESET
   cp = nl_langinfo (CODESET);
   return (STREQ (cp, "UTF-8") || STREQ (cp, "utf8"));
 #else
+  size_t len;
+
   cp = find_codeset (lspec, &len);
 
   if (cp == 0 || len < 4 || len > 5)
index 57ce70458dad86f8532d009a5d2a1a9643067470..7f1e93f4fc4ac1ca65c9da0a45539f9ef8a4e933 100644 (file)
--- a/parens.c
+++ b/parens.c
@@ -38,6 +38,7 @@
 #  include <unistd.h>
 #endif
 
+#include "rlstdc.h"
 #include "posixselect.h"
 
 #if defined (HAVE_STRING_H)
 #  include <strings.h>
 #endif /* !HAVE_STRING_H */
 
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
 #include "readline.h"
 #include "rlprivate.h"
 
index 05ec9bc36a40def55f2984ec6014b65117d9a74b..2b58eb9cbff84bb0442b4fab5f1b4b506a57d09c 100644 (file)
@@ -297,6 +297,22 @@ get_funky_string (char **dest, const char **src, bool equals_end, size_t *output
 }
 #endif /* COLOR_SUPPORT */
 
+static void
+free_color_ext_list (void)
+{
+  COLOR_EXT_TYPE *e;
+  COLOR_EXT_TYPE *e2;
+
+  for (e = _rl_color_ext_list; e != NULL; /* empty */)
+    {
+      e2 = e;
+      e = e->next;
+      free (e2);
+    }
+
+  _rl_color_ext_list = 0;  
+}
+
 void _rl_parse_colors(void)
 {
 #if defined (COLOR_SUPPORT)
@@ -420,21 +436,32 @@ void _rl_parse_colors(void)
 
   if (state < 0)
     {
-      COLOR_EXT_TYPE *e;
-      COLOR_EXT_TYPE *e2;
 
       _rl_errmsg ("unparsable value for LS_COLORS environment variable");
       free (color_buf);
-      for (e = _rl_color_ext_list; e != NULL; /* empty */)
-        {
-          e2 = e;
-          e = e->next;
-          free (e2);
-        }
-      _rl_color_ext_list = NULL;
+      free_color_ext_list ();      
+
       _rl_colored_stats = 0;   /* can't have colored stats without colors */
+      _rl_colored_completion_prefix = 0;       /* or colored prefixes */
     }
 #else /* !COLOR_SUPPORT */
   ;
 #endif /* !COLOR_SUPPORT */
 }
+
+void
+rl_reparse_colors (void)
+{
+  char *v;
+
+  v = sh_get_env_value ("LS_COLORS");
+  if (v == 0 && color_buf == 0)
+    return;            /* no change */
+  if (v && color_buf && STREQ (v, color_buf))
+    return;            /* no change */
+
+  free (color_buf);
+  free_color_ext_list ();
+
+  _rl_parse_colors ();
+}
index fa58ba54d82a04548ac0deea07d8e7b1500daf11..d8c9df7e6bb19b63a7c7f1c4f192a91529e40699 100644 (file)
@@ -1,3 +1,3 @@
 # Do not edit -- exists only for use by patch
 
-13
+0
index da6a1ace0c41ea2ddc7bb1692a79db02e38082ef..9d54e1889f89c199a6405bc5984caae87ae35e2e 100644 (file)
 #ifndef _POSIXSELECT_H_
 #define _POSIXSELECT_H_
 
-#if defined (FD_SET) && !defined (HAVE_SELECT)
+#if defined (FD_SET) && !defined (HAVE_SELECT) && !defined (_WIN32)
 #  define HAVE_SELECT 1
 #endif
 
 #if defined (HAVE_SELECT)
 #  if !defined (HAVE_SYS_SELECT_H) || !defined (M_UNIX)
-#    include <sys/time.h>
+#    include "posixtime.h"
 #  endif
 #endif /* HAVE_SELECT */
 #if defined (HAVE_SYS_SELECT_H)
index e70ebec67cf08e756b0f32af79234ff11de103d8..883fba7ce945b82fb7d98027f40e391492d11898 100644 (file)
@@ -1,6 +1,6 @@
 /* posixtime.h -- wrapper for time.h, sys/times.h mess. */
 
-/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -49,9 +49,18 @@ struct timeval
 #endif
 
 #if !HAVE_GETTIMEOFDAY
-extern int gettimeofday PARAMS((struct timeval *, void *));
+extern int gettimeofday (struct timeval * restrict, void * restrict);
 #endif
 
+/* consistently use gettimeofday for time information */
+static inline time_t
+getnow(void)
+{
+  struct timeval now;
+  gettimeofday (&now, 0);
+  return now.tv_sec;
+}
+
 /* These exist on BSD systems, at least. */
 #if !defined (timerclear)
 #  define timerclear(tvp)      do { (tvp)->tv_sec = 0; (tvp)->tv_usec = 0; } while (0)
@@ -81,4 +90,12 @@ extern int gettimeofday PARAMS((struct timeval *, void *));
   } while (0)
 #endif
 
+#ifndef TIMESPEC_TO_TIMEVAL
+#  define TIMESPEC_TO_TIMEVAL(tv, ts) \
+  do { \
+    (tv)->tv_sec = (ts)->tv_sec; \
+    (tv)->tv_usec = (tv)->tv_nsec / 1000; \
+  } while (0)
+#endif
+
 #endif /* _POSIXTIME_H_ */
index d649af541e8889901d5533199a2fc327cbb29914..33b6c13a8ffb5825237fff1cf24d1f4ca2b1ea51 100644 (file)
@@ -1,7 +1,7 @@
 /* readline.c -- a general facility for reading lines of input
    with emacs style editing and completion. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.      
@@ -262,7 +262,7 @@ _rl_keyseq_cxt *_rl_kscxt = 0;
 
 int rl_executing_key;
 char *rl_executing_keyseq = 0;
-int _rl_executing_keyseq_size = 0;
+size_t _rl_executing_keyseq_size = 0;
 
 struct _rl_cmd _rl_pending_command;
 struct _rl_cmd *_rl_command_to_execute = (struct _rl_cmd *)NULL;
@@ -474,17 +474,12 @@ readline_internal_setup (void)
   RL_CHECK_SIGNALS ();
 }
 
-STATIC_CALLBACK char *
-readline_internal_teardown (int eof)
+STATIC_CALLBACK void
+readline_common_teardown (void)
 {
   char *temp;
   HIST_ENTRY *entry;
 
-  RL_CHECK_SIGNALS ();
-
-  if (eof)
-    RL_SETSTATE (RL_STATE_EOF);                /* XXX */
-
   /* Restore the original of this history line, iff the line that we
      are editing was originally in the history, AND the line has changed. */
   entry = current_history ();
@@ -510,6 +505,17 @@ readline_internal_teardown (int eof)
      rid of it now. */
   if (rl_undo_list)
     rl_free_undo_list ();
+}
+       
+STATIC_CALLBACK char *
+readline_internal_teardown (int eof)
+{
+  RL_CHECK_SIGNALS ();
+
+  if (eof)
+    RL_SETSTATE (RL_STATE_EOF);                /* XXX */
+
+  readline_common_teardown ();
 
   /* Disable the meta key, if this terminal has one and we were told to use it.
      The check whether or not we sent the enable string is in
@@ -537,7 +543,11 @@ _rl_internal_char_cleanup (void)
     rl_vi_check ();
 #endif /* VI_MODE */
 
+#if defined (HANDLE_MULTIBYTE)
+  if (rl_num_chars_to_read && _rl_mbstrlen (rl_line_buffer) >= rl_num_chars_to_read)
+#else
   if (rl_num_chars_to_read && rl_end >= rl_num_chars_to_read)
+#endif
     {
       (*rl_redisplay_function) ();
       _rl_want_redisplay = 0;
@@ -566,6 +576,7 @@ readline_internal_charloop (void)
 {
   static int lastc, eof_found;
   int c, code, lk, r;
+  static procenv_t olevel;
 
   lastc = EOF;
 
@@ -576,6 +587,9 @@ readline_internal_charloop (void)
 #endif
       lk = _rl_last_command_was_kill;
 
+      /* Save and restore _rl_top_level even though most of the time it
+        doesn't matter. */
+      memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t));
 #if defined (HAVE_POSIX_SIGSETJMP)
       code = sigsetjmp (_rl_top_level, 0);
 #else
@@ -586,13 +600,14 @@ readline_internal_charloop (void)
        {
          (*rl_redisplay_function) ();
          _rl_want_redisplay = 0;
+         if (RL_ISSTATE (RL_STATE_CALLBACK))
+           memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t));
 
          /* If we longjmped because of a timeout, handle it here. */
          if (RL_ISSTATE (RL_STATE_TIMEOUT))
            {
              RL_SETSTATE (RL_STATE_DONE);
-             rl_done = 1;
-             return 1;
+             return (rl_done = 1);
            }
 
          /* If we get here, we're not being called from something dispatched
@@ -703,6 +718,7 @@ readline_internal_charloop (void)
       _rl_internal_char_cleanup ();
 
 #if defined (READLINE_CALLBACKS)
+      memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t));
       return 0;
 #else
     }
@@ -1206,6 +1222,7 @@ rl_initialize (void)
 
   /* We aren't done yet.  We haven't even gotten started yet! */
   rl_done = 0;
+  rl_eof_found = 0;
   RL_UNSETSTATE(RL_STATE_DONE|RL_STATE_TIMEOUT|RL_STATE_EOF);
 
   /* Tell the history routines what is going on. */
@@ -1335,9 +1352,8 @@ readline_initialize_everything (void)
     _rl_parse_colors ();
 #endif
 
-  rl_executing_keyseq = malloc (_rl_executing_keyseq_size = 16);
-  if (rl_executing_keyseq)
-    rl_executing_keyseq[rl_key_sequence_length = 0] = '\0';
+  rl_executing_keyseq = xmalloc (_rl_executing_keyseq_size = 16);
+  rl_executing_keyseq[rl_key_sequence_length = 0] = '\0';
 }
 
 /* If this system allows us to look at the values of the regular
@@ -1350,6 +1366,7 @@ readline_default_bindings (void)
     rl_tty_set_default_bindings (_rl_keymap);
 }
 
+#if defined (DEBUG)
 /* Reset the default bindings for the terminal special characters we're
    interested in back to rl_insert and read the new ones. */
 static void
@@ -1361,6 +1378,7 @@ reset_default_bindings (void)
       rl_tty_set_default_bindings (_rl_keymap);
     }
 }
+#endif
 
 /* Bind some common arrow key sequences in MAP. */
 static void
@@ -1575,7 +1593,7 @@ void
 _rl_add_executing_keyseq (int key)
 {
   RESIZE_KEYSEQ_BUFFER ();
- rl_executing_keyseq[rl_key_sequence_length++] = key;
 rl_executing_keyseq[rl_key_sequence_length++] = key;
 }
 
 /* `delete' the last character added to the executing key sequence. Use this
index cac269f0b433ca795a929e0c4c4ebde42446f7de..8a53b063e4278c6a2f8c78592fd52724c710e5c0 100644 (file)
@@ -1,6 +1,6 @@
 /* Readline.h -- the names of functions callable from within readline. */
 
-/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2024 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.      
@@ -39,9 +39,9 @@ extern "C" {
 #endif
 
 /* Hex-encoded Readline version number. */
-#define RL_READLINE_VERSION    0x0802          /* Readline 8.2 */
+#define RL_READLINE_VERSION    0x0803          /* Readline 8.3 */
 #define RL_VERSION_MAJOR       8
-#define RL_VERSION_MINOR       2
+#define RL_VERSION_MINOR       3
 
 /* Readline data structures. */
 
@@ -160,6 +160,7 @@ extern int rl_insert_completions (int, int);
 extern int rl_old_menu_complete (int, int);
 extern int rl_menu_complete (int, int);
 extern int rl_backward_menu_complete (int, int);
+extern int rl_export_completions (int, int);
 
 /* Bindable commands for killing and yanking text, and managing the kill ring. */
 extern int rl_kill_word (int, int);
@@ -209,6 +210,8 @@ extern int rl_stop_output (int, int);
 extern int rl_abort (int, int);
 extern int rl_tty_status (int, int);
 
+extern int rl_execute_named_command (int, int);
+
 /* Bindable commands for incremental and non-incremental history searching. */
 extern int rl_history_search_forward (int, int);
 extern int rl_history_search_backward (int, int);
@@ -341,7 +344,9 @@ extern int rl_trim_arg_from_keyseq (const char *, size_t, Keymap);
 extern void rl_list_funmap_names (void);
 extern char **rl_invoking_keyseqs_in_map (rl_command_func_t *, Keymap);
 extern char **rl_invoking_keyseqs (rl_command_func_t *);
+
+extern void rl_print_keybinding (const char *, Keymap, int);
+
 extern void rl_function_dumper (int);
 extern void rl_macro_dumper (int);
 extern void rl_variable_dumper (int);
@@ -404,11 +409,7 @@ extern void rl_activate_mark (void);
 extern void rl_deactivate_mark (void);
 extern int rl_mark_active_p (void);
 
-#if defined (USE_VARARGS) && defined (PREFER_STDARG)
 extern int rl_message (const char *, ...)  __attribute__((__format__ (printf, 1, 2)));
-#else
-extern int rl_message ();
-#endif
 
 extern int rl_show_char (int);
 
@@ -441,6 +442,7 @@ extern void rl_get_screen_size (int *, int *);
 extern void rl_reset_screen_size (void);
 
 extern char *rl_get_termcap (const char *);
+extern void rl_reparse_colors (void);
 
 /* Functions for character input. */
 extern int rl_stuff_char (int);
@@ -627,6 +629,8 @@ extern rl_voidfunc_t *rl_redisplay_function;
 extern rl_vintfunc_t *rl_prep_term_function;
 extern rl_voidfunc_t *rl_deprep_term_function;
 
+extern rl_macro_print_func_t *rl_macro_display_hook;
+
 /* Dispatch variables. */
 extern Keymap rl_executing_keymap;
 extern Keymap rl_binding_keymap;
@@ -770,6 +774,19 @@ extern rl_icppfunc_t *rl_filename_stat_hook;
    converted. */
 extern rl_dequote_func_t *rl_filename_rewrite_hook;
 
+/* If non-zero, this is the address of a function to call before
+   comparing the filename portion of a word to be completed with directory
+   entries from the filesystem. This takes the address of the partial word
+   to be completed, after any rl_filename_dequoting_function has been applied.
+   The function should either return its first argument (if no conversion
+   takes place) or newly-allocated memory. This can, for instance, convert
+   the filename portion of the completion word to a character set suitable
+   for comparison against directory entries read from the filesystem (after
+   their potential modification by rl_filename_rewrite_hook). 
+   The returned value is what is added to the list of matches.
+   The second argument is the length of the filename to be converted. */
+extern rl_dequote_func_t *rl_completion_rewrite_hook;
+
 /* Backwards compatibility with previous versions of readline. */
 #define rl_symbolic_link_hook rl_directory_completion_hook
 
@@ -794,6 +811,12 @@ extern int rl_filename_completion_desired;
    entry finder function. */
 extern int rl_filename_quoting_desired;
 
+/* Non-zero means we should apply filename-type quoting to all completions
+   even if we are not otherwise treating the matches as filenames. This is
+   ALWAYS zero on entry, and can only be changed within a completion entry
+   finder function. */
+extern int rl_full_quoting_desired;
+
 /* Set to a function to quote a filename in an application-specific fashion.
    Called with the text to quote, the type of match found (single or multiple)
    and a pointer to the quoting character to be used, which the function can
@@ -892,37 +915,40 @@ extern int rl_persistent_signal_handlers;
 #define MULT_MATCH      2
 
 /* Possible state values for rl_readline_state */
-#define RL_STATE_NONE          0x000000                /* no state; before first call */
-
-#define RL_STATE_INITIALIZING  0x0000001       /* initializing */
-#define RL_STATE_INITIALIZED   0x0000002       /* initialization done */
-#define RL_STATE_TERMPREPPED   0x0000004       /* terminal is prepped */
-#define RL_STATE_READCMD       0x0000008       /* reading a command key */
-#define RL_STATE_METANEXT      0x0000010       /* reading input after ESC */
-#define RL_STATE_DISPATCHING   0x0000020       /* dispatching to a command */
-#define RL_STATE_MOREINPUT     0x0000040       /* reading more input in a command function */
-#define RL_STATE_ISEARCH       0x0000080       /* doing incremental search */
-#define RL_STATE_NSEARCH       0x0000100       /* doing non-inc search */
-#define RL_STATE_SEARCH                0x0000200       /* doing a history search */
-#define RL_STATE_NUMERICARG    0x0000400       /* reading numeric argument */
-#define RL_STATE_MACROINPUT    0x0000800       /* getting input from a macro */
-#define RL_STATE_MACRODEF      0x0001000       /* defining keyboard macro */
-#define RL_STATE_OVERWRITE     0x0002000       /* overwrite mode */
-#define RL_STATE_COMPLETING    0x0004000       /* doing completion */
-#define RL_STATE_SIGHANDLER    0x0008000       /* in readline sighandler */
-#define RL_STATE_UNDOING       0x0010000       /* doing an undo */
-#define RL_STATE_INPUTPENDING  0x0020000       /* rl_execute_next called */
-#define RL_STATE_TTYCSAVED     0x0040000       /* tty special chars saved */
-#define RL_STATE_CALLBACK      0x0080000       /* using the callback interface */
-#define RL_STATE_VIMOTION      0x0100000       /* reading vi motion arg */
-#define RL_STATE_MULTIKEY      0x0200000       /* reading multiple-key command */
-#define RL_STATE_VICMDONCE     0x0400000       /* entered vi command mode at least once */
-#define RL_STATE_CHARSEARCH    0x0800000       /* vi mode char search */
-#define RL_STATE_REDISPLAYING  0x1000000       /* updating terminal display */
-
-#define RL_STATE_DONE          0x2000000       /* done; accepted line */
-#define RL_STATE_TIMEOUT       0x4000000       /* done; timed out */
-#define RL_STATE_EOF           0x8000000       /* done; got eof on read */
+#define RL_STATE_NONE          0x0000000       /* no state; before first call */
+
+#define RL_STATE_INITIALIZING  0x00000001      /* initializing */
+#define RL_STATE_INITIALIZED   0x00000002      /* initialization done */
+#define RL_STATE_TERMPREPPED   0x00000004      /* terminal is prepped */
+#define RL_STATE_READCMD       0x00000008      /* reading a command key */
+#define RL_STATE_METANEXT      0x00000010      /* reading input after ESC */
+#define RL_STATE_DISPATCHING   0x00000020      /* dispatching to a command */
+#define RL_STATE_MOREINPUT     0x00000040      /* reading more input in a command function */
+#define RL_STATE_ISEARCH       0x00000080      /* doing incremental search */
+#define RL_STATE_NSEARCH       0x00000100      /* doing non-inc search */
+#define RL_STATE_SEARCH                0x00000200      /* doing a history search */
+#define RL_STATE_NUMERICARG    0x00000400      /* reading numeric argument */
+#define RL_STATE_MACROINPUT    0x00000800      /* getting input from a macro */
+#define RL_STATE_MACRODEF      0x00001000      /* defining keyboard macro */
+#define RL_STATE_OVERWRITE     0x00002000      /* overwrite mode */
+#define RL_STATE_COMPLETING    0x00004000      /* doing completion */
+#define RL_STATE_SIGHANDLER    0x00008000      /* in readline sighandler */
+#define RL_STATE_UNDOING       0x00010000      /* doing an undo */
+#define RL_STATE_INPUTPENDING  0x00020000      /* rl_execute_next called */
+#define RL_STATE_TTYCSAVED     0x00040000      /* tty special chars saved */
+#define RL_STATE_CALLBACK      0x00080000      /* using the callback interface */
+#define RL_STATE_VIMOTION      0x00100000      /* reading vi motion arg */
+#define RL_STATE_MULTIKEY      0x00200000      /* reading multiple-key command */
+#define RL_STATE_VICMDONCE     0x00400000      /* entered vi command mode at least once */
+#define RL_STATE_CHARSEARCH    0x00800000      /* vi mode char search */
+#define RL_STATE_REDISPLAYING  0x01000000      /* updating terminal display */
+
+#define RL_STATE_DONE          0x02000000      /* done; accepted line */
+#define RL_STATE_TIMEOUT       0x04000000      /* done; timed out */
+#define RL_STATE_EOF           0x08000000      /* done; got eof on read */
+
+/* Rearrange these for next major version */
+#define RL_STATE_READSTR       0x10000000      /* reading a string for M-x */
 
 #define RL_SETSTATE(x)         (rl_readline_state |= (x))
 #define RL_UNSETSTATE(x)       (rl_readline_state &= ~(x))
@@ -939,7 +965,7 @@ struct readline_state {
   char *prompt;
 
   /* global state */
-  int rlstate;
+  int rlstate;         /* XXX -- needs to be unsigned long */
   int done;
   Keymap kmap;
 
index b6d6a2f12841ac5e3a6d096f6c321e56b61919ad..e0fd735b5b3c16ba2931762665a0e0cb185942d4 100644 (file)
--- a/rlconf.h
+++ b/rlconf.h
@@ -76,4 +76,9 @@
 #define RL_VI_CMD_MODESTR_DEFAULT      "(cmd)"
 #define RL_VI_CMD_MODESTR_DEFLEN       5
 
+/* Do you want readline to assume it's running in an ANSI-compatible terminal
+   by default? If set to 0, readline tries to check and verify whether or not
+   it is. */
+#define RL_ANSI_TERM_DEFAULT   1       /* for now */
+
 #endif /* _RLCONF_H_ */
index 98577a64b98d6c5997775874d7e1d75835862439..ec3c64a86f44d4323a0a173f5f346fa765d01d0f 100644 (file)
--- a/rldefs.h
+++ b/rldefs.h
@@ -40,7 +40,7 @@
 #  if defined (HAVE_TERMIO_H)
 #    define TERMIO_TTY_DRIVER
 #  else
-#    if !defined (__MINGW32__)
+#    if !defined (__MINGW32__) && !defined (_MSC_VER)
 #      define NEW_TTY_DRIVER
 #    else
 #      define NO_TTY_DRIVER
 #  include <strings.h>
 #endif /* !HAVE_STRING_H */
 
-#if !defined (strchr) && !defined (__STDC__)
-extern char *strchr (), *strrchr ();
-#endif /* !strchr && !__STDC__ */
-
-#if defined (PREFER_STDARG)
-#  include <stdarg.h>
-#else
-#  if defined (PREFER_VARARGS)
-#    include <varargs.h>
-#  endif
-#endif
+#include <stdarg.h>
 
 #if defined (HAVE_STRCASECMP)
 #define _rl_stricmp strcasecmp
@@ -83,7 +73,7 @@ extern int _rl_stricmp (const char *, const char *);
 extern int _rl_strnicmp (const char *, const char *, int);
 #endif
 
-#if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE)
+#if defined (HAVE_STRPBRK) && !defined (HANDLE_MULTIBYTE)
 #  define _rl_strpbrk(a,b)     strpbrk((a),(b))
 #else
 extern char *_rl_strpbrk (const char *, const char *);
index d9060572e5821f6811d1482b741b8490357c85cb..473ccb181712ef9ddccfa1cd8ba197e0c24e7b5d 100644 (file)
@@ -1,6 +1,6 @@
 /* rlmbutil.h -- utility functions for multibyte characters. */
 
-/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2025 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.      
 #define MB_FIND_ANY    0x00
 #define MB_FIND_NONZERO        0x01
 
-extern int _rl_find_prev_mbchar (char *, int, int);
-extern int _rl_find_next_mbchar (char *, int, int, int);
+extern int _rl_find_prev_mbchar (const char *, int, int);
+extern int _rl_find_next_mbchar (const char *, int, int, int);
 
 #ifdef HANDLE_MULTIBYTE
 
-extern int _rl_compare_chars (char *, int, mbstate_t *, char *, int, mbstate_t *);
-extern int _rl_get_char_len (char *, mbstate_t *);
-extern int _rl_adjust_point (char *, int, mbstate_t *);
+extern size_t _rl_mbstrlen (const char *);
+
+extern int _rl_compare_chars (const char *, int, mbstate_t *, const char *, int, mbstate_t *);
+extern int _rl_get_char_len (const char *, mbstate_t *);
+extern int _rl_adjust_point (const char *, int, mbstate_t *);
 
 extern int _rl_read_mbchar (char *, int);
 extern int _rl_read_mbstring (int, char *, int);
 
-extern int _rl_is_mbchar_matched (char *, int, int, char *, int);
+extern int _rl_is_mbchar_matched (const char *, int, int, char *, int);
 
-extern WCHAR_T _rl_char_value (char *, int);
+extern WCHAR_T _rl_char_value (const char *, int);
 extern int _rl_walphabetic (WCHAR_T);
 
+extern int _rl_mb_strcaseeqn (const char *, size_t, const char *, size_t, size_t, int);
+extern int _rl_mb_charcasecmp (const char *, mbstate_t *, const char *, mbstate_t *, int);
+
 #define _rl_to_wupper(wc)      (iswlower (wc) ? towupper (wc) : (wc))
 #define _rl_to_wlower(wc)      (iswupper (wc) ? towlower (wc) : (wc))
 
@@ -143,37 +148,42 @@ _rl_wcwidth (WCHAR_T wc)
 {
   switch (wc)
     {
-    case ' ': case '!': case '"': case '#': case '%':
-    case '&': case '\'': case '(': case ')': case '*':
-    case '+': case ',': case '-': case '.': case '/':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-    case ':': case ';': case '<': case '=': case '>':
-    case '?':
-    case 'A': case 'B': case 'C': case 'D': case 'E':
-    case 'F': case 'G': case 'H': case 'I': case 'J':
-    case 'K': case 'L': case 'M': case 'N': case 'O':
-    case 'P': case 'Q': case 'R': case 'S': case 'T':
-    case 'U': case 'V': case 'W': case 'X': case 'Y':
-    case 'Z':
-    case '[': case '\\': case ']': case '^': case '_':
-    case 'a': case 'b': case 'c': case 'd': case 'e':
-    case 'f': case 'g': case 'h': case 'i': case 'j':
-    case 'k': case 'l': case 'm': case 'n': case 'o':
-    case 'p': case 'q': case 'r': case 's': case 't':
-    case 'u': case 'v': case 'w': case 'x': case 'y':
-    case 'z': case '{': case '|': case '}': case '~':
+    case L' ': case L'!': case L'"': case L'#': case L'%':
+    case L'&': case L'\'': case L'(': case L')': case L'*':
+    case L'+': case L',': case L'-': case L'.': case L'/':
+    case L'0': case L'1': case L'2': case L'3': case L'4':
+    case L'5': case L'6': case L'7': case L'8': case L'9':
+    case L':': case L';': case L'<': case L'=': case L'>':
+    case L'?':
+    case L'A': case L'B': case L'C': case L'D': case L'E':
+    case L'F': case L'G': case L'H': case L'I': case L'J':
+    case L'K': case L'L': case L'M': case L'N': case L'O':
+    case L'P': case L'Q': case L'R': case L'S': case L'T':
+    case L'U': case L'V': case L'W': case L'X': case L'Y':
+    case L'Z':
+    case L'[': case L'\\': case L']': case L'^': case L'_':
+    case L'a': case L'b': case L'c': case L'd': case L'e':
+    case L'f': case L'g': case L'h': case L'i': case L'j':
+    case L'k': case L'l': case L'm': case L'n': case L'o':
+    case L'p': case L'q': case L'r': case L's': case L't':
+    case L'u': case L'v': case L'w': case L'x': case L'y':
+    case L'z': case L'{': case L'|': case L'}': case L'~':
       return 1;
     default:
       return wcwidth (wc);
     }
 }
 
-/* Unicode combining characters range from U+0300 to U+036F */
-#define UNICODE_COMBINING_CHAR(x) ((x) >= 768 && (x) <= 879)
+/* Unicode combining characters as of version 15.1 */
+#define UNICODE_COMBINING_CHAR(x) \
+       (((x) >= 0x0300 && (x) <= 0x036F) || \
+        ((x) >= 0x1AB0 && (x) <= 0x1AFF) || \
+        ((x) >= 0x1DC0 && (x) <= 0x1DFF) || \
+        ((x) >= 0x20D0 && (x) <= 0x20FF) || \
+        ((x) >= 0xFE20 && (x) <= 0xFE2F))
 
 #if defined (WCWIDTH_BROKEN)
-#  define WCWIDTH(wc)  ((_rl_utf8locale && UNICODE_COMBINING_CHAR(wc)) ? 0 : _rl_wcwidth(wc))
+#  define WCWIDTH(wc)  ((_rl_utf8locale && UNICODE_COMBINING_CHAR((int)wc)) ? 0 : _rl_wcwidth(wc))
 #else
 #  define WCWIDTH(wc)  _rl_wcwidth(wc)
 #endif
@@ -184,6 +194,8 @@ _rl_wcwidth (WCHAR_T wc)
 #  define IS_COMBINING_CHAR(x) (WCWIDTH(x) == 0)
 #endif
 
+#define IS_BASE_CHAR(x)                (iswgraph(x) && WCWIDTH(x) > 0)
+
 #define UTF8_SINGLEBYTE(c)     (((c) & 0x80) == 0)
 #define UTF8_MBFIRSTCHAR(c)    (((c) & 0xc0) == 0xc0)
 #define UTF8_MBCHAR(c)         (((c) & 0xc0) == 0x80)
@@ -222,4 +234,102 @@ _rl_wcwidth (WCHAR_T wc)
 
 extern int rl_byte_oriented;
 
+/* Snagged from gnulib */
+#ifdef HANDLE_MULTIBYTE
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* is_basic(c) tests whether the single-byte character c is
+   - in the ISO C "basic character set" or is one of '@', '$', and '`'
+     which ISO C 23 § 5.2.1.1.(1) guarantees to be single-byte and in
+     practice are safe to treat as basic in the execution character set,
+     or
+   - in the POSIX "portable character set", which
+     <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap06.html>
+     equally guarantees to be single-byte. */
+
+#if (' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+    && ('$' == 36) && ('%' == 37) && ('&' == 38) && ('\'' == 39) \
+    && ('(' == 40) && (')' == 41) && ('*' == 42) && ('+' == 43) \
+    && (',' == 44) && ('-' == 45) && ('.' == 46) && ('/' == 47) \
+    && ('0' == 48) && ('1' == 49) && ('2' == 50) && ('3' == 51) \
+    && ('4' == 52) && ('5' == 53) && ('6' == 54) && ('7' == 55) \
+    && ('8' == 56) && ('9' == 57) && (':' == 58) && (';' == 59) \
+    && ('<' == 60) && ('=' == 61) && ('>' == 62) && ('?' == 63) \
+    && ('@' == 64) && ('A' == 65) && ('B' == 66) && ('C' == 67) \
+    && ('D' == 68) && ('E' == 69) && ('F' == 70) && ('G' == 71) \
+    && ('H' == 72) && ('I' == 73) && ('J' == 74) && ('K' == 75) \
+    && ('L' == 76) && ('M' == 77) && ('N' == 78) && ('O' == 79) \
+    && ('P' == 80) && ('Q' == 81) && ('R' == 82) && ('S' == 83) \
+    && ('T' == 84) && ('U' == 85) && ('V' == 86) && ('W' == 87) \
+    && ('X' == 88) && ('Y' == 89) && ('Z' == 90) && ('[' == 91) \
+    && ('\\' == 92) && (']' == 93) && ('^' == 94) && ('_' == 95) \
+    && ('`' == 96) && ('a' == 97) && ('b' == 98) && ('c' == 99) \
+    && ('d' == 100) && ('e' == 101) && ('f' == 102) && ('g' == 103) \
+    && ('h' == 104) && ('i' == 105) && ('j' == 106) && ('k' == 107) \
+    && ('l' == 108) && ('m' == 109) && ('n' == 110) && ('o' == 111) \
+    && ('p' == 112) && ('q' == 113) && ('r' == 114) && ('s' == 115) \
+    && ('t' == 116) && ('u' == 117) && ('v' == 118) && ('w' == 119) \
+    && ('x' == 120) && ('y' == 121) && ('z' == 122) && ('{' == 123) \
+    && ('|' == 124) && ('}' == 125) && ('~' == 126)
+/* The character set is ISO-646, not EBCDIC. */
+# define IS_BASIC_ASCII 1
+
+/* All locale encodings (see localcharset.h) map the characters 0x00..0x7F
+   to U+0000..U+007F, like ASCII, except for
+     CP864      different mapping of '%'
+     SHIFT_JIS  different mappings of 0x5C, 0x7E
+     JOHAB      different mapping of 0x5C
+   However, these characters in the range 0x20..0x7E are in the ISO C
+   "basic character set" and in the POSIX "portable character set", which
+   ISO C and POSIX guarantee to be single-byte.  Thus, locales with these
+   encodings are not POSIX compliant.  And they are most likely not in use
+   any more (as of 2023).  */
+# define _rl_is_basic(c) ((unsigned char) (c) < 0x80)
+
+#else
+
+static inline int
+_rl_is_basic (char c)
+{
+  switch (c)
+    {
+    case '\0':
+    case '\007': case '\010':
+    case '\t': case '\n': case '\v': case '\f': case '\r':
+    case ' ': case '!': case '"': case '#': case '$': case '%':
+    case '&': case '\'': case '(': case ')': case '*':
+    case '+': case ',': case '-': case '.': case '/':
+    case '0': case '1': case '2': case '3': case '4':
+    case '5': case '6': case '7': case '8': case '9':
+    case ':': case ';': case '<': case '=': case '>':
+    case '?': case '@':
+    case 'A': case 'B': case 'C': case 'D': case 'E':
+    case 'F': case 'G': case 'H': case 'I': case 'J':
+    case 'K': case 'L': case 'M': case 'N': case 'O':
+    case 'P': case 'Q': case 'R': case 'S': case 'T':
+    case 'U': case 'V': case 'W': case 'X': case 'Y':
+    case 'Z':
+    case '[': case '\\': case ']': case '^': case '_': case '`':
+    case 'a': case 'b': case 'c': case 'd': case 'e':
+    case 'f': case 'g': case 'h': case 'i': case 'j':
+    case 'k': case 'l': case 'm': case 'n': case 'o':
+    case 'p': case 'q': case 'r': case 's': case 't':
+    case 'u': case 'v': case 'w': case 'x': case 'y':
+    case 'z': case '{': case '|': case '}': case '~':
+      return 1;
+    default:
+      return 0;
+    }
+}
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* HANDLE_MULTIBYTE */
+
 #endif /* _RL_MBUTIL_H_ */
index d87d07a72ee19c06b24338ac2f7c4ab80eb83870..eb0495f9be5914129233da2988142283eb0bfbda 100644 (file)
@@ -1,7 +1,7 @@
 /* rlprivate.h -- functions and variables global to the readline library,
                  but not intended for use by applications. */
 
-/* Copyright (C) 1999-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2025 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.
@@ -67,6 +67,7 @@
 #define SF_CHGKMAP             0x08
 #define SF_PATTERN             0x10
 #define SF_NOCASE              0x20            /* unused so far */
+#define SF_FREEPMT             0x40            /* saved prompt separately, need to free it */
 
 typedef struct  __rl_search_context
 {
@@ -110,6 +111,28 @@ typedef struct  __rl_search_context
   char  *search_terminators;
 } _rl_search_cxt;
 
+/* readstr flags */
+#define READSTR_NOSPACE        0x01    /* don't insert space, use for completion */
+#define READSTR_FREEPMT        0x02    /* called rl_save_prompt, need to free it ourselves */
+
+typedef struct  __rl_readstr_context
+{
+  int flags;
+
+  int prevc;
+  int lastc;
+#if defined (HANDLE_MULTIBYTE)
+  char mb[MB_LEN_MAX];
+  char pmb[MB_LEN_MAX];
+#endif
+
+  int save_point;
+  int save_mark;
+  int save_line;
+
+  int (*compfunc) (struct __rl_readstr_context *, int);
+} _rl_readstr_cxt;
+
 struct _rl_cmd {
   Keymap map;
   int count;
@@ -247,10 +270,11 @@ extern char *_rl_savestring (const char *);
  * Undocumented private functions                                       *
  *************************************************************************/
 
-#if defined(READLINE_CALLBACKS)
+#if defined (READLINE_CALLBACKS)
 
 /* readline.c */
 extern void readline_internal_setup (void);
+extern void readline_common_teardown (void);
 extern char *readline_internal_teardown (int);
 extern int readline_internal_char (void);
 
@@ -303,8 +327,23 @@ extern int _rl_pushed_input_available (void);
 
 extern int _rl_timeout_init (void);
 extern int _rl_timeout_handle_sigalrm (void);
+
 #if defined (_POSIXSELECT_H_)
 /* use as a sentinel for fd_set, struct timeval,  and sigset_t definitions */
+
+#if defined (__MINGW32__)
+/* still doesn't work; no alarm() so we provide a non-working stub. */
+#  define RL_TIMEOUT_USE_SIGALRM
+#elif defined (HAVE_SELECT) || defined (HAVE_PSELECT)
+#  define RL_TIMEOUT_USE_SELECT
+#elif defined (_MSC_VER)
+/* can't use select/pselect or SIGALRM, so no timeouts */
+#else
+#  define RL_TIMEOUT_USE_SIGALRM
+#endif
+
+#endif
+#if defined (RL_TIMEOUT_USE_SELECT)
 extern int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
 #endif
 
@@ -355,7 +394,14 @@ extern int _rl_arg_callback (_rl_arg_cxt);
 extern void _rl_reset_argument (void);
 
 extern void _rl_start_using_history (void);
+#if defined (HIST_ENTRY_DEFINED)
+extern HIST_ENTRY *_rl_alloc_saved_line (void);
+extern void _rl_free_saved_line (HIST_ENTRY *);
+extern void _rl_unsave_line (HIST_ENTRY *);
+#endif
 extern int _rl_free_saved_history_line (void);
+extern int _rl_maybe_replace_line (int);
+
 extern void _rl_set_insert_mode (int, int);
 
 extern void _rl_revert_previous_lines (void);
@@ -391,6 +437,9 @@ extern int _rl_restore_tty_signals (void);
 /* search.c */
 extern int _rl_nsearch_callback (_rl_search_cxt *);
 extern int _rl_nsearch_cleanup (_rl_search_cxt *, int);
+extern int _rl_nsearch_sigcleanup (_rl_search_cxt *, int);
+
+extern void _rl_free_saved_search_line (void);
 
 /* signals.c */
 extern void _rl_signal_handler (int);
@@ -400,6 +449,8 @@ extern void _rl_release_sigint (void);
 extern void _rl_block_sigwinch (void);
 extern void _rl_release_sigwinch (void);
 
+extern void _rl_state_sigcleanup (void);
+
 /* terminal.c */
 extern void _rl_get_screen_size (int, int);
 extern void _rl_sigwinch_resize_terminal (void);
@@ -439,21 +490,26 @@ extern int _rl_char_search_internal (int, int, int);
 #endif
 extern int _rl_set_mark_at_pos (int);
 
+extern _rl_readstr_cxt *_rl_rscxt_alloc (int);
+extern void _rl_rscxt_dispose (_rl_readstr_cxt *, int);
+extern void _rl_free_saved_readstr_line (void);
+extern void _rl_unsave_saved_readstr_line (void);
+extern _rl_readstr_cxt *_rl_readstr_init (int, int);
+extern int _rl_readstr_cleanup (_rl_readstr_cxt *, int);
+extern int _rl_readstr_sigcleanup (_rl_readstr_cxt *, int);
+extern void _rl_readstr_restore (_rl_readstr_cxt *);
+extern int _rl_readstr_getchar (_rl_readstr_cxt *);
+extern int _rl_readstr_dispatch (_rl_readstr_cxt *, int);
+
 /* undo.c */
 extern UNDO_LIST *_rl_copy_undo_entry (UNDO_LIST *);
 extern UNDO_LIST *_rl_copy_undo_list (UNDO_LIST *);
 extern void _rl_free_undo_list (UNDO_LIST *);
 
 /* util.c */
-#if defined (USE_VARARGS) && defined (PREFER_STDARG)
 extern void _rl_ttymsg (const char *, ...)  __attribute__((__format__ (printf, 1, 2)));
 extern void _rl_errmsg (const char *, ...)  __attribute__((__format__ (printf, 1, 2)));
 extern void _rl_trace (const char *, ...)  __attribute__((__format__ (printf, 1, 2)));
-#else
-extern void _rl_ttymsg ();
-extern void _rl_errmsg ();
-extern void _rl_trace ();
-#endif
 extern void _rl_audit_tty (char *);
 
 extern int _rl_tropen (void);
@@ -461,6 +517,8 @@ extern int _rl_tropen (void);
 extern int _rl_abort_internal (void);
 extern int _rl_null_function (int, int);
 extern char *_rl_strindex (const char *, const char *);
+extern int _rl_strcaseeqn (const char *, const char *, size_t, int);
+extern int _rl_charcasecmp (int, int, int);
 extern int _rl_qsort_string_compare (char **, char **);
 extern int (_rl_uppercase_p) (int);
 extern int (_rl_lowercase_p) (int);
@@ -516,6 +574,7 @@ extern int _rl_menu_complete_prefix_first;
 /* display.c */
 extern int _rl_vis_botlin;
 extern int _rl_last_c_pos;
+extern int _rl_last_v_pos;
 extern int _rl_suppress_redisplay;
 extern int _rl_want_redisplay;
 
@@ -530,6 +589,7 @@ extern int _rl_vi_cmd_modestr_len;
 extern char *_rl_isearch_terminators;
 
 extern _rl_search_cxt *_rl_iscxt;
+extern int _rl_search_case_fold;
 
 /* macro.c */
 extern char *_rl_executing_macro;
@@ -570,7 +630,7 @@ extern procenv_t _rl_top_level;
 extern _rl_keyseq_cxt *_rl_kscxt;
 extern int _rl_keyseq_timeout;
 
-extern int _rl_executing_keyseq_size;
+extern size_t _rl_executing_keyseq_size;
 
 extern rl_hook_func_t *_rl_internal_startup_hook;
 
@@ -580,6 +640,7 @@ extern int _rl_history_search_pos;
 
 /* signals.c */
 extern int volatile _rl_caught_signal;
+extern int volatile _rl_handling_signal;
 
 extern _rl_sigcleanup_func_t *_rl_sigcleanup;
 extern void *_rl_sigcleanarg;
@@ -615,6 +676,8 @@ extern int _rl_term_autowrap;
 extern int _rl_optimize_typeahead;
 extern int _rl_keep_mark_active;
 
+extern _rl_readstr_cxt *_rl_rscxt;
+
 /* undo.c */
 extern int _rl_doing_an_undo;
 extern int _rl_undo_group_level;
index 2aaa30babfbdd7e86eed5062b7324e819d5f68e8..0e5c4f47f8ee0bb2146046ed3d8fd4321032cd8b 100644 (file)
--- a/rlstdc.h
+++ b/rlstdc.h
@@ -1,6 +1,6 @@
 /* stdc.h -- macros to make source compile on both ANSI C and K&R C compilers. */
 
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2009,2023 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.      
 #  endif
 #endif
 
-/* Moved from config.h.in because readline.h:rl_message depends on these
-   defines. */
-#if defined (__STDC__) && defined (HAVE_STDARG_H)
-#  define PREFER_STDARG
-#  define USE_VARARGS
-#else
-#  if defined (HAVE_VARARGS_H)
-#    define PREFER_VARARGS
-#    define USE_VARARGS
-#  endif
-#endif
-
 #endif /* !_RL_STDC_H_ */
diff --git a/rltty.c b/rltty.c
index a4863acb31efa7c1f9a2d509209e647894bb6908..2d10efd4ba66bfdd39eb3bb4e2e984150d2be5de 100644 (file)
--- 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-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2025 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 @@
 extern int errno;
 #endif /* !errno */
 
+int _rl_use_tty_xon_xoff = 1;
+
 rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
 rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
 
@@ -78,15 +80,25 @@ static int ksrflow;
 #endif
 
 /* Dummy call to force a backgrounded readline to stop before it tries
-   to get the tty settings. */
+   to get the tty settings. But we use the information to set our idea
+   of the screen size if we're in a signal handling context, since it
+   doesn't make sense to waste it. */
 static void
 set_winsize (int tty)
 {
-#if defined (TIOCGWINSZ)
+#if defined (TIOCGWINSZ) || defined (HAVE_TCGETWINSIZE)
   struct winsize w;
-
-  if (ioctl (tty, TIOCGWINSZ, &w) == 0)
-      (void) ioctl (tty, TIOCSWINSZ, &w);
+  
+  if (_rl_tcgetwinsize (tty, &w) == 0)
+    {
+      (void) _rl_tcsetwinsize (tty, &w);
+      /* We restrict this to the case where we're running a signal handler
+        and executing after a SIGTSTP. We can relax it later. */
+#if defined (SIGTSTP)
+      if (RL_ISSTATE (RL_STATE_SIGHANDLER) && _rl_handling_signal == SIGTSTP && rl_prefer_env_winsize == 0)
+       _rl_set_screen_size (w.ws_row, w.ws_col);       /* don't waste the info */
+#endif
+    }
 #endif /* TIOCGWINSZ */
 }
 
@@ -275,15 +287,16 @@ prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)
     }
 
 #if defined (TIOCGETC)
-#  if defined (USE_XON_XOFF)
-  /* Get rid of terminal output start and stop characters. */
-  tiop->tchars.t_stopc = -1; /* C-s */
-  tiop->tchars.t_startc = -1; /* C-q */
+  if (_rl_use_tty_xon_xoff == 0)
+    {
+      /* Get rid of terminal output start and stop characters. */
+      tiop->tchars.t_stopc = -1; /* C-s */
+      tiop->tchars.t_startc = -1; /* C-q */
 
-  /* If there is an XON character, bind it to restart the output. */
-  if (oldtio.tchars.t_startc != -1)
-    rl_bind_key (oldtio.tchars.t_startc, rl_restart_output);
-#  endif /* USE_XON_XOFF */
+      /* If there is an XON character, bind it to restart the output. */
+      if (oldtio.tchars.t_startc != -1)
+       rl_bind_key (oldtio.tchars.t_startc, rl_restart_output);
+    }
 
   /* If there is an EOF char, bind _rl_eof_char to it. */
   if (oldtio.tchars.t_eofc != -1)
@@ -514,14 +527,13 @@ prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)
   if ((unsigned char) oldtio.c_cc[VEOF] != (unsigned char) _POSIX_VDISABLE)
     _rl_eof_char = oldtio.c_cc[VEOF];
 
-#if defined (USE_XON_XOFF)
+  if (_rl_use_tty_xon_xoff == 0)
 #if defined (IXANY)
-  tiop->c_iflag &= ~(IXON | IXANY);
+    tiop->c_iflag &= ~(IXON | IXANY);
 #else
-  /* `strict' Posix systems do not define IXANY. */
-  tiop->c_iflag &= ~IXON;
+    /* `strict' Posix systems do not define IXANY. */
+    tiop->c_iflag &= ~IXON;
 #endif /* IXANY */
-#endif /* USE_XON_XOFF */
 
   /* Only turn this off if we are using all 8 bits. */
   if (((tiop->c_cflag & CSIZE) == CS8) || meta_flag)
@@ -728,7 +740,7 @@ rl_tty_set_echoing (int u)
   _rl_echoing_p = u;
   return o;
 }
-\f
+
 /* **************************************************************** */
 /*                                                                 */
 /*                     Bogus Flow Control                          */
index 163654921e61e1f8c16b864e3fcab4ea177c153e..61b81316502c8b37569c0b50c3dfbfe79760d1c5 100644 (file)
@@ -1,6 +1,6 @@
 /* rltypedefs.h -- Type declarations for readline functions. */
 
-/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2023 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.      
@@ -28,22 +28,15 @@ extern "C" {
 
 /* Old-style, attempt to mark as deprecated in some way people will notice. */
 
-#if !defined (_FUNCTION_DEF)
+#if !defined (_FUNCTION_DEF) && defined (WANT_OBSOLETE_TYPEDEFS)
 #  define _FUNCTION_DEF
 
-#if defined(__GNUC__) || defined(__clang__)
 typedef int Function () __attribute__((deprecated));
 typedef void VFunction () __attribute__((deprecated));
 typedef char *CPFunction () __attribute__((deprecated));
 typedef char **CPPFunction () __attribute__((deprecated));
-#else
-typedef int Function ();
-typedef void VFunction ();
-typedef char *CPFunction ();
-typedef char **CPPFunction ();
-#endif
 
-#endif /* _FUNCTION_DEF */
+#endif /* _FUNCTION_DEF && WANT_OBSOLETE_TYPEDEFS */
 
 /* New style. */
 
@@ -64,6 +57,9 @@ typedef int rl_compignore_func_t (char **);
 
 typedef void rl_compdisp_func_t (char **, int, int);
 
+/* Functions for displaying key bindings. Currently only one. */
+typedef void rl_macro_print_func_t (const char *, const char *, int, const char *);
+
 /* Type for input and pre-read hook functions like rl_event_hook */
 typedef int rl_hook_func_t (void);
 
index d198fcf87232f68fba0e26ee218b5d4f2a4dec05..eaf7fbfe4ad46f2e8d4c4c04dd692e1aa44feaa9 100644 (file)
@@ -1,7 +1,7 @@
 /* rlwinsize.h -- an attempt to isolate some of the system-specific defines
    for `struct winsize' and TIOCGWINSZ. */
 
-/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2025 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.      
@@ -55,4 +55,7 @@
 #  define tcflow(fd, action)   ioctl(fd, TCXONC, action)
 #endif
 
+extern int _rl_tcgetwinsize (int, struct winsize *);
+extern void _rl_tcsetwinsize (int, struct winsize *);
+
 #endif /* _RL_WINSIZE_H */
index eea2301115ef6b9e757b50db93b98c20cab7215a..6f4d21b6190f71416bda7ffb759c1db6105daf45 100644 (file)
--- 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-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2025 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.      
@@ -55,6 +55,8 @@
 
 _rl_search_cxt *_rl_nscxt = 0;
 
+static HIST_ENTRY *_rl_saved_line_for_search;
+
 static char *noninc_search_string = (char *) NULL;
 static int noninc_history_pos;
 
@@ -65,9 +67,9 @@ static int _rl_history_search_len;
 static int _rl_history_search_flags;
 
 static char *history_search_string;
-static int history_string_size;
+static size_t history_string_size;
 
-static void make_history_line_current (HIST_ENTRY *);
+static void make_history_line_current (int, int);
 static int noninc_search_from_pos (char *, int, int, int, int *);
 static int noninc_dosearch (char *, int, int);
 static int noninc_search (int, int);
@@ -78,23 +80,37 @@ static _rl_search_cxt *_rl_nsearch_init (int, int);
 static void _rl_nsearch_abort (_rl_search_cxt *);
 static int _rl_nsearch_dispatch (_rl_search_cxt *, int);
 
-/* Make the data from the history entry ENTRY be the contents of the
-   current line.  This doesn't do anything with rl_point; the caller
-   must set it. */
-static void
-make_history_line_current (HIST_ENTRY *entry)
+void
+_rl_free_saved_search_line (void)
 {
-  UNDO_LIST *xlist;
+  if (_rl_saved_line_for_search)
+    _rl_free_saved_line (_rl_saved_line_for_search);
+  _rl_saved_line_for_search = (HIST_ENTRY *)NULL;
+}
 
-  xlist = _rl_saved_line_for_history ? (UNDO_LIST *)_rl_saved_line_for_history->data : 0;
-  /* At this point, rl_undo_list points to a private search string list. */
-  if (rl_undo_list && rl_undo_list != (UNDO_LIST *)entry->data && rl_undo_list != xlist)
-    rl_free_undo_list ();
+static inline void
+_rl_unsave_saved_search_line (void)
+{
+  if (_rl_saved_line_for_search)
+    _rl_unsave_line (_rl_saved_line_for_search);
+  _rl_saved_line_for_search = (HIST_ENTRY *)NULL;
+}
+
+/* Make the data from the history entry at offset NEWPOS be the contents of
+   the current line, which is at offset CURPOS. We use the same strategy
+   as incremental search.
+   This doesn't do anything with rl_point beyond bounds checking; the caller
+   must set it to any desired value. */
+static void
+make_history_line_current (int curpos, int newpos)
+{
+  if (newpos < curpos)
+    rl_get_previous_history (curpos - newpos, 0);
+  else
+    rl_get_next_history (newpos - curpos, 0);
 
-  /* Now we create a new undo list with a single insert for this text.
-     WE DON'T CHANGE THE ORIGINAL HISTORY ENTRY UNDO LIST */
-  _rl_replace_text (entry->line, 0, rl_end);
   _rl_fix_point (1);
+
 #if defined (VI_MODE)
   if (rl_editing_mode == vi_mode)
     /* POSIX.2 says that the `U' command doesn't affect the copy of any
@@ -103,15 +119,6 @@ make_history_line_current (HIST_ENTRY *entry)
        current editing buffer. */
     rl_free_undo_list ();
 #endif
-
-  /* This will need to free the saved undo list associated with the original
-     (pre-search) line buffer.
-     XXX - look at _rl_free_saved_history_line and consider calling it if
-     rl_undo_list != xlist (or calling rl_free_undo list directly on
-     _rl_saved_line_for_history->data) */
-  if (_rl_saved_line_for_history)
-    _rl_free_history_entry (_rl_saved_line_for_history);
-  _rl_saved_line_for_history = (HIST_ENTRY *)NULL;
 }
 
 /* Search the history list for STRING starting at absolute history position
@@ -135,21 +142,23 @@ noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp)
   RL_SETSTATE(RL_STATE_SEARCH);
   /* These functions return the match offset in the line; history_offset gives
      the matching line in the history list */
-  if (flags & SF_PATTERN)
+
+  sflags = 0;          /* Non-anchored search */
+  s = string;
+  if (*s == '^')
     {
-      s = string;
-      sflags = 0;              /* Non-anchored search */
-      if (*s == '^')
-       {
-         sflags |= ANCHORED_SEARCH;
-         s++;
-       }
-      ret = _hs_history_patsearch (s, dir, sflags);
+      sflags |= ANCHORED_SEARCH;
+      s++;
     }
-  else if (*string == '^')
-    ret = history_search_prefix (string + 1, dir);
+
+  if (flags & SF_PATTERN)
+    ret = _hs_history_patsearch (s, dir, dir, sflags);
   else
-    ret = history_search (string, dir);
+    {
+      if (_rl_search_case_fold)
+       sflags |= CASEFOLD_SEARCH;
+      ret = _hs_history_search (s, dir, dir, sflags);
+    }
   RL_UNSETSTATE(RL_STATE_SEARCH);
 
   if (ncp)
@@ -164,12 +173,12 @@ noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp)
 
 /* Search for a line in the history containing STRING.  If DIR is < 0, the
    search is backwards through previous entries, else through subsequent
-   entries.  Returns 1 if the search was successful, 0 otherwise. */
+   entries. Leaves noninc_history_pos set to the offset of the found history
+   entry, if successful. Returns 1 if the search was successful, 0 otherwise. */
 static int
 noninc_dosearch (char *string, int dir, int flags)
 {
   int oldpos, pos, ind;
-  HIST_ENTRY *entry;
 
   if (string == 0 || *string == '\0' || noninc_history_pos < 0)
     {
@@ -181,27 +190,22 @@ noninc_dosearch (char *string, int dir, int flags)
   if (pos == -1)
     {
       /* Search failed, current history position unchanged. */
-      rl_maybe_unsave_line ();
       rl_clear_message ();
-      rl_point = 0;
+      rl_point = 0;            /* caller will fix it up if needed */
       rl_ding ();
       return 0;
     }
 
+  oldpos = where_history ();
   noninc_history_pos = pos;
+  make_history_line_current (oldpos, noninc_history_pos);
 
-  oldpos = where_history ();
-  history_set_pos (noninc_history_pos);
-  entry = current_history ();          /* will never be NULL after successful search */
-  
 #if defined (VI_MODE)
-  if (rl_editing_mode != vi_mode)
+  if (rl_editing_mode == vi_mode)
+    history_set_pos (noninc_history_pos);      /* XXX */
 #endif
-    history_set_pos (oldpos);
-
-  make_history_line_current (entry);
 
-  if (_rl_enable_active_region && ((flags & SF_PATTERN) == 0) && ind > 0 && ind < rl_end)
+  if (_rl_enable_active_region && ((flags & SF_PATTERN) == 0) && ind >= 0 && ind < rl_end)
     {
       rl_point = ind;
       rl_mark = ind + strlen (string);
@@ -236,7 +240,7 @@ _rl_nsearch_init (int dir, int pchar)
   cxt->direction = dir;
   cxt->history_pos = cxt->save_line;
 
-  rl_maybe_save_line ();
+  _rl_saved_line_for_search = _rl_alloc_saved_line ();
 
   /* Clear the undo list, since reading the search string should create its
      own undo list, and the whole list will end up being freed when we
@@ -248,6 +252,7 @@ _rl_nsearch_init (int dir, int pchar)
   rl_end = rl_point = 0;
 
   p = _rl_make_prompt_for_search (pchar ? pchar : ':');
+  cxt->sflags |= SF_FREEPMT;
   rl_message ("%s", p);
   xfree (p);
 
@@ -272,16 +277,27 @@ _rl_nsearch_cleanup (_rl_search_cxt *cxt, int r)
 static void
 _rl_nsearch_abort (_rl_search_cxt *cxt)
 {
-  rl_maybe_unsave_line ();
+  _rl_unsave_saved_search_line ();
   rl_point = cxt->save_point;
   rl_mark = cxt->save_mark;
-  rl_restore_prompt ();
+  if (cxt->sflags & SF_FREEPMT)
+    rl_restore_prompt ();              /* _rl_make_prompt_for_search saved it */
+  cxt->sflags &= ~SF_FREEPMT;
   rl_clear_message ();
   _rl_fix_point (1);
 
   RL_UNSETSTATE (RL_STATE_NSEARCH);
 }
 
+int
+_rl_nsearch_sigcleanup (_rl_search_cxt *cxt, int r)
+{
+  if (cxt->sflags & SF_FREEPMT)
+    rl_restore_prompt ();              /* _rl_make_prompt_for_search saved it */
+  cxt->sflags &= ~SF_FREEPMT;
+  return (_rl_nsearch_cleanup (cxt, r));
+}
+
 /* Process just-read character C according to search context CXT.  Return -1
    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. */
@@ -303,6 +319,17 @@ _rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
       rl_unix_line_discard (1, c);
       break;
 
+    case CTRL('Q'):
+    case CTRL('V'):
+      n = rl_quoted_insert (1, c);
+      if (n < 0)
+       {
+         _rl_nsearch_abort (cxt);
+         return -1;
+       }
+      cxt->lastc = (rl_point > 0) ? rl_line_buffer[rl_point - 1] : rl_line_buffer[0];
+      break;
+
     case RETURN:
     case NEWLINE:
       return 0;
@@ -343,7 +370,7 @@ _rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
         }
       else
         _rl_insert_char (1, c);
-      break;
+     break;
 
     default:
 #if defined (HANDLE_MULTIBYTE)
@@ -360,15 +387,26 @@ _rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
   return 1;
 }
 
-/* Perform one search according to CXT, using NONINC_SEARCH_STRING.  Return
-   -1 if the search should be aborted, any other value means to clean up
-   using _rl_nsearch_cleanup ().  Returns 1 if the search was successful,
-   0 otherwise. */
+/* Perform one search according to CXT, using NONINC_SEARCH_STRING, which
+   we determine, via a call to noninc_dosearch().
+   Return -1 if the search should be aborted, any other value means to clean
+   up using _rl_nsearch_cleanup ().
+   If the search is not successful, we will restore the original line, so
+   make sure we restore rl_point.
+   Returns 1 if the search was successful, 0 otherwise. */
 static int
 _rl_nsearch_dosearch (_rl_search_cxt *cxt)
 {
+  int r;
+
   rl_mark = cxt->save_mark;
 
+  /* We're committed to using the contents of rl_line_buffer as the search
+     string, whatever they are. We no longer need the undo list generated
+     by reading the search string. The old undo list will be restored
+     by _rl_unsave_saved_search_line(). */
+  rl_free_undo_list ();
+
   /* If rl_point == 0, we want to re-use the previous search string and
      start from the saved history position.  If there's no previous search
      string, punt. */
@@ -376,8 +414,11 @@ _rl_nsearch_dosearch (_rl_search_cxt *cxt)
     {
       if (noninc_search_string == 0)
        {
+         _rl_unsave_saved_search_line ();      /* XXX */
          rl_ding ();
-         rl_restore_prompt ();
+         if (cxt->sflags & SF_FREEPMT)
+           rl_restore_prompt ();
+         cxt->sflags &= ~SF_FREEPMT;
          RL_UNSETSTATE (RL_STATE_NSEARCH);
          return -1;
        }
@@ -389,16 +430,27 @@ _rl_nsearch_dosearch (_rl_search_cxt *cxt)
       FREE (noninc_search_string);
       noninc_search_string = savestring (rl_line_buffer);
 
-      /* If we don't want the subsequent undo list generated by the search
+      /* We don't want the subsequent undo list generated by the search
         matching a history line to include the contents of the search string,
-        we need to clear rl_line_buffer here.  For now, we just clear the
-        undo list generated by reading the search string.  (If the search
-        fails, the old undo list will be restored by rl_maybe_unsave_line.) */
-      rl_free_undo_list ();
+        so we need to clear rl_line_buffer here. If we don't want that,
+        change the #if 1 to an #if 0 below. */
+#if 1
+      rl_line_buffer[rl_point = rl_end = 0] = '\0';
+#endif
     }
 
-  rl_restore_prompt ();
-  return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN));
+  if (cxt->sflags & SF_FREEPMT)
+    rl_restore_prompt ();
+  cxt->sflags &= ~SF_FREEPMT;
+
+  /* We are finished using the line buffer to read the search string, restore
+     the original contents without doing a redisplay. */
+  _rl_unsave_saved_search_line ();             /* XXX */
+
+  r = noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN);
+  if (r == 0)  /* search failed, we will restore the original line */
+    rl_point = cxt->save_point;
+  return r;
 }
 
 /* Search non-interactively through the history list.  DIR < 0 means to
@@ -465,19 +517,21 @@ rl_noninc_reverse_search (int count, int key)
 int
 rl_noninc_forward_search_again (int count, int key)
 {
-  int r;
+  int r, flags;
 
   if (!noninc_search_string)
     {
       rl_ding ();
       return (1);
     }
+
+  flags = 0;
 #if defined (VI_MODE)
   if (VI_COMMAND_MODE() && key == 'N')
-    r = noninc_dosearch (noninc_search_string, 1, SF_PATTERN);
-  else
+    flags = SF_PATTERN;
 #endif
-    r = noninc_dosearch (noninc_search_string, 1, 0);
+
+  r = noninc_dosearch (noninc_search_string, 1, flags);
   return (r != 1);
 }
 
@@ -487,19 +541,21 @@ rl_noninc_forward_search_again (int count, int key)
 int
 rl_noninc_reverse_search_again (int count, int key)
 {
-  int r;
+  int r, flags;
 
   if (!noninc_search_string)
     {
       rl_ding ();
       return (1);
     }
+
+  flags = 0;
 #if defined (VI_MODE)
   if (VI_COMMAND_MODE() && key == 'n')
-    r = noninc_dosearch (noninc_search_string, -1, SF_PATTERN);
-  else
+    flags = SF_PATTERN;
 #endif
-    r = noninc_dosearch (noninc_search_string, -1, 0);
+
+  r = noninc_dosearch (noninc_search_string, -1, flags);
   return (r != 1);
 }
 
@@ -524,17 +580,18 @@ _rl_nsearch_callback (_rl_search_cxt *cxt)
   return ((r >= 0) ? _rl_nsearch_cleanup (cxt, r) : (r != 1));
 }
 #endif
-  
+
+/* The strategy is to find the line to move to (COUNT occurrences of
+   HISTORY_SEARCH_STRING in direction DIR), then use the same mechanism that
+   incremental search uses to move to it. That's wrapped up in
+   make_history_line_current(). */    
 static int
 rl_history_search_internal (int count, int dir)
 {
   HIST_ENTRY *temp;
   int ret, oldpos, newcol;
-  int had_saved_line;
-  char *t;
 
-  had_saved_line = _rl_saved_line_for_history != 0;
-  rl_maybe_save_line ();
+  oldpos = where_history ();   /* where are we now? */
   temp = (HIST_ENTRY *)NULL;
 
   /* Search COUNT times through the history for a line matching
@@ -551,7 +608,6 @@ rl_history_search_internal (int count, int dir)
 
       /* Get the history entry we found. */
       _rl_history_search_pos = ret;
-      oldpos = where_history ();
       history_set_pos (_rl_history_search_pos);
       temp = current_history ();       /* will never be NULL after successful search */
       history_set_pos (oldpos);
@@ -563,11 +619,9 @@ rl_history_search_internal (int count, int dir)
       count--;
     }
 
-  /* If we didn't find anything at all, return. */
+  /* If we didn't find anything at all, return without changing history offset */
   if (temp == 0)
     {
-      /* XXX - check had_saved_line here? */
-      rl_maybe_unsave_line ();
       rl_ding ();
       /* If you don't want the saved history line (last match) to show up
          in the line buffer after the search fails, change the #if 0 to
@@ -580,14 +634,14 @@ rl_history_search_internal (int count, int dir)
           rl_mark = 0;
         }
 #else
-      rl_point = _rl_history_search_len;       /* rl_maybe_unsave_line changes it */
-      rl_mark = rl_end;
+      rl_point = _rl_history_search_len;       /* _rl_unsave_line changes it */
+      rl_mark = rl_end;                                /* XXX */
 #endif
       return 1;
     }
 
   /* Copy the line we found into the current line buffer. */
-  make_history_line_current (temp);
+  make_history_line_current (oldpos, _rl_history_search_pos);
 
   /* decide where to put rl_point -- need to change this for pattern search */
   if (_rl_history_search_flags & ANCHORED_SEARCH)
@@ -595,6 +649,7 @@ rl_history_search_internal (int count, int dir)
   else
     {
 #if 0
+      char *t;
       t = strstr (rl_line_buffer, history_search_string);      /* XXX */
       rl_point = t ? (int)(t - rl_line_buffer) + _rl_history_search_len : rl_end;
 #else
@@ -619,7 +674,7 @@ rl_history_search_reinit (int flags)
   if (rl_point)
     {
       /* Allocate enough space for anchored and non-anchored searches */
-      if (_rl_history_search_len >= history_string_size - 2)
+      if (_rl_history_search_len + 2 >= history_string_size)
        {
          history_string_size = _rl_history_search_len + 2;
          history_search_string = (char *)xrealloc (history_search_string, history_string_size);
@@ -630,7 +685,7 @@ rl_history_search_reinit (int flags)
       strncpy (history_search_string + sind, rl_line_buffer, rl_point);
       history_search_string[rl_point + sind] = '\0';
     }
-  _rl_free_saved_history_line ();      /* XXX rl_undo_list? */
+  _rl_free_saved_search_line ();
 }
 
 /* Search forward in the history for the string of characters
diff --git a/shell.c b/shell.c
index 36c91484c94f64dcdb154c829958a3907c363ebd..becb8cf2dedb7379ccf16466a7ecdb8c19116e18 100644 (file)
--- 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,2017,2021 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2025 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.      
 extern struct passwd *getpwuid (uid_t);
 #endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */
 
-#ifndef NULL
-#  define NULL 0
-#endif
-
 #ifndef CHAR_BIT
 #  define CHAR_BIT 8
 #endif
@@ -122,8 +118,10 @@ sh_single_quote (char *string)
 /* Set the environment variables LINES and COLUMNS to lines and cols,
    respectively. */
 static char setenv_buf[INT_STRLEN_BOUND (int) + 1];
+#if defined (HAVE_PUTENV) && !defined (HAVE_SETENV)
 static char putenv_buf1[INT_STRLEN_BOUND (int) + 6 + 1];       /* sizeof("LINES=") == 6 */
 static char putenv_buf2[INT_STRLEN_BOUND (int) + 8 + 1];       /* sizeof("COLUMNS=") == 8 */
+#endif
 
 void
 sh_set_lines_and_columns (int lines, int cols)
index d138524ce9ee01e544dfd79d1e16bbd083e2281d..6039efef8b7e4a484f6e1c51f423be71ce619cb2 100644 (file)
@@ -38,6 +38,8 @@ INSTALL = @INSTALL@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_DATA = @INSTALL_DATA@
 
+install_sh = @install_sh@
+
 CC = @CC@
 RANLIB = @RANLIB@
 AR = @AR@
@@ -211,9 +213,13 @@ uninstall-unsupported:
 
 uninstall: uninstall-$(SHLIB_STATUS)
 
-clean mostlyclean:     force
+.PHONY: clean maintainer-clean distclean mostlyclean
+
+mostlyclean:   force
        $(RM) $(SHARED_OBJ) $(SHARED_LIBS)
 
+clean: mostlyclean
+
 distclean maintainer-clean: clean
        $(RM) Makefile
 
index 9df365e48e4cd5b0602668e579f1274a43c647d8..5a070d774614483b5ef0f602929ee76e3eb3d7ef 100644 (file)
--- a/signals.c
+++ b/signals.c
@@ -1,6 +1,6 @@
 /* signals.c -- signal handling support for readline. */
 
-/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.      
@@ -88,6 +88,7 @@ int rl_catch_sigwinch = 0;    /* for the readline state struct in readline.c */
 
 /* Private variables. */
 int volatile _rl_caught_signal = 0;    /* should be sig_atomic_t, but that requires including <signal.h> everywhere */
+int volatile _rl_handling_signal = 0;
 
 /* If non-zero, print characters corresponding to received signals as long as
    the user has indicated his desire to do so (_rl_echo_control_chars). */
@@ -133,6 +134,7 @@ _rl_signal_handler (int sig)
   if (sig == SIGWINCH)
     {
       RL_SETSTATE(RL_STATE_SIGHANDLER);
+      _rl_handling_signal = SIGWINCH;
 
       rl_resize_terminal ();
       /* XXX - experimental for now */
@@ -142,6 +144,7 @@ _rl_signal_handler (int sig)
       if (rl_signal_event_hook)
        (*rl_signal_event_hook) ();
 
+      _rl_handling_signal = 0;
       RL_UNSETSTATE(RL_STATE_SIGHANDLER);
     }
   else
@@ -177,6 +180,7 @@ _rl_handle_signal (int sig)
 #endif /* !HAVE_POSIX_SIGNALS */
 
   RL_SETSTATE(RL_STATE_SIGHANDLER);
+  _rl_handling_signal = sig;
 
 #if !defined (HAVE_BSD_SIGNALS) && !defined (HAVE_POSIX_SIGNALS)
   /* Since the signal will not be blocked while we are in the signal
@@ -267,6 +271,9 @@ _rl_handle_signal (int sig)
        sigprocmask (SIG_BLOCK, &set, &oset);
 #endif
 
+#if defined (READLINE_CALLBACKS)
+      if (RL_ISSTATE (RL_STATE_CALLBACK) == 0 || rl_persistent_signal_handlers)
+#endif
       rl_echo_signal_char (sig);
       rl_cleanup_after_signal ();
 
@@ -276,7 +283,7 @@ _rl_handle_signal (int sig)
 #if defined (HAVE_POSIX_SIGNALS)
       /* Unblock any signal(s) blocked above */
       if (block_sig)
-       sigprocmask (SIG_UNBLOCK, &oset, (sigset_t *)NULL);
+       sigprocmask (SIG_UNBLOCK, &set, &oset);
 #endif
 
       /* We don't have to bother unblocking the signal because we are not
@@ -298,6 +305,7 @@ _rl_handle_signal (int sig)
       rl_reset_after_signal ();      
     }
 
+  _rl_handling_signal = 0;
   RL_UNSETSTATE(RL_STATE_SIGHANDLER);
   SIGHANDLER_RETURN;
 }
@@ -582,6 +590,19 @@ rl_reset_after_signal (void)
   rl_set_signals ();
 }
 
+/* Similar to rl_callback_sigcleanup, but cleans up operations that allocate
+   state even when not in callback mode. */
+void
+_rl_state_sigcleanup (void)
+{
+  if (RL_ISSTATE (RL_STATE_ISEARCH))           /* incremental search */
+    _rl_isearch_cleanup (_rl_iscxt, 0);
+  else if (RL_ISSTATE (RL_STATE_NSEARCH))      /* non-incremental search */
+    _rl_nsearch_sigcleanup (_rl_nscxt, 0);
+  else if (RL_ISSTATE (RL_STATE_READSTR))      /* reading a string */
+    _rl_readstr_sigcleanup (_rl_rscxt, 0);
+}
+
 /* Free up the readline variable line state for the current line (undo list,
    any partial history entry, any keyboard macros in progress, and any
    numeric arguments in process) after catching a signal, before calling
@@ -591,6 +612,9 @@ rl_free_line_state (void)
 {
   register HIST_ENTRY *entry;
 
+  if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
+    _rl_state_sigcleanup ();
+
   rl_free_undo_list ();
 
   entry = current_history ();
@@ -622,7 +646,6 @@ rl_check_signals (void)
 /* **************************************************************** */
 
 #if defined (HAVE_POSIX_SIGNALS)
-static sigset_t sigint_set, sigint_oset;
 static sigset_t sigwinch_set, sigwinch_oset;
 #else /* !HAVE_POSIX_SIGNALS */
 #  if defined (HAVE_BSD_SIGNALS)
@@ -653,7 +676,8 @@ _rl_release_sigint (void)
     return;
 
   sigint_blocked = 0;
-  RL_CHECK_SIGNALS ();
+  if (RL_ISSTATE (RL_STATE_SIGHANDLER) == 0)
+    RL_CHECK_SIGNALS ();
 }
 
 /* Cause SIGWINCH to not be delivered until the corresponding call to
index 7f76b6228f73d674f58cfcc3523f99e253ee5515..48a684601bd23221a41c43c16890dd3034c5b7cc 100644 (file)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2022 Free Software Foundation, Inc.
+#   Copyright 1992-2024 Free Software Foundation, Inc.
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
-timestamp='2022-01-09'
+timestamp='2024-07-27'
 
 # 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
@@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
 usage="\
 Usage: $0 [OPTION]
 
-Output the configuration name of the system \`$me' is run on.
+Output the configuration name of the system '$me' is run on.
 
 Options:
   -h, --help         print this help, then exit
@@ -60,13 +60,13 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2024 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."
 
 help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
 
 # Parse command line
 while test $# -gt 0 ; do
@@ -102,8 +102,8 @@ GUESS=
 # temporary files to be created and, as you can see below, it is a
 # headache to deal with in a portable fashion.
 
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
+# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
+# use 'HOST_CC' if defined, but it is deprecated.
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
@@ -123,7 +123,7 @@ set_cc_for_build() {
     dummy=$tmp/dummy
     case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
        ,,)    echo "int x;" > "$dummy.c"
-              for driver in cc gcc c89 c99 ; do
+              for driver in cc gcc c17 c99 c89 ; do
                   if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
                       CC_FOR_BUILD=$driver
                       break
@@ -155,6 +155,9 @@ Linux|GNU|GNU/*)
 
        set_cc_for_build
        cat <<-EOF > "$dummy.c"
+       #if defined(__ANDROID__)
+       LIBC=android
+       #else
        #include <features.h>
        #if defined(__UCLIBC__)
        LIBC=uclibc
@@ -162,6 +165,8 @@ Linux|GNU|GNU/*)
        LIBC=dietlibc
        #elif defined(__GLIBC__)
        LIBC=gnu
+       #elif defined(__LLVM_LIBC__)
+       LIBC=llvm
        #else
        #include <stdarg.h>
        /* First heuristic to detect musl libc.  */
@@ -169,6 +174,7 @@ Linux|GNU|GNU/*)
        LIBC=musl
        #endif
        #endif
+       #endif
        EOF
        cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
        eval "$cc_set_libc"
@@ -459,7 +465,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
                UNAME_RELEASE=`uname -v`
                ;;
        esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
+       # Japanese Language versions have a version number like '4.1.3-JL'.
        SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
        GUESS=sparc-sun-sunos$SUN_REL
        ;;
@@ -628,7 +634,8 @@ EOF
                sed 's/^                //' << EOF > "$dummy.c"
                #include <sys/systemcfg.h>
 
-               main()
+               int
+               main ()
                        {
                        if (!__power_pc())
                                exit(1);
@@ -712,7 +719,8 @@ EOF
                #include <stdlib.h>
                #include <unistd.h>
 
-               int main ()
+               int
+               main ()
                {
                #if defined(_SC_KERNEL_BITS)
                    long bits = sysconf(_SC_KERNEL_BITS);
@@ -904,7 +912,7 @@ EOF
        fi
        ;;
     *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       UNAME_PROCESSOR=`uname -p`
        case $UNAME_PROCESSOR in
            amd64)
                UNAME_PROCESSOR=x86_64 ;;
@@ -966,11 +974,37 @@ EOF
        GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
        GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
        ;;
+    x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
+       GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
+       ;;
+    *:[Mm]anagarm:*:*)
+       GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
+       ;;
     *:Minix:*:*)
        GUESS=$UNAME_MACHINE-unknown-minix
        ;;
     aarch64:Linux:*:*)
-       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       set_cc_for_build
+       CPU=$UNAME_MACHINE
+       LIBCABI=$LIBC
+       if test "$CC_FOR_BUILD" != no_compiler_found; then
+           ABI=64
+           sed 's/^        //' << EOF > "$dummy.c"
+           #ifdef __ARM_EABI__
+           #ifdef __ARM_PCS_VFP
+           ABI=eabihf
+           #else
+           ABI=eabi
+           #endif
+           #endif
+EOF
+           cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+           eval "$cc_set_abi"
+           case $ABI in
+               eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
+           esac
+       fi
+       GUESS=$CPU-unknown-linux-$LIBCABI
        ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
@@ -1036,7 +1070,16 @@ EOF
     k1om:Linux:*:*)
        GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
        ;;
-    loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+    kvx:Linux:*:*)
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
+    kvx:cos:*:*)
+       GUESS=$UNAME_MACHINE-unknown-cos
+       ;;
+    kvx:mbr:*:*)
+       GUESS=$UNAME_MACHINE-unknown-mbr
+       ;;
+    loongarch32:Linux:*:* | loongarch64:Linux:*:*)
        GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
        ;;
     m32r*:Linux:*:*)
@@ -1151,16 +1194,27 @@ EOF
        ;;
     x86_64:Linux:*:*)
        set_cc_for_build
+       CPU=$UNAME_MACHINE
        LIBCABI=$LIBC
        if test "$CC_FOR_BUILD" != no_compiler_found; then
-           if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
-               (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_X32 >/dev/null
-           then
-               LIBCABI=${LIBC}x32
-           fi
+           ABI=64
+           sed 's/^        //' << EOF > "$dummy.c"
+           #ifdef __i386__
+           ABI=x86
+           #else
+           #ifdef __ILP32__
+           ABI=x32
+           #endif
+           #endif
+EOF
+           cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+           eval "$cc_set_abi"
+           case $ABI in
+               x86) CPU=i686 ;;
+               x32) LIBCABI=${LIBC}x32 ;;
+           esac
        fi
-       GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+       GUESS=$CPU-pc-linux-$LIBCABI
        ;;
     xtensa*:Linux:*:*)
        GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
@@ -1180,7 +1234,7 @@ EOF
        GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
        ;;
     i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
+       # If we were able to find 'uname', then EMX Unix compatibility
        # is probably installed.
        GUESS=$UNAME_MACHINE-pc-os2-emx
        ;;
@@ -1321,7 +1375,7 @@ EOF
                GUESS=ns32k-sni-sysv
        fi
        ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+    PENTIUM:*:4.0*:*)  # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
                        # says <Richard.M.Bartel@ccMail.Census.GOV>
        GUESS=i586-unisys-sysv4
        ;;
@@ -1367,8 +1421,11 @@ EOF
     BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
        GUESS=i586-pc-haiku
        ;;
-    x86_64:Haiku:*:*)
-       GUESS=x86_64-unknown-haiku
+    ppc:Haiku:*:*)     # Haiku running on Apple PowerPC
+       GUESS=powerpc-apple-haiku
+       ;;
+    *:Haiku:*:*)       # Haiku modern gcc (not bound by BeOS compat)
+       GUESS=$UNAME_MACHINE-unknown-haiku
        ;;
     SX-4:SUPER-UX:*:*)
        GUESS=sx4-nec-superux$UNAME_RELEASE
@@ -1540,6 +1597,9 @@ EOF
     *:Unleashed:*:*)
        GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
        ;;
+    *:Ironclad:*:*)
+       GUESS=$UNAME_MACHINE-unknown-ironclad
+       ;;
 esac
 
 # Do we have a guess based on uname results?
@@ -1563,6 +1623,7 @@ cat > "$dummy.c" <<EOF
 #endif
 #endif
 #endif
+int
 main ()
 {
 #if defined (sony)
old mode 100644 (file)
new mode 100755 (executable)
index fc5913d..58870bd
@@ -1,23 +1,15 @@
 #! /bin/sh
 # Output a system dependent set of variables, describing how to set the
-# run time search path of shared libraries in an executable.
+# run time search path of shared libraries in a binary (executable or
+# shared library).
 #
-#   Copyright 1996-2018 Free Software Foundation, Inc.
+#   Copyright 1996-2024 Free Software Foundation, Inc.
 #   Taken from GNU libtool, 2001
 #   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
 #   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
-# or
-#    CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
-# should be set by the caller.
-#
-# The set of defined variables is at the end of this script.
 
 # Known limitations:
 # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
 #   known workaround is to choose shorter directory names for the build
 #   directory and/or the installation directory.
 
+# func_usage
+# outputs to stdout the --help usage message.
+func_usage ()
+{
+  echo "\
+Usage: config.rpath [OPTION] HOST
+
+Prints shell variable assignments that describe how to hardcode a directory
+for the lookup of shared libraries into a binary (executable or shared library).
+
+The first argument passed to this file is the canonical host specification,
+   CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+or
+   CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+
+The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+should be set by the caller.
+
+The set of defined variables is at the end of this script.
+
+Options:
+      --help           print this help and exit
+      --version        print version information and exit
+
+Send patches and bug reports to <bug-gnulib@gnu.org>."
+}
+
+# func_version
+# outputs to stdout the --version message.
+func_version ()
+{
+  echo "config.rpath (GNU gnulib, module havelib)"
+  echo "Copyright (C) 2024 Free Software Foundation, Inc.
+License: All-Permissive.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law."
+  echo
+  printf 'Written by %s.\n' "Bruno Haible"
+}
+
+# func_fatal_error message
+# outputs to stderr a fatal error message, and terminates the program.
+func_fatal_error ()
+{
+  echo "config.rpath: *** $1" 1>&2
+  echo "config.rpath: *** Stop." 1>&2
+  exit 1
+}
+
+# Command-line option processing.
+while test $# -gt 0; do
+  case "$1" in
+    --help | --hel | --he | --h )
+      func_usage
+      exit 0 ;;
+   --version | --versio | --versi | --vers | --ver | --ve | --v )
+      func_version
+      exit 0 ;;
+    -- )      # Stop option processing
+      shift; break ;;
+    -* )
+      func_fatal_error "unrecognized option: $1"
+      ;;
+    * )
+      break ;;
+  esac
+done
+
+if test $# -gt 1; then
+  func_fatal_error "too many arguments"
+fi
+if test $# -lt 1; then
+  func_fatal_error "too few arguments"
+fi
+
 # All known linkers require a '.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
@@ -371,7 +438,7 @@ else
       hardcode_direct=yes
       hardcode_minus_L=yes
       ;;
-    freebsd* | dragonfly*)
+    freebsd* | dragonfly* | midnightbsd*)
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_direct=yes
       ;;
@@ -547,7 +614,7 @@ case "$host_os" in
   freebsd[23].*)
     library_names_spec='$libname$shrext$versuffix'
     ;;
-  freebsd* | dragonfly*)
+  freebsd* | dragonfly* | midnightbsd*)
     library_names_spec='$libname$shrext'
     ;;
   gnu*)
index 9b62e37c43c6d67efb7a7de7ee1f19e0bc9bc311..4aaae46f6f74428949f32922308f48bd1316e7c1 100644 (file)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2021 Free Software Foundation, Inc.
+#   Copyright 1992-2024 Free Software Foundation, Inc.
 
-# shellcheck disable=SC2006,SC2268 # see below for rationale
+# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
 
-timestamp='2021-12-25'
+timestamp='2024-05-27'
 
 # 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
@@ -76,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2021 Free Software Foundation, Inc.
+Copyright 1992-2024 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."
 
 help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
 
 # Parse command line
 while test $# -gt 0 ; do
@@ -120,7 +120,6 @@ case $# in
 esac
 
 # Split fields of configuration type
-# shellcheck disable=SC2162
 saved_IFS=$IFS
 IFS="-" read field1 field2 field3 field4 <<EOF
 $1
@@ -130,7 +129,7 @@ IFS=$saved_IFS
 # Separate into logical components for further validation
 case $1 in
        *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
+               echo "Invalid configuration '$1': more than four components" >&2
                exit 1
                ;;
        *-*-*-*)
@@ -142,10 +141,21 @@ case $1 in
                # parts
                maybe_os=$field2-$field3
                case $maybe_os in
-                       nto-qnx* | linux-* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
+                         cloudabi*-eabi* \
+                       | kfreebsd*-gnu* \
+                       | knetbsd*-gnu* \
+                       | kopensolaris*-gnu* \
+                       | linux-* \
+                       | managarm-* \
+                       | netbsd*-eabi* \
+                       | netbsd*-gnu* \
+                       | nto-qnx* \
+                       | os2-emx* \
+                       | rtmk-nova* \
+                       | storm-chaos* \
+                       | uclinux-gnu* \
+                       | uclinux-uclibc* \
+                       | windows-* )
                                basic_machine=$field1
                                basic_os=$maybe_os
                                ;;
@@ -160,8 +170,12 @@ case $1 in
                esac
                ;;
        *-*)
-               # A lone config we happen to match not fitting any pattern
                case $field1-$field2 in
+                       # Shorthands that happen to contain a single dash
+                       convex-c[12] | convex-c3[248])
+                               basic_machine=$field2-convex
+                               basic_os=
+                               ;;
                        decstation-3100)
                                basic_machine=mips-dec
                                basic_os=
@@ -169,28 +183,88 @@ case $1 in
                        *-*)
                                # Second component is usually, but not always the OS
                                case $field2 in
-                                       # Prevent following clause from handling this valid os
+                                       # Do not treat sunos as a manufacturer
                                        sun*os*)
                                                basic_machine=$field1
                                                basic_os=$field2
                                                ;;
-                                       zephyr*)
-                                               basic_machine=$field1-unknown
-                                               basic_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)
+                                         3100* \
+                                       | 32* \
+                                       | 3300* \
+                                       | 3600* \
+                                       | 7300* \
+                                       | acorn \
+                                       | altos* \
+                                       | apollo \
+                                       | apple \
+                                       | atari \
+                                       | att* \
+                                       | axis \
+                                       | be \
+                                       | bull \
+                                       | cbm \
+                                       | ccur \
+                                       | cisco \
+                                       | commodore \
+                                       | convergent* \
+                                       | convex* \
+                                       | cray \
+                                       | crds \
+                                       | dec* \
+                                       | delta* \
+                                       | dg \
+                                       | digital \
+                                       | dolphin \
+                                       | encore* \
+                                       | gould \
+                                       | harris \
+                                       | highlevel \
+                                       | hitachi* \
+                                       | hp \
+                                       | ibm* \
+                                       | intergraph \
+                                       | isi* \
+                                       | knuth \
+                                       | masscomp \
+                                       | microblaze* \
+                                       | mips* \
+                                       | motorola* \
+                                       | ncr* \
+                                       | news \
+                                       | next \
+                                       | ns \
+                                       | oki \
+                                       | omron* \
+                                       | pc533* \
+                                       | rebel \
+                                       | rom68k \
+                                       | rombug \
+                                       | semi \
+                                       | sequent* \
+                                       | siemens \
+                                       | sgi* \
+                                       | siemens \
+                                       | sim \
+                                       | sni \
+                                       | sony* \
+                                       | stratus \
+                                       | sun \
+                                       | sun[234]* \
+                                       | tektronix \
+                                       | tti* \
+                                       | ultra \
+                                       | unicom* \
+                                       | wec \
+                                       | winbond \
+                                       | wrs)
                                                basic_machine=$field1-$field2
                                                basic_os=
                                                ;;
+                                       zephyr*)
+                                               basic_machine=$field1-unknown
+                                               basic_os=$field2
+                                               ;;
                                        *)
                                                basic_machine=$field1
                                                basic_os=$field2
@@ -271,26 +345,6 @@ case $1 in
                                basic_machine=arm-unknown
                                basic_os=cegcc
                                ;;
-                       convex-c1)
-                               basic_machine=c1-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c2)
-                               basic_machine=c2-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c32)
-                               basic_machine=c32-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c34)
-                               basic_machine=c34-convex
-                               basic_os=bsd
-                               ;;
-                       convex-c38)
-                               basic_machine=c38-convex
-                               basic_os=bsd
-                               ;;
                        cray)
                                basic_machine=j90-cray
                                basic_os=unicos
@@ -713,15 +767,26 @@ case $basic_machine in
                vendor=dec
                basic_os=tops20
                ;;
-       delta | 3300 | motorola-3300 | motorola-delta \
-             | 3300-motorola | delta-motorola)
+       delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
                cpu=m68k
                vendor=motorola
                ;;
-       dpx2*)
+       # This used to be dpx2*, but that gets the RS6000-based
+       # DPX/20 and the x86-based DPX/2-100 wrong.  See
+       # https://oldskool.silicium.org/stations/bull_dpx20.htm
+       # https://www.feb-patrimoine.com/english/bull_dpx2.htm
+       # https://www.feb-patrimoine.com/english/unix_and_bull.htm
+       dpx2 | dpx2[23]00 | dpx2[23]xx)
                cpu=m68k
                vendor=bull
-               basic_os=sysv3
+               ;;
+       dpx2100 | dpx21xx)
+               cpu=i386
+               vendor=bull
+               ;;
+       dpx20)
+               cpu=rs6000
+               vendor=bull
                ;;
        encore | umax | mmax)
                cpu=ns32k
@@ -836,18 +901,6 @@ case $basic_machine in
        next | m*-next)
                cpu=m68k
                vendor=next
-               case $basic_os in
-                   openstep*)
-                       ;;
-                   nextstep*)
-                       ;;
-                   ns2*)
-                     basic_os=nextstep2
-                       ;;
-                   *)
-                     basic_os=nextstep3
-                       ;;
-               esac
                ;;
        np1)
                cpu=np1
@@ -936,14 +989,13 @@ case $basic_machine in
                ;;
 
        *-*)
-               # shellcheck disable=SC2162
                saved_IFS=$IFS
                IFS="-" read cpu vendor <<EOF
 $basic_machine
 EOF
                IFS=$saved_IFS
                ;;
-       # We use `pc' rather than `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)
@@ -971,15 +1023,19 @@ 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.
+       # 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.
+       c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
+               vendor=convex
+               basic_os=${basic_os:-bsd}
+               ;;
        craynv-unknown)
                vendor=cray
                basic_os=${basic_os:-unicosmp}
                ;;
        c90-unknown | c90-cray)
                vendor=cray
-               basic_os=${Basic_os:-unicos}
+               basic_os=${basic_os:-unicos}
                ;;
        fx80-unknown)
                vendor=alliant
@@ -1025,11 +1081,29 @@ case $cpu-$vendor in
                vendor=alt
                basic_os=${basic_os:-linux-gnueabihf}
                ;;
-       dpx20-unknown | dpx20-bull)
-               cpu=rs6000
-               vendor=bull
+
+       # Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
+       m68k-isi)
+               basic_os=${basic_os:-sysv}
+               ;;
+       m68k-sony)
+               basic_os=${basic_os:-newsos}
+               ;;
+       m68k-tektronix)
+               basic_os=${basic_os:-bsd}
+               ;;
+       m88k-harris)
+               basic_os=${basic_os:-sysv3}
+               ;;
+       i386-bull | m68k-bull)
+               basic_os=${basic_os:-sysv3}
+               ;;
+       rs6000-bull)
                basic_os=${basic_os:-bosx}
                ;;
+       mips-sni)
+               basic_os=${basic_os:-sysv4}
+               ;;
 
        # Here we normalize CPU types irrespective of the vendor
        amd64-*)
@@ -1037,7 +1111,7 @@ case $cpu-$vendor in
                ;;
        blackfin-*)
                cpu=bfin
-               basic_os=linux
+               basic_os=${basic_os:-linux}
                ;;
        c54x-*)
                cpu=tic54x
@@ -1060,7 +1134,7 @@ case $cpu-$vendor in
                ;;
        m68knommu-*)
                cpu=m68k
-               basic_os=linux
+               basic_os=${basic_os:-linux}
                ;;
        m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
                cpu=s12z
@@ -1070,12 +1144,12 @@ case $cpu-$vendor in
                ;;
        parisc-*)
                cpu=hppa
-               basic_os=linux
+               basic_os=${basic_os:-linux}
                ;;
        pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
                cpu=i586
                ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+       pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
                cpu=i686
                ;;
        pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1084,9 +1158,6 @@ case $cpu-$vendor in
        pentium4-*)
                cpu=i786
                ;;
-       pc98-*)
-               cpu=i386
-               ;;
        ppc-* | ppcbe-*)
                cpu=powerpc
                ;;
@@ -1120,9 +1191,6 @@ case $cpu-$vendor in
        tx39el-*)
                cpu=mipstx39el
                ;;
-       x64-*)
-               cpu=x86_64
-               ;;
        xscale-* | xscalee[bl]-*)
                cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
                ;;
@@ -1178,114 +1246,231 @@ case $cpu-$vendor in
                # Recognize the canonical CPU types that are allowed with any
                # company name.
                case $cpu in
-                       1750a | 580 \
+                         1750a \
+                       | 580 \
+                       | [cjt]90 \
                        | a29k \
-                       | aarch64 | aarch64_be \
+                       | aarch64 \
+                       | aarch64_be \
+                       | aarch64c \
                        | abacus \
-                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-                       | alphapca5[67] | alpha64pca5[67] \
+                       | alpha \
+                       | alpha64 \
+                       | alpha64ev56 \
+                       | alpha64ev6[78] \
+                       | alpha64ev[4-8] \
+                       | alpha64pca5[67] \
+                       | alphaev56 \
+                       | alphaev6[78] \
+                       | alphaev[4-8] \
+                       | alphapca5[67] \
                        | am33_2.0 \
                        | amdgcn \
-                       | arc | arceb | arc32 | arc64 \
-                       | arm | arm[lb]e | arme[lb] | armv* \
-                       | avr | avr32 \
+                       | arc \
+                       | arc32 \
+                       | arc64 \
+                       | arceb \
+                       | arm \
+                       | arm64e \
+                       | arm64ec \
+                       | arm[lb]e \
+                       | arme[lb] \
+                       | armv* \
                        | asmjs \
+                       | avr \
+                       | avr32 \
                        | ba \
-                       | be32 | be64 \
-                       | bfin | bpf | 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 \
+                       | be32 \
+                       | be64 \
+                       | bfin \
+                       | bpf \
+                       | bs2000 \
+                       | c30 \
+                       | c4x \
+                       | c8051 \
+                       | c[123]* \
+                       | clipper \
+                       | craynv \
+                       | csky \
+                       | cydra \
+                       | d10v \
+                       | d30v \
+                       | dlx \
+                       | dsp16xx \
+                       | e2k \
+                       | elxsi \
+                       | epiphany \
+                       | f30[01] \
+                       | f700 \
+                       | fido \
+                       | fr30 \
+                       | frv \
+                       | ft32 \
+                       | fx80 \
+                       | h8300 \
+                       | h8500 \
                        | hexagon \
-                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
-                       | ip2k | iq2000 \
+                       | hppa \
+                       | hppa1.[01] \
+                       | hppa2.0 \
+                       | hppa2.0[nw] \
+                       | hppa64 \
+                       | i*86 \
+                       | i370 \
+                       | i860 \
+                       | i960 \
+                       | ia16 \
+                       | ia64 \
+                       | ip2k \
+                       | iq2000 \
+                       | javascript \
                        | k1om \
-                       | le32 | le64 \
+                       | kvx \
+                       | le32 \
+                       | le64 \
                        | lm32 \
-                       | loongarch32 | loongarch64 | loongarchx32 \
-                       | m32c | m32r | m32rle \
-                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
-                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
-                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
-                       | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r3 | mipsisa32r3el \
-                       | mipsisa32r5 | mipsisa32r5el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r3 | mipsisa64r3el \
-                       | mipsisa64r5 | mipsisa64r5el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
+                       | loongarch32 \
+                       | loongarch64 \
+                       | m32c \
+                       | m32r \
+                       | m32rle \
+                       | m5200 \
+                       | m68000 \
+                       | m680[012346]0 \
+                       | m6811 \
+                       | m6812 \
+                       | m68360 \
+                       | m683?2 \
+                       | m68hc11 \
+                       | m68hc12 \
+                       | m68hcs12x \
+                       | m68k \
+                       | m88110 \
+                       | m88k \
+                       | maxq \
+                       | mb \
+                       | mcore \
+                       | mep \
+                       | metag \
+                       | microblaze \
+                       | microblazeel \
+                       | mips* \
                        | mmix \
-                       | mn10200 | mn10300 \
+                       | mn10200 \
+                       | mn10300 \
                        | moxie \
-                       | mt \
                        | msp430 \
-                       | nds32 | nds32le | nds32be \
+                       | mt \
+                       | nanomips* \
+                       | nds32 \
+                       | nds32be \
+                       | nds32le \
                        | nfp \
-                       | nios | nios2 | nios2eb | nios2el \
-                       | none | np1 | ns16k | ns32k | nvptx \
+                       | nios \
+                       | nios2 \
+                       | nios2eb \
+                       | nios2el \
+                       | none \
+                       | np1 \
+                       | ns16k \
+                       | ns32k \
+                       | nvptx \
                        | open8 \
                        | or1k* \
                        | or32 \
                        | orion \
+                       | pdp10 \
+                       | pdp11 \
                        | picochip \
-                       | pdp10 | pdp11 | pj | pjl | pn | power \
-                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+                       | pj \
+                       | pjl \
+                       | pn \
+                       | power \
+                       | powerpc \
+                       | powerpc64 \
+                       | powerpc64le \
+                       | powerpcle \
+                       | powerpcspe \
                        | pru \
                        | pyramid \
-                       | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
-                       | rl78 | romp | rs6000 | rx \
-                       | s390 | s390x \
+                       | riscv \
+                       | riscv32 \
+                       | riscv32be \
+                       | riscv64 \
+                       | riscv64be \
+                       | rl78 \
+                       | romp \
+                       | rs6000 \
+                       | rx \
+                       | s390 \
+                       | s390x \
                        | score \
-                       | sh | shl \
-                       | 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 \
+                       | sh \
+                       | sh64 \
+                       | sh64le \
+                       | sh[12345][lb]e \
+                       | sh[1234] \
+                       | sh[1234]e[lb] \
+                       | sh[23]e \
+                       | sh[23]ele \
+                       | sh[24]a \
+                       | sh[24]ae[lb] \
+                       | sh[lb]e \
+                       | she[lb] \
+                       | shl \
+                       | sparc \
+                       | sparc64 \
+                       | sparc64b \
+                       | sparc64v \
+                       | sparc86x \
+                       | sparclet \
                        | sparclite \
-                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+                       | sparcv8 \
+                       | sparcv9 \
+                       | sparcv9b \
+                       | sparcv9v \
                        | spu \
+                       | sv1 \
+                       | sx* \
                        | tahoe \
                        | thumbv7* \
-                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+                       | tic30 \
+                       | tic4x \
+                       | tic54x \
+                       | tic55x \
+                       | tic6x \
+                       | tic80 \
                        | tron \
                        | ubicom32 \
-                       | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+                       | v70 \
+                       | v810 \
+                       | v850 \
+                       | v850e \
+                       | v850e1 \
+                       | v850e2 \
+                       | v850e2v3 \
+                       | v850es \
                        | vax \
+                       | vc4 \
                        | visium \
                        | w65 \
-                       | wasm32 | wasm64 \
+                       | wasm32 \
+                       | wasm64 \
                        | we32k \
-                       | x86 | x86_64 | xc16x | xgate | xps100 \
-                       | xstormy16 | xtensa* \
+                       | x86 \
+                       | x86_64 \
+                       | xc16x \
+                       | xgate \
+                       | xps100 \
+                       | xstormy16 \
+                       | xtensa* \
                        | ymp \
-                       | z8k | z80)
+                       | z80 \
+                       | z8k)
                                ;;
 
                        *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+                               echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
                                exit 1
                                ;;
                esac
@@ -1306,11 +1491,12 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if test x$basic_os != x
+if test x"$basic_os" != x
 then
 
 # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
 # set os.
+obj=
 case $basic_os in
        gnu/linux*)
                kernel=linux
@@ -1325,7 +1511,6 @@ case $basic_os in
                os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
                ;;
        *-*)
-               # shellcheck disable=SC2162
                saved_IFS=$IFS
                IFS="-" read kernel os <<EOF
 $basic_os
@@ -1341,6 +1526,10 @@ EOF
                kernel=linux
                os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
                ;;
+       managarm*)
+               kernel=managarm
+               os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
+               ;;
        *)
                kernel=
                os=$basic_os
@@ -1368,6 +1557,23 @@ case $os in
        unixware*)
                os=sysv4.2uw
                ;;
+       # The marketing names for NeXT's operating systems were
+       # NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4.  'openstep' is
+       # mapped to 'openstep3', but 'openstep1' and 'openstep2' are
+       # mapped to 'nextstep' and 'nextstep2', consistent with the
+       # treatment of SunOS/Solaris.
+       ns | ns1 | nextstep | nextstep1 | openstep1)
+               os=nextstep
+               ;;
+       ns2 | nextstep2 | openstep2)
+               os=nextstep2
+               ;;
+       ns3 | nextstep3 | openstep | openstep3)
+               os=openstep3
+               ;;
+       ns4 | nextstep4 | openstep4)
+               os=openstep4
+               ;;
        # es1800 is here to avoid being matched by es* (a different OS)
        es1800*)
                os=ose
@@ -1438,6 +1644,7 @@ case $os in
                ;;
        utek*)
                os=bsd
+               vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
                ;;
        dynix*)
                os=bsd
@@ -1454,21 +1661,25 @@ case $os in
        386bsd)
                os=bsd
                ;;
-       ctix* | uts*)
+       ctix*)
                os=sysv
+               vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
                ;;
-       nova*)
-               os=rtmk-nova
+       uts*)
+               os=sysv
                ;;
-       ns2)
-               os=nextstep2
+       nova*)
+               kernel=rtmk
+               os=nova
                ;;
        # Preserve the version number of sinix5.
        sinix5.*)
                os=`echo "$os" | sed -e 's|sinix|sysv|'`
+               vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
                ;;
        sinix*)
                os=sysv4
+               vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
                ;;
        tpf*)
                os=tpf
@@ -1506,10 +1717,16 @@ case $os in
                        os=eabi
                        ;;
                    *)
-                       os=elf
+                       os=
+                       obj=elf
                        ;;
                esac
                ;;
+       aout* | coff* | elf* | pe*)
+               # These are machine code file formats, not OSes
+               obj=$os
+               os=
+               ;;
        *)
                # No normalization, but not necessarily accepted, that comes below.
                ;;
@@ -1528,12 +1745,15 @@ else
 # system, and we'll never get to this point.
 
 kernel=
+obj=
 case $cpu-$vendor in
        score-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        spu-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        *-acorn)
                os=riscix1.2
@@ -1543,28 +1763,35 @@ case $cpu-$vendor in
                os=gnu
                ;;
        arm*-semi)
-               os=aout
+               os=
+               obj=aout
                ;;
        c4x-* | tic4x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        c8051-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        clipper-intergraph)
                os=clix
                ;;
        hexagon-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        tic54x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        tic55x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        tic6x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
@@ -1586,28 +1813,43 @@ case $cpu-$vendor in
                os=sunos3
                ;;
        m68*-cisco)
-               os=aout
+               os=
+               obj=aout
                ;;
        mep-*)
-               os=elf
+               os=
+               obj=elf
+               ;;
+       # The -sgi and -siemens entries must be before the mips- entry
+       # or we get the wrong os.
+       *-sgi)
+               os=irix
+               ;;
+       *-siemens)
+               os=sysv4
                ;;
        mips*-cisco)
-               os=elf
+               os=
+               obj=elf
                ;;
-       mips*-*)
-               os=elf
+       mips*-*|nanomips*-*)
+               os=
+               obj=elf
                ;;
        or32-*)
-               os=coff
+               os=
+               obj=coff
                ;;
-       *-tti)  # must be before sparc entry or we get the wrong os.
+       # This must be before the sparc-* entry or we get the wrong os.
+       *-tti)
                os=sysv3
                ;;
        sparc-* | *-sun)
                os=sunos4.1.1
                ;;
        pru-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        *-be)
                os=beos
@@ -1631,7 +1873,7 @@ case $cpu-$vendor in
                os=hpux
                ;;
        *-hitachi)
-               os=hiux
+               os=hiuxwe2
                ;;
        i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
                os=sysv
@@ -1675,12 +1917,6 @@ case $cpu-$vendor in
        *-encore)
                os=bsd
                ;;
-       *-sgi)
-               os=irix
-               ;;
-       *-siemens)
-               os=sysv4
-               ;;
        *-masscomp)
                os=rtu
                ;;
@@ -1688,10 +1924,12 @@ case $cpu-$vendor in
                os=uxpv
                ;;
        *-rom68k)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-*bug)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-apple)
                os=macos
@@ -1709,10 +1947,11 @@ esac
 
 fi
 
-# Now, validate our (potentially fixed-up) OS.
+# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
+
 case $os in
        # Sometimes we do "kernel-libc", so those need to count as OSes.
-       musl* | newlib* | relibc* | uclibc*)
+       llvm* | musl* | newlib* | relibc* | uclibc*)
                ;;
        # Likewise for "kernel-abi"
        eabi* | gnueabi*)
@@ -1720,83 +1959,308 @@ case $os in
        # VxWorks passes extra cpu info in the 4th filed.
        simlinux | simwindows | spe)
                ;;
+       # See `case $cpu-$os` validation below
+       ghcjs)
+               ;;
        # Now accept the basic system types.
-       # The portable systems comes first.
        # Each alternative MUST end in a * to match a version number.
-       gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
-            | hiux* | abug | nacl* | netware* | windows* \
-            | os9* | macos* | osx* | ios* \
-            | mpw* | magic* | mmixware* | mon960* | lnews* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* | twizzler* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-            | mirbsd* | netbsd* | dicos* | openedition* | ose* \
-            | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
-            | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusrdb* | cegcc* | glidix* | serenity* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | mint* \
-            | 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* \
-            | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
-            | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
-            | fiwix* )
+         abug \
+       | aix* \
+       | amdhsa* \
+       | amigados* \
+       | amigaos* \
+       | android* \
+       | aof* \
+       | aos* \
+       | aros* \
+       | atheos* \
+       | auroraux* \
+       | aux* \
+       | beos* \
+       | bitrig* \
+       | bme* \
+       | bosx* \
+       | bsd* \
+       | cegcc* \
+       | chorusos* \
+       | chorusrdb* \
+       | clix* \
+       | cloudabi* \
+       | cnk* \
+       | conix* \
+       | cos* \
+       | cxux* \
+       | cygwin* \
+       | darwin* \
+       | dgux* \
+       | dicos* \
+       | dnix* \
+       | domain* \
+       | dragonfly* \
+       | drops* \
+       | ebmon* \
+       | ecoff* \
+       | ekkobsd* \
+       | emscripten* \
+       | emx* \
+       | es* \
+       | fiwix* \
+       | freebsd* \
+       | fuchsia* \
+       | genix* \
+       | genode* \
+       | glidix* \
+       | gnu* \
+       | go32* \
+       | haiku* \
+       | hcos* \
+       | hiux* \
+       | hms* \
+       | hpux* \
+       | ieee* \
+       | interix* \
+       | ios* \
+       | iris* \
+       | irix* \
+       | ironclad* \
+       | isc* \
+       | its* \
+       | l4re* \
+       | libertybsd* \
+       | lites* \
+       | lnews* \
+       | luna* \
+       | lynxos* \
+       | mach* \
+       | macos* \
+       | magic* \
+       | mbr* \
+       | midipix* \
+       | midnightbsd* \
+       | mingw32* \
+       | mingw64* \
+       | minix* \
+       | mint* \
+       | mirbsd* \
+       | mks* \
+       | mlibc* \
+       | mmixware* \
+       | mon960* \
+       | morphos* \
+       | moss* \
+       | moxiebox* \
+       | mpeix* \
+       | mpw* \
+       | msdos* \
+       | msys* \
+       | mvs* \
+       | nacl* \
+       | netbsd* \
+       | netware* \
+       | newsos* \
+       | nextstep* \
+       | nindy* \
+       | nonstopux* \
+       | nova* \
+       | nsk* \
+       | nucleus* \
+       | nx6 \
+       | nx7 \
+       | oabi* \
+       | ohos* \
+       | onefs* \
+       | openbsd* \
+       | openedition* \
+       | openstep* \
+       | os108* \
+       | os2* \
+       | os400* \
+       | os68k* \
+       | os9* \
+       | ose* \
+       | osf* \
+       | oskit* \
+       | osx* \
+       | palmos* \
+       | phoenix* \
+       | plan9* \
+       | powermax* \
+       | powerunix* \
+       | proelf* \
+       | psos* \
+       | psp* \
+       | ptx* \
+       | pw32* \
+       | qnx* \
+       | rdos* \
+       | redox* \
+       | rhapsody* \
+       | riscix* \
+       | riscos* \
+       | rtems* \
+       | rtmk* \
+       | rtu* \
+       | scout* \
+       | secbsd* \
+       | sei* \
+       | serenity* \
+       | sim* \
+       | skyos* \
+       | solaris* \
+       | solidbsd* \
+       | sortix* \
+       | storm-chaos* \
+       | sunos \
+       | sunos[34]* \
+       | superux* \
+       | syllable* \
+       | sym* \
+       | sysv* \
+       | tenex* \
+       | tirtos* \
+       | toppers* \
+       | tops10* \
+       | tops20* \
+       | tpf* \
+       | tvos* \
+       | twizzler* \
+       | uclinux* \
+       | udi* \
+       | udk* \
+       | ultrix* \
+       | unicos* \
+       | uniplus* \
+       | unleashed* \
+       | unos* \
+       | uwin* \
+       | uxpv* \
+       | v88r* \
+       |*vms* \
+       | vos* \
+       | vsta* \
+       | vxsim* \
+       | vxworks* \
+       | wasi* \
+       | watchos* \
+       | wince* \
+       | windiss* \
+       | windows* \
+       | winnt* \
+       | xenix* \
+       | xray* \
+       | zephyr* \
+       | zvmoe* )
                ;;
        # This one is extra strict with allowed versions
        sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
                # Don't forget version if it is 3.2v4 or newer.
                ;;
+       # This refers to builds using the UEFI calling convention
+       # (which depends on the architecture) and PE file format.
+       # Note that this is both a different calling convention and
+       # different file format than that of GNU-EFI
+       # (x86_64-w64-mingw32).
+       uefi)
+               ;;
        none)
                ;;
+       kernel* | msvc* )
+               # Restricted further below
+               ;;
+       '')
+               if test x"$obj" = x
+               then
+                       echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
+               fi
+               ;;
+       *)
+               echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
+               exit 1
+               ;;
+esac
+
+case $obj in
+       aout* | coff* | elf* | pe*)
+               ;;
+       '')
+               # empty is fine
+               ;;
        *)
-               echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+               echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we handle the constraint that a (synthetic) cpu and os are
+# valid only in combination with each other and nowhere else.
+case $cpu-$os in
+       # The "javascript-unknown-ghcjs" triple is used by GHC; we
+       # accept it here in order to tolerate that, but reject any
+       # variations.
+       javascript-ghcjs)
+               ;;
+       javascript-* | *-ghcjs)
+               echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
                exit 1
                ;;
 esac
 
 # As a final step for OS-related things, validate the OS-kernel combination
 # (given a valid OS), if there is a kernel.
-case $kernel-$os in
-       linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
-                  | linux-musl* | linux-relibc* | linux-uclibc* )
+case $kernel-$os-$obj in
+       linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
+                   | linux-mlibc*- | linux-musl*- | linux-newlib*- \
+                   | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
+               ;;
+       uclinux-uclibc*- | uclinux-gnu*- )
+               ;;
+       managarm-mlibc*- | managarm-kernel*- )
                ;;
-       uclinux-uclibc* )
+       windows*-msvc*-)
                ;;
-       -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+       -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
+                   | -uclibc*- )
                # These are just libc implementations, not actual OSes, and thus
                # require a kernel.
-               echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+               echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
                exit 1
                ;;
-       kfreebsd*-gnu* | kopensolaris*-gnu*)
+       -kernel*- )
+               echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
+               exit 1
                ;;
-       vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+       *-kernel*- )
+               echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
+               exit 1
                ;;
-       nto-qnx*)
+       *-msvc*- )
+               echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
+               exit 1
                ;;
-       os2-emx)
+       kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
+               ;;
+       vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+               ;;
+       nto-qnx*-)
                ;;
-       *-eabi* | *-gnueabi*)
+       os2-emx-)
                ;;
-       -*)
+       rtmk-nova-)
+               ;;
+       *-eabi*- | *-gnueabi*-)
+               ;;
+       none--*)
+               # None (no kernel, i.e. freestanding / bare metal),
+               # can be paired with an machine code file format
+               ;;
+       -*-)
                # Blank kernel with real OS is always fine.
                ;;
-       *-*)
-               echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+       --*)
+               # Blank kernel and OS with real machine code file format is always fine.
+               ;;
+       *-*-*)
+               echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
                exit 1
                ;;
 esac
@@ -1809,7 +2273,7 @@ case $vendor in
                        *-riscix*)
                                vendor=acorn
                                ;;
-                       *-sunos*)
+                       *-sunos* | *-solaris*)
                                vendor=sun
                                ;;
                        *-cnk* | *-aix*)
@@ -1879,7 +2343,7 @@ case $vendor in
                ;;
 esac
 
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
 exit
 
 # Local variables:
diff --git a/support/install-sh b/support/install-sh
new file mode 100755 (executable)
index 0000000..8a76989
--- /dev/null
@@ -0,0 +1,541 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2024-12-03.03; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab='  '
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+# Create dirs (including intermediate dirs) using mode 755.
+# This is like GNU 'install' as of coreutils 8.32 (2020).
+mkdir_umask=22
+
+backupsuffix=
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -p            pass -p to $cpprog.
+  -s            $stripprog installed files.
+  -S SUFFIX     attempt to back up existing files, with suffix SUFFIX.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+
+By default, rm is invoked with -f; when overridden with RMPROG,
+it's up to you to specify -f if you want it.
+
+If -S is not specified, no backups are attempted.
+
+Report bugs to <bug-automake@gnu.org>.
+GNU Automake home page: <https://www.gnu.org/software/automake/>.
+General help using GNU software: <https://www.gnu.org/gethelp/>."
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
+
+    -o) chowncmd="$chownprog $2"
+        shift;;
+
+    -p) cpprog="$cpprog -p";;
+
+    -s) stripcmd=$stripprog;;
+
+    -S) backupsuffix="$2"
+        shift;;
+
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
+
+    -T) is_target_a_directory=never;;
+
+    --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;;
+
+    --) shift
+        break;;
+
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call 'install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+        u_plus_rw=
+      else
+        u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names problematic for 'test' and other utilities.
+  case $src in
+    -* | [=\(\)!]) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+    # Don't chown directories that already exist.
+    if test $dstdir_status = 0; then
+      chowncmd=""
+    fi
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+    dst=$dst_arg
+
+    # If destination is a directory, append the input filename.
+    if test -d "$dst"; then
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
+      fi
+      dstdir=$dst
+      dstbase=`basename "$src"`
+      case $dst in
+       */) dst=$dst$dstbase;;
+       *)  dst=$dst/$dstbase;;
+      esac
+      dstdir_status=0
+    else
+      dstdir=`dirname "$dst"`
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  case $dstdir in
+    */) dstdirslash=$dstdir;;
+    *)  dstdirslash=$dstdir/;;
+  esac
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+       # The $RANDOM variable is not portable (e.g., dash).  Use it
+       # here however when possible just to lower collision chance.
+       tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
+       trap '
+         ret=$?
+         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
+         exit $ret
+       ' 0
+
+       # Because "mkdir -p" follows existing symlinks and we likely work
+       # directly in world-writable /tmp, make sure that the '$tmpdir'
+       # directory is successfully created first before we actually test
+       # 'mkdir -p'.
+       if (umask $mkdir_umask &&
+           $mkdirprog $mkdir_mode "$tmpdir" &&
+           exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
+       then
+         if test -z "$dir_arg" || {
+              # Check for POSIX incompatibility with -m.
+              # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+              # other-writable bit of parent directory when it shouldn't.
+              # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+              test_tmpdir="$tmpdir/a"
+              ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+              case $ls_ld_tmpdir in
+                d????-?r-*) different_mode=700;;
+                d????-?--*) different_mode=755;;
+                *) false;;
+              esac &&
+              $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+                test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+              }
+            }
+         then posix_mkdir=:
+         fi
+         rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+       else
+         # Remove any dirs left behind by ancient mkdir implementations.
+         rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+       fi
+       trap '' 0;;
+    esac
+
+    if
+      $posix_mkdir && (
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
+      esac
+
+      oIFS=$IFS
+      IFS=/
+      set -f
+      set fnord $dstdir
+      shift
+      set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask $mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=${dstdirslash}_inst.$$_
+    rmtmp=${dstdirslash}_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask &&
+     { test -z "$stripcmd" || {
+        # Create $dsttmp read-write so that cp doesn't create it read-only,
+        # which would cause strip to fail.
+        if test -z "$doit"; then
+          : >"$dsttmp" # No need to fork-exec 'touch'.
+        else
+          $doit touch "$dsttmp"
+        fi
+       }
+     } &&
+     $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       set +f &&
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # If $backupsuffix is set, and the file being installed
+      # already exists, attempt a backup.  Don't worry if it fails,
+      # e.g., if mv doesn't support -f.
+      if test -n "$backupsuffix" && test -f "$dst"; then
+        $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+      fi
+
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp nil t)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC0"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/support/install.sh b/support/install.sh
deleted file mode 100644 (file)
index 0cac004..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5.
-#
-# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.
-#
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-tranformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -d) dir_arg=true
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-           shift
-           continue;;
-
-       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               # this colon is to work around a 386BSD /bin/sh bug
-               :
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-else
-       true
-fi
-
-if [ x"$dir_arg" != x ]; then
-       dst=$src
-       src=""
-       
-       if [ -d $dst ]; then
-               instcmd=:
-       else
-               instcmd=mkdir
-       fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-       if [ -f $src -o -d $src ]
-       then
-               true
-       else
-               echo "install:  $src does not exist"
-               exit 1
-       fi
-       
-       if [ x"$dst" = x ]
-       then
-               echo "install:  no destination specified"
-               exit 1
-       else
-               true
-       fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-       if [ -d $dst ]
-       then
-               dst="$dst"/`basename $src`
-       else
-               true
-       fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='   
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-       pathcomp="${pathcomp}${1}"
-       shift
-
-       if [ ! -d "${pathcomp}" ] ;
-        then
-               $mkdirprog "${pathcomp}"
-       else
-               true
-       fi
-
-       pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-       $doit $instcmd $dst &&
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-       if [ x"$transformarg" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               dstfile=`basename $dst $transformbasename | 
-                       sed $transformarg`$transformbasename
-       fi
-
-# don't allow the sed command to completely eliminate the filename
-
-       if [ x"$dstfile" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               true
-       fi
-
-# Make a temp file name in the proper directory.
-
-       dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-       $doit $instcmd $src $dsttmp &&
-
-       trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-       $doit $rmcmd -f $dstdir/$dstfile &&
-       $doit $mvcmd $dsttmp $dstdir/$dstfile 
-
-fi &&
-
-
-exit 0
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index cd7634dfa6247f021a640e2df74f7ed843ff66ad..c3df351af9f734a7adcec901ad2cd3dca3f713f2 100644 (file)
@@ -114,7 +114,7 @@ sunos5*-*gcc*|solaris2*-*gcc*)
        ;;
 
 sunos5*|solaris2*)
-       SHOBJ_CFLAGS='-K pic'
+       SHOBJ_CFLAGS='-fPIC'    # was -K pic
        SHOBJ_LD=/usr/ccs/bin/ld
        SHOBJ_LDFLAGS='-G -dy -z text -i -h $@'
 
@@ -494,6 +494,24 @@ cygwin*)
        fi
        ;;
 
+msys*)
+       SHOBJ_LD='$(CC)'
+       SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
+       SHLIB_LIBPREF='msys-'
+       SHLIB_LIBSUFF='dll'
+       SHLIB_LIBVERSION='$(SHLIB_DLLVERSION).$(SHLIB_LIBSUFF)'
+       SHLIB_LIBS='$(TERMCAP_LIB)'
+
+       SHLIB_DOT=
+       # For official cygwin releases, DLLVERSION will be defined in the
+       # environment of configure, and will be incremented any time the API
+       # changes in a non-backwards compatible manner.  Otherwise, it is just
+       # SHLIB_MAJOR.
+       if [ -n "$DLLVERSION" ] ; then
+               SHLIB_DLLVERSION="$DLLVERSION"
+       fi
+       ;;
+
 mingw*)
        SHOBJ_LD='$(CC)'
        SHOBJ_LDFLAGS='-shared -Wl,--enable-auto-import -Wl,--enable-auto-image-base -Wl,--export-all -Wl,--out-implib=$(@).a'
index 0f5ec995796f4813abbcf4972aec0378ab74722a..f234f3c5a0544125dd385ba8642dafb9b4aed3fc 100644 (file)
@@ -1,3 +1,5 @@
+/* This has been modified by Chet Ramey for inclusion in readline with
+   hints from vim */
 /*
  * This is an implementation of wcwidth() and wcswidth() (defined in
  * IEEE Std 1002.1-2001) for Unicode.
@@ -59,6 +61,8 @@
  * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
  */
 
+#include <config.h>
+
 #ifdef __GO32__
 #  include <wctype.h>
 #endif
@@ -70,8 +74,66 @@ struct interval {
   int last;
 };
 
+/* Needs WCHAR_T from rlmbutil.h */
+#ifndef WCHAR_T
+#  define WCHAR_t wchar_t
+#endif
+
+/* sorted list of non-overlapping intervals of non-spacing characters */
+/* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
+static const struct interval combining[] = {
+    { 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 },
+    { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
+    { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 },
+    { 0x0610, 0x0615 }, { 0x064B, 0x065E }, { 0x0670, 0x0670 },
+    { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED },
+    { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A },
+    { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0901, 0x0902 },
+    { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D },
+    { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 },
+    { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD },
+    { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C },
+    { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D },
+    { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC },
+    { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD },
+    { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C },
+    { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D },
+    { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 },
+    { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 },
+    { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC },
+    { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
+    { 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D },
+    { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
+    { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
+    { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC },
+    { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 },
+    { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E },
+    { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 },
+    { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 },
+    { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 },
+    { 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x135F, 0x135F },
+    { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 },
+    { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD },
+    { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD },
+    { 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 },
+    { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B },
+    { 0x1A17, 0x1A18 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 },
+    { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 },
+    { 0x1B6B, 0x1B73 }, { 0x1DC0, 0x1DCA }, { 0x1DFE, 0x1DFF },
+    { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2063 },
+    { 0x206A, 0x206F }, { 0x20D0, 0x20EF }, { 0x302A, 0x302F },
+    { 0x3099, 0x309A }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B },
+    { 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F },
+    { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
+    { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F },
+    { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x1D167, 0x1D169 },
+    { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD },
+    { 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F },
+    { 0xE0100, 0xE01EF }
+};
+
 /* auxiliary function for binary search in interval table */
-static int bisearch(wchar_t ucs, const struct interval *table, int max) {
+static int bisearch(WCHAR_T ucs, const struct interval *table, int max) {
   int min = 0;
   int mid;
 
@@ -123,61 +185,13 @@ static int bisearch(wchar_t ucs, const struct interval *table, int max) {
  * in ISO 10646.
  */
 
-int mk_wcwidth(wchar_t ucs)
+#if defined (WCWIDTH_BROKEN)
+int
+wcwidth (WCHAR_T ucs)
+#else
+int mk_wcwidth(WCHAR_T ucs)
+#endif
 {
-  /* sorted list of non-overlapping intervals of non-spacing characters */
-  /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
-  static const struct interval combining[] = {
-    { 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 },
-    { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
-    { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 },
-    { 0x0610, 0x0615 }, { 0x064B, 0x065E }, { 0x0670, 0x0670 },
-    { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED },
-    { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A },
-    { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0901, 0x0902 },
-    { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D },
-    { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 },
-    { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD },
-    { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C },
-    { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D },
-    { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC },
-    { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD },
-    { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C },
-    { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D },
-    { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 },
-    { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 },
-    { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC },
-    { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
-    { 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D },
-    { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
-    { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
-    { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC },
-    { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 },
-    { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E },
-    { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 },
-    { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 },
-    { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 },
-    { 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x135F, 0x135F },
-    { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 },
-    { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD },
-    { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD },
-    { 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 },
-    { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B },
-    { 0x1A17, 0x1A18 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 },
-    { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 },
-    { 0x1B6B, 0x1B73 }, { 0x1DC0, 0x1DCA }, { 0x1DFE, 0x1DFF },
-    { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2063 },
-    { 0x206A, 0x206F }, { 0x20D0, 0x20EF }, { 0x302A, 0x302F },
-    { 0x3099, 0x309A }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B },
-    { 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F },
-    { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
-    { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F },
-    { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x1D167, 0x1D169 },
-    { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD },
-    { 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F },
-    { 0xE0100, 0xE01EF }
-  };
-
   /* test for 8-bit control characters */
   if (ucs == 0)
     return 0;
@@ -208,7 +222,12 @@ int mk_wcwidth(wchar_t ucs)
 }
 
 
-int mk_wcswidth(const wchar_t *pwcs, size_t n)
+#if defined (WCWIDTH_BROKEN)
+int
+wcswidth (WCHAR_T *pwcs, size_t n)
+#else
+int mk_wcswidth(const WCHAR_T *pwcs, size_t n)
+#endif
 {
   int w, width = 0;
 
@@ -231,7 +250,7 @@ int mk_wcswidth(const wchar_t *pwcs, size_t n)
  * the traditional terminal character-width behaviour. It is not
  * otherwise recommended for general use.
  */
-int mk_wcwidth_cjk(wchar_t ucs)
+int mk_wcwidth_cjk(WCHAR_T ucs)
 {
   /* sorted list of non-overlapping intervals of East Asian Ambiguous
    * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
@@ -299,7 +318,7 @@ int mk_wcwidth_cjk(wchar_t ucs)
 }
 
 
-int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
+int mk_wcswidth_cjk(const WCHAR_T *pwcs, size_t n)
 {
   int w, width = 0;
 
@@ -311,3 +330,145 @@ int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
 
   return width;
 }
+
+static inline int
+mk_is_combining(uint32_t codepoint)
+{
+  return bisearch(codepoint, combining, sizeof(combining) / sizeof(struct interval) - 1);
+}
+
+static const struct interval fullwidth[] =
+{
+  { 0x1100, 0x115f },
+  { 0x231a, 0x231b },
+  { 0x2329, 0x232a },
+  { 0x23e9, 0x23ec },
+  { 0x23f0, 0x23f0 },
+  { 0x23f3, 0x23f3 },
+  { 0x25fd, 0x25fe },
+  { 0x2614, 0x2615 },
+  { 0x2648, 0x2653 },
+  { 0x267f, 0x267f },
+  { 0x2693, 0x2693 },
+  { 0x26a1, 0x26a1 },
+  { 0x26aa, 0x26ab },
+  { 0x26bd, 0x26be },
+  { 0x26c4, 0x26c5 },
+  { 0x26ce, 0x26ce },
+  { 0x26d4, 0x26d4 },
+  { 0x26ea, 0x26ea },
+  { 0x26f2, 0x26f3 },
+  { 0x26f5, 0x26f5 },
+  { 0x26fa, 0x26fa },
+  { 0x26fd, 0x26fd },
+  { 0x2705, 0x2705 },
+  { 0x270a, 0x270b },
+  { 0x2728, 0x2728 },
+  { 0x274c, 0x274c },
+  { 0x274e, 0x274e },
+  { 0x2753, 0x2755 },
+  { 0x2757, 0x2757 },
+  { 0x2795, 0x2797 },
+  { 0x27b0, 0x27b0 },
+  { 0x27bf, 0x27bf },
+  { 0x2b1b, 0x2b1c },
+  { 0x2b50, 0x2b50 },
+  { 0x2b55, 0x2b55 },
+  { 0x2e80, 0x2e99 },
+  { 0x2e9b, 0x2ef3 },
+  { 0x2f00, 0x2fd5 },
+  { 0x2ff0, 0x2ffb },
+  { 0x3000, 0x303e },
+  { 0x3041, 0x3096 },
+  { 0x3099, 0x30ff },
+  { 0x3105, 0x312f },
+  { 0x3131, 0x318e },
+  { 0x3190, 0x31ba },
+  { 0x31c0, 0x31e3 },
+  { 0x31f0, 0x321e },
+  { 0x3220, 0x3247 },
+  { 0x3250, 0x4dbf },
+  { 0x4e00, 0xa48c },
+  { 0xa490, 0xa4c6 },
+  { 0xa960, 0xa97c },
+  { 0xac00, 0xd7a3 },
+  { 0xf900, 0xfaff },
+  { 0xfe10, 0xfe19 },
+  { 0xfe30, 0xfe52 },
+  { 0xfe54, 0xfe66 },
+  { 0xfe68, 0xfe6b },
+  { 0xff01, 0xff60 },
+  { 0xffe0, 0xffe6 },
+  { 0x16fe0, 0x16fe3 },
+  { 0x17000, 0x187f7 },
+  { 0x18800, 0x18af2 },
+  { 0x1b000, 0x1b11e },
+  { 0x1b150, 0x1b152 },
+  { 0x1b164, 0x1b167 },
+  { 0x1b170, 0x1b2fb },
+  { 0x1f004, 0x1f004 },
+  { 0x1f0cf, 0x1f0cf },
+  { 0x1f18e, 0x1f18e },
+  { 0x1f191, 0x1f19a },
+  { 0x1f200, 0x1f202 },
+  { 0x1f210, 0x1f23b },
+  { 0x1f240, 0x1f248 },
+  { 0x1f250, 0x1f251 },
+  { 0x1f260, 0x1f265 },
+  { 0x1f300, 0x1f320 },
+  { 0x1f32d, 0x1f335 },
+  { 0x1f337, 0x1f37c },
+  { 0x1f37e, 0x1f393 },
+  { 0x1f3a0, 0x1f3ca },
+  { 0x1f3cf, 0x1f3d3 },
+  { 0x1f3e0, 0x1f3f0 },
+  { 0x1f3f4, 0x1f3f4 },
+  { 0x1f3f8, 0x1f43e },
+  { 0x1f440, 0x1f440 },
+  { 0x1f442, 0x1f4fc },
+  { 0x1f4ff, 0x1f53d },
+  { 0x1f54b, 0x1f54e },
+  { 0x1f550, 0x1f567 },
+  { 0x1f57a, 0x1f57a },
+  { 0x1f595, 0x1f596 },
+  { 0x1f5a4, 0x1f5a4 },
+  { 0x1f5fb, 0x1f64f },
+  { 0x1f680, 0x1f6c5 },
+  { 0x1f6cc, 0x1f6cc },
+  { 0x1f6d0, 0x1f6d2 },
+  { 0x1f6d5, 0x1f6d5 },
+  { 0x1f6eb, 0x1f6ec },
+  { 0x1f6f4, 0x1f6fa },
+  { 0x1f7e0, 0x1f7eb },
+  { 0x1f90d, 0x1f971 },
+  { 0x1f973, 0x1f976 },
+  { 0x1f97a, 0x1f9a2 },
+  { 0x1f9a5, 0x1f9aa },
+  { 0x1f9ae, 0x1f9ca },
+  { 0x1f9cd, 0x1f9ff },
+  { 0x1fa70, 0x1fa73 },
+  { 0x1fa78, 0x1fa7a },
+  { 0x1fa80, 0x1fa82 },
+  { 0x1fa90, 0x1fa95 },
+};
+
+static inline int
+mk_is_fullwidth (uint32_t codepoint)
+{
+  return (bisearch(codepoint, fullwidth, sizeof(fullwidth) / sizeof(fullwidth[0])))
+}
+
+/* Readline support from here down. */
+int
+_rl_unicode_is_combining (uint32_t codepoint)
+{
+  return (mk_is_combining (codepoint));
+}
+
+int
+_rl_unicode_width (uint32_t codepoint)
+{
+  if (mk_is_fullwidth (codepoint) - 1)
+    return 2;
+  return wcwidth (codepoint);
+}
diff --git a/tcap.h b/tcap.h
index 859e6eed5aabed599a3fb4c4ac43fe537c7e67d1..467ea60e90391fe84e2cf4276438f183a211524b 100644 (file)
--- a/tcap.h
+++ b/tcap.h
@@ -1,6 +1,6 @@
 /* tcap.h -- termcap library functions and variables. */
 
-/* Copyright (C) 1996-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2015,2023 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,14 +46,14 @@ extern char *UP, *BC;
 
 extern short ospeed;
 
-extern int tgetent ();
-extern int tgetflag ();
-extern int tgetnum ();
-extern char *tgetstr ();
+extern int tgetent (char *, const char *);
+extern int tgetflag (const char *);
+extern int tgetnum (const char *);
+extern char *tgetstr (const char *, char **);
 
-extern int tputs ();
+extern int tputs (const char *, int, int (*)(int));
 
-extern char *tgoto ();
+extern char *tgoto (const char *, int, int);
 
 #endif /* HAVE_TERMCAP_H */
 
index 9997161f818e934875d12fec50e7f1caccfd5ec0..50fb904e16b6531024af6751186e40208adde173 100644 (file)
@@ -1,6 +1,6 @@
 /* terminal.c -- controlling the terminal with termcap. */
 
-/* Copyright (C) 1996-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2025 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.      
@@ -69,7 +69,7 @@
 #include "rlshell.h"
 #include "xmalloc.h"
 
-#if defined (__MINGW32__)
+#if defined (_WIN32)
 #  include <windows.h>
 #  include <wincon.h>
 
@@ -102,17 +102,21 @@ static char *term_string_buffer = (char *)NULL;
 
 static int tcap_initialized;
 
-#if !defined (__linux__) && !defined (NCURSES_VERSION)
+/* Systems for which PC/BC/UP are defined in the curses library and need an
+   extern definition here. */
+#if !defined (__linux__) && !defined (__gnu_hurd__) && !defined (NCURSES_VERSION)
 #  if defined (__EMX__) || defined (NEED_EXTERN_PC)
-extern 
+extern
 #  endif /* __EMX__ || NEED_EXTERN_PC */
 char PC, *BC, *UP;
 #endif /* !__linux__ && !NCURSES_VERSION */
 
+
 /* 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_ho;
 char *_rl_term_cr;
 char *_rl_term_backspace;
 char *_rl_term_goto;
@@ -185,6 +189,12 @@ static char *_rl_term_kN;
 static char *_rl_term_vs;      /* very visible */
 static char *_rl_term_ve;      /* normal */
 
+/* Bracketed paste */
+static char *_rl_term_BE;      /* enable */
+static char *_rl_term_BD;      /* disable */
+static char *_rl_term_PS;      /* paste start */
+static char *_rl_term_PE;      /* paste end */
+
 /* User-settable color sequences to begin and end the active region. Defaults
    are rl_term_so and rl_term_se on non-dumb terminals. */
 char *_rl_active_region_start_color = NULL;
@@ -214,6 +224,9 @@ int _rl_enable_keypad;
 /* Non-zero means the user wants to enable a meta key. */
 int _rl_enable_meta = 1;
 
+/* Non-zero means this is an ANSI-compatible terminal; assume it is. */
+int _rl_term_isansi = RL_ANSI_TERM_DEFAULT;
+
 #if defined (__EMX__)
 static void
 _emx_get_screensize (int *swp, int *shp)
@@ -229,7 +242,7 @@ _emx_get_screensize (int *swp, int *shp)
 }
 #endif
 
-#if defined (__MINGW32__)
+#if defined (_WIN32)
 static void
 _win_get_screensize (int *swp, int *shp)
 {
@@ -248,6 +261,30 @@ _win_get_screensize (int *swp, int *shp)
 }
 #endif
 
+int
+_rl_tcgetwinsize (int tty, struct winsize *wp)
+{
+#if defined (HAVE_TCGETWINSIZE)
+  return (tcgetwinsize (tty, wp));
+#elif defined (TIOCGWINSZ)
+  return (ioctl (tty, TIOCGWINSZ, wp));
+#else
+  return -1;
+#endif
+}
+
+void
+_rl_tcsetwinsize (int tty, struct winsize *wp)
+{
+#if defined (HAVE_TCGETWINSIZE)
+  tcsetwinsize (tty, wp);
+#elif defined (TIOCGWINSZ)
+  ioctl (tty, TIOCSWINSZ, wp);
+#else
+  ;
+#endif
+}
+
 /* Get readline's idea of the screen size.  TTY is a file descriptor open
    to the terminal.  If IGNORE_ENV is true, we do not pay attention to the
    values of $LINES and $COLUMNS.  The tests for TERM_STRING_BUFFER being
@@ -256,23 +293,23 @@ void
 _rl_get_screen_size (int tty, int ignore_env)
 {
   char *ss;
-#if defined (TIOCGWINSZ)
+#if defined (TIOCGWINSZ) || defined (HAVE_TCGETWINSIZE)
   struct winsize window_size;
-#endif /* TIOCGWINSZ */
+#endif /* TIOCGWINSZ || HAVE_TCGETWINSIZE */
   int wr, wc;
 
   wr = wc = -1;
-#if defined (TIOCGWINSZ)
-  if (ioctl (tty, TIOCGWINSZ, &window_size) == 0)
+#if defined (TIOCGWINSZ) || defined (HAVE_TCGETWINSIZE)
+  if (_rl_tcgetwinsize (tty, &window_size) == 0)
     {
       wc = (int) window_size.ws_col;
       wr = (int) window_size.ws_row;
     }
-#endif /* TIOCGWINSZ */
+#endif /* TIOCGWINSZ || HAVE_TCGETWINSIZE */
 
 #if defined (__EMX__)
   _emx_get_screensize (&wc, &wr);
-#elif defined (__MINGW32__)
+#elif defined (_WIN32) && !defined (__CYGWIN__)
   _win_get_screensize (&wc, &wr);
 #endif
 
@@ -415,14 +452,19 @@ struct _tc_string {
 static const struct _tc_string tc_strings[] =
 {
   { "@7", &_rl_term_at7 },
+  { "BD", &_rl_term_BD },
+  { "BE", &_rl_term_BE },
   { "DC", &_rl_term_DC },
   { "E3", &_rl_term_clrscroll },
   { "IC", &_rl_term_IC },
+  { "PE", &_rl_term_PE },
+  { "PS", &_rl_term_PS },
   { "ce", &_rl_term_clreol },
   { "cl", &_rl_term_clrpag },
   { "cr", &_rl_term_cr },
   { "dc", &_rl_term_dc },
   { "ei", &_rl_term_ei },
+  { "ho", &_rl_term_ho },
   { "ic", &_rl_term_ic },
   { "im", &_rl_term_im },
   { "kD", &_rl_term_kD },      /* delete */
@@ -466,6 +508,63 @@ get_term_capabilities (char **bp)
   tcap_initialized = 1;
 }
 
+struct _term_name {
+     const char * const name;
+     size_t len;
+};
+
+/* Non-exhaustive list of ANSI/ECMA terminals. */
+static const struct _term_name ansiterms[] =
+{
+  { "xterm",   5 },
+  { "rxvt",    4 },
+  { "eterm",   5 },
+  { "screen",  6 },
+  { "tmux",    4 },
+  { "vt100",   5 },
+  { "vt102",   5 },
+  { "vt220",   5 },
+  { "vt320",   5 },
+  { "ansi",    4 },
+  { "scoansi", 7 },
+  { "cygwin",  6 },
+  { "linux",   5 },
+  { "konsole", 7 },
+  { "bvterm",  6 },
+  {  0, 0 }
+};
+
+static inline int
+iscsi (const char *s)
+{
+  return ((s[0] == ESC && s[1] == '[') ? 2
+                                      : ((unsigned char)s[0] == 0x9b) ? 1 : 0);
+}
+
+static int
+_rl_check_ansi_terminal (const char *terminal_name)
+{
+  int i;
+  size_t len;
+
+  for (i = 0; ansiterms[i].name; i++)
+    if (STREQN (terminal_name, ansiterms[i].name, ansiterms[i].len))
+      return 1;
+
+  if (_rl_term_clreol == 0 || _rl_term_forward_char == 0 ||
+      _rl_term_ho == 0 || _rl_term_up == 0)
+    return 0;
+
+  /* check some common capabilities */
+  if (((len = iscsi (_rl_term_clreol)) && _rl_term_clreol[len] == 'K') &&      /* ce */
+      ((len = iscsi (_rl_term_forward_char)) && _rl_term_forward_char[len] == 'C') &&  /* nd */
+      ((len = iscsi (_rl_term_ho)) && _rl_term_ho[len] == 'H') &&      /* ho */
+      ((len = iscsi (_rl_term_up)) && _rl_term_up[len] == 'A'))                /* up */
+    return 1;
+
+  return 0;
+}
+
 int
 _rl_init_terminal_io (const char *terminal_name)
 {
@@ -480,7 +579,10 @@ _rl_init_terminal_io (const char *terminal_name)
   if (term == 0)
     term = "dumb";
 
-  dumbterm = STREQ (term, "dumb");
+  _rl_term_isansi = RL_ANSI_TERM_DEFAULT;
+  dumbterm = STREQ (term, "dumb") || STREQ (term, "vt52") || STREQ (term, "adm3a");
+  if (dumbterm)
+    _rl_term_isansi = 0;
 
   reset_region_colors = 1;
 
@@ -492,11 +594,13 @@ _rl_init_terminal_io (const char *terminal_name)
   _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0;
   _rl_term_cr = "\r";
   _rl_term_backspace = (char *)NULL;
+  _rl_term_ho = (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;
   _rl_term_kN = _rl_term_kP = (char *)NULL;
   _rl_term_so = _rl_term_se = (char *)NULL;
+  _rl_term_BD = _rl_term_BE = _rl_term_PE = _rl_term_PS = (char *)NULL;
 #if defined(HACK_TERMCAP_MOTION)
   _rl_term_forward_char = (char *)NULL;
 #endif
@@ -553,6 +657,7 @@ _rl_init_terminal_io (const char *terminal_name)
       /* Everything below here is used by the redisplay code (tputs). */
       _rl_screenchars = _rl_screenwidth * _rl_screenheight;
       _rl_term_cr = "\r";
+      _rl_term_ho = (char *)NULL;
       _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
       _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
       _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
@@ -565,8 +670,11 @@ _rl_init_terminal_io (const char *terminal_name)
       _rl_term_so = _rl_term_se = (char *)NULL;
       _rl_terminal_can_insert = term_has_meta = 0;
 
+      _rl_term_isansi = 0;     /* not an ANSI terminal */
+
       /* Assume generic unknown terminal can't handle the enable/disable
         escape sequences */
+      _rl_term_BD = _rl_term_BE = _rl_term_PE = _rl_term_PS = (char *)NULL;
       _rl_enable_bracketed_paste = 0;
 
       /* No terminal so/se capabilities. */
@@ -625,9 +733,13 @@ _rl_init_terminal_io (const char *terminal_name)
   bind_termcap_arrow_keys (vi_insertion_keymap);
 #endif /* VI_MODE */
 
+  if (dumbterm == 0 && _rl_term_isansi == 0)
+    _rl_term_isansi = _rl_check_ansi_terminal (terminal_name);
+
   /* There's no way to determine whether or not a given terminal supports
-     bracketed paste mode, so we assume a terminal named "dumb" does not. */
-  if (dumbterm)
+     bracketed paste mode, so we assume a non-ANSI terminal (as best as we
+     can determine) does not. */
+  if (_rl_term_isansi == 0)
     _rl_enable_bracketed_paste = _rl_enable_active_region = 0;
 
   if (reset_region_colors)
diff --git a/text.c b/text.c
index a01143fc7bf95f62da937455b84981e0e671b0f5..e8d4f5f65b4112222f074a6873b1c466619a57f9 100644 (file)
--- a/text.c
+++ b/text.c
@@ -1,6 +1,6 @@
 /* text.c -- text handling commands for readline. */
 
-/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021,2023-2024 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.      
@@ -1031,7 +1031,6 @@ rl_insert (int count, int c)
       rl_executing_keyseq[rl_key_sequence_length = 0] = '\0';
       r = rl_execute_next (n);
     }
-
   return r;
 }
 
@@ -1272,11 +1271,12 @@ _rl_rubout_char (int count, int key)
       c = rl_line_buffer[--rl_point];
       rl_delete_text (rl_point, orig_point);
       /* The erase-at-end-of-line hack is of questionable merit now. */
-      if (rl_point == rl_end && ISPRINT ((unsigned char)c) && _rl_last_c_pos)
+      if (rl_point == rl_end && ISPRINT ((unsigned char)c) && _rl_last_c_pos && _rl_last_v_pos == 0)
        {
          int l;
          l = rl_character_len (c, rl_point);
-         _rl_erase_at_end_of_line (l);
+         if (_rl_last_c_pos >= l)
+           _rl_erase_at_end_of_line (l);
        }
     }
   else
@@ -1449,11 +1449,11 @@ rl_change_case (int count, int op)
   int start, next, end;
   int inword, nc, nop;
   WCHAR_T c;
+  unsigned char uc;
 #if defined (HANDLE_MULTIBYTE)
   WCHAR_T wc, nwc;
   char mb[MB_LEN_MAX+1];
-  int mlen;
-  size_t m;
+  size_t m, mlen;
   mbstate_t mps;
 #endif
 
@@ -1503,7 +1503,9 @@ rl_change_case (int count, int op)
         characters */
       if (MB_CUR_MAX == 1 || rl_byte_oriented)
        {
-         nc = (nop == UpCase) ? _rl_to_upper (c) : _rl_to_lower (c);
+change_singlebyte:
+         uc = c;
+         nc = (nop == UpCase) ? _rl_to_upper (uc) : _rl_to_lower (uc);
          rl_line_buffer[start] = nc;
        }
 #if defined (HANDLE_MULTIBYTE)
@@ -1511,9 +1513,16 @@ rl_change_case (int count, int op)
        {
          m = MBRTOWC (&wc, rl_line_buffer + start, end - start, &mps);
          if (MB_INVALIDCH (m))
-           wc = (WCHAR_T)rl_line_buffer[start];
+           {
+             c = rl_line_buffer[start];
+             next = start + 1;         /* potentially redundant */
+             goto change_singlebyte;
+           }
          else if (MB_NULLWCH (m))
-           wc = L'\0';
+           {
+             start = next;     /* don't bother with null wide characters */
+             continue;
+           }
          nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc);
          if  (nwc != wc)       /*  just skip unchanged characters */
            {
@@ -1522,12 +1531,13 @@ rl_change_case (int count, int op)
 
              memset (&ts, 0, sizeof (mbstate_t));
              mlen = WCRTOMB (mb, nwc, &ts);
-             if (mlen < 0)
+             
+             if (MB_INVALIDCH (mlen))
                {
                  nwc = wc;
                  memset (&ts, 0, sizeof (mbstate_t));
                  mlen = WCRTOMB (mb, nwc, &ts);
-                 if (mlen < 0)         /* should not happen */
+                 if (MB_INVALIDCH (mlen))              /* should not happen */
                    strncpy (mb, rl_line_buffer + start, mlen = m);
                }
              if (mlen > 0)
@@ -1928,3 +1938,455 @@ rl_mark_active_p (void)
 {
   return (mark_active);
 }
+
+/* **************************************************************** */
+/*                                                                 */
+/*           Reading a string entered from the keyboard            */
+/*                                                                 */
+/* **************************************************************** */
+
+/* A very simple set of functions to read a string from the keyboard using
+   the line buffer as temporary storage. The caller can set a completion
+   function to perform completion on TAB and SPACE. */
+
+/* XXX - this is all very similar to the search stuff but with a different
+   CXT. */
+
+static HIST_ENTRY *_rl_saved_line_for_readstr;
+_rl_readstr_cxt *_rl_rscxt;
+
+_rl_readstr_cxt *
+_rl_rscxt_alloc (int flags)
+{
+  _rl_readstr_cxt *cxt;
+
+  cxt = (_rl_readstr_cxt *)xmalloc (sizeof (_rl_readstr_cxt));
+
+  cxt->flags = flags;
+
+  cxt->save_point = rl_point;
+  cxt->save_mark = rl_mark;
+  cxt->save_line = where_history ();
+
+  cxt->prevc = cxt->lastc = 0;
+
+  cxt->compfunc = NULL;
+
+  return cxt;
+}
+
+void
+_rl_rscxt_dispose (_rl_readstr_cxt *cxt, int flags)
+{
+  xfree (cxt);
+}
+
+/* This isn't used yet */
+void
+_rl_free_saved_readstr_line ()
+{
+  if (_rl_saved_line_for_readstr)
+    /* This doesn't free any saved undo list, if it needs to,
+       rl_clear_history shows how to do it. */
+    _rl_free_saved_line (_rl_saved_line_for_readstr);
+  _rl_saved_line_for_readstr = (HIST_ENTRY *)NULL;
+}
+
+void
+_rl_unsave_saved_readstr_line ()
+{
+  if (_rl_saved_line_for_readstr)
+    {
+      _rl_free_undo_list (rl_undo_list);
+      _rl_unsave_line (_rl_saved_line_for_readstr);    /* restores rl_undo_list */
+    }
+  _rl_saved_line_for_readstr = (HIST_ENTRY *)NULL;
+}
+
+_rl_readstr_cxt *
+_rl_readstr_init (int pchar, int flags)
+{
+  _rl_readstr_cxt *cxt;
+  char *p;  
+
+  cxt = _rl_rscxt_alloc (flags);
+
+  _rl_saved_line_for_readstr = _rl_alloc_saved_line ();
+  rl_undo_list = 0;
+
+  rl_line_buffer[0] = 0;
+  rl_end = rl_point = 0;
+
+  p = _rl_make_prompt_for_search (pchar ? pchar : '@');
+  cxt->flags |= READSTR_FREEPMT;
+  rl_message ("%s", p);
+  xfree (p);
+
+  RL_SETSTATE (RL_STATE_READSTR);
+
+  _rl_rscxt = cxt;  
+
+  return cxt;
+}
+
+int
+_rl_readstr_cleanup (_rl_readstr_cxt *cxt, int r)
+{
+  _rl_rscxt_dispose (cxt, 0);
+  _rl_rscxt = 0;
+
+  RL_UNSETSTATE (RL_STATE_READSTR);
+
+  return (r != 1);
+}
+
+void
+_rl_readstr_restore (_rl_readstr_cxt *cxt)
+{
+  _rl_unsave_saved_readstr_line ();    /* restores rl_undo_list */
+  rl_point = cxt->save_point;
+  rl_mark = cxt->save_mark;
+  if (cxt->flags & READSTR_FREEPMT)
+    rl_restore_prompt ();              /* _rl_make_prompt_for_search saved it */
+  cxt->flags &= ~READSTR_FREEPMT;
+  rl_clear_message ();
+  _rl_fix_point (1);
+}
+
+int
+_rl_readstr_sigcleanup (_rl_readstr_cxt *cxt, int r)
+{
+  if (cxt->flags & READSTR_FREEPMT)
+    rl_restore_prompt ();              /* _rl_make_prompt_for_search saved it */
+  cxt->flags &= ~READSTR_FREEPMT;
+  return (_rl_readstr_cleanup (cxt, r));
+}
+  
+int   
+_rl_readstr_getchar (_rl_readstr_cxt *cxt)
+{
+  int c;   
+
+  cxt->prevc = cxt->lastc;        
+
+  /* Read a key and decide how to proceed. */
+  RL_SETSTATE(RL_STATE_MOREINPUT);
+  c = cxt->lastc = rl_read_key ();
+  RL_UNSETSTATE(RL_STATE_MOREINPUT);
+                 
+#if defined (HANDLE_MULTIBYTE)
+  /* This ends up with C (and LASTC) being set to the last byte of the
+     multibyte character.  In most cases c == lastc == mb[0] */
+  if (c >= 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+    c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX);
+#endif
+
+  RL_CHECK_SIGNALS ();
+  return c;
+}
+
+/* Process just-read character C according to readstr context CXT.  Return -1
+   if the caller should abort the read, 0 if we should break out of the
+   loop, and 1 if we should continue to read characters. This can perform
+   completion on the string read so far (stored in rl_line_buffer) if the
+   caller has set up a completion function. The completion function can
+   return -1 to indicate that we should abort the read. If we return -1
+   we will call _rl_readstr_restore to clean up the state, leaving the caller
+   to free the context. */
+int
+_rl_readstr_dispatch (_rl_readstr_cxt *cxt, int c)
+{
+  int n;
+
+  if (c < 0)
+    c = CTRL ('C');  
+
+  /* could consider looking up the function bound to they key and dispatching
+     off that, but you want most characters inserted by default without having
+     to quote. */
+  switch (c)
+    {
+    case CTRL('W'):
+      rl_unix_word_rubout (1, c);
+      break;
+
+    case CTRL('U'):
+      rl_unix_line_discard (1, c);
+      break;
+
+    case CTRL('Q'):
+    case CTRL('V'):
+      n = rl_quoted_insert (1, c);
+      if (n < 0)
+       {
+         _rl_readstr_restore (cxt);
+         return -1;
+       }
+      cxt->lastc = (rl_point > 0) ? rl_line_buffer[rl_point - 1] : rl_line_buffer[0];  /* preserve prevc */
+      break;
+
+    case RETURN:
+    case NEWLINE:
+      return 0;
+
+    case CTRL('H'):
+    case RUBOUT:
+      if (rl_point == 0)
+       {
+         _rl_readstr_restore (cxt);
+         return -1;
+       }
+      _rl_rubout_char (1, c);
+      break;
+
+    case CTRL('C'):
+    case CTRL('G'):
+      rl_ding ();
+      _rl_readstr_restore (cxt);
+      return -1;
+
+    case ESC:
+      /* Allow users to bracketed-paste text into the string.
+        Similar code is in search.c:_rl_nsearch_dispatch(). */
+      if (_rl_enable_bracketed_paste && ((n = _rl_nchars_available ()) >= (BRACK_PASTE_SLEN-1)))
+       {
+         if (_rl_read_bracketed_paste_prefix (c) == 1)
+           rl_bracketed_paste_begin (1, c);
+         else
+           {
+             c = rl_read_key ();       /* get the ESC that got pushed back */
+             _rl_insert_char (1, c);
+           }
+        }
+      else
+        _rl_insert_char (1, c);
+      break;
+
+    case ' ':
+      if ((cxt->flags & READSTR_NOSPACE) == 0)
+       {
+         _rl_insert_char (1, c);
+         break;
+       }
+    /* FALLTHROUGH */
+    case TAB:
+      /* Perform completion if the caller has set a completion function. */
+      n = (cxt->compfunc) ? (*cxt->compfunc) (cxt, c) : _rl_insert_char (1, c);
+      if (n < 0)
+       {
+         _rl_readstr_restore (cxt);
+         return -1;
+       }
+      break;
+
+#if 0
+    case CTRL('_'):
+      rl_do_undo ();
+      break;
+#endif
+
+    default:
+#if defined (HANDLE_MULTIBYTE)
+      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+       rl_insert_text (cxt->mb);
+      else
+#endif
+       _rl_insert_char (1, c);
+      break;
+    }
+
+  (*rl_redisplay_function) ();
+  rl_deactivate_mark ();
+  return 1;
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*             Reading and Executing named commands                */
+/*                                                                 */
+/* **************************************************************** */
+
+/* A completion generator for bindable readline command names. */
+static char *
+readcmd_completion_function (const char *text, int state)
+{
+  static const char **cmdlist = NULL;
+  static size_t lind, nlen;
+  const char *cmdname;
+
+  if (state == 0)
+    {
+      if (cmdlist)
+       free (cmdlist);
+
+      cmdlist = rl_funmap_names ();
+      lind = 0;
+      nlen = RL_STRLEN (text);
+    }
+  if (cmdlist == 0 || cmdlist[lind] == 0)
+    return (char *)NULL;
+
+  while (cmdlist[lind])
+    {
+      cmdname = cmdlist[lind++];
+      if (STREQN (text, cmdname, nlen))
+       return (savestring (cmdname));
+    }
+  return ((char *)NULL);
+}
+
+static void
+_rl_display_cmdname_matches (char **matches)
+{
+  size_t len, max, i;
+  int old;
+
+  old = rl_filename_completion_desired;
+  rl_filename_completion_desired = 0;
+
+  /* There is more than one match. Find out how many there are,
+     and find the maximum printed length of a single entry. */
+  for (max = 0, i = 1; matches[i]; i++)
+    {
+      len = strlen (matches[i]);
+
+      if (len > max)
+       max = len;
+    }
+  len = i - 1;
+
+  rl_display_match_list (matches, len, max);
+  rl_filename_completion_desired = old;
+
+  rl_forced_update_display ();
+  rl_display_fixed = 1;
+}
+
+static int
+_rl_readcmd_complete (_rl_readstr_cxt *cxt, int c)
+{
+  char **matches;
+  char *prefix;
+  size_t plen;
+
+  matches = rl_completion_matches (rl_line_buffer, readcmd_completion_function);
+
+  if (RL_SIG_RECEIVED())
+    {
+      _rl_free_match_list (matches);
+      matches = 0;
+      RL_CHECK_SIGNALS ();
+      return -1;
+    }
+  else if (matches == 0)
+    rl_ding ();
+
+  /* Whether or not there are multiple matches, we just want to append the
+     new characters in matches[0]. We display possible matches if we didn't
+     append anything. */
+  if (matches)
+    {
+      prefix = matches[0];
+      plen = strlen (prefix);
+
+      if (plen > rl_end)
+        {
+          size_t n;
+          for (n = rl_end; n < plen && prefix[n]; n++)
+            _rl_insert_char (1, prefix[n]);
+        }
+      else if (matches[1])
+       _rl_display_cmdname_matches (matches);
+      _rl_free_match_list (matches);
+    }
+
+  return 0;
+}
+
+/* Use the readstr functions to read a bindable command name using the
+   line buffer, with completion. */
+static char *
+_rl_read_command_name ()
+{
+  _rl_readstr_cxt *cxt;
+  char *ret;
+  int c, r;
+
+  cxt = _rl_readstr_init ('!', READSTR_NOSPACE);
+  cxt->compfunc = _rl_readcmd_complete;
+
+  /* skip callback stuff for now */
+  r = 0;
+  while (1)
+    {
+      c = _rl_readstr_getchar (cxt);
+
+      if (c < 0)
+       {
+         _rl_readstr_restore (cxt);
+         _rl_readstr_cleanup (cxt, r);
+         return NULL;
+       }
+
+      if (c == 0)
+       break;
+
+      r = _rl_readstr_dispatch (cxt, c);
+      if (r < 0)
+       {
+         _rl_readstr_cleanup (cxt, r);
+         return NULL;          /* dispatch function cleans up */
+       }
+      else if (r == 0)
+       break;
+    }
+
+  ret = savestring (rl_line_buffer);
+
+  /* Now restore the original line and perform one final redisplay. */
+  _rl_readstr_restore (cxt);
+  (*rl_redisplay_function) ();
+
+  /* And free up the context. */
+  _rl_readstr_cleanup (cxt, r);
+  return ret;
+}
+
+/* Read a command name from the keyboard and execute it as if the bound key
+   sequence had been entered. */
+int
+rl_execute_named_command (int count, int key)
+{
+  char *command;
+  rl_command_func_t *func;
+  int r;
+
+  command = _rl_read_command_name ();
+  if (command == 0 || *command == '\0')
+    {
+      free (command);
+      return 1;
+    }
+  func = rl_named_function (command);
+  free (command);
+  if (func)
+    {
+      int prev, ostate;
+
+      prev = rl_dispatching;
+      ostate = RL_ISSTATE (RL_STATE_DISPATCHING);
+      rl_dispatching = 1;
+      RL_SETSTATE (RL_STATE_DISPATCHING);      /* make sure it's set */
+      r = (*func) (count, key);
+      if (ostate == 0)
+       RL_UNSETSTATE (RL_STATE_DISPATCHING);   /* unset it if it wasn't set */
+      rl_dispatching = prev;
+    }
+  else
+    {
+      rl_ding ();
+      r = 1;
+    }
+
+  return r;
+}
diff --git a/tilde.c b/tilde.c
index d678a31ab2735a95b60906fd979e60cfe63c8056..0e82acfc59a1be2acfddc64f481270b6712834a4 100644 (file)
--- a/tilde.c
+++ b/tilde.c
@@ -1,6 +1,6 @@
 /* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
 
-/* Copyright (C) 1988-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1988-2020,2023-2024 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.
@@ -68,14 +68,6 @@ extern struct passwd *getpwnam (const char *);
 #define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
 #endif /* !savestring */
 
-#if !defined (NULL)
-#  if defined (__STDC__)
-#    define NULL ((void *) 0)
-#  else
-#    define NULL 0x0
-#  endif /* !__STDC__ */
-#endif /* !NULL */
-
 /* If being compiled as part of bash, these will be satisfied from
    variables.o.  If being compiled as part of readline, they will
    be satisfied from shell.o. */
@@ -160,8 +152,9 @@ tilde_find_prefix (const char *string, int *len)
 static int
 tilde_find_suffix (const char *string)
 {
-  register int i, j, string_len;
-  register char **suffixes;
+  int i, j;
+  size_t string_len;
+  char **suffixes;
 
   suffixes = tilde_additional_suffixes;
   string_len = strlen (string);
@@ -189,7 +182,7 @@ char *
 tilde_expand (const char *string)
 {
   char *result;
-  int result_size, result_index;
+  size_t result_size, result_index;
 
   result_index = result_size = 0;
   if (result = strchr (string, '~'))
@@ -200,7 +193,7 @@ tilde_expand (const char *string)
   /* Scan through STRING expanding tildes as we come to them. */
   while (1)
     {
-      register int start, end;
+      int start, end;
       char *tilde_word, *expansion;
       int len;
 
@@ -318,7 +311,7 @@ static char *
 glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind)
 {
   char *ret;
-  int plen, slen;
+  size_t plen, slen;
 
   plen = (prefix && *prefix) ? strlen (prefix) : 0;
   slen = strlen (suffix + suffind);
diff --git a/undo.c b/undo.c
index e4c457dce328a210c0a77e94903421f3f3251b74..492894c33c99e5fe27873006f0d4855678da1b9c 100644 (file)
--- a/undo.c
+++ b/undo.c
@@ -116,12 +116,14 @@ _rl_free_undo_list (UNDO_LIST *ul)
 void
 rl_free_undo_list (void)
 {
-  UNDO_LIST *release, *orig_list;
+  UNDO_LIST *orig_list;
 
   orig_list = rl_undo_list;
   _rl_free_undo_list (rl_undo_list);
   rl_undo_list = (UNDO_LIST *)NULL;
   _hs_replace_history_data (-1, (histdata_t *)orig_list, (histdata_t *)NULL);
+  if (_rl_saved_line_for_history && (UNDO_LIST *)_rl_saved_line_for_history->data == orig_list)
+    _rl_saved_line_for_history->data = 0;
 }
 
 UNDO_LIST *
diff --git a/util.c b/util.c
index 2e986db0a5ed34350ce5155ec66468adfc7e8de2..c8c23de53ea6211ce45718eb8e979e01e5ab8b70 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1,6 +1,6 @@
 /* util.c -- readline utility functions */
 
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.      
@@ -43,8 +43,8 @@
 #include <ctype.h>
 
 /* System-specific feature definitions and include files. */
-#include "rldefs.h"
 #include "rlmbutil.h"
+#include "rldefs.h"
 
 #if defined (TIOCSTAT_IN_SYS_IOCTL)
 #  include <sys/ioctl.h>
@@ -112,6 +112,7 @@ _rl_abort_internal (void)
   RL_UNSETSTATE (RL_STATE_MULTIKEY);   /* XXX */
 
   rl_last_func = (rl_command_func_t *)NULL;
+  _rl_command_to_execute = 0;
 
   _rl_longjmp (_rl_top_level, 1);
   return (0);
@@ -205,9 +206,9 @@ rl_tilde_expand (int ignore, int key)
   end = start;
   do
     end++;
-  while (whitespace (rl_line_buffer[end]) == 0 && end < rl_end);
+  while (end < rl_end && whitespace (rl_line_buffer[end]) == 0);
 
-  if (whitespace (rl_line_buffer[end]) || end >= rl_end)
+  if (end >= rl_end || whitespace (rl_line_buffer[end]))
     end--;
 
   /* If the first character of the current word is a tilde, perform
@@ -229,26 +230,12 @@ rl_tilde_expand (int ignore, int key)
   return (0);
 }
 
-#if defined (USE_VARARGS)
 void
-#if defined (PREFER_STDARG)
 _rl_ttymsg (const char *format, ...)
-#else
-_rl_ttymsg (va_alist)
-     va_dcl
-#endif
 {
   va_list args;
-#if defined (PREFER_VARARGS)
-  char *format;
-#endif
 
-#if defined (PREFER_STDARG)
   va_start (args, format);
-#else
-  va_start (args);
-  format = va_arg (args, char *);
-#endif
 
   fprintf (stderr, "readline: ");
   vfprintf (stderr, format, args);
@@ -261,24 +248,11 @@ _rl_ttymsg (va_alist)
 }
 
 void
-#if defined (PREFER_STDARG)
 _rl_errmsg (const char *format, ...)
-#else
-_rl_errmsg (va_alist)
-     va_dcl
-#endif
 {
   va_list args;
-#if defined (PREFER_VARARGS)
-  char *format;
-#endif
 
-#if defined (PREFER_STDARG)
   va_start (args, format);
-#else
-  va_start (args);
-  format = va_arg (args, char *);
-#endif
 
   fprintf (stderr, "readline: ");
   vfprintf (stderr, format, args);
@@ -288,28 +262,6 @@ _rl_errmsg (va_alist)
   va_end (args);
 }
 
-#else /* !USE_VARARGS */
-void
-_rl_ttymsg (format, arg1, arg2)
-     char *format;
-{
-  fprintf (stderr, "readline: ");
-  fprintf (stderr, format, arg1, arg2);
-  fprintf (stderr, "\n");
-
-  rl_forced_update_display ();
-}
-
-void
-_rl_errmsg (format, arg1, arg2)
-     char *format;
-{
-  fprintf (stderr, "readline: ");
-  fprintf (stderr, format, arg1, arg2);
-  fprintf (stderr, "\n");
-}
-#endif /* !USE_VARARGS */
-
 /* **************************************************************** */
 /*                                                                 */
 /*                     String Utility Functions                    */
@@ -321,7 +273,8 @@ _rl_errmsg (format, arg1, arg2)
 char *
 _rl_strindex (const char *s1, const char *s2)
 {
-  register int i, l, len;
+  int i;
+  size_t l, len;
 
   for (i = 0, l = strlen (s2), len = strlen (s1); (len - i) >= l; i++)
     if (_rl_strnicmp (s1 + i, s2, l) == 0)
@@ -329,16 +282,17 @@ _rl_strindex (const char *s1, const char *s2)
   return ((char *)NULL);
 }
 
-#ifndef HAVE_STRPBRK
+#if !defined (HAVE_STRPBRK) || defined (HANDLE_MULTIBYTE)
 /* Find the first occurrence in STRING1 of any character from STRING2.
-   Return a pointer to the character in STRING1. */
+   Return a pointer to the character in STRING1. Understands multibyte
+   characters. */
 char *
 _rl_strpbrk (const char *string1, const char *string2)
 {
   register const char *scan;
 #if defined (HANDLE_MULTIBYTE)
   mbstate_t ps;
-  register int i, v;
+  int v;
 
   memset (&ps, 0, sizeof (mbstate_t));
 #endif
@@ -417,6 +371,48 @@ _rl_stricmp (const char *string1, const char *string2)
 }
 #endif /* !HAVE_STRCASECMP */
 
+/* Compare the first N characters of S1 and S2 without regard to case. If
+   FLAGS&1, apply the mapping specified by completion-map-case and make
+   `-' and `_' equivalent. Returns 1 if the strings are equal. */
+int
+_rl_strcaseeqn(const char *s1, const char *s2, size_t n, int flags)
+{
+  int c1, c2;
+  int d;
+
+  if ((flags & 1) == 0)
+    return (_rl_strnicmp (s1, s2, n) == 0);
+
+  do
+    {
+      c1 = _rl_to_lower (*s1);
+      c2 = _rl_to_lower (*s2);
+
+      d = c1 - c2;
+      if ((*s1 == '-' || *s1 == '_') && (*s2 == '-' || *s2 == '_'))
+       d = 0;          /* case insensitive character mapping */
+      if (d != 0)
+       return 0;
+      s1++;
+      s2++;
+      n--;
+    }
+  while (n != 0);
+
+  return 1;
+}
+
+/* Return 1 if the characters C1 and C2 are equal without regard to case.
+   If FLAGS&1, apply the mapping specified by completion-map-case and make
+   `-' and `_' equivalent. */
+int
+_rl_charcasecmp (int c1, int c2, int flags)
+{
+  if ((flags & 1) && (c1 == '-' || c1 == '_') && (c2 == '-' || c2 == '_'))
+    return 1;
+  return ( _rl_to_lower (c1) == _rl_to_lower (c2));
+}
+
 /* Stupid comparison routine for qsort () ing strings. */
 int
 _rl_qsort_string_compare (char **s1, char **s2)
@@ -464,28 +460,14 @@ _rl_savestring (const char *s)
 }
 
 #if defined (DEBUG)
-#if defined (USE_VARARGS)
 static FILE *_rl_tracefp;
 
 void
-#if defined (PREFER_STDARG)
 _rl_trace (const char *format, ...)
-#else
-_rl_trace (va_alist)
-     va_dcl
-#endif
 {
   va_list args;
-#if defined (PREFER_VARARGS)
-  char *format;
-#endif
 
-#if defined (PREFER_STDARG)
   va_start (args, format);
-#else
-  va_start (args);
-  format = va_arg (args, char *);
-#endif
 
   if (_rl_tracefp == 0)
     _rl_tropen ();
@@ -531,7 +513,6 @@ _rl_settracefp (FILE *fp)
 {
   _rl_tracefp = fp;
 }
-#endif
 #endif /* DEBUG */
 
 
@@ -556,7 +537,10 @@ _rl_audit_tty (char *string)
   size = strlen (string) + 1;
 
   if (NLMSG_SPACE (size) > MAX_AUDIT_MESSAGE_LENGTH)
-    return;
+    {
+      close (fd);
+      return;
+    }
 
   memset (&req, 0, sizeof(req));
   req.nlh.nlmsg_len = NLMSG_SPACE (size);
index 3a033bab46f8eb9c3eca32145adc0fe325bdf0be..4028c08eb7aa78a934828508ed8f4d62fe8b6fea 100644 (file)
--- 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-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021,2023 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.      
 #define INCREMENT_POS(start)    (start)++
 #endif /* !HANDLE_MULTIBYTE */
 
+/* Flags for the motion context */
+#define MOVE_SUCCESS   0
+#define MOVE_FAILED    0x01
+
 /* 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 */
@@ -101,9 +105,8 @@ static int vi_replace_count;
 /* If non-zero, we have text inserted after a c[motion] command that put
    us implicitly into insert mode.  Some people want this text to be
    attached to the command so that it is `redoable' with `.'. */
-static int vi_continued_command;
 static char *vi_insert_buffer;
-static int vi_insert_buffer_size;
+static size_t vi_insert_buffer_size;
 
 static int _rl_vi_last_repeat = 1;
 static int _rl_vi_last_arg_sign = 1;
@@ -364,12 +367,12 @@ rl_vi_search (int count, int key)
   switch (key)
     {
     case '?':
-      _rl_free_saved_history_line ();
+      _rl_free_saved_search_line ();           /* just in case */
       rl_noninc_forward_search (count, key);
       break;
 
     case '/':
-      _rl_free_saved_history_line ();
+      _rl_free_saved_search_line ();
       rl_noninc_reverse_search (count, key);
       break;
 
@@ -1087,6 +1090,7 @@ _rl_vi_arg_dispatch (int c)
     }
   else
     {
+      rl_restore_prompt ();
       rl_clear_message ();
       rl_stuff_char (key);
       return 0;                /* done */
@@ -1150,10 +1154,27 @@ _rl_mvcxt_dispose (_rl_vimotion_cxt *m)
   xfree (m);
 }
 
+static inline int
+vi_charsearch_command (int c)
+{
+  switch (c)
+    {
+    case 'f':
+    case 'F':
+    case 't':
+    case 'T':
+    case ';':
+    case ',':
+      return 1;
+    default:
+      return 0;
+    }
+}
+
 static int
 rl_domove_motion_callback (_rl_vimotion_cxt *m)
 {
-  int c;
+  int c, r, opoint;
 
   _rl_vi_last_motion = c = m->motion;
 
@@ -1163,8 +1184,15 @@ rl_domove_motion_callback (_rl_vimotion_cxt *m)
   rl_extend_line_buffer (rl_end + 1);
   rl_line_buffer[rl_end++] = ' ';
   rl_line_buffer[rl_end] = '\0';
+  opoint = rl_point;
+
+  r = _rl_dispatch (c, _rl_keymap);
 
-  _rl_dispatch (c, _rl_keymap);
+  /* Note in the context that the motion command failed. Right now we only do
+     this for unsuccessful searches (ones where _rl_dispatch returns non-zero
+     and point doesn't move). */
+  if (r != 0 && rl_point == opoint && vi_charsearch_command (c))
+    m->flags |= MOVE_FAILED;
 
 #if defined (READLINE_CALLBACKS)
   if (RL_ISSTATE (RL_STATE_CALLBACK))
@@ -1199,7 +1227,15 @@ _rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m)
     {
       /* 'c' and 'C' enter insert mode after the delete even if the motion
         didn't delete anything, as long as the motion command is valid. */
-      if (_rl_to_upper (m->key) == 'C' && _rl_vi_motion_command (c))
+      if (_rl_to_upper (m->key) == 'C' && _rl_vi_motion_command (c) && (m->flags & MOVE_FAILED) == 0)
+       return (vidomove_dispatch (m));
+      /* 'd' and 'D' must delete at least one character even if the motion
+        command doesn't move the cursor. */
+      if (_rl_to_upper (m->key) == 'D' && _rl_vi_motion_command (c) && (m->flags & MOVE_FAILED) == 0)
+       return (vidomove_dispatch (m));
+      /* 'y' and 'Y' must yank at least one character even if the motion
+        command doean't move the cursor. */
+      if (_rl_to_upper (m->key) == 'Y' && _rl_vi_motion_command (c) && (m->flags & MOVE_FAILED) == 0)
        return (vidomove_dispatch (m));
       RL_UNSETSTATE (RL_STATE_VIMOTION);
       return (-1);
@@ -1285,7 +1321,7 @@ rl_domove_read_callback (_rl_vimotion_cxt *m)
   /* Readine vi motion char starting numeric argument */
   else if (_rl_digit_p (c) && RL_ISSTATE (RL_STATE_CALLBACK) && RL_ISSTATE (RL_STATE_VIMOTION) && (RL_ISSTATE (RL_STATE_NUMERICARG) == 0))
     {
-      RL_SETSTATE (RL_STATE_NUMERICARG);
+      _rl_arg_init ();
       return (_rl_vi_arg_dispatch (c));
     }
 #endif
@@ -1295,7 +1331,7 @@ rl_domove_read_callback (_rl_vimotion_cxt *m)
       save = rl_numeric_arg;
       rl_numeric_arg = _rl_digit_value (c);
       rl_explicit_arg = 1;
-      RL_SETSTATE (RL_STATE_NUMERICARG);
+      _rl_arg_init ();
       rl_digit_loop1 ();
       rl_numeric_arg *= save;
       c = rl_vi_domove_getchar (m);
@@ -1304,6 +1340,13 @@ rl_domove_read_callback (_rl_vimotion_cxt *m)
          m->motion = 0;
          return -1;
        }
+      else if (member (c, vi_motion) == 0)
+       {
+         m->motion = 0;
+         RL_UNSETSTATE (RL_STATE_VIMOTION);
+         RL_UNSETSTATE (RL_STATE_NUMERICARG);
+         return (1);
+       }  
       m->motion = c;
       return (rl_domove_motion_callback (m));
     }
@@ -1328,6 +1371,7 @@ _rl_vi_domove_callback (_rl_vimotion_cxt *m)
   int c, r;
 
   m->motion = c = rl_vi_domove_getchar (m);
+
   if (c < 0)
     return 1;          /* EOF */
   r = rl_domove_read_callback (m);
@@ -1340,7 +1384,6 @@ _rl_vi_domove_callback (_rl_vimotion_cxt *m)
 int
 rl_vi_domove (int x, int *ignore)
 {
-  int r;
   _rl_vimotion_cxt *m;
 
   m = _rl_vimvcxt;
@@ -1381,7 +1424,11 @@ rl_vi_delete_to (int count, int key)
       _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key);
     }
   else if (_rl_vimvcxt)
-    _rl_mvcxt_init (_rl_vimvcxt, VIM_DELETE, key);
+    {
+      /* are we being called recursively or by `y' or `c'? */
+      savecxt = _rl_vimvcxt;
+      _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key);
+    }
   else
     _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key);
 
@@ -1480,7 +1527,11 @@ rl_vi_change_to (int count, int key)
       _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key);
     }
   else if (_rl_vimvcxt)
-    _rl_mvcxt_init (_rl_vimvcxt, VIM_CHANGE, key);
+    {
+      /* are we being called recursively or by `y' or `d'? */
+      savecxt = _rl_vimvcxt;
+      _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key);
+    }      
   else
     _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key);
   _rl_vimvcxt->start = rl_point;
@@ -1559,7 +1610,11 @@ rl_vi_yank_to (int count, int key)
       _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key);
     }
   else if (_rl_vimvcxt)
-    _rl_mvcxt_init (_rl_vimvcxt, VIM_YANK, key);
+    {
+      /* are we being called recursively or by `c' or `d'? */
+      savecxt = _rl_vimvcxt;
+      _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key);
+    }      
   else
     _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key);
   _rl_vimvcxt->start = rl_point;
@@ -1778,6 +1833,7 @@ _rl_vi_callback_char_search (_rl_callback_generic_arg *data)
 
   if (c <= 0)
     {
+      /* XXX - unset _rl_callback_func here? */
       RL_UNSETSTATE (RL_STATE_CHARSEARCH);
       return -1;
     }
index 5d01d75eaeff07805e10fb512dc70949a59c6040..35e46eafea829a01f68d2fed6d0dab2c884dfc7a 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -42,7 +42,7 @@
 /* **************************************************************** */
 
 static void
-memory_error_and_abort (char *fname)
+memory_error_and_abort (const char * const fname)
 {
   fprintf (stderr, "%s: out of virtual memory\n", fname);
   exit (2);
index 0fb9df9c00b4973c61da6f53a5519505e4dc6ae5..c8198044eebff764f620249cbeb1111c0802eebd 100644 (file)
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -1,6 +1,6 @@
 /* xmalloc.h -- memory allocation that aborts on errors. */
 
-/* Copyright (C) 1999-2009,2010-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2009,2010-2023 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.      
 #endif
 
 #ifndef PTR_T
-
-#ifdef __STDC__
-#  define PTR_T        void *
-#else
-#  define PTR_T        char *
-#endif
-
+#  define PTR_T void *
 #endif /* !PTR_T */
 
 extern PTR_T xmalloc (size_t);