summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG17
-rw-r--r--CHANGES116
-rw-r--r--INSTALL2
-rw-r--r--MANIFEST13
-rw-r--r--Makefile.in7
-rw-r--r--NEWS36
-rw-r--r--aclocal.m4132
-rw-r--r--ansi_stdlib.h8
-rw-r--r--bind.c395
-rw-r--r--callback.c20
-rw-r--r--chardefs.h2
-rw-r--r--colors.c2
-rw-r--r--complete.c321
-rw-r--r--config.h.in33
-rwxr-xr-xconfigure64
-rw-r--r--configure.ac11
-rw-r--r--display.c313
-rw-r--r--doc/Makefile.in2
-rw-r--r--doc/history.0593
-rw-r--r--doc/history.3371
-rw-r--r--doc/history.dvibin72280 -> 73452 bytes
-rw-r--r--doc/history.html1068
-rw-r--r--doc/history.info304
-rw-r--r--doc/history.pdfbin204504 -> 205594 bytes
-rw-r--r--doc/history.ps1014
-rw-r--r--doc/history.texi2
-rw-r--r--doc/history_3.ps1195
-rw-r--r--doc/hstech.texi9
-rw-r--r--doc/hsuser.texi49
-rw-r--r--doc/readline.01134
-rw-r--r--doc/readline.3319
-rw-r--r--doc/readline.dvibin333112 -> 337892 bytes
-rw-r--r--doc/readline.html4700
-rw-r--r--doc/readline.info2120
-rw-r--r--doc/readline.pdfbin406480 -> 409053 bytes
-rw-r--r--doc/readline.ps5470
-rw-r--r--doc/readline_3.ps2609
-rw-r--r--doc/rltech.texi156
-rw-r--r--doc/rluser.texi131
-rw-r--r--doc/rluserman.dvibin118796 -> 119256 bytes
-rw-r--r--doc/rluserman.html1375
-rw-r--r--doc/rluserman.info906
-rw-r--r--doc/rluserman.pdfbin237019 -> 237176 bytes
-rw-r--r--doc/rluserman.ps1386
-rw-r--r--doc/version.texi12
-rw-r--r--emacs_keymap.c2
-rw-r--r--examples/Makefile.in13
-rw-r--r--examples/autoconf/BASH_CHECK_LIB_TERMCAP5
-rw-r--r--examples/excallback.c2
-rw-r--r--examples/fileman.c170
-rw-r--r--examples/hist_erasedups.c10
-rw-r--r--examples/hist_purgecmd.c12
-rw-r--r--examples/histexamp.c10
-rw-r--r--examples/manexamp.c42
-rw-r--r--examples/rl-timeout.c12
-rw-r--r--examples/rl.c14
-rw-r--r--examples/rlcat.c18
-rw-r--r--examples/rlevent.c10
-rw-r--r--examples/rlptytest.c19
-rw-r--r--examples/rltest.c6
-rw-r--r--funmap.c9
-rw-r--r--histexpand.c65
-rw-r--r--histfile.c118
-rw-r--r--histlib.h13
-rw-r--r--history.c161
-rw-r--r--history.h12
-rw-r--r--histsearch.c109
-rw-r--r--input.c68
-rw-r--r--isearch.c92
-rw-r--r--kill.c32
-rw-r--r--m4/codeset.m42
-rw-r--r--macro.c2
-rw-r--r--mbutil.c121
-rw-r--r--misc.c175
-rw-r--r--parens.c5
-rw-r--r--parse-colors.c45
-rw-r--r--patchlevel2
-rw-r--r--posixselect.h4
-rw-r--r--posixtime.h13
-rw-r--r--readline.c60
-rw-r--r--readline.h105
-rw-r--r--rlconf.h5
-rw-r--r--rldefs.h16
-rw-r--r--rlmbutil.h32
-rw-r--r--rlprivate.h78
-rw-r--r--rlstdc.h14
-rw-r--r--rltty.c32
-rw-r--r--rltypedefs.h16
-rw-r--r--search.c173
-rw-r--r--shell.c4
-rw-r--r--signals.c22
-rw-r--r--support/config.guess102
-rwxr-xr-x[-rw-r--r--]support/config.rpath6
-rw-r--r--support/config.sub239
-rwxr-xr-x[-rw-r--r--]support/install.sh0
-rwxr-xr-x[-rw-r--r--]support/mkdirs0
-rwxr-xr-x[-rw-r--r--]support/mkinstalldirs0
-rwxr-xr-x[-rw-r--r--]support/shlib-install0
-rw-r--r--support/shobj-conf20
-rw-r--r--support/wcwidth.c277
-rw-r--r--tcap.h14
-rw-r--r--terminal.c99
-rw-r--r--text.c525
-rw-r--r--tilde.c21
-rw-r--r--undo.c4
-rw-r--r--util.c116
-rw-r--r--vi_mode.c83
-rw-r--r--xmalloc.c2
-rw-r--r--xmalloc.h10
109 files changed, 16271 insertions, 13614 deletions
diff --git a/CHANGELOG b/CHANGELOG
index b2fcb53..8dc36fc 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1448,3 +1448,20 @@ 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
diff --git a/CHANGES b/CHANGES
index eb54caa..746a250 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,119 @@
+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.
+
+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.
+
+-------------------------------------------------------------------------------
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 293ef70..9960c07 100644
--- 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:
diff --git a/MANIFEST b/MANIFEST
index db689b3..ea28c11 100644
--- 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
@@ -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
diff --git a/Makefile.in b/Makefile.in
index 2120daa..6c9de8b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -120,7 +120,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 +139,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
@@ -454,6 +454,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 1d88606..033c560 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,39 @@
+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.
+
+-------------------------------------------------------------------------------
This is a terse description of the new features added to readline-8.2 since
the release of readline-8.1.
diff --git a/aclocal.m4 b/aclocal.m4
index cc97bd4..ac42dbf 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -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-2024 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;
@@ -986,6 +955,9 @@ 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=
@@ -1345,15 +1317,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 +1338,7 @@ set_signal_handler(sig, handler)
#endif
void
-sigint(s)
-int s;
+sigint(int s)
{
nsigint++;
}
@@ -1607,13 +1576,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 +1601,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 +1732,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 +1745,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 +1810,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 +2070,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 +2117,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 +2191,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,
diff --git a/ansi_stdlib.h b/ansi_stdlib.h
index 7dc2ee0..3cb3e07 100644
--- a/ansi_stdlib.h
+++ b/ansi_stdlib.h
@@ -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 2596006..af3d70e 100644
--- a/bind.c
+++ b/bind.c
@@ -1,6 +1,6 @@
/* bind.c -- key binding and startup file support for the readline library. */
-/* Copyright (C) 1987-2022 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.
@@ -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 *);
@@ -531,8 +526,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
@@ -629,11 +623,17 @@ rl_translate_keyseq (const char *seq, char *array, int *len)
has_meta = 0;
}
- /* If convert-meta is turned on, convert a meta char to a key sequence */
+ /* If convert-meta is turned on, convert a meta char to a key sequence */
if (META_CHAR (c) && _rl_convert_meta_chars_to_ascii)
{
- 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);
@@ -685,7 +685,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 +697,22 @@ rl_untranslate_keyseq (int seq)
kseq[i++] = '-';
c = UNMETA (c);
}
- else if (c == ESC)
+
+ if (c == ESC)
{
kseq[i++] = '\\';
c = 'e';
}
- else if (CTRL_CHAR (c))
- {
- kseq[i++] = '\\';
- kseq[i++] = 'C';
- kseq[i++] = '-';
- c = _rl_to_lower (UNCTRL (c));
- }
- else if (c == RUBOUT)
+ else if (CTRL_CHAR (c) || 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 +723,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 +736,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 +763,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;
@@ -889,21 +874,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 +910,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 +933,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;
@@ -978,11 +968,20 @@ _rl_read_file (char *filename, size_t *sizep)
char *buffer;
int i, file;
- file = -1;
- if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0))
+ file = open (filename, O_RDONLY, 0666);
+ /* If the open is interrupted, retry once */
+ if (file < 0 && errno == EINTR)
{
+ RL_CHECK_SIGNALS ();
+ file = open (filename, O_RDONLY, 0666);
+ }
+
+ if ((file < 0) || (fstat (file, &finfo) < 0))
+ {
+ i = errno;
if (file >= 0)
close (file);
+ errno = i;
return ((char *)NULL);
}
@@ -991,10 +990,13 @@ _rl_read_file (char *filename, size_t *sizep)
/* check for overflow on very large files */
if (file_size != finfo.st_size || file_size + 1 < file_size)
{
+ i = errno;
if (file >= 0)
close (file);
#if defined (EFBIG)
errno = EFBIG;
+#else
+ errno = i;
#endif
return ((char *)NULL);
}
@@ -1129,25 +1131,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,
@@ -1245,7 +1233,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. */
@@ -1670,7 +1658,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. */
@@ -1848,7 +1835,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)
@@ -1915,6 +1902,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 },
@@ -2593,17 +2581,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)
@@ -2613,28 +2597,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
@@ -2676,7 +2655,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;
@@ -2712,53 +2691,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)
{
@@ -2766,10 +2716,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;
@@ -2786,73 +2742,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 ();
+ function = rl_named_function (name);
+ invokers = rl_invoking_keyseqs_in_map (function, kmap ? kmap : _rl_keymap);
- fprintf (rl_outstream, "\n");
-
- 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);
}
@@ -2873,9 +2828,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++)
{
@@ -2885,6 +2840,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,
@@ -2948,10 +2913,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)
{
@@ -2968,24 +2963,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)
@@ -3012,7 +3023,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)
diff --git a/callback.c b/callback.c
index 7209ec3..180b683 100644
--- a/callback.c
+++ b/callback.c
@@ -1,6 +1,6 @@
/* callback.c -- functions to use readline as an X `callback' mechanism. */
-/* Copyright (C) 1987-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);
diff --git a/chardefs.h b/chardefs.h
index 24a25f1..02f7e17 100644
--- a/chardefs.h
+++ b/chardefs.h
@@ -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)
diff --git a/colors.c b/colors.c
index 4212c64..28ed7bc 100644
--- 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
diff --git a/complete.c b/complete.c
index 70a0a60..f564a47 100644
--- a/complete.c
+++ b/complete.c
@@ -1,6 +1,6 @@
/* complete.c -- filename completion for readline. */
-/* 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.
@@ -77,11 +77,7 @@ extern int errno;
# include "colors.h"
#endif
-#ifdef __STDC__
typedef int QSFUNC (const void *, const void *);
-#else
-typedef int QSFUNC ();
-#endif
#ifdef HAVE_LSTAT
# define LSTAT lstat
@@ -250,11 +246,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 +349,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 +473,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,6 +503,32 @@ 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 */
@@ -498,16 +543,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 +551,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 = ' ';
@@ -1319,6 +1355,7 @@ 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 len1, len2;
#if defined (HANDLE_MULTIBYTE)
int v;
size_t v1, v2;
@@ -1345,6 +1382,9 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
memset (&ps2, 0, sizeof (mbstate_t));
}
#endif
+ len1 = strlen (match_list[i]);
+ len2 = strlen (match_list[i + 1]);
+
for (si = 0; (c1 = match_list[i][si]) && (c2 = match_list[i + 1][si]); si++)
{
if (_rl_completion_case_fold)
@@ -1355,8 +1395,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]+si, len1 - si, &ps1);
+ v2 = MBRTOWC (&wc2, match_list[i+1]+si, len2 - si, &ps2);
if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2))
{
if (c1 != c2) /* do byte comparison */
@@ -1412,10 +1452,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;
@@ -1630,7 +1668,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 +1696,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 +1783,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 +1808,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 +1822,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 +1834,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 +2020,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);
@@ -2001,10 +2044,11 @@ 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 +2083,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);
@@ -2084,6 +2127,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 +2162,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 +2192,11 @@ 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;
default:
@@ -2176,6 +2209,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 +2277,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 +2342,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 +2359,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 +2387,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 +2398,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 +2406,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)
- {
- /* Case-insensitive comparison treating _ and - as equivalent */
-#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 (_rl_completion_case_fold)
{
+ /* 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;
- 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 +2447,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 +2557,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 +2581,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 +2599,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)
@@ -2847,7 +2834,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. */
@@ -2943,7 +2930,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);
diff --git a/config.h.in b/config.h.in
index 521e778..dd0a956 100644
--- a/config.h.in
+++ b/config.h.in
@@ -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 */
@@ -87,6 +105,15 @@
/* 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
@@ -146,6 +173,12 @@
/* 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
diff --git a/configure b/configure
index cb4e07a..8fec71f 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.ac for Readline 8.2, version 2.97.
+# From configure.ac for Readline 8.3, version 2.98.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for readline 8.2.
+# Generated by GNU Autoconf 2.71 for readline 8.3.
#
# Report bugs to <bug-readline@gnu.org>.
#
@@ -612,8 +612,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=''
@@ -1317,7 +1317,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]...
@@ -1383,7 +1383,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
@@ -1487,7 +1487,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-readline configure 8.2
+readline configure 8.3
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2144,7 +2144,7 @@ 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
+It was created by readline $as_me 8.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -2909,7 +2909,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h"
-LIBVERSION=8.2
+LIBVERSION=8.3
@@ -4296,7 +4296,8 @@ fi
# 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
@@ -6166,15 +6167,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 +6188,7 @@ set_signal_handler(sig, handler)
#endif
void
-sigint(s)
-int s;
+sigint(int s)
{
nsigint++;
}
@@ -6376,9 +6374,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;
@@ -7305,6 +7301,9 @@ 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=
@@ -7421,7 +7420,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 +7431,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 :
@@ -7497,6 +7503,13 @@ 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
@@ -7727,14 +7740,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 */
}
@@ -8424,7 +8438,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by readline $as_me 8.2, which was
+This file was extended by readline $as_me 8.3, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8492,7 +8506,7 @@ 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
+readline config.status 8.3
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 15501fa..4604750 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@ dnl report bugs to chet@po.cwru.edu
dnl
dnl Process this file with autoconf to produce a configure script.
-# Copyright (C) 1987-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.98])
-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,7 +118,8 @@ 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
diff --git a/display.c b/display.c
index 803d4ce..1c486f1 100644
--- 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-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.
@@ -59,10 +59,6 @@
#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, prompt_lines_estimate;
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,6 +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. */
+ /* 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 */
/* This is zero-based, used to set the newlines */
prompt_lines_estimate = lpos / _rl_screenwidth;
@@ -982,6 +1031,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 +1094,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 +1105,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.3 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 +1302,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 +1316,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 +1397,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,7 +1467,7 @@ 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. */
@@ -1413,6 +1492,7 @@ rl_redisplay (void)
only need to reprint it if the cursor is before the last
invisible character in the prompt string. */
/* XXX - why not use local_prompt_len? */
+ /* XXX - This is right only if the prompt is a single line. */
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)
@@ -1895,6 +1975,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 +2063,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 +2084,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 +2102,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 +2164,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 +2244,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 +2288,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 +2307,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 +2332,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 +2802,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 +2883,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 +2986,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 +3088,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 +3109,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 +3140,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 +3181,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 +3198,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 +3217,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 +3405,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 +3414,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); */
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 20a3618..a6640cb 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -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
diff --git a/doc/history.0 b/doc/history.0
index 2bf3b1a..7abcb7d 100644
--- a/doc/history.0
+++ b/doc/history.0
@@ -1,23 +1,21 @@
-HISTORY(3) Library Functions Manual HISTORY(3)
+_H_I_S_T_O_R_Y(3) Library Functions Manual _H_I_S_T_O_R_Y(3)
-
-
-NAME
+NNAAMMEE
history - GNU History Library
-COPYRIGHT
- The GNU History Library is Copyright (C) 1989-2020 by the Free Software
+CCOOPPYYRRIIGGHHTT
+ The GNU History Library is Copyright (C) 1989-2024 by the Free Software
Foundation, Inc.
-DESCRIPTION
- 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
+DDEESSCCRRIIPPTTIIOONN
+ 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
composing new ones.
-HISTORY EXPANSION
- The history library supports a history expansion feature that is iden-
- tical to the history expansion in bash. This section describes what
+HHIISSTTOORRYY EEXXPPAANNSSIIOONN
+ The history library supports a history expansion feature that is iden-
+ tical to the history expansion in bbaasshh. This section describes what
syntax features are available.
History expansions introduce words from the history list into the input
@@ -25,141 +23,151 @@ 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 event, and the portions
- of that line that are acted upon are words. Various modifiers are
+ 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_v_e_n_t, and the portions
+ of that line that are acted upon are _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are
available to manipulate the selected words. The line is broken into
- words in the same fashion as bash does 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 history_tokenize()
- below). History expansions are introduced by the appearance of the
- history expansion character, which is ! by default. Only backslash (\)
- and single quotes can quote the history expansion character.
-
- Event Designators
+ words in the same fashion as bbaasshh does 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 hhiissttoorryy__ttookkeenniizzee(())
+ below).
+
+ History expansions are introduced by the appearance of the history ex-
+ pansion character, which is !! by default. Only backslash (\\) and sin-
+ gle quotes can quote the history expansion character.
+
+ There is a special abbreviation for substitution, active when the _q_u_i_c_k
+ _s_u_b_s_t_i_t_u_t_i_o_n 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 line.
+ It is described below under EEvveenntt DDeessiiggnnaattoorrss. This is the only his-
+ tory expansion that does not begin with the history expansion charac-
+ ter.
+
+ EEvveenntt DDeessiiggnnaattoorrss
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.
- ! Start a history substitution, except when followed by a blank,
+ !! Start a history substitution, except when followed by a bbllaannkk,
newline, = or (.
- !n Refer to command line n.
- !-n Refer to the current command minus n.
- !! Refer to the previous command. This is a synonym for `!-1'.
- !string
+ !!_n Refer to command line _n.
+ !!--_n Refer to the current command minus _n.
+ !!!! Refer to the previous command. This is a synonym for "!-1".
+ !!_s_t_r_i_n_g
Refer to the most recent command preceding the current position
- in the history list starting with string.
- !?string[?]
+ in the history list starting with _s_t_r_i_n_g.
+ !!??_s_t_r_i_n_g[[??]]
Refer to the most recent command preceding the current position
- in the history list containing string. The trailing ? may be
- omitted if string is followed immediately by a newline. If
- string is missing, the string from the most recent search is
+ in the history list containing _s_t_r_i_n_g. The trailing ?? may be
+ omitted if _s_t_r_i_n_g is followed immediately by a newline. If
+ _s_t_r_i_n_g is missing, the string from the most recent search is
used; it is an error if there is no previous search string.
- ^string1^string2^
- Quick substitution. Repeat the last command, replacing string1
- with string2. Equivalent to ``!!:s^string1^string2^'' (see Mod-
- ifiers below).
- !# The entire command line typed so far.
-
- Word Designators
- Word designators are used to select desired words from the event. A :
+ ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^
+ Quick substitution. Repeat the last command, replacing _s_t_r_i_n_g_1
+ with _s_t_r_i_n_g_2. Equivalent to "!!:s^_s_t_r_i_n_g_1^_s_t_r_i_n_g_2^" (see MMooddii--
+ ffiieerrss below).
+ !!## The entire command line typed so far.
+
+ WWoorrdd DDeessiiggnnaattoorrss
+ 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
+ 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 sepa-
rated by single spaces.
- 0 (zero)
+ 00 ((zzeerroo))
The zeroth word. For the shell, this is the command word.
- n The nth word.
- ^ The first argument. That is, word 1.
- $ The last word. This is usually the last argument, but will ex-
+ _n The _nth word.
+ ^^ The first argument. That is, word 1.
+ $$ The 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.
- % The first word matched by the most recent `?string?' search, if
- the search string begins with a character that is part of a
+ %% The first word matched by the most recent "?_s_t_r_i_n_g?" search, if
+ the search string begins with a character that is part of a
word.
- x-y A range of words; `-y' abbreviates `0-y'.
- * All of the words but the zeroth. This is a synonym for `1-$'.
- It is not an error to use * if there is just one word in the
+ _x--_y A range of words; "-_y" abbreviates "0-_y".
+ ** All of the words but the zeroth. This is a synonym for "_1_-_$".
+ It is not an error to use ** if there is just one word in the
event; the empty string is returned in that case.
- x* Abbreviates x-$.
- x- Abbreviates x-$ like x*, but omits the last word. If x is miss-
+ xx** Abbreviates _x_-_$.
+ xx-- Abbreviates _x_-_$ like xx**, but omits the last word. If xx 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.
- Modifiers
+ MMooddiiffiieerrss
After the optional word designator, there may appear a sequence of one
- or more of the following modifiers, each preceded by a `:'. These mod-
+ or more of the following modifiers, each preceded by a ":". These mod-
ify, or edit, the word or words selected from the history event.
- h Remove a trailing file name component, leaving only the head.
- t Remove all leading file name components, leaving the tail.
- r Remove a trailing suffix of the form .xxx, leaving the basename.
- e Remove all but the trailing suffix.
- p Print the new command but do not execute it.
- q Quote the substituted words, escaping further substitutions.
- x Quote the substituted words as with q, but break into words at
- blanks and newlines. The q and x modifiers are mutually exclu-
+ hh Remove a trailing file name component, leaving only the head.
+ tt Remove all leading file name components, leaving the tail.
+ rr Remove a trailing suffix of the form _._x_x_x, leaving the basename.
+ ee Remove all but the trailing suffix.
+ pp Print the new command but do not execute it.
+ qq Quote the substituted words, escaping further substitutions.
+ xx Quote the substituted words as with qq, but break into words at
+ bbllaannkkss and newlines. The qq and xx modifiers are mutually exclu-
sive; the last one supplied is used.
- s/old/new/
- Substitute new for the first occurrence of old in the event
+ ss//_o_l_d//_n_e_w//
+ Substitute _n_e_w for the first occurrence of _o_l_d 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 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 substi-
- tutions took place, the last string in a !?string[?] search.
- If new is null, each matching old is deleted.
- & Repeat the previous substitution.
- g Cause changes to be applied over the entire event line. This is
- used in conjunction with `:s' (e.g., `:gs/old/new/') or `:&'.
- If used with `:s', 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 a may be used as a synonym for g.
- G Apply the following `s' or `&' modifier once to each word in the
+ the event line. The delimiter may be quoted in _o_l_d and _n_e_w with
+ a single backslash. If & appears in _n_e_w, it is replaced by _o_l_d.
+ A single backslash will quote the &. If _o_l_d is null, it is set
+ to the last _o_l_d substituted, or, if no previous history substi-
+ tutions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search.
+ If _n_e_w is null, each matching _o_l_d is deleted.
+ && Repeat the previous substitution.
+ gg Cause changes to be applied over the entire event line. This is
+ used in conjunction with "::ss" (e.g., "::ggss//_o_l_d//_n_e_w//") or "::&&".
+ If used with "::ss", 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 aa may be used as a synonym for gg.
+ GG Apply the following "ss" or "&&" modifier once to each word in the
event line.
-PROGRAMMING WITH HISTORY FUNCTIONS
+PPRROOGGRRAAMMMMIINNGG WWIITTHH HHIISSTTOORRYY FFUUNNCCTTIIOONNSS
This section describes how to use the History library in other pro-
grams.
- Introduction to History
+ IInnttrroodduuccttiioonn ttoo HHiissttoorryy
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 expansion function is avail-
- able which provides for a consistent user interface across different
+ the list directly. In addition, a history _e_x_p_a_n_s_i_o_n function is avail-
+ able which provides for a consistent user interface across different
programs.
- The user using programs written with the History library has the bene-
- 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
+ The user using programs written with the History library has the bene-
+ 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 bash.
+ history substitution provided by bbaasshh.
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 <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
+ Before declaring any functions using any functionality the History li-
+ brary provides in other code, an application writer should include the
+ file _<_r_e_a_d_l_i_n_e_/_h_i_s_t_o_r_y_._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 Storage
- The history list is an array of history entries. A history entry is
+ HHiissttoorryy SSttoorraaggee
+ The history list is an array of history entries. A history entry is
declared as follows:
- typedef void * histdata_t;
+ _t_y_p_e_d_e_f _v_o_i_d _* hhiissttddaattaa__tt;;
typedef struct _hist_entry {
char *line;
@@ -169,213 +177,206 @@ HISTORY(3) Library Functions Manual HISTORY(3)
The history list itself might therefore be declared as
- HIST_ENTRY ** the_history_list;
+ _H_I_S_T___E_N_T_R_Y _*_* tthhee__hhiissttoorryy__lliisstt;;
- The state of the History library is encapsulated into a single struc-
+ The state of the History library is encapsulated into a single struc-
ture:
/*
* 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 HS_STIFLED, the history has been stifled.
+ If the flags member includes HHSS__SSTTIIFFLLEEDD, the history has been stifled.
-History Functions
- This section describes the calling sequence for the various functions
+HHiissttoorryy FFuunnccttiioonnss
+ This section describes the calling sequence for the various functions
exported by the GNU History library.
- Initializing History and State Management
- This section describes functions used to initialize and manage the
+ IInniittiiaalliizziinngg HHiissttoorryy aanndd SSttaattee MMaannaaggeemmeenntt
+ 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.
- void using_history (void)
+ _v_o_i_d uussiinngg__hhiissttoorryy (_v_o_i_d)
Begin a session in which the history functions might be used. This
initializes the interactive variables.
- HISTORY_STATE * history_get_history_state (void)
+ _H_I_S_T_O_R_Y___S_T_A_T_E _* hhiissttoorryy__ggeett__hhiissttoorryy__ssttaattee (_v_o_i_d)
Return a structure describing the current state of the input history.
- void history_set_history_state (HISTORY_STATE *state)
- Set the state of the history list according to state.
+ _v_o_i_d hhiissttoorryy__sseett__hhiissttoorryy__ssttaattee (_H_I_S_T_O_R_Y___S_T_A_T_E _*_s_t_a_t_e)
+ Set the state of the history list according to _s_t_a_t_e.
-
- History List Management
+ HHiissttoorryy LLiisstt MMaannaaggeemmeenntt
These functions manage individual entries on the history list, or set
parameters managing the list itself.
- 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
+ _v_o_i_d aadddd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
+ Place _s_t_r_i_n_g at the end of the history list. The associated data field
+ (if any) is set to NNUULLLL. If the maximum number of history entries has
+ been set using ssttiiffllee__hhiissttoorryy(()), and the new number of history entries
would exceed that maximum, the oldest history entry is removed.
- void add_history_time (const char *string)
- Change the time stamp associated with the most recent history entry to
- string.
+ _v_o_i_d aadddd__hhiissttoorryy__ttiimmee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
+ Change the time stamp associated with the most recent history entry to
+ _s_t_r_i_n_g.
- HIST_ENTRY * remove_history (int which)
- Remove history entry at offset which from the history. The removed el-
+ _H_I_S_T___E_N_T_R_Y _* rreemmoovvee__hhiissttoorryy (_i_n_t _w_h_i_c_h)
+ Remove history entry at offset _w_h_i_c_h from the history. The removed el-
ement is returned so you can free the line, data, and containing struc-
ture.
- histdata_t free_history_entry (HIST_ENTRY *histent)
- Free the history entry histent and any history library private data as-
+ _h_i_s_t_d_a_t_a___t ffrreeee__hhiissttoorryy__eennttrryy (_H_I_S_T___E_N_T_R_Y _*_h_i_s_t_e_n_t)
+ Free the history entry _h_i_s_t_e_n_t and any history library private data as-
sociated with it. Returns the application-specific data so the caller
can dispose of it.
- HIST_ENTRY * replace_history_entry (int which, const char *line, hist-
- data_t data)
- Make the history entry at offset which have line and data. This re-
+ _H_I_S_T___E_N_T_R_Y _* rreeppllaaccee__hhiissttoorryy__eennttrryy (_i_n_t _w_h_i_c_h_, _c_o_n_s_t _c_h_a_r _*_l_i_n_e_, _h_i_s_t_-
+ _d_a_t_a___t _d_a_t_a)
+ Make the history entry at offset _w_h_i_c_h have _l_i_n_e and _d_a_t_a. This re-
turns the old entry so the caller can dispose of any application-spe-
- cific data. In the case of an invalid which, a NULL pointer is re-
+ cific data. In the case of an invalid _w_h_i_c_h, a NNUULLLL pointer is re-
turned.
- void clear_history (void)
+ _v_o_i_d cclleeaarr__hhiissttoorryy (_v_o_i_d)
Clear the history list by deleting all the entries.
- void stifle_history (int max)
- Stifle the history list, remembering only the last max entries. The
- history list will contain only max entries at a time.
+ _v_o_i_d ssttiiffllee__hhiissttoorryy (_i_n_t _m_a_x)
+ Stifle the history list, remembering only the last _m_a_x entries. The
+ history list will contain only _m_a_x entries at a time.
- int unstifle_history (void)
+ _i_n_t uunnssttiiffllee__hhiissttoorryy (_v_o_i_d)
Stop stifling the history. This returns the previously-set maximum
- number of history entries (as set by stifle_history()). history was
+ number of history entries (as set by ssttiiffllee__hhiissttoorryy(())). history was
stifled. The value is positive if the history was stifled, negative if
it wasn't.
- int history_is_stifled (void)
+ _i_n_t hhiissttoorryy__iiss__ssttiifflleedd (_v_o_i_d)
Returns non-zero if the history is stifled, zero if it is not.
-
- Information About the History List
+ IInnffoorrmmaattiioonn AAbboouutt tthhee HHiissttoorryy LLiisstt
These functions return information about the entire history list or in-
dividual list entries.
- HIST_ENTRY ** history_list (void)
- Return a NULL terminated array of HIST_ENTRY * which is the current in-
- put history. Element 0 of this list is the beginning of time. If
- there is no history, return NULL.
+ _H_I_S_T___E_N_T_R_Y _*_* hhiissttoorryy__lliisstt (_v_o_i_d)
+ Return a NNUULLLL terminated array of _H_I_S_T___E_N_T_R_Y _* which is the current in-
+ put history. Element 0 of this list is the beginning of time. If
+ there is no history, return NNUULLLL.
- int where_history (void)
+ _i_n_t wwhheerree__hhiissttoorryy (_v_o_i_d)
Returns the offset of the current history element.
- 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.
+ _H_I_S_T___E_N_T_R_Y _* ccuurrrreenntt__hhiissttoorryy (_v_o_i_d)
+ Return the history entry at the current position, as determined by
+ wwhheerree__hhiissttoorryy(()). If there is no entry there, return a NNUULLLL pointer.
- 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 history_length - 1. If
- there is no entry there, or if offset is outside the valid range, re-
- turn a NULL pointer.
+ _H_I_S_T___E_N_T_R_Y _* hhiissttoorryy__ggeett (_i_n_t _o_f_f_s_e_t)
+ Return the history entry at position _o_f_f_s_e_t. The range of valid values
+ of _o_f_f_s_e_t starts at hhiissttoorryy__bbaassee and ends at hhiissttoorryy__lleennggtthh - 1. If
+ there is no entry there, or if _o_f_f_s_e_t is outside the valid range, re-
+ turn a NNUULLLL pointer.
- time_t history_get_time (HIST_ENTRY *)
+ _t_i_m_e___t hhiissttoorryy__ggeett__ttiimmee (_H_I_S_T___E_N_T_R_Y _*)
Return the time stamp associated with the history entry passed as the
argument.
- int history_total_bytes (void)
+ _i_n_t hhiissttoorryy__ttoottaall__bbyytteess (_v_o_i_d)
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.
-
- Moving Around the History List
+ MMoovviinngg AArroouunndd tthhee HHiissttoorryy LLiisstt
These functions allow the current index into the history list to be set
or changed.
- int history_set_pos (int pos)
- Set the current history offset to pos, an absolute index into the list.
- Returns 1 on success, 0 if pos is less than zero or greater than the
+ _i_n_t hhiissttoorryy__sseett__ppooss (_i_n_t _p_o_s)
+ Set the current history offset to _p_o_s, an absolute index into the list.
+ Returns 1 on success, 0 if _p_o_s is less than zero or greater than the
number of history entries.
- HIST_ENTRY * previous_history (void)
+ _H_I_S_T___E_N_T_R_Y _* pprreevviioouuss__hhiissttoorryy (_v_o_i_d)
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.
+ a NNUULLLL pointer.
- HIST_ENTRY * next_history (void)
+ _H_I_S_T___E_N_T_R_Y _* nneexxtt__hhiissttoorryy (_v_o_i_d)
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 NULL pointer.
-
+ otherwise, return a NNUULLLL pointer.
- Searching the History List
- These functions allow searching of the history list for entries con-
+ SSeeaarrcchhiinngg tthhee HHiissttoorryy LLiisstt
+ 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 an-
- chored, meaning that the string must match at the beginning of the his-
+ backward from the current history position. The search may be _a_n_-
+ _c_h_o_r_e_d, meaning that the string must match at the beginning of the his-
tory entry.
- 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 en-
- tries, 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.
-
- 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 di-
- rection is less than 0, then the search is through previous entries,
- otherwise through subsequent entries. If string is found, then the
+ _i_n_t hhiissttoorryy__sseeaarrcchh (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n)
+ Search the history for _s_t_r_i_n_g, starting at the current history offset.
+ If _d_i_r_e_c_t_i_o_n is less than 0, then the search is through previous en-
+ tries, otherwise through subsequent entries. If _s_t_r_i_n_g 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 _s_t_r_i_n_g was found.
+ Otherwise, nothing is changed, and the function returns -1.
+
+ _i_n_t hhiissttoorryy__sseeaarrcchh__pprreeffiixx (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n)
+ Search the history for _s_t_r_i_n_g, starting at the current history offset.
+ The search is anchored: matching lines must begin with _s_t_r_i_n_g. If _d_i_-
+ _r_e_c_t_i_o_n is less than 0, then the search is through previous entries,
+ otherwise through subsequent entries. If _s_t_r_i_n_g 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.
+ Otherwise, nothing is changed, and the function returns -1.
- int history_search_pos (const char *string, int direction, int pos)
- Search for string in the history list, starting at pos, an absolute in-
- dex into the list. If direction is negative, the search proceeds back-
- ward from pos, otherwise forward. Returns the absolute index of the
- history element where string was found, or -1 otherwise.
+ _i_n_t hhiissttoorryy__sseeaarrcchh__ppooss (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _d_i_r_e_c_t_i_o_n_, _i_n_t _p_o_s)
+ Search for _s_t_r_i_n_g in the history list, starting at _p_o_s, an absolute in-
+ dex into the list. If _d_i_r_e_c_t_i_o_n is negative, the search proceeds back-
+ ward from _p_o_s, otherwise forward. Returns the absolute index of the
+ history element where _s_t_r_i_n_g was found, or -1 otherwise.
-
- Managing the History File
+ MMaannaaggiinngg tthhee HHiissttoorryy FFiillee
The History library can read the history from and write it to a file.
This section documents the functions for managing a history file.
- 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.
-
- 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.
-
- int write_history (const char *filename)
- Write the current history to filename, overwriting filename if neces-
- sary. If filename is NULL, then write the history list to ~/.history.
- Returns 0 on success, or errno on a read or write error.
-
-
- 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
+ _i_n_t rreeaadd__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
+ Add the contents of _f_i_l_e_n_a_m_e to the history list, a line at a time. If
+ _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_t_o_r_y. Returns 0 if successful,
+ or eerrrrnnoo if not.
+
+ _i_n_t rreeaadd__hhiissttoorryy__rraannggee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t _f_r_o_m_, _i_n_t _t_o)
+ Read a range of lines from _f_i_l_e_n_a_m_e, adding them to the history list.
+ Start reading at line _f_r_o_m and end at _t_o. If _f_r_o_m is zero, start at
+ the beginning. If _t_o is less than _f_r_o_m, then read until the end of the
+ file. If _f_i_l_e_n_a_m_e is NNUULLLL, then read from _~_/_._h_i_s_t_o_r_y. Returns 0 if
+ successful, or eerrrrnnoo if not.
+
+ _i_n_t wwrriittee__hhiissttoorryy (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
+ Write the current history to _f_i_l_e_n_a_m_e, overwriting _f_i_l_e_n_a_m_e if neces-
+ sary. If _f_i_l_e_n_a_m_e is NNUULLLL, then write the history list to _~_/_._h_i_s_t_o_r_y.
+ Returns 0 on success, or eerrrrnnoo on a read or write error.
+
+ _i_n_t aappppeenndd__hhiissttoorryy (_i_n_t _n_e_l_e_m_e_n_t_s_, _c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e)
+ Append the last _n_e_l_e_m_e_n_t_s of the history list to _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e
+ is NNUULLLL, then append to _~_/_._h_i_s_t_o_r_y. Returns 0 on success, or eerrrrnnoo on
a read or write error.
- 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 suc-
- cess, or errno on failure.
-
+ _i_n_t hhiissttoorryy__ttrruunnccaattee__ffiillee (_c_o_n_s_t _c_h_a_r _*_f_i_l_e_n_a_m_e_, _i_n_t _n_l_i_n_e_s)
+ Truncate the history file _f_i_l_e_n_a_m_e, leaving only the last _n_l_i_n_e_s lines.
+ If _f_i_l_e_n_a_m_e is NNUULLLL, then _~_/_._h_i_s_t_o_r_y is truncated. Returns 0 on suc-
+ cess, or eerrrrnnoo on failure.
- History Expansion
+ HHiissttoorryy EExxppaannssiioonn
These functions implement history expansion.
- int history_expand (char *string, char **output)
- Expand string, placing the result into output, a pointer to a string.
+ _i_n_t hhiissttoorryy__eexxppaanndd (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _c_h_a_r _*_*_o_u_t_p_u_t)
+ Expand _s_t_r_i_n_g, placing the result into _o_u_t_p_u_t, 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
@@ -383,123 +384,133 @@ HISTORY(3) Library Functions Manual HISTORY(3)
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 :p modifier.
- If an error occurred in expansion, then output contains a descriptive
+ cuted, as with the ::pp modifier.
+ If an error occurred in expansion, then _o_u_t_p_u_t contains a descriptive
error message.
- 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 charac-
+ _c_h_a_r _* ggeett__hhiissttoorryy__eevveenntt (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g_, _i_n_t _*_c_i_n_d_e_x_, _i_n_t _q_c_h_a_r)
+ Returns the text of the history event beginning at _s_t_r_i_n_g + _*_c_i_n_d_e_x.
+ _*_c_i_n_d_e_x is modified to point to after the event specifier. At function
+ entry, _c_i_n_d_e_x points to the index into _s_t_r_i_n_g where the history event
+ specification begins. _q_c_h_a_r is a character that is allowed to end the
+ event specification in addition to the ``normal'' terminating charac-
ters.
- char ** history_tokenize (const char *string)
- Return an array of tokens parsed out of string, much as the shell
- might. The tokens are split on the characters in the history_word_de-
- limiters variable, and shell quoting conventions are obeyed.
+ _c_h_a_r _*_* hhiissttoorryy__ttookkeenniizzee (_c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
+ Return an array of tokens parsed out of _s_t_r_i_n_g, much as the shell
+ might. The tokens are split on the characters in the hhiissttoorryy__wwoorrdd__ddee--
+ lliimmiitteerrss variable, and shell quoting conventions are obeyed.
- 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().
+ _c_h_a_r _* hhiissttoorryy__aarrgg__eexxttrraacctt (_i_n_t _f_i_r_s_t_, _i_n_t _l_a_s_t_, _c_o_n_s_t _c_h_a_r _*_s_t_r_i_n_g)
+ Extract a string segment consisting of the _f_i_r_s_t through _l_a_s_t arguments
+ present in _s_t_r_i_n_g. Arguments are split using hhiissttoorryy__ttookkeenniizzee(()).
-
- History Variables
+ HHiissttoorryy VVaarriiaabblleess
This section describes the externally-visible variables exported by the
GNU History Library.
- int history_base
+ _i_n_t hhiissttoorryy__bbaassee
The logical offset of the first entry in the history list.
- int history_length
+ _i_n_t hhiissttoorryy__lleennggtthh
The number of entries currently stored in the history list.
- int history_max_entries
- The maximum number of history entries. This must be changed using sti-
- fle_history().
+ _i_n_t hhiissttoorryy__mmaaxx__eennttrriieess
+ The maximum number of history entries. This must be changed using ssttii--
+ ffllee__hhiissttoorryy(()).
- int history_write_timestamps
+ _i_n_t hhiissttoorryy__wwrriittee__ttiimmeessttaammppss
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
- history_comment_char to delimit timestamp entries in the history file.
+ _h_i_s_t_o_r_y___c_o_m_m_e_n_t___c_h_a_r to delimit timestamp entries in the history file.
If that variable does not have a value (the default), timestamps will
not be written.
- char history_expansion_char
- The character that introduces a history event. The default is !. Set-
+ _c_h_a_r hhiissttoorryy__eexxppaannssiioonn__cchhaarr
+ The character that introduces a history event. The default is !!. Set-
ting this to 0 inhibits history expansion.
- char history_subst_char
+ _c_h_a_r hhiissttoorryy__ssuubbsstt__cchhaarr
The character that invokes word substitution if found at the start of a
- line. The default is ^.
+ line. The default is ^^.
- char history_comment_char
+ _c_h_a_r hhiissttoorryy__ccoommmmeenntt__cchhaarr
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.
- char * history_word_delimiters
- The characters that separate tokens for history_tokenize(). The de-
- fault value is " \t\n()<>;&|".
+ _c_h_a_r _* hhiissttoorryy__wwoorrdd__ddeelliimmiitteerrss
+ The characters that separate tokens for hhiissttoorryy__ttookkeenniizzee(()). The de-
+ fault value is "" \\tt\\nn(())<<>>;;&&||"".
- char * history_no_expand_chars
+ _c_h_a_r _* hhiissttoorryy__nnoo__eexxppaanndd__cchhaarrss
The list of characters which inhibit history expansion if found immedi-
- ately following history_expansion_char. The default is space, tab,
- newline, \r, and =.
+ ately following hhiissttoorryy__eexxppaannssiioonn__cchhaarr. The default is space, tab,
+ newline, \\rr, and ==.
- char * history_search_delimiter_chars
- The list of additional characters which can delimit a history search
- string, in addition to space, tab, : and ? in the case of a substring
+ _c_h_a_r _* hhiissttoorryy__sseeaarrcchh__ddeelliimmiitteerr__cchhaarrss
+ The list of additional characters which can delimit a history search
+ string, in addition to space, tab, _: and _? in the case of a substring
search. The default is empty.
- int history_quotes_inhibit_expansion
- 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.
-
- rl_linebuf_func_t * history_inhibit_expansion_function
- This should be set to the address of a function that takes two argu-
- ments: 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.
-
-FILES
- ~/.history
+ _i_n_t hhiissttoorryy__qquuootteess__iinnhhiibbiitt__eexxppaannssiioonn
+ 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.
+
+ _i_n_t hhiissttoorryy__qquuoottiinngg__ssttaattee
+ 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 in-
+ hibit 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 hhiissttoorryy__qquuootteess__iinnhhiibbiitt__eexxppaannssiioonn is set.
+
+ _r_l___l_i_n_e_b_u_f___f_u_n_c___t _* hhiissttoorryy__iinnhhiibbiitt__eexxppaannssiioonn__ffuunnccttiioonn
+ This should be set to the address of a function that takes two argu-
+ ments: a cchhaarr ** (_s_t_r_i_n_g) and an iinntt index into that string (_i). It
+ should return a non-zero value if the history expansion starting at
+ _s_t_r_i_n_g_[_i_] should not be performed; zero if the expansion should be
+ done. It is intended for use by applications like bbaasshh that use the
+ history expansion character for additional purposes. By default, this
+ variable is set to NNUULLLL.
+
+FFIILLEESS
+ _~_/_._h_i_s_t_o_r_y
Default filename for reading and writing saved history
-SEE ALSO
- The Gnu Readline Library, Brian Fox and Chet Ramey
- The Gnu History Library, Brian Fox and Chet Ramey
- bash(1)
- readline(3)
+SSEEEE AALLSSOO
+ _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
+ _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
+ _b_a_s_h(1)
+ _r_e_a_d_l_i_n_e(3)
-AUTHORS
+AAUUTTHHOORRSS
Brian Fox, Free Software Foundation
bfox@gnu.org
Chet Ramey, Case Western Reserve University
chet.ramey@case.edu
-BUG REPORTS
- If you find a bug in the history 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 history library that you have.
+BBUUGG RREEPPOORRTTSS
+ If you find a bug in the hhiissttoorryy 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 hhiissttoorryy library that you have.
- Once you have determined that a bug actually exists, mail a bug report
- to bug-readline@gnu.org. If you have a fix, you are welcome to mail
- that as well! Suggestions and `philosophical' bug reports may be
- mailed to bug-readline@gnu.org or posted to the Usenet newsgroup
- gnu.bash.bug.
+ Once you have determined that a bug actually exists, mail a bug report
+ to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix, you are welcome to mail
+ that as well! Suggestions and `philosophical' bug reports may be
+ mailed to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
+ ggnnuu..bbaasshh..bbuugg.
Comments and bug reports concerning this manual page should be directed
- to chet.ramey@case.edu.
-
-
+ to _c_h_e_t_._r_a_m_e_y_@_c_a_s_e_._e_d_u.
-GNU History 8.1 2020 July 17 HISTORY(3)
+GNU History 8.3 2024 March 29 _H_I_S_T_O_R_Y(3)
diff --git a/doc/history.3 b/doc/history.3
index 06419cf..af31f1c 100644
--- a/doc/history.3
+++ b/doc/history.3
@@ -6,29 +6,62 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Fri Jul 17 09:43:01 EDT 2020
+.\" Last Change: Fri Mar 29 12:03:51 EDT 2024
.\"
-.TH HISTORY 3 "2020 July 17" "GNU History 8.1"
+.TH HISTORY 3 "2024 March 29" "GNU History 8.3"
.\"
+.ie \n(.g \{\
+.ds ' \(aq
+.ds " \(dq
+.ds ^ \(ha
+.ds ~ \(ti
+.\}
+.el \{\
+.ds ' '
+.\" 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()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.
.\"
.de FN
-\fI\|\\$1\|\fP
+\%\fI\|\\$1\|\fP
+..
+.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
@@ -40,18 +73,17 @@
.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-2024 by the Free Software Foundation, Inc.
+.if n The GNU History Library is Copyright (C) 1989-2024 by the Free Software Foundation, Inc.
.SH DESCRIPTION
Many programs read input from the user a line at a time. The GNU
History library is able to keep track of those lines, associate arbitrary
data with each line, and utilize information from previous lines in
-composing new ones.
-.PP
+composing new ones.
.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
@@ -71,13 +103,24 @@ and the portions of that line that are acted upon are \fIwords\fP.
Various \fImodifiers\fP are available to manipulate the selected words.
The line is broken into words in the same fashion as \fBbash\fP
does when reading input,
-so that several words that would otherwise be separated
+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).
+.PP
History expansions are introduced by the appearance of the
history expansion character, which is \^\fB!\fP\^ by default.
Only backslash (\^\fB\e\fP\^) and single quotes can quote
the history expansion character.
+.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 line.
+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.
@@ -91,27 +134,26 @@ Start a history substitution, except when followed by a
.BR blank ,
newline, = or (.
.TP
-.B !\fIn\fR
+.B !\fIn\fP
Refer to command line
.IR n .
.TP
-.B !\-\fIn\fR
+.B !\-\fIn\fP
Refer to the current command minus
.IR n .
.TP
.B !!
-Refer to the previous command. This is a synonym for `!\-1'.
+Refer to the previous command. 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
@@ -119,13 +161,13 @@ is followed immediately by a newline.
If \fIstring\fP is missing, the string from the most recent search is used;
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
+.B \*^\fIstring1\fP\*^\fIstring2\fP\*^
Quick substitution. Repeat the last 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\*^\fIstring1\fP\*^\fIstring2\fP\*^
(see \fBModifiers\fP below).
.TP
.B !#
@@ -137,7 +179,7 @@ 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 \- ,
@@ -154,9 +196,9 @@ The zeroth word. For the shell, this is the command
word.
.TP
.I n
-The \fIn\fRth word.
+The \fIn\fPth word.
.TP
-.B ^
+.B \*^
The first argument. That is, word 1.
.TP
.B $
@@ -164,15 +206,22 @@ The last word. This is usually the last argument, but will expand 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.
.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.
@@ -189,7 +238,8 @@ If a word designator is supplied without an event specification, the
previous command is used as the event.
.SS Modifiers
After the optional word designator, there may appear a sequence of
-one or more of the following modifiers, each preceded by a `:'.
+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
@@ -249,7 +299,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,17 +311,26 @@ 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.
@@ -324,16 +383,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 +406,181 @@ 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
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 +594,7 @@ character);
1
if expansions did take place;
.TP
--1
+\-1
if there was an error in expansion;
.TP
2
@@ -554,42 +604,40 @@ 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"
+.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
@@ -597,39 +645,54 @@ 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.
-
+.PP
.Vb char history_expansion_char
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, 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 \fI\*"\fP, 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 \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 +704,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"
@@ -678,7 +741,7 @@ 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
+to \fIbug\-readline\fP@\fIgnu.org\fP or posted to the Usenet
newsgroup
.BR gnu.bash.bug .
.PP
diff --git a/doc/history.dvi b/doc/history.dvi
index bf33fe4..9c2608f 100644
--- a/doc/history.dvi
+++ b/doc/history.dvi
Binary files differ
diff --git a/doc/history.html b/doc/history.html
index 3c258f4..3627384 100644
--- a/doc/history.html
+++ b/doc/history.html
@@ -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, 19 January 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-2023 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,35 +114,35 @@ 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,
+<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>GNU</small> History Library in your own programs,
-see <a href="#Programming-with-GNU-History">Programming with GNU History</a>.
+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
+to the history expansion provided by <code class="code">csh</code>. This section
describes the syntax used to manipulate the history information.
</p>
<p>History expansions introduce words from the history list into
@@ -157,14 +154,21 @@ fix errors in previous commands quickly.
<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
+current one.
+</p>
+<p>The line selected from the history is called the <em class="dfn">event</em>,
+and the portions of that line that are acted upon are called <em class="dfn">words</em>.
+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.
+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 +180,83 @@ 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 line.
+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.
Unless the reference is absolute, events are relative to the current
position in the history list.
-<span id="index-history-events"></span>
+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.
+<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 command line <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 command <var class="var">n</var> lines back.
</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 command. 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, the string from the most recent search is used;
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,80 +264,82 @@ 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
+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). 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>
+<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>
+<dt><code class="code">!!:$</code></dt>
<dd><p>designates the last argument of the preceding command. This may be
-shortened to <code>!$</code>.
+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.
+<dl class="table">
+<dt><code class="code">0 (zero)</code></dt>
+<dd><p>The <code class="code">0</code>th word. For many 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>
+<dt><code class="code">^</code></dt>
<dd><p>The first argument; that is, word 1.
</p>
</dd>
-<dt><span><code>$</code></span></dt>
+<dt><code class="code">$</code></dt>
<dd><p>The last argument.
</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.
</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;
+<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;
the empty string is returned 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>
@@ -330,71 +349,71 @@ previous command is used as the event.
</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>
+<dl class="table">
+<dt><code class="code">h</code></dt>
<dd><p>Remove a trailing pathname component, leaving only the head.
</p>
</dd>
-<dt><span><code>t</code></span></dt>
+<dt><code class="code">t</code></dt>
<dd><p>Remove all leading pathname 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 by <var class="var">old</var>. A single backslash will quote
+the &lsquo;<samp class="samp">&amp;</samp>&rsquo;.
+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>
+<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. 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;.
+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 +423,20 @@ 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,14 +444,14 @@ 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>
+<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>GNU</small>
+<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 in
composing new ones.
@@ -441,7 +460,7 @@ composing new ones.
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
+in the list directly. In addition, a history <em class="dfn">expansion</em> function
is available which provides for a consistent user interface across
different programs.
</p>
@@ -449,7 +468,7 @@ different programs.
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>.
+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 +476,25 @@ 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
+the file <code class="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.
</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>
<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 +506,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 +524,23 @@ typedef struct _hist_state {
} HISTORY_STATE;
</pre></div>
-<p>If the flags member includes <code>HS_STIFLED</code>, the history has been
+<p>If the flags member includes <code class="code">HS_STIFLED</code>, the history has been
stifled.
</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 +550,155 @@ 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>
+<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 in which the history functions might be used. 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>Place <var class="var">string</var> at the end of the history list. The associated data
+field (if any) is set 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
+<code class="code">stifle_history()</code>, and the new number of history entries would exceed
that maximum, the oldest history entry is removed.
</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
+<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 history entry at offset <var class="var">which</var> from the history. The
removed element is returned so you can free the line, data,
and containing structure.
</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
+<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.
+of an invalid <var class="var">which</var>, a <code class="code">NULL</code> pointer is returned.
</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>
+<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>stifle_history()</code>).
+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
+<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.
-If there is no history, return <code>NULL</code>.
+If there is no history, return <code class="code">NULL</code>.
</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>
+<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>Returns the offset of the current history element.
</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>
+<code class="code">where_history()</code>. If there is no entry there, return a <code class="code">NULL</code>
pointer.
</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 a <code class="code">NULL</code> pointer.
</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 +706,284 @@ 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.
+a <code class="code">NULL</code> pointer.
</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 a <code class="code">BNULL</code> pointer.
</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>
+<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 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>,
+from the current history position. The search may be <em class="dfn">anchored</em>,
meaning that the string must match at the beginning of the history entry.
-<span id="index-anchored-search"></span>
+<a class="index-entry-id" id="index-anchored-search"></a>
</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
+<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
+If <var class="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
+<var class="var">string</var> was found. Otherwise, nothing is changed, and a -1 is
returned.
</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
+<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 lines must begin with
-<var>string</var>. If <var>direction</var> is less than 0, then the search is
+<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
+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 a -1 is returned.
</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 absolute
+index 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, a line at a time.
+If <var class="var">filename</var> is <code class="code">NULL</code>, then read from <samp class="file">~/.history</samp>.
+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>, then read until the end of the file. If <var class="var">filename</var> is
+<code class="code">NULL</code>, then read from <samp class="file">~/.history</samp>. 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.
+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>.
+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>, then <samp class="file">~/.history</samp> is truncated.
+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
+<p>If an error occurred in 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>. <var class="var">*cindex</var> is modified 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
+<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>history_word_delimiters</var> variable,
+<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>. Arguments are split 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>
+<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>stifle_history()</code>.
+<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.
</p>
-<p>The current timestamp format uses the value of <var>history_comment_char</var>
+<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), timestamps will not be written.
</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>
+<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 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.
</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
+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 +992,49 @@ 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
+being expanded is subject to existing quoting. If set to &lsquo;<samp class="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
+to &lsquo;<samp class="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.
+This is only effective if <var class="var">history_quotes_inhibit_expansion</var> is set.
</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 +1119,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 +1215,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 +1313,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 +1513,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 +1559,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 +1597,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>
diff --git a/doc/history.info b/doc/history.info
index a6799c3..b4ffe9a 100644
--- a/doc/history.info
+++ b/doc/history.info
@@ -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
-interface for recalling lines of previously typed input.
+This document describes the GNU History library (version 8.3, 19 January
+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-2023 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,7 +60,7 @@ 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
+to the history expansion provided by ‘csh’. This section describes the
syntax used to manipulate the history information.
History expansions introduce words from the history list into the
@@ -71,13 +71,19 @@ 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.
+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”. The line
+is broken into words in the same fashion that Bash does, 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 +93,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 line. 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.
@@ -101,37 +115,40 @@ File: history.info, Node: Event Designators, Next: Word Designators, Up: Hist
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.
+the current position 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.
-'!'
+‘!’
Start a history substitution, except when followed by a space, tab,
- the end of the line, or '='.
+ the end of the line, or ‘=’.
-'!N'
+‘!N’
Refer to command line N.
-'!-N'
+‘!-N’
Refer to the command N lines back.
-'!!'
- Refer to the previous command. This is a synonym for '!-1'.
+‘!!’
+ Refer to the previous command. 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.
-'^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.

@@ -140,58 +157,60 @@ 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
-separated by single spaces.
+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). 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 '!$'.
+ 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 many applications, this is the command word.
-'N'
+‘N’
The Nth word.
-'^'
+‘^’
The first argument; that is, word 1.
-'$'
+‘$’
The last argument.
-'%'
- The first word matched by the most recent '?STRING?' search, if the
+‘%’
+ The first word matched by the most recent ‘?STRING?’ search, if the
search string begins with a character that is part of a word.
-'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
+‘*’
+ All of the words, except the ‘0’th. This is a synonym for ‘1-$’.
+ It is not an error to use ‘*’ if there is just one word in the
event; the empty string is returned in that case.
-'X*'
- Abbreviates 'X-$'
+‘X*’
+ Abbreviates ‘X-$’
-'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
@@ -204,46 +223,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'
+‘h’
Remove a trailing pathname component, leaving only the head.
-'t'
+‘t’
Remove all leading pathname 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
+ ‘&’ 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
+ 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'
+‘g’
+‘a’
Cause changes to be applied over the entire event line. Used in
- conjunction with 's', as in 'gs/OLD/NEW/', or with '&'.
+ 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.

@@ -280,7 +299,7 @@ lines in composing new ones.
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
+the list directly. In addition, a history “expansion” function is
available which provides for a consistent user interface across
different programs.
@@ -288,7 +307,7 @@ different programs.
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,7 +315,7 @@ 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
+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.
@@ -336,7 +355,7 @@ structure:
int flags;
} HISTORY_STATE;
- If the flags member includes 'HS_STIFLED', the history has been
+ If the flags member includes ‘HS_STIFLED’, the history has been
stifled.

@@ -398,8 +417,8 @@ 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
+ 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.
@@ -422,7 +441,7 @@ parameters managing the list itself.
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.
+ ‘NULL’ pointer is returned.
-- Function: void clear_history (void)
Clear the history list by deleting all the entries.
@@ -433,7 +452,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 +469,24 @@ 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. If there is no history, return ‘NULL’.
-- Function: int where_history (void)
Returns the offset of the current history element.
-- Function: HIST_ENTRY * current_history (void)
Return the history entry at the current position, as determined by
- 'where_history()'. If there is no entry there, return a 'NULL'
+ ‘where_history()’. If there is no entry there, return a ‘NULL’
pointer.
-- Function: HIST_ENTRY * history_get (int offset)
Return the history entry at position OFFSET. 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.
+ ‘NULL’ pointer.
-- Function: time_t history_get_time (HIST_ENTRY *entry)
Return the time stamp associated with the history entry ENTRY. If
@@ -495,13 +514,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 a ‘NULL’ pointer.
-- 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 a ‘BNULL’ pointer.

File: history.info, Node: Searching the History List, Next: Managing the History File, Prev: Moving Around the History List, Up: History Functions
@@ -512,7 +531,7 @@ File: history.info, Node: Searching the History List, Next: Managing the Histo
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
+“anchored”, meaning that the string must match at the beginning of the
history entry.
-- Function: int history_search (const char *string, int direction)
@@ -552,33 +571,33 @@ 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.
+ If FILENAME is ‘NULL’, then read from ‘~/.history’. Returns 0 if
+ successful, or ‘errno’ if not.
-- Function: int read_history_range (const char *filename, int from,
int to)
Read a range of lines from FILENAME, adding them to the history
list. Start reading at line FROM and end at TO. If FROM is zero,
start at the beginning. If TO is less than FROM, then read until
- the end of the file. If FILENAME is 'NULL', then read from
- '~/.history'. Returns 0 if successful, or 'errno' if not.
+ the end of the file. If FILENAME is ‘NULL’, then read from
+ ‘~/.history’. Returns 0 if successful, or ‘errno’ if not.
-- Function: int write_history (const char *filename)
Write the current history to FILENAME, overwriting FILENAME if
- necessary. If FILENAME is 'NULL', then write the history list to
- '~/.history'. Returns 0 on success, or 'errno' on a read or write
+ necessary. If FILENAME is ‘NULL’, then write the history list to
+ ‘~/.history’. Returns 0 on success, or ‘errno’ on a read or write
error.
-- Function: int append_history (int nelements, const char *filename)
Append the last NELEMENTS of the history list to FILENAME. If
- FILENAME is 'NULL', then append to '~/.history'. Returns 0 on
- success, or 'errno' on a read or write error.
+ 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’, then ‘~/.history’ is truncated.
+ Returns 0 on success, or ‘errno’ on failure.

File: history.info, Node: History Expansion, Prev: Managing the History File, Up: History Functions
@@ -588,20 +607,20 @@ 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
descriptive error message.
@@ -625,7 +644,7 @@ These functions implement history expansion.
char *string)
Extract a string segment consisting of the FIRST through LAST
arguments present in STRING. Arguments are split using
- 'history_tokenize'.
+ ‘history_tokenize’.

File: history.info, Node: History Variables, Next: History Programming Example, Prev: History Functions, Up: Programming with GNU History
@@ -644,7 +663,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
@@ -657,12 +676,12 @@ GNU History Library.
written.
-- 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
@@ -671,18 +690,18 @@ GNU History Library.
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,10 +713,10 @@ 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 ''',
+ 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
+ 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
@@ -706,12 +725,12 @@ GNU History Library.
-- 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’.

File: history.info, Node: History Programming Example, Prev: History Variables, Up: Programming with GNU History
@@ -725,9 +744,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 +834,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 +843,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 +1320,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 11)
* history expansion: History Interaction. (line 6)
* History Searching: Searching the History List.
(line 6)
@@ -1395,28 +1413,28 @@ Appendix C Function and Variable Index

Tag Table:
-Node: Top850
-Node: Using History Interactively1495
-Node: History Interaction2003
-Node: Event Designators3901
-Node: Word Designators5175
-Node: Modifiers6935
-Node: Programming with GNU History8477
-Node: Introduction to History9221
-Node: History Storage10899
-Node: History Functions12034
-Node: Initializing History and State Management13023
-Node: History List Management13835
-Node: Information About the History List16129
-Node: Moving Around the History List17743
-Node: Searching the History List18836
-Node: Managing the History File20761
-Node: History Expansion22581
-Node: History Variables24510
-Node: History Programming Example28490
-Node: GNU Free Documentation License31167
-Node: Concept Index56339
-Node: Function and Variable Index57044
+Node: Top847
+Node: Using History Interactively1492
+Node: History Interaction2000
+Node: Event Designators4566
+Node: Word Designators6073
+Node: Modifiers8062
+Node: Programming with GNU History9688
+Node: Introduction to History10432
+Node: History Storage12122
+Node: History Functions13261
+Node: Initializing History and State Management14250
+Node: History List Management15062
+Node: Information About the History List17372
+Node: Moving Around the History List19014
+Node: Searching the History List20115
+Node: Managing the History File22044
+Node: History Expansion23924
+Node: History Variables25883
+Node: History Programming Example29915
+Node: GNU Free Documentation License32569
+Node: Concept Index57744
+Node: Function and Variable Index58449

End Tag Table
diff --git a/doc/history.pdf b/doc/history.pdf
index 0732585..79a9c2f 100644
--- a/doc/history.pdf
+++ b/doc/history.pdf
Binary files differ
diff --git a/doc/history.ps b/doc/history.ps
index 3776eab..6953c8f 100644
--- a/doc/history.ps
+++ b/doc/history.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 2022.1 (TeX Live 2022) Copyright 2022 Radical Eye Software
+%%Creator: dvips(k) 2023.1 (TeX Live 2023) Copyright 2023 Radical Eye Software
%%Title: history.dvi
-%%CreationDate: Tue Sep 20 14:17:06 2022
+%%CreationDate: Fri Apr 5 13:11:47 2024
%%Pages: 24
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o history.ps history.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2022.09.20:1017
+%DVIPSSource: TeX output 2024.04.05:0911
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -2659,6 +2659,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 +2858,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
@@ -5202,8 +5213,8 @@ 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
+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 /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
@@ -5240,30 +5251,29 @@ ifelse
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 150 1318 a Fr(GNU)65 b(History)h(Library)p
-150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(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
+150 1418 3600 34 v 1920 1515 a Fq(Edition)31 b(8.3,)h(for)e
+Fp(History)e(Library)h Fq(V)-8 b(ersion)31 b(8.3.)3218
+1623 y(Jan)m(uary)f(2024)150 4927 y Fo(Chet)45 b(Ramey)-11
b(,)46 b(Case)g(W)-11 b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150
5068 y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)
-11 b(oundation)p 150 5141 3600 17 v eop end
%%Page: 2 2
-TeXDict begin 2 1 bop 150 4413 a Fq(This)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 Fq(This)35 b(do)s(cumen)m(t)h(describ)
+s(es)f(the)h(GNU)g(History)h(library)e(\(v)m(ersion)i(8.3,)h(19)f(Jan)m
+(uary)e(2024\),)40 b(a)c(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 Fn(\015)30 b Fq(1988{2023)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
@@ -5272,182 +5282,206 @@ TeXDict begin -1 2 bop 3725 -116 a Fq(i)150 299 y Fm(T)-13
b(able)53 b(of)h(Con)l(ten)l(ts)p eop end
%%Page: 1 4
TeXDict begin 1 3 bop 3705 -116 a Fq(1)150 299 y Fm(1)80
-b(Using)53 b(History)g(In)l(teractiv)l(ely)150 502 y
+b(Using)53 b(History)g(In)l(teractiv)l(ely)150 539 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
+b(,)50 b(from)42 b(a)h(user's)150 649 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
+758 y Fq(History)36 b(Library)e(in)h(y)m(our)f(o)m(wn)i(programs,)g
(see)f(Chapter)g(2)g([Programming)g(with)g(GNU)h(History],)150
-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
+868 y(page)31 b(4.)150 1111 y Fo(1.1)68 b(History)46
+b(Expansion)150 1271 y Fq(The)f(History)h(library)e(pro)m(vides)i(a)f
(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f
-(history)150 1328 y(expansion)g(pro)m(vided)f(b)m(y)h
+(history)150 1380 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
+(used)e(to)i(manipulate)f(the)150 1490 y(history)30 b(information.)275
+1626 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)
+1736 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
+1846 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
+(quic)m(kly)-8 b(.)275 1982 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
+(determine)g(whic)m(h)f(line)h(from)150 2092 y(the)29
+b(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
+2201 y(line)i(for)f(inclusion)g(in)m(to)h(the)g(curren)m(t)f(one.)275
+2338 y(The)f(line)i(selected)h(from)e(the)h(history)f(is)g(called)i
+(the)f Fk(ev)m(en)m(t)p Fq(,)h(and)e(the)g(p)s(ortions)g(of)h(that)g
+(line)f(that)150 2447 y(are)37 b(acted)g(up)s(on)e(are)i(called)h
+Fk(w)m(ords)p Fq(.)58 b(The)36 b(line)h(is)f(brok)m(en)g(in)m(to)i(w)m
+(ords)e(in)g(the)g(same)h(fashion)f(that)150 2557 y(Bash)28
+b(do)s(es,)g(so)g(that)h(sev)m(eral)g(w)m(ords)e(surrounded)e(b)m(y)j
+(quotes)h(are)f(considered)f(one)i(w)m(ord.)39 b(The)27
+b Fk(ev)m(en)m(t)150 2667 y(designator)33 b Fq(selects)27
+b(the)e(ev)m(en)m(t,)k(the)c(optional)i Fk(w)m(ord)e(designator)33
+b Fq(selects)27 b(w)m(ords)e(from)g(the)g(ev)m(en)m(t,)k(and)150
+2776 y(v)-5 b(arious)30 b(optional)i Fk(mo)s(di\014ers)h
+Fq(are)e(a)m(v)-5 b(ailable)32 b(to)f(manipulate)g(the)g(selected)h(w)m
+(ords.)275 2913 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 3022 y(whic)m(h)31 b(is)g(`)p Fp(!)p Fq(')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 3132
+y(nest.)275 3268 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 3378 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 3487 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 3597 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 3707 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
-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
+(are)g(not)f(treated)i(sp)s(ecially)f(within)150 3816
+y(double)g(quotes.)275 3953 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
+Fk(quic)m(k)h(substitution)e Fq(c)m(har-)150 4062 y(acter)k(\(default)f
+(`)p Fp(^)p Fq('\))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 4172 y(using)34 b(an)g(ev)m(en)m(t)h(designator)g
+(equiv)-5 b(alen)m(t)36 b(to)f Fp(!!)p Fq(,)f(and)g(substitutes)g(one)g
+(string)g(for)g(another)h(in)e(that)150 4281 y(line.)43
+b(It)31 b(is)g(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)g(1.1.1)h
+([Ev)m(en)m(t)f(Designators],)h(page)f(1\).)43 b(This)30
+b(is)h(the)g(only)150 4391 y(history)f(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
+4592 y Fj(1.1.1)63 b(Ev)m(en)m(t)39 b(Designators)150
+4739 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 4849 y(reference)40 b(is)f(absolute,)k(ev)m(en)m
+(ts)e(are)f(relativ)m(e)i(to)e(the)g(curren)m(t)f(p)s(osition)g(in)h
+(the)f(history)h(list.)68 b(The)150 4958 y(ev)m(en)m(t)35
+b(designator)f(consists)g(of)g(the)g(p)s(ortion)f(of)g(the)h(w)m(ord)f
+(b)s(eginning)g(with)g(the)h(history)f(expansion)150
+5068 y(c)m(haracter,)f(and)e(ending)g(with)g(the)h(w)m(ord)f
+(designator)h(if)f(one)h(is)f(presen)m(t,)h(or)f(the)h(end)e(of)i(the)g
+(w)m(ord.)150 5230 y Fp(!)432 b Fq(Start)34 b(a)f(history)h
+(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h
+(tab,)f(the)g(end)f(of)630 5340 y(the)e(line,)g(or)f(`)p
+Fp(=)p Fq('.)p eop end
%%Page: 2 5
TeXDict begin 2 4 bop 150 -116 a Fq(Chapter)30 b(1:)41
b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(2)150
-299 y 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
+299 y Fp(!)p Fi(n)384 b Fq(Refer)30 b(to)i(command)e(line)g
+Fk(n)p Fq(.)150 452 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
+604 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 757 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 867 y(list)31 b(starting)g(with)f
+Fk(string)p Fq(.)150 1020 y Fp(!?)p Fi(string)p Fp([?])630
+1129 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
+1239 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 1348
+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 1458 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.)150 1611 y
+Fp(^)p Fi(string1)p Fp(^)p Fi(string2)p Fp(^)630 1720
+y Fq(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h
+(command,)f(replacing)g Fk(string1)40 b Fq(with)31 b
+Fk(string2)p Fq(.)630 1830 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
+1983 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 2175 y Fj(1.1.2)63 b(W)-10 b(ord)41
+b(Designators)150 2322 y Fq(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 2432 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 Fp(:)p Fq(')h(separates)150
+2542 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 2651 y(b)s(egins)33 b(with)h(a)h(`)p
+Fp(^)p Fq(',)g(`)p Fp($)p Fq(',)g(`)p Fp(*)p Fq(',)h(`)p
+Fp(-)p Fq(',)f(or)f(`)p Fp(\045)p Fq('.)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 2761 y(with)39 b(the)h(\014rst)f(w)m(ord)g(b)s(eing)g
+(denoted)h(b)m(y)g(0)g(\(zero\).)70 b(W)-8 b(ords)39
+b(are)h(inserted)g(in)m(to)g(the)g(curren)m(t)g(line)150
+2870 y(separated)31 b(b)m(y)f(single)h(spaces.)275 3002
+y(F)-8 b(or)31 b(example,)150 3154 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 3264 y(mand)30 b(is)g(rep)s(eated)g
+(in)g(toto.)150 3417 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 3526 y(to)31
+b Fp(!$)p Fq(.)150 3679 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 3789 y(letters)j Fp(fi)p Fq(.)275
+3942 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150
+4094 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 4247 y Fi(n)432 b Fq(The)30 b Fk(n)p Fq(th)g(w)m(ord.)150
+4400 y Fp(^)432 b Fq(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
+(ord)g(1.)150 4553 y Fp($)432 b Fq(The)30 b(last)h(argumen)m(t.)150
+4706 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
+4815 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 4968 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
+Fq(')g(abbreviates)h(`)p Fp(0-)p Fi(y)p Fq('.)150 5121
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
+5230 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
+(returned)e(in)630 5340 y(that)j(case.)p eop end
%%Page: 3 6
TeXDict begin 3 5 bop 150 -116 a Fq(Chapter)30 b(1:)41
b(Using)30 b(History)h(In)m(teractiv)m(ely)2016 b(3)150
-299 y Fp(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
+299 y Fi(x)p Fp(*)384 b Fq(Abbreviates)31 b(`)p Fi(x)p
+Fp(-$)p Fq(')150 458 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
+568 y(to)j(0.)275 727 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 837 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
+1036 y Fj(1.1.3)63 b(Mo)s(di\014ers)150 1183 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
+1293 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 1402 y(the)d(history)f
+(ev)m(en)m(t.)150 1562 y Fp(h)432 b Fq(Remo)m(v)m(e)32
+b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the)
+h(head.)150 1721 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
+1880 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 2040 y Fp(e)432 b Fq(Remo)m(v)m(e)32 b(all)f(but)f(the)h
+(trailing)g(su\016x.)150 2199 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
+2359 y Fp(s/)p Fi(old)p Fp(/)p Fi(new)p Fp(/)630 2468
+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 2578 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 2687 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 2797 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
+(to)g(the)g(last)g Fk(old)630 2907 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
+Fk(string)630 3016 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
+b(\014nal)630 3126 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 3285
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
+3445 y Fp(g)150 3554 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
+b(Used)39 b(in)f(conjunction)630 3664 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(/)p Fq(,)c(or)j(with)h(`)p Fp(&)p Fq('.)150 3823 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
(ord)e(in)g(the)g(ev)m(en)m(t.)p eop end
@@ -5773,8 +5807,8 @@ 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
+b Fh(int)53 b(history_expand)d Fg(\()p Ff(const)34 b(c)m(har)g
+(*string,)e(c)m(har)i(**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
@@ -5787,7 +5821,7 @@ b(Returns:)390 2839 y Fp(0)432 b Fq(If)37 b(no)g(expansions)g(to)s(ok)i
(expansion;)390 3380 y Fp(2)432 b Fq(if)28 b(the)f(returned)g(line)g
(should)g(b)s(e)g(displa)m(y)m(ed,)i(but)e(not)h(executed,)h(as)f(with)
f(the)h Fp(:p)870 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
+([Mo)s(di\014ers],)e(page)i(3\).)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
@@ -5929,51 +5963,51 @@ 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
+(<readline/history.h>)390 2725 y(int)390 2812 y(main)f(\(int)g(argc,)h
+(char)f(**argv\))390 2899 y({)468 2986 y(char)h(line[1024],)g(*t;)468
+3073 y(int)f(len,)g(done)h(=)e(0;)468 3248 y(line[0])i(=)f(0;)468
+3422 y(using_history)j(\(\);)468 3509 y(while)e(\(!done\))547
+3597 y({)625 3684 y(printf)g(\("history$)g("\);)625 3771
+y(fflush)g(\(stdout\);)625 3858 y(t)f(=)f(fgets)i(\(line,)f(sizeof)h
+(\(line\))f(-)g(1,)g(stdin\);)625 3945 y(if)g(\(t)g(&&)f(*t\))704
+4032 y({)782 4120 y(len)h(=)g(strlen)g(\(t\);)782 4207
+y(if)g(\(t[len)h(-)e(1])h(==)f('\\n'\))861 4294 y(t[len)h(-)g(1])f(=)h
+('\\0';)704 4381 y(})625 4555 y(if)g(\(!t\))704 4643
+y(strcpy)g(\(line,)h("quit"\);)625 4817 y(if)f(\(line[0]\))704
+4904 y({)782 4991 y(char)g(*expansion;)782 5078 y(int)g(result;)782
+5253 y(result)h(=)e(history_expand)k(\(line,)d(&expansion\);)782
+5340 y(if)g(\(result\))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
+b(Programming)30 b(with)g(GNU)h(History)1734 b(11)861
+299 y Fe(fprintf)41 b(\(stderr,)g("\045s\\n",)f(expansion\);)782
+473 y(if)g(\(result)h(<)e(0)h(||)f(result)i(==)f(2\))861
+560 y({)939 648 y(free)g(\(expansion\);)939 735 y(continue;)861
+822 y(})782 996 y(add_history)i(\(expansion\);)782 1083
+y(strncpy)f(\(line,)g(expansion,)g(sizeof)g(\(line\))f(-)g(1\);)782
+1171 y(free)g(\(expansion\);)704 1258 y(})625 1432 y(if)g(\(strcmp)h
+(\(line,)f("quit"\))h(==)f(0\))704 1519 y(done)g(=)f(1;)625
+1606 y(else)h(if)g(\(strcmp)h(\(line,)g("save"\))f(==)g(0\))704
+1694 y(write_history)i(\("history_file"\);)625 1781 y(else)e(if)g
+(\(strcmp)h(\(line,)g("read"\))f(==)g(0\))704 1868 y(read_history)i
+(\("history_file"\);)625 1955 y(else)e(if)g(\(strcmp)h(\(line,)g
+("list"\))f(==)g(0\))704 2042 y({)782 2130 y(register)h(HIST_ENTRY)h
+(**the_list;)782 2217 y(register)f(int)f(i;)782 2391
+y(the_list)h(=)f(history_list)i(\(\);)782 2478 y(if)e(\(the_list\))861
+2565 y(for)g(\(i)f(=)h(0;)f(the_list[i];)j(i++\))939
+2653 y(printf)f(\("\045d:)f(\045s\\n",)h(i)e(+)h(history_base,)i
+(the_list[i]->line\);)704 2740 y(})625 2827 y(else)e(if)g(\(strncmp)h
+(\(line,)g("delete",)g(6\))f(==)f(0\))704 2914 y({)782
+3001 y(int)h(which;)782 3088 y(if)g(\(\(sscanf)h(\(line)f(+)g(6,)g
+("\045d",)g(&which\)\))h(==)f(1\))861 3176 y({)939 3263
+y(HIST_ENTRY)i(*entry)e(=)g(remove_history)i(\(which\);)939
+3350 y(if)e(\(!entry\))1018 3437 y(fprintf)g(\(stderr,)i("No)d(such)i
+(entry)f(\045d\\n",)h(which\);)939 3524 y(else)1018 3611
+y({)1096 3699 y(free)f(\(entry->line\);)1096 3786 y(free)g(\(entry\);)
+1018 3873 y(})861 3960 y(})782 4047 y(else)861 4134 y({)939
+4222 y(fprintf)h(\(stderr,)g("non-numeric)h(arg)e(given)g(to)g
+(`delete'\\n"\);)861 4309 y(})704 4396 y(})547 4483 y(})390
+4570 y(})p eop end
%%Page: 12 15
TeXDict begin 12 14 bop 3659 -116 a Fq(12)150 299 y Fm(App)t(endix)52
b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359
diff --git a/doc/history.texi b/doc/history.texi
index 721118b..c15e957 100644
--- a/doc/history.texi
+++ b/doc/history.texi
@@ -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--2023 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/doc/history_3.ps b/doc/history_3.ps
index 4440b3f..8710a3d 100644
--- a/doc/history_3.ps
+++ b/doc/history_3.ps
@@ -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: Fri Apr 5 09:11:47 2024
+%%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,29 +261,29 @@ 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-2024 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
+E F2(HIST)72 194.4 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E(ANSION)-.81
+E F1 .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
+(xpansion in)-.15 F/F3 10/Times-Bold@0 SF(bash)3.322 E F1(.)A
(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
(xpansions introduce w)-.15 F 1.306(ords from the history list into the\
@@ -264,633 +297,663 @@ line is read.)-.15 F 1.297(It tak)6.297 F 1.297(es place in tw)-.1 F(o)
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
+300 R .117(The line selected from the history is the)5.116 F F0 -.15(ev)
+2.617 G(ent).15 E F1(,)A .846
+(and the portions of that line that are acted upon are)108 312 R F0(wor)
+3.346 E(ds)-.37 E F1 5.846(.V)C(arious)-6.956 E F0(modi\214er)3.346 E(s)
+-.1 E F1 .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)
+(ashion as)-.1 F F3(bash)2.804 E F1 .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
+(ord when surrounded by quotes)-.1 F(\(see the description of)108 348 Q
+F3(history_tok)2.5 E(enize\(\))-.1 E F1(belo)2.5 E(w\).)-.25 E .574
+(History e)108 364.8 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 376.8 S 2.5(ult. Only).1 F
+(backslash \()2.5 E 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 393.6 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 405.6 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 417.6 Q F3
+(!!)3.573 E F1 3.573(,a)C 1.073
+(nd substitutes one string for another in that line.)-3.573 F 1.072
+(It is described belo)6.072 F 3.572(wu)-.25 G(nder)-3.572 E F3(Ev)3.572
+E 1.072(ent Designators)-.1 F F1(.)A(This is the only history e)108
+429.6 Q(xpansion that does not be)-.15 E(gin with the history e)-.15 E
+(xpansion character)-.15 E(.)-.55 E F3(Ev)87 446.4 Q(ent Designators)-.1
+E F1 .672(An e)108 458.4 R -.15(ve)-.25 G .672(nt designator is a refer\
+ence to a command line entry in the history list.).15 F .672
+(Unless the reference is ab-)5.672 F(solute, e)108 470.4 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
+(he current position in the history list.)-2.5 E F3(!)108 487.2 Q F1
+(Start a history substitution, e)144 487.2 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, = or \(.).25 E F3(!)108 499.2 Q F0(n)A F1(Refer to command line)
+144 499.2 Q F0(n)2.86 E F1(.).24 E F3<21ad>108 511.2 Q F0(n)A F1
+(Refer to the current command minus)144 511.2 Q F0(n)2.86 E F1(.).24 E
+F3(!!)108 523.2 Q F1(Refer to the pre)144 523.2 Q(vious command.)-.25 E
+(This is a synon)5 E(ym for \231!\2551\232.)-.15 E F3(!)108 535.2 Q F0
+(string)A F1 .865(Refer to the most recent command preceding the curren\
+t position in the history list starting with)144 535.2 R F0(string)
+144.34 547.2 Q F1(.).22 E F3(!?)108 559.2 Q F0(string)A F3([?])A F1
+1.503(Refer to the most recent command preceding the current position i\
+n the history list containing)144 571.2 R F0(string)144.34 583.2 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 .39(missing, the string from the most recent sear\
+ch is used; it is an error if there is no pre)144 595.2 R .391
+(vious search)-.25 F(string.)144 607.2 Q F3<00>108 619.2 Q F0(string1)A
+F3<00>A F0(string2)A F3<00>A F1 2.599(Quick substitution.)144 631.2 R
+2.598(Repeat the last command, replacing)7.599 F F0(string1)5.438 E F1
+(with)5.098 E F0(string2)5.438 E F1 7.598(.E).02 G(qui)-7.598 E -.25(va)
+-.25 G 2.598(lent to).25 F(\231!!:s\000)144 643.2 Q F0(string1)A F1<00>A
+F0(string2)A F1(\000\232 \(see)A F3(Modi\214ers)2.5 E F1(belo)2.5 E
+(w\).)-.25 E F3(!#)108 655.2 Q F1(The entire command line typed so f)144
+655.2 Q(ar)-.1 E(.)-.55 E F3 -.75(Wo)87 672 S(rd Designators).75 E F1
+-.8(Wo)108 684 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 F3(:)3.814
+E F1 1.314(separates the e)3.814 F -.15(ve)-.25 G 1.314
+(nt speci\214cation).15 F .411(from the w)108 696 R .411(ord designator)
+-.1 F 5.411(.I)-.55 G 2.911(tm)-5.411 G .411(ay be omitted if the w)
+-2.911 F .411(ord designator be)-.1 F .411(gins with a)-.15 F F3<00>
+2.911 E F1(,)A F3($)2.911 E F1(,)A F3(*)2.911 E F1(,)A F3<ad>2.911 E F1
+2.911(,o)C(r)-2.911 E F3(%)2.911 E F1 5.41(.W)C(ords)-6.21 E .515
+(are numbered from the be)108 708 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
+.8 F(serted into the current line separated by single spaces.)108 720 Q
+(GNU History 8.3)72 768 Q(2024 March 29)134.29 E(1)198.45 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
+/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
+2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F1(The zeroth w)144 96 Q 2.5
+(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E F0
+(n)108.36 108 Q F1(The)144 108 Q F0(n)2.5 E F1(th w)A(ord.)-.1 E F2<00>
+108 120 Q F1(The \214rst ar)144 120 Q 2.5(gument. That)-.18 F(is, w)2.5
+E(ord 1.)-.1 E F2($)108 132 Q F1 .064(The last w)144 132 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
+(ord if there is only)-.1 F(one w)144 144 Q(ord in the line.)-.1 E F2(%)
+108 156 Q F1 1.124(The \214rst w)144 156 R 1.124
+(ord matched by the most recent \231?)-.1 F F0(string)A F1 3.624
+(?\232 search,)B 1.125(if the search string be)3.624 F 1.125
+(gins with a)-.15 F(character that is part of a w)144 168 Q(ord.)-.1 E
+F0(x)108.77 180 Q F2<ad>A F0(y)A F1 2.5(Ar)144 180 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 F2(*)108 192 Q F1 .219(All of the w)144 192 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 F2(*)2.718 E F1 .218(if there is)2.718 F
+(just one w)144 204 Q(ord in the e)-.1 E -.15(ve)-.25 G
+(nt; the empty string is returned in that case.).15 E F2(x*)108 216 Q F1
+(Abbre)144 216 Q(viates)-.25 E F0(x\255$)2.5 E F1(.)A F2<78ad>108 228 Q
+F1(Abbre)144 228 Q(viates)-.25 E F0(x\255$)2.5 E F1(lik)2.5 E(e)-.1 E F2
+(x*)2.5 E F1 2.5(,b)C(ut omits the last w)-2.7 E 2.5(ord. If)-.1 F F2(x)
+2.5 E F1(is missing, it def)2.5 E(aults to 0.)-.1 E(If a w)108 244.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 F2(Modi\214ers)87 261.6 Q F1 .183
+(After the optional w)108 273.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 \231:\232.)108 285.6 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
+(nt.).15 E F2(h)108 302.4 Q F1(Remo)144 302.4 Q .3 -.15(ve a t)-.15 H
+(railing \214le name component, lea).15 E(ving only the head.)-.2 E F2
+(t)108 314.4 Q F1(Remo)144 314.4 Q .3 -.15(ve a)-.15 H
+(ll leading \214le name components, lea).15 E(ving the tail.)-.2 E F2(r)
+108 326.4 Q F1(Remo)144 326.4 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 F2(e)108 338.4 Q F1(Remo)144 338.4 Q .3 -.15
+(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F2(p)108
+350.4 Q F1(Print the ne)144 350.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 F2(q)108 362.4 Q F1
+(Quote the substituted w)144 362.4 Q
+(ords, escaping further substitutions.)-.1 E F2(x)108 374.4 Q F1 .386
+(Quote the substituted w)144 374.4 R .386(ords as with)-.1 F F2(q)2.886
+E F1 2.886(,b)C .386(ut break into w)-3.086 F .385(ords at)-.1 F F2
+(blanks)2.885 E F1 .385(and ne)2.885 F 2.885(wlines. The)-.25 F F2(q)
+2.885 E F1(and)2.885 E F2(x)2.885 E F1(modi\214ers are mutually e)144
+386.4 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G
+(he last one supplied is used.)-2.5 E F2(s/)108 398.4 Q F0(old)A F2(/)A
+F0(ne)A(w)-.15 E F2(/)A F1(Substitute)144 410.4 Q F0(ne)3.328 E(w)-.15 E
+F1 .469(for the \214rst occurrence of)3.278 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 .954
-(delimiter in place of /.)144 374.4 R .953
+(delimiter in place of /.)144 422.4 R .953
(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
+(The delimiter may be quoted in)144 434.4 R F0(old)2.861 E F1(and)3.401
+E F0(ne)2.991 E(w)-.15 E F1 .131(with a single backslash.)2.941 F .131
+(If & appears in)5.131 F F0(ne)2.991 E(w)-.15 E F1 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 446.4 R F0
+(old)3.349 E F1 5.619(.A).77 G .619(single backslash will quote the &.)
+-2.5 F(If)5.619 E F0(old)3.349 E F1 .619(is null, it is set to the last)
+3.889 F F0(old)3.349 E F1(substi-)3.889 E .486(tuted, or)144 458.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
-(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
+(vious history substitutions took place, the last)-.25 F F0(string)3.326
+E F1 .487(in a)3.206 F F2(!?)2.987 E F0(string)A F2([?])A F1 2.987
+(search. If)5.487 F F0(ne)144.36 470.4 Q(w)-.15 E F1
+(is null, each matching)2.81 E F0(old)2.73 E F1(is deleted.)3.27 E F2(&)
+108 482.4 Q F1(Repeat the pre)144 482.4 Q(vious substitution.)-.25 E F2
+(g)108 494.4 Q F1 .267(Cause changes to be applied o)144 494.4 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 F2
+(:s)A F1 2.767<9a28>C(e.g.,)-2.767 E<99>144 506.4 Q F2(:gs/)A F0(old)A
+F2(/)A F0(ne)A(w)-.15 E F2(/)A F1(\232\) or \231)A F2(:&)A F1 2.5
+(\232. If)B(used with \231)2.5 E F2(: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 518.4 Q
+-.15(ve)-.25 G(nt line.).15 E(An)5 E F2(a)2.5 E F1
+(may be used as a synon)2.5 E(ym for)-.15 E F2(g)2.5 E F1(.)A F2(G)108
+530.4 Q F1(Apply the follo)144 530.4 Q(wing \231)-.25 E F2(s)A F1 2.5
+<9a6f>C 2.5<7299>-2.5 G F2(&)-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/F3 10.95/Times-Bold@0 SF(PR)72 547.2 Q
+(OGRAMMING WITH HIST)-.329 E(OR)-.197 E 2.738(YF)-.383 G(UNCTIONS)-2.738
+E F1(This section describes ho)108 559.2 Q 2.5(wt)-.25 G 2.5(ou)-2.5 G
+(se the History library in other programs.)-2.5 E F2(Intr)87 576 Q
+(oduction to History)-.18 E F1 2.882(Ap)108 588 S .382
+(rogrammer using the History library has a)-2.882 F -.25(va)-.2 G .383
+(ilable functions for remembering lines on a history list, as-).25 F
+.771(sociating arbitrary data with a line, remo)108 600 R .77
(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 612 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.803 G(pansion).2 E F1
+(function is a)108 624 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 640.8
+R .058(ace with a)-.1 F .917(set of well-kno)108 652.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\
-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)
--.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
-(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
-(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
-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
-(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
+(vious lines and using that te)-.25 F .917(xt in ne)-.15 F 3.418(wc)-.25
+G(om-)-3.418 E 4.184(mands. The)108 664.8 R 1.684(basic history manipul\
+ation commands are identical to the history substitution pro)4.184 F
+1.683(vided by)-.15 F F2(bash)108 676.8 Q F1(.)A 1.153
+(The programmer can also use the readline library)108 693.6 R 3.654(,w)
+-.65 G 1.154(hich includes some history manipulation by def)-3.654 F
+(ault,)-.1 E(and has the added adv)108 705.6 Q
+(antage of command line editing.)-.25 E 2.263(Before declaring an)108
+722.4 R 4.763(yf)-.15 G 2.263(unctions using an)-4.763 F 4.763(yf)-.15 G
+2.263(unctionality the History library pro)-4.763 F 2.263
+(vides in other code, an)-.15 F(GNU History 8.3)72 768 Q(2024 March 29)
+134.29 E(2)198.45 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
+/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 1.26
+(application writer should include the \214le)108 84 R F0(<r)5.426 E
+(eadline/history)-.37 E(.h>)-.55 E F1 1.261(in an)5.427 F 3.761<798c>
+-.15 G 1.261(le that uses the History library')-3.761 F(s)-.55 E 3.037
+(features. It)108 96 R .537(supplies e)3.037 F .537
+(xtern declarations for all of the library')-.15 F 3.037(sp)-.55 G .536
+(ublic functions and v)-3.037 F .536(ariables, and declares)-.25 F
+(all of the public data structures.)108 108 Q/F2 10/Times-Bold@0 SF
+(History Storage)87 124.8 Q F1
+(The history list is an array of history entries.)108 136.8 Q 2.5(Ah)5 G
+(istory entry is declared as follo)-2.5 E(ws:)-.25 E F0(typedef void *)
+108 153.6 Q F2(histdata_t;)2.5 E F1(typedef struct _hist_entry {)108
+170.4 Q(char *line;)113 182.4 Q(char *timestamp;)113 194.4 Q
+(histdata_t data;)113 206.4 Q 2.5(}H)108 218.4 S(IST_ENTR)-2.5 E -.92
+(Y;)-.65 G(The history list itself might therefore be declared as)108
+235.2 Q F0(HIST_ENTR)108 252 Q 2.5(Y*)-.18 G(*)-2.5 E F2
+(the_history_list;)2.5 E F1(The state of the History library is encapsu\
+lated into a single structure:)108 268.8 Q/F3 10/Courier@0 SF(/*)108
+285.6 Q 6(*As)114 297.6 S
+(tructure used to pass around the current state of the history.)-6 E(*/)
+114 309.6 Q(typedef struct _hist_state {)108 321.6 Q
+(HIST_ENTRY **entries; /* Pointer to entry records. */)120 333.6 Q
+(int offset;)120 345.6 Q(/* The current record. */)66 E(int length;)120
+357.6 Q(/* Number of records in list. */)66 E(int size;)120 369.6 Q
+(/* Number of records allocated. */)78 E(int flags;)120 381.6 Q 6(}H)108
+393.6 S(ISTORY_STATE;)-6 E F1(If the \215ags member includes)108 410.4 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 427.2 Q F1
+(This section describes the calling sequence for the v)108 439.2 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
-(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
+-.65 E F2(Initializing History and State Management)87 456 Q F1 1.274(T\
+his section describes functions used to initialize and manage the state\
+ of the History library when you)108 468 R -.1(wa)108 480 S
+(nt to use the history functions in your program.).1 E F0(void)108 496.8
+Q F2(using_history)2.5 E F1(\()4.166 E F0(void)A F1(\))1.666 E(Be)108
+508.8 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 525.6 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
+108 537.6 Q(.)-.65 E F0(void)108 554.4 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 566.4 Q F0(state)2.5
+E F1(.)A F2(History List Management)87 583.2 Q F1
+(These functions manage indi)108 595.2 Q(vidual entries on the history \
+list, or set parameters managing the list itself.)-.25 E F0(void)108 612
+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 624 Q F0(string)3.28 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
-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
+F2(NULL)3.279 E F1 5.779(.I)C 3.279(ft)-5.779 G .779(he maxi-)-3.279 F
+.786(mum number of history entries has been set using)108 636 R F2
+(sti\215e_history\(\))3.286 E F1 3.286(,a)C .786(nd the ne)-3.286 F
+3.287(wn)-.25 G .787(umber of history entries)-3.287 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
+-.15(ve)-.15 G(d.).15 E F0(void)108 664.8 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 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 676.8 Q F0(string)2.5 E F1(.)A F0(HIST_ENTR)108 693.6 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 705.6 Q .353 -.15(ve h)-.15
+H .053(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 .052(lement is returned so you can free the)
+-2.553 F(line, data, and containing structure.)108 717.6 Q
+(GNU History 8.3)72 768 Q(2024 March 29)134.29 E(3)198.45 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
-(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
+/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 F0(histdata_t)108 84
+Q/F2 10/Times-Bold@0 SF(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 .933
+(Free the history entry)108 96 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 .934(Returns the applica-)5.933 F
+(tion-speci\214c data so the caller can dispose of it.)108 108 Q F0
+(HIST_ENTR)108 124.8 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 136.8 Q 3.063(et)-.1 G .563(he history entry at of)-3.063 F
+(fset)-.25 E F0(whic)3.063 E(h)-.15 E F1(ha)3.063 E -.15(ve)-.2 G F0
+(line)3.213 E F1(and)3.063 E F0(data)3.063 E F1 5.562(.T)C .562
+(his returns the old entry so the caller can dis-)-5.562 F(pose of an)
+108 148.8 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 165.6 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 177.6 Q F0
+(void)108 194.4 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 206.4 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 218.4 Q F0(int)108 235.2 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 247.2 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 259.2 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 276 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\
+288 Q F2(Inf)87 304.8 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
-(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.)
+316.8 Q(vidual list entries.)-.25 E F0(HIST_ENTR)108 333.6 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
+.707(Return a)108 345.6 R F2(NULL)3.207 E F1 .707(terminated array of)
+3.207 F F0(HIST_ENTR)3.207 E 3.208(Y*)-.18 G F1 .708
+(which is the current input history)B 5.708(.E)-.65 G .708
+(lement 0 of this)-5.708 F(list is the be)108 357.6 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 374.4 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 386.4 Q
+(fset of the current history element.)-.25 E F0(HIST_ENTR)108 403.2 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)
--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
-(\))1.666 E .392
+415.2 R F2(wher)3.873 E(e_history\(\))-.18 E F1 6.373(.I)C 3.873(ft)
+-6.373 G 1.373(here is no entry)-3.873 F(there, return a)108 427.2 Q F2
+(NULL)2.5 E F1(pointer)2.5 E(.)-.55 E F0(HIST_ENTR)108 444 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.068(Return the history entry at position)108 456 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.069(starts at)3.569
+F F2(history_base)3.569 E F1(and)3.569 E .287(ends at)108 468 R F2
+(history_length)2.787 E F1 2.787<ad31>2.787 G 5.286(.I)-2.787 G 2.786
+(ft)-5.286 G .286(here is no entry there, or if)-2.786 F F0(of)2.786 E
+(fset)-.18 E F1 .286(is outside the v)2.786 F .286(alid range, return a)
+-.25 F F2(NULL)2.786 E F1(pointer)108 480 Q(.)-.55 E F0(time_t)108 496.8
+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 associated with the history entry p\
+assed as the ar)108 508.8 Q(gument.)-.18 E F0(int)108 525.6 Q F2
+(history_total_bytes)2.5 E F1(\()4.166 E F0(void)A F1(\))1.666 E .391
(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 537.6 R .392(This function returns the sum of the)5.392 F
+(lengths of all the lines in the history)108 549.6 Q(.)-.65 E F2(Mo)87
+566.4 Q(ving Ar)-.1 E(ound the History List)-.18 E F1
+(These functions allo)108 578.4 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 595.2 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 607.2 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 619.2 Q F0
+(HIST_ENTR)108 636 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 .207
+(Back up the current history of)108 648 R .207(fset to the pre)-.25 F
+.207(vious history entry)-.25 F 2.708(,a)-.65 G .208
+(nd return a pointer to that entry)-2.708 F 5.208(.I)-.65 G 2.708(ft)
+-5.208 G .208(here is)-2.708 F(no pre)108 660 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 676.8 Q 2.5(Y*)-.18 G F2(next_history)A F1(\()4.166 E F0
+(void)A F1(\))1.666 E .333(If the current history of)108 688.8 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.832(fset. If)-.25 F
+.332(the possi-)2.832 F .201(bly-incremented history of)108 700.8 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
+712.8 Q F2(NULL)2.5 E F1(pointer)2.5 E(.)-.55 E(GNU History 8.3)72 768 Q
+(2024 March 29)134.29 E(4)198.45 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
-.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
-(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
-(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
-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
-(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
+/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
+(Sear)87 84 Q(ching the History List)-.18 E F1 .006
+(These functions allo)108 96 R 2.506(ws)-.25 G .006(earching of the his\
+tory list for entries containing a speci\214c string.)-2.506 F .005
+(Searching may be)5.005 F 1.451(performed both forw)108 108 R 1.451
+(ard and backw)-.1 F 1.451(ard from the current history position.)-.1 F
+1.452(The search may be)6.452 F F0(anc)3.952 E(hor)-.15 E(ed)-.37 E F1
+(,)A(meaning that the string must match at the be)108 120 Q
+(ginning of the history entry)-.15 E(.)-.65 E F0(int)108 136.8 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 .156
+(Search the history for)108 148.8 R F0(string)2.656 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 .155(is less than 0, then the search)2.656
+F .801(is through pre)108 160.8 R .801
(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 .802(is found, then the current his-)3.301 F .065
+(tory inde)108 172.8 R 2.565(xi)-.15 G 2.564(ss)-2.565 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
-(is less than 0, then the search is through pre)3.563 F 1.064
+(fset in the line of the entry where)-.25 F F0(string)2.564 E F1 -.1(wa)
+108 184.8 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
+201.6 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 .683(Search the history for)108 213.6 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.064(must be)108 225.6 R 1.064(gin with)-.15 F F0(string)3.564 E F1
+6.064(.I)C(f)-6.064 E F0(dir)3.564 E(ection)-.37 E F1 1.063
+(is less than 0, then the search is through pre)3.564 F 1.063
(vious entries, otherwise)-.25 F .34(through subsequent entries.)108
-400.8 R(If)5.34 E F1(string)2.84 E F0 .34
+237.6 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
+F(turn v)108 249.6 Q(alue is 0.)-.25 E
+(Otherwise, nothing is changed, and the function returns \2551.)5 E F0
+(int)108 266.4 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 .604(Search for)108 278.4 R
+F0(string)3.104 E F1 .604(in the history list, starting at)3.104 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 .603(nto the list.)-3.104 F(If)5.603 E F0(dir)3.103 E
+(ection)-.37 E F1 .603(is ne)3.103 F -.05(ga)-.15 G(ti).05 E -.15(ve)
+-.25 G(,).15 E .608(the search proceeds backw)108 290.4 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 302.4 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 319.2 Q F1 .035(The History library c\
+an read the history from and write it to a \214le.)108 331.2 R .035
(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 343.2 Q F0(int)108 360 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 .051(Add the contents of)108 372 R F0(\214lename)2.551 E F1
+.051(to the history list, a line at a time.)2.551 F(If)5.052 E F0
+(\214lename)2.552 E F1(is)2.552 E F2(NULL)2.552 E F1 2.552(,t)C .052
+(hen read from)-2.552 F F0(\001/.his-)2.552 E(tory)108 384 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 400.8 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 .053(Read a range of lines from)
+108 412.8 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 .052(and end at)2.553 F F0(to)2.552 E
+F1(.)A(If)108 424.8 Q F0(fr)2.888 E(om)-.45 E F1 .388
+(is zero, start at the be)2.888 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 .389
+(hen read until the end of the \214le.)-2.889 F(If)5.389 E F0
+(\214lename)2.889 E F1(is)108 436.8 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 453.6 Q F2(write_history)2.5 E F1(\()4.166 E F0(const c)A
+(har *\214lename)-.15 E F1(\))1.666 E .962(Write the current history to)
+108 465.6 R F0(\214lename)3.462 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.461 E F1(is)3.461 E F2(NULL)3.461
+E F1 3.461(,t)C .961(hen write)-3.461 F(the history list to)108 477.6 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 494.4
+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 .716(Append the last)108
+506.4 R F0(nelements)3.216 E F1 .716(of the history list to)3.216 F F0
+(\214lename)3.216 E F1 5.717(.I)C(f)-5.717 E F0(\214lename)3.217 E F1
+(is)3.217 E F2(NULL)3.217 E F1 3.217(,t)C .717(hen append to)-3.217 F F0
+(\001/.history)3.217 E F1(.)A(Returns 0 on success, or)108 518.4 Q F2
+(err)2.5 E(no)-.15 E F1(on a read or write error)2.5 E(.)-.55 E F0(int)
+108 535.2 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 547.2 S .259(uncate the history \214le).35 F F0(\214lename)
+2.759 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.758 E F1 2.758(,t)C(hen)-2.758 E F0(\001/.history)
+2.758 E F1(is)2.758 E 2.5(truncated. Returns)108 559.2 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 F2(History Expansion)87 576 Q F1
+(These functions implement history e)108 588 Q(xpansion.)-.15 E F0(int)
+108 604.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 616.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 628.8 Q .565(If no e)180 628.8 R .565
+(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 .566(xt w)-.15 F .566(as the remo)-.1
+F -.25(va)-.15 G 3.066(lo).25 G 3.066(fe)-3.066 G(scape)-3.066 E
+(characters preceding the history e)180 640.8 Q(xpansion character\);)
+-.15 E(1)144 652.8 Q(if e)180 652.8 Q(xpansions did tak)-.15 E 2.5(ep)
+-.1 G(lace;)-2.5 E<ad31>144 664.8 Q(if there w)180 664.8 Q
+(as an error in e)-.1 E(xpansion;)-.15 E(2)144 676.8 Q
+(if the returned line should be displayed, b)180 676.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 688.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 705.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 .263(Returns the te)108 717.6 R .263
+(xt of the history e)-.15 F -.15(ve)-.25 G .263(nt be).15 F .263
+(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 .262
+(is modi\214ed to point to after the)2.762 F -2.15 -.25(ev e)108 729.6 T
+3.478(nt speci\214er).25 F 8.478(.A)-.55 G 5.978(tf)-8.478 G 3.478
+(unction entry)-5.978 F(,)-.65 E F0(cinde)5.978 E(x)-.2 E F1 3.478
+(points to the inde)5.978 F 5.978(xi)-.15 G(nto)-5.978 E F0(string)5.978
+E F1 3.478(where the history e)5.978 F -.15(ve)-.25 G(nt).15 E
+(GNU History 8.3)72 768 Q(2024 March 29)134.29 E(5)198.45 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
-(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
-.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
-(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
+/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 1.01
+(speci\214cation be)108 84 R(gins.)-.15 E F0(qc)6.01 E(har)-.15 E F1
+1.01(is a character that is allo)3.51 F 1.01(wed to end the e)-.25 F
+-.15(ve)-.25 G 1.01(nt speci\214cation in addition to the).15 F -.74(``)
+108 96 S(normal').74 E 2.5('t)-.74 G(erminating characters.)-2.5 E F0
+-.15(ch)108 112.8 S(ar **).15 E/F2 10/Times-Bold@0 SF(history_tok)2.5 E
+(enize)-.1 E F1(\()4.166 E F0(const c)A(har *string)-.15 E F1(\))1.666 E
+.238(Return an array of tok)108 124.8 R .238(ens parsed out of)-.1 F F0
+(string)2.738 E F1 2.738(,m)C .239(uch as the shell might.)-2.738 F .239
+(The tok)5.239 F .239(ens are split on the charac-)-.1 F(ters in the)108
+136.8 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 153.6 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 .026
+(Extract a string se)108 165.6 R .026(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
+.025(guments present in)-.18 F F0(string)2.525 E F1 5.025(.A)C -.18(rg)
+-5.025 G .025(uments are split).18 F(using)108 177.6 Q F2(history_tok)
+2.5 E(enize\(\))-.1 E F1(.)A F2(History V)87 194.4 Q(ariables)-.92 E F1
+(This section describes the e)108 206.4 Q(xternally-visible v)-.15 E
+(ariables e)-.25 E(xported by the GNU History Library)-.15 E(.)-.65 E F0
+(int)108 223.2 Q F2(history_base)2.5 E F1(The logical of)108 235.2 Q
+(fset of the \214rst entry in the history list.)-.25 E F0(int)108 252 Q
+F2(history_length)2.5 E F1
+(The number of entries currently stored in the history list.)108 264 Q
+F0(int)108 280.8 Q F2(history_max_entries)2.5 E F1
+(The maximum number of history entries.)108 292.8 Q
+(This must be changed using)5 E F2(sti\215e_history\(\))2.5 E F1(.)A F0
+(int)108 309.6 Q F2(history_write_timestamps)2.5 E F1 .483
(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
-.994(ult v).1 F .994(alue is 0, meaning that timestamps are not sa)-.25
+321.6 R 2.984(yc)-.15 G .484(an be preserv)-2.984 F .484
+(ed between sessions.)-.15 F .484(The de-)5.484 F -.1(fa)108 333.6 S
+.995(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
-(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
+(current timestamp format uses the v)3.494 F .994(alue of)-.25 F F0
+(history_comment_c)108 345.6 Q(har)-.15 E F1 .051
+(to delimit timestamp entries in the history \214le.)2.551 F .051
+(If that v)5.051 F .052(ariable does not ha)-.25 F .352 -.15(ve a v)-.2
+H(alue)-.1 E(\(the def)108 357.6 Q
+(ault\), timestamps will not be written.)-.1 E F0 -.15(ch)108 374.4 S
+(ar).15 E F2(history_expansion_char)2.5 E F1
+(The character that introduces a history e)108 386.4 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 403.2 S(ar).15 E F2(history_subst_char)2.5 E F1
+(The character that in)108 415.2 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 432 S(ar).15 E F2
+(history_comment_char)2.5 E F1 .117(During tok)108 444 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
+-.1 F .117(ord, then it and all subsequent char)-.1 F(-)-.2 E .276
+(acters up to a ne)108 456 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\
+(xpansion for the remainder of the line.)-.15 F .277(This is dis-)5.276
+F(abled by def)108 468 Q(ault.)-.1 E F0 -.15(ch)108 484.8 S(ar *).15 E
+F2(history_w)2.5 E(ord_delimiters)-.1 E F1
+(The characters that separate tok)108 496.8 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 513.6 S(ar *).15 E F2(history_no_expand_chars)2.5 E F1 2.054
+(The list of characters which inhibit history e)108 525.6 R 2.054
+(xpansion if found immediately follo)-.15 F(wing)-.25 E F2
+(history_expan-)4.554 E(sion_char)108 537.6 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 554.4 S(ar *).15 E F2
+(history_sear)2.5 E(ch_delimiter_chars)-.18 E F1 .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
+ to space, tab,)108 566.4 R F0(:)2.901 E F1(and)2.901 E F0(?)2.902 E F1
+(in the case of a substring search.)108 578.4 Q(The def)5 E
+(ault is empty)-.1 E(.)-.65 E F0(int)108 595.2 Q F2
+(history_quotes_inhibit_expansion)2.5 E F1 .186
+(If non-zero, the history e)108 607.2 R .185
+(xpansion code implements shell-lik)-.15 F 2.685(eq)-.1 G .185
+(uoting: single-quoted w)-2.685 F .185(ords are not scanned)-.1 F .836
+(for the history e)108 619.2 R .836
+(xpansion character or the history comment character)-.15 F 3.337(,a)-.4
+G .837(nd double-quoted w)-3.337 F .837(ords may ha)-.1 F -.15(ve)-.2 G
+.245(history e)108 631.2 R .245(xpansion performed, since single quotes\
+ are not special within double quotes.)-.15 F .244(The def)5.244 F .244
+(ault v)-.1 F .244(alue is)-.25 F(0.)108 643.2 Q F0(int)108 660 Q F2
+(history_quoting_state)2.5 E F1 .79(An application may set this v)108
+672 R .79(ariable to indicate that the current line being e)-.25 F .79
+(xpanded is subject to e)-.15 F(xisting)-.15 E .473(quoting. If set to)
+108 684 R F0<08>2.973 E F1 2.973(,t)C .473(he history e)-2.973 F .473(x\
+pansion function will assume that the line is single-quoted and inhibit\
+ e)-.15 F(x-)-.15 E .272
+(pansion until it reads an unquoted closing single quote; if set to)108
+696 R F0(")2.773 E F1 2.773(,h)C .273(istory e)-2.773 F .273
+(xpansion will assume the line is)-.15 F .298(double quoted until it re\
+ads an unquoted closing double quote. If set to zero, the def)108 708 R
+.297(ault, the history e)-.1 F(xpan-)-.15 E 1.542(sion function will as\
+sume the line is not quoted and treat quote characters within the line \
+as described)108 720 R(GNU History 8.3)72 768 Q(2024 March 29)134.29 E
+(6)198.45 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(abo)108 84 Q -.15(ve)
+-.15 G 5(.T).15 G(his is only ef)-5 E(fecti)-.25 E .3 -.15(ve i)-.25 H
+(f).15 E/F2 10/Times-Bold@0 SF(history_quotes_inhibit_expansion)2.5 E F1
+(is set.)2.5 E F0(rl_lineb)108 100.8 Q(uf_func_t *)-.2 E F2
+(history_inhibit_expansion_function)2.5 E F1 .348
+(This should be set to the address of a function that tak)108 112.8 R
+.348(es tw)-.1 F 2.848(oa)-.1 G -.18(rg)-2.848 G .347(uments: a).18 F F2
+.347(char *)2.847 F F1(\()2.847 E F0(string)A F1 2.847(\)a)C .347(nd an)
+-2.847 F F2(int)2.847 E F1(inde)2.847 E(x)-.15 E .227
+(into that string \()108 124.8 R F0(i)A F1 2.727(\). It)B .227
(should return a non-zero v)2.727 F .227(alue if the history e)-.25 F
-.227(xpansion starting at)-.15 F 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.728 E F1 .228
+(should not)2.728 F .019(be performed; zero if the e)108 136.8 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 .018(that use)2.519 F(the history e)108 148.8 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 165.6 Q F0(\001/.history)109.666 177.6 Q
+F1(Def)144 189.6 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 206.4 Q F0
+(The Gnu Readline Libr)108 218.4 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 230.4 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 242.4 Q F1(\(1\))A F0 -.37(re)108 254.4 S(adline).37 E F1
+(\(3\))A F3 -.548(AU)72 271.2 S(THORS).548 E F1(Brian F)108 283.2 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
+295.2 Q(g)-.18 E(Chet Rame)108 312 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 324 Q(y@case.edu)-.15 E F3 -.11(BU)72 340.8 S 2.738(GR)
+.11 G(EPOR)-2.738 E(TS)-.438 E F1 .16(If you \214nd a b)108 352.8 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)
+2.66(es)-.1 G .16(ure that it really is)-2.66 F 2.5(ab)108 364.8 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 .705
+(Once you ha)108 381.6 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
+(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
+393.6 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
+(mailed to)108 405.6 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 422.4 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 March 29)134.29 E(7)198.45 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/hstech.texi b/doc/hstech.texi
index da6417b..5d4efe5 100644
--- a/doc/hstech.texi
+++ b/doc/hstech.texi
@@ -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-2023 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
@@ -369,7 +369,7 @@ 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:
@table @code
@@ -517,9 +517,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;
diff --git a/doc/hsuser.texi b/doc/hsuser.texi
index 9081baf..4c5dc84 100644
--- a/doc/hsuser.texi
+++ b/doc/hsuser.texi
@@ -90,8 +90,8 @@ 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.
+If @env{HISTFILE} is unset or null,
+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
@@ -104,7 +104,7 @@ 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
+The @code{fc} builtin command 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.
@@ -113,8 +113,9 @@ 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
+list.
+The @env{HISTCONTROL} and @env{HISTIGNORE}
+variables are used 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
@@ -192,7 +193,7 @@ 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.
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.
@@ -250,6 +251,7 @@ 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.
+If @env{HISTFILE} is unset or null, these options have no effect.
The return value is 0 unless an invalid option is encountered, an
error occurs while reading or writing the history file, an invalid
@@ -282,14 +284,21 @@ expansion functions about quoting still in effect from previous lines.
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
+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}.
+The line is broken into words in the same fashion
that Bash does, 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;
@@ -307,6 +316,16 @@ also treated as quoted if it immediately precedes the closing double quote
in a double-quoted string.
@end ifset
+There is a special abbreviation for substitution, active when the
+@var{quick substitution} character (default @samp{^})
+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 line.
+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
@@ -347,6 +366,9 @@ 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.
+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.
@cindex history events
@table @asis
@@ -354,8 +376,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,
@@ -400,6 +423,8 @@ The entire command line typed so far.
@subsection 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 @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
diff --git a/doc/readline.0 b/doc/readline.0
index b7c45a7..c638199 100644
--- a/doc/readline.0
+++ b/doc/readline.0
@@ -1,75 +1,76 @@
-READLINE(3) Library Functions Manual READLINE(3)
+_R_E_A_D_L_I_N_E(3) Library Functions Manual _R_E_A_D_L_I_N_E(3)
-
-
-NAME
+NNAAMMEE
readline - get a line from a user with editing
-SYNOPSIS
- #include <stdio.h>
- #include <readline/readline.h>
- #include <readline/history.h>
+SSYYNNOOPPSSIISS
+ ##iinncclluuddee <<ssttddiioo..hh>>
+ ##iinncclluuddee <<rreeaaddlliinnee//rreeaaddlliinnee..hh>>
+ ##iinncclluuddee <<rreeaaddlliinnee//hhiissttoorryy..hh>>
- char *
- readline (const char *prompt);
+ _c_h_a_r _*
+ rreeaaddlliinnee (_c_o_n_s_t _c_h_a_r _*_p_r_o_m_p_t);
-COPYRIGHT
- Readline is Copyright (C) 1989-2020 Free Software Foundation, Inc.
+CCOOPPYYRRIIGGHHTT
+ Readline is Copyright (C) 1989-2024 Free Software Foundation, Inc.
-DESCRIPTION
- readline will read a line from the terminal and return it, using prompt
- as a prompt. If prompt is NULL or the empty string, no prompt is is-
- sued. The line returned is allocated with malloc(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.
+DDEESSCCRRIIPPTTIIOONN
+ rreeaaddlliinnee will read a line from the terminal and return it, using pprroommpptt
+ as a prompt. If pprroommpptt is NNUULLLL or the empty string, no prompt is is-
+ sued. The line returned is allocated with _m_a_l_l_o_c(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. Since it's possible to
+ enter characters into the line while quoting them to disable any rreeaadd--
+ lliinnee editing function they might normally have, this line may include
+ embedded newlines and other special characters.
- readline offers editing capabilities while the user is entering the
+ rreeaaddlliinnee 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 readline. Much
- more functionality is available; see The GNU Readline Library and The
- GNU History Library for additional information.
+ This manual page describes only the most basic use of rreeaaddlliinnee. Much
+ more functionality is available; see _T_h_e _G_N_U _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y and _T_h_e
+ _G_N_U _H_i_s_t_o_r_y _L_i_b_r_a_r_y for additional information.
-RETURN VALUE
- readline returns the text of the line read. A blank line returns the
- empty string. If EOF is encountered while reading a line, and the line
- is empty, NULL is returned. If an EOF is read with a non-empty line,
+RREETTUURRNN VVAALLUUEE
+ rreeaaddlliinnee returns the text of the line read. A blank line returns the
+ empty string. If EEOOFF is encountered while reading a line, and the line
+ is empty, NNUULLLL is returned. If an EEOOFF is read with a non-empty line,
it is treated as a newline.
-NOTATION
+NNOOTTAATTIIOONN
An Emacs-style notation is used to denote keystrokes. Control keys are
- denoted by C-key, e.g., C-n means Control-N. Similarly, meta keys are
- denoted by M-key, so M-x means Meta-X. (On keyboards without a meta
- key, M-x means ESC x, i.e., press the Escape key then the x key. This
- makes ESC the meta prefix. The combination M-C-x means ESC-Control-x,
- or press the Escape key then hold the Control key while pressing the x
+ denoted by C-_k_e_y, e.g., C-n means Control-N. Similarly, _m_e_t_a keys are
+ denoted by M-_k_e_y, so M-x means Meta-X. (On keyboards without a _m_e_t_a
+ key, M-_x means ESC _x, i.e., press the Escape key then the _x key. This
+ makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means ESC-Control-_x,
+ or press the Escape key then hold the Control key while pressing the _x
key.)
- Readline commands may be given numeric arguments, which normally act as
- a repeat count. Sometimes, however, it is the sign of the argument
- that is significant. Passing a negative argument to a command that
- acts in the forward direction (e.g., kill-line) causes that command to
- act in a backward direction. Commands whose behavior with arguments
+ Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, 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., kkiillll--lliinnee) 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 killing text, the text deleted is saved
- for possible future retrieval (yanking). The killed text is saved in a
- kill ring. Consecutive kills cause the text to be accumulated into one
+ When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved
+ for possible future retrieval (_y_a_n_k_i_n_g). The killed text is saved in a
+ _k_i_l_l _r_i_n_g. Consecutive kills cause the text to be accumulated into one
unit, which can be yanked all at once. Commands which do not kill text
separate the chunks of text on the kill ring.
-INITIALIZATION FILE
+IINNIITTIIAALLIIZZAATTIIOONN FFIILLEE
Readline is customized by putting commands in an initialization file
- (the inputrc file). The name of this file is taken from the value of
- the INPUTRC environment variable. If that variable is unset, the de-
- fault is ~/.inputrc. If that file does not exist or cannot be read,
- the ultimate default is /etc/inputrc. When a program which uses the
+ (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of
+ the IINNPPUUTTRRCC environment variable. If that variable is unset, the de-
+ fault is _~_/_._i_n_p_u_t_r_c. If that file does not exist or cannot be read,
+ the ultimate default is _/_e_t_c_/_i_n_p_u_t_r_c. 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 # are comments. Lines beginning with a $ indicate conditional
- constructs. Other lines denote key bindings and variable settings.
+ 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 ## are comments. Lines beginning with a $$ indicate conditional
+ constructs. Other lines denote key bindings and variable settings.
Each program using this library may add its own commands and bindings.
For example, placing
@@ -78,74 +79,74 @@ READLINE(3) Library Functions Manual READLINE(3)
or
C-Meta-u: universal-argument
- into the inputrc would make M-C-u execute the readline command univer-
- sal-argument.
+ into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_-
+ _s_a_l_-_a_r_g_u_m_e_n_t.
- The following symbolic character names are recognized while processing
- key bindings: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT,
- SPACE, SPC, and TAB.
+ The following symbolic character names are recognized while processing
+ key bindings: _D_E_L, _E_S_C, _E_S_C_A_P_E, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _R_U_B_O_U_T,
+ _S_P_A_C_E, _S_P_C, and _T_A_B.
- In addition to command names, readline allows keys to be bound to a
- string that is inserted when the key is pressed (a macro).
+ In addition to command names, readline allows keys to be bound to a
+ string that is inserted when the key is pressed (a _m_a_c_r_o).
- Key Bindings
- The syntax for controlling key bindings in the inputrc file is simple.
- All that is required is the name of the command or the text of a macro
+ KKeeyy BBiinnddiinnggss
+ The syntax for controlling key bindings in the _i_n_p_u_t_r_c 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 Meta- or
- Control- prefixes, or as a key sequence. The name and key sequence are
+ fied in one of two ways: as a symbolic key name, possibly with _M_e_t_a_- or
+ _C_o_n_t_r_o_l_- 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 keyname:function-name or macro, keyname is the name
+ When using the form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_n_a_m_e is the name
of a key spelled out in English. For example:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
- In the above example, C-u is bound to the function universal-argument,
- M-DEL is bound to the function backward-kill-word, and C-o is bound to
- run the macro expressed on the right hand side (that is, to insert the
- text ``> output'' into the line).
+ In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt,
+ _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, 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).
- In the second form, "keyseq":function-name or macro, keyseq differs
- from 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
+ In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs
+ from kkeeyynnaammee 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.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
- In this example, C-u is again bound to the function universal-argument.
- 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 this example, _C_-_u is again bound to the function uunniivveerrssaall--aarrgguummeenntt.
+ _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ 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
- \C- control prefix
- \M- meta prefix
- \e an escape character
- \\ backslash
- \" literal ", a double quote
- \' literal ', a single quote
+ \\CC-- control prefix
+ \\MM-- meta prefix
+ \\ee an escape character
+ \\\\ backslash
+ \\"" literal ", a double quote
+ \\'' literal ', a single quote
In addition to the GNU Emacs style escape sequences, a second set of
backslash escapes is available:
- \a alert (bell)
- \b backspace
- \d delete
- \f form feed
- \n newline
- \r carriage return
- \t horizontal tab
- \v vertical tab
- \nnn the eight-bit character whose value is the octal value
- nnn (one to three digits)
- \xHH the eight-bit character whose value is the hexadecimal
- value HH (one or two hex digits)
+ \\aa alert (bell)
+ \\bb backspace
+ \\dd delete
+ \\ff form feed
+ \\nn newline
+ \\rr carriage return
+ \\tt horizontal tab
+ \\vv vertical tab
+ \\_n_n_n the eight-bit character whose value is the octal value
+ _n_n_n (one to three digits)
+ \\xx_H_H the eight-bit character whose value is the hexadecimal
+ value _H_H (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
@@ -153,30 +154,30 @@ READLINE(3) Library Functions Manual READLINE(3)
above are expanded. Backslash will quote any other character in the
macro text, including " and '.
- Bash allows the current readline key bindings to be displayed or modi-
- fied with the bind builtin command. The editing mode may be switched
- during interactive use by using the -o option to the set builtin com-
+ BBaasshh allows the current readline key bindings to be displayed or modi-
+ fied with the bbiinndd builtin command. The editing mode may be switched
+ during interactive use by using the --oo option to the sseett builtin com-
mand. Other programs using this library provide similar mechanisms.
- The inputrc file may be edited and re-read if a program does not pro-
+ The _i_n_p_u_t_r_c file may be edited and re-read if a program does not pro-
vide any other means to incorporate new bindings.
- Variables
+ VVaarriiaabblleess
Readline has variables that can be used to further customize its behav-
- ior. A variable may be set in the inputrc file with a statement of the
+ ior. A variable may be set in the _i_n_p_u_t_r_c file with a statement of the
form
- set variable-name value
+ sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
- Except where noted, readline variables can take the values On or Off
+ Except where noted, readline variables can take the values OOnn or OOffff
(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 On. All other values are equivalent
- to Off. The variables and their default values are:
-
- active-region-start-color
- A string variable that controls the text color and background
- when displaying the text in the active region (see the descrip-
- tion of enable-active-region below). This string must not take
+ When readline reads a variable value, empty or null values, "on" (case-
+ insensitive), and "1" are equivalent to OOnn. All other values are
+ equivalent to OOffff. The variables and their default values are:
+
+ aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the descrip-
+ tion of eennaabbllee--aaccttiivvee--rreeggiioonn 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 +185,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".
- active-region-end-color
- A string variable that "undoes" the effects of active-re-
- gion-start-color and restores "normal" terminal display appear-
+ aaccttiivvee--rreeggiioonn--eenndd--ccoolloorr
+ A string variable that "undoes" the effects of aaccttiivvee--rree--
+ ggiioonn--ssttaarrtt--ccoolloorr and 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,599 +197,605 @@ 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".
- bell-style (audible)
- 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, readline attempts to ring the terminal's bell.
- bind-tty-special-chars (On)
- If set to On (the default), readline attempts to bind the con-
- trol characters treated specially by the kernel's terminal
- driver to their readline equivalents.
- blink-matching-paren (Off)
- If set to On, readline attempts to briefly move the cursor to an
+ bbeellll--ssttyyllee ((aauuddiibbllee))
+ Controls what happens when readline wants to ring the terminal
+ bell. If set to nnoonnee, readline never rings the bell. If set to
+ vviissiibbllee, readline uses a visible bell if one is available. If
+ set to aauuddiibbllee, readline attempts to ring the terminal's bell.
+ bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn))
+ If set to OOnn (the default), readline attempts to bind the con-
+ trol characters that are treated specially by the kernel's ter-
+ minal driver to their readline equivalents. These override the
+ default readline bindings described here. Type "stty -a" at a
+ bbaasshh prompt to see your current terminal settings, including the
+ special control characters (usually cccchhaarrss).
+ bblliinnkk--mmaattcchhiinngg--ppaarreenn ((OOffff))
+ If set to OOnn, readline attempts to briefly move the cursor to an
opening parenthesis when a closing parenthesis is inserted.
- colored-completion-prefix (Off)
- If set to On, when listing completions, readline displays the
+ ccoolloorreedd--ccoommpplleettiioonn--pprreeffiixx ((OOffff))
+ If set to OOnn, when listing completions, readline 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 LS_COLORS environment variable. If there is a color defini-
- tion in $LS_COLORS for the custom suffix "readline-colored-com-
+ ent color. The color definitions are taken from the value of
+ the LLSS__CCOOLLOORRSS environment variable. If there is a color defini-
+ tion in $$LLSS__CCOOLLOORRSS for the custom suffix "readline-colored-com-
pletion-prefix", readline uses this color for the common prefix
instead of its default.
- colored-stats (Off)
- If set to On, readline displays possible completions using dif-
+ ccoolloorreedd--ssttaattss ((OOffff))
+ If set to OOnn, readline displays possible completions using dif-
ferent colors to indicate their file type. The color defini-
- tions are taken from the value of the LS_COLORS environment
+ tions are taken from the value of the LLSS__CCOOLLOORRSS environment
variable.
- comment-begin (``#'')
- The string that is inserted in vi mode when the insert-comment
- command is executed. This command is bound to M-# in emacs mode
- and to # in vi command mode.
- completion-display-width (-1)
+ ccoommmmeenntt--bbeeggiinn (("##"))
+ The string that is inserted when the iinnsseerrtt--ccoommmmeenntt command is
+ executed. This command is bound to MM--## in emacs mode and to ##
+ in vi command mode.
+ ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh ((--11))
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.
- completion-ignore-case (Off)
- If set to On, readline performs filename matching and completion
+ ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
+ If set to OOnn, readline performs filename matching and completion
in a case-insensitive fashion.
- completion-map-case (Off)
- If set to On, and completion-ignore-case is enabled, readline
- treats hyphens (-) and underscores (_) as equivalent when per-
+ ccoommpplleettiioonn--mmaapp--ccaassee ((OOffff))
+ If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, readline
+ treats hyphens (_-) and underscores (__) as equivalent when per-
forming case-insensitive filename matching and completion.
- completion-prefix-display-length (0)
- 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-
+ ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00))
+ 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.
- completion-query-items (100)
- This determines when the user is queried about viewing the num-
- ber of possible completions generated by the possible-comple-
- tions 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
+ ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
+ This determines when the user is queried about viewing the num-
+ ber of possible completions generated by the ppoossssiibbllee--ccoommppllee--
+ ttiioonnss 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.
- convert-meta (On)
- If set to On, readline will convert characters with the eighth
+ ccoonnvveerrtt--mmeettaa ((OOnn))
+ If set to OOnn, 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 meta prefix). The default is On, but readline will set
- it to Off if the locale contains eight-bit characters. This
- variable is dependent on the LC_CTYPE locale category, and may
+ prefixing it with an escape character (in effect, using escape
+ as the _m_e_t_a _p_r_e_f_i_x). The default is _O_n, but readline will set
+ it to _O_f_f if the locale contains eight-bit characters. This
+ variable is dependent on the LLCC__CCTTYYPPEE locale category, and may
change if the locale is changed.
- disable-completion (Off)
- If set to On, readline will inhibit word completion. Completion
+ ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
+ If set to OOnn, readline will inhibit word completion. Completion
characters will be inserted into the line as if they had been
- mapped to self-insert.
- echo-control-characters (On)
- When set to On, on operating systems that indicate they support
+ mapped to sseellff--iinnsseerrtt.
+ eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn))
+ When set to OOnn, on operating systems that indicate they support
it, readline echoes a character corresponding to a signal gener-
ated from the keyboard.
- editing-mode (emacs)
+ eeddiittiinngg--mmooddee ((eemmaaccss))
Controls whether readline begins with a set of key bindings sim-
- ilar to Emacs or vi. editing-mode can be set to either emacs or
- vi.
- emacs-mode-string (@)
- If the show-mode-in-prompt variable is enabled, this string is
+ ilar to _E_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can be set to either eemmaaccss or
+ vvii.
+ eemmaaccss--mmooddee--ssttrriinngg ((@@))
+ If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t 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
+ key binding, so the standard set of meta- and control prefixes
+ and backslash escape sequences is available. Use the \1 and \2
+ escapes to begin and end sequences of non-printing characters,
+ which can be used to embed a terminal control sequence into the
mode string.
- enable-active-region (On)
- The point is the current cursor position, and mark refers to a
- saved cursor position. 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 ac-
- tive. 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 stand-
- out mode. The active region shows the text inserted by brack-
- eted-paste and any matching text found by incremental and non-
+ eennaabbllee--aaccttiivvee--rreeggiioonn ((OOnn))
+ The _p_o_i_n_t is the current cursor position, and _m_a_r_k refers to a
+ saved cursor position. The text between the point and mark is
+ referred to as the _r_e_g_i_o_n. When this variable is set to _O_n,
+ readline allows certain commands to designate the region as _a_c_-
+ _t_i_v_e. When the region is active, readline highlights the text
+ in the region using the value of the aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr,
+ 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.
- enable-bracketed-paste (On)
- 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
+ eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOnn))
+ When set to OOnn, 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 prevents readline from executing any editing
commands bound to key sequences appearing in the pasted text.
- enable-keypad (Off)
- When set to On, readline will try to enable the application key-
+ eennaabbllee--kkeeyyppaadd ((OOffff))
+ When set to OOnn, readline will try to enable the application key-
pad when it is called. Some systems need this to enable the ar-
row keys.
- enable-meta-key (On)
- When set to On, readline will try to enable any meta modifier
+ eennaabbllee--mmeettaa--kkeeyy ((OOnn))
+ When set to OOnn, readline will try to enable any meta modifier
key the terminal claims to support when it is called. On many
terminals, the meta key is used to send eight-bit characters.
- expand-tilde (Off)
- If set to On, tilde expansion is performed when readline at-
+ eexxppaanndd--ttiillddee ((OOffff))
+ If set to OOnn, tilde expansion is performed when readline at-
tempts word completion.
- history-preserve-point (Off)
- If set to On, the history code attempts to place point at the
- same location on each history line retrieved with previous-his-
- tory or next-history.
- history-size (unset)
+ hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff))
+ If set to OOnn, the history code attempts to place point at the
+ same location on each history line retrieved with pprreevviioouuss--hhiiss--
+ ttoorryy or nneexxtt--hhiissttoorryy.
+ hhiissttoorryy--ssiizzee ((uunnsseett))
Set the maximum number of history entries saved in the history
list. If set to zero, any existing history entries are deleted
and no new entries are saved. If set to a value less than zero,
- the number of history entries is not limited. By default, the
+ the number of history entries is not limited. By default, the
number of history entries is not limited. If an attempt is made
- to set history-size to a non-numeric value, the maximum number
+ to set _h_i_s_t_o_r_y_-_s_i_z_e to a non-numeric value, the maximum number
of history entries will be set to 500.
- horizontal-scroll-mode (Off)
- When set to On, makes readline use a single line for display,
+ hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
+ When set to OOnn, 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
+ becomes longer than the screen width rather than wrapping to a
+ new line. This setting is automatically enabled for terminals
of height 1.
- input-meta (Off)
- If set to On, readline will enable eight-bit input (that is, it
- will not clear the eighth bit in the characters it reads), re-
- gardless of what the terminal claims it can support. The name
- meta-flag is a synonym for this variable. The default is Off,
- but readline will set it to On if the locale contains eight-bit
- characters. This variable is dependent on the LC_CTYPE locale
+ iinnppuutt--mmeettaa ((OOffff))
+ If set to OOnn, 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
+ mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f,
+ but readline will set it to _O_n if the locale contains eight-bit
+ characters. This variable is dependent on the LLCC__CCTTYYPPEE locale
category, and may change if the locale is changed.
- isearch-terminators (``C-[ C-J'')
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a com-
- mand. If this variable has not been given a value, the charac-
- ters ESC and C-J will terminate an incremental search.
- keymap (emacs)
- Set the current readline keymap. The set of legal keymap names
- is emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,
- vi-command, and vi-insert. vi is equivalent to vi-command;
- emacs is equivalent to emacs-standard. The default value is
- emacs. The value of editing-mode also affects the default
+ iisseeaarrcchh--tteerrmmiinnaattoorrss (("CC--[[CC--JJ"))
+ 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_S_C and _C_-_J will terminate an incremental search.
+ kkeeyymmaapp ((eemmaaccss))
+ Set the current readline keymap. The set of legal keymap names
+ is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_,
+ _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d;
+ _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is
+ _e_m_a_c_s. The value of eeddiittiinngg--mmooddee also affects the default
keymap.
- keyseq-timeout (500)
- Specifies the duration readline will wait for a character when
- reading an ambiguous key sequence (one that can form a complete
+ kkeeyysseeqq--ttiimmeeoouutt ((550000))
+ Specifies the duration _r_e_a_d_l_i_n_e 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, readline will use the shorter but
+ ceived within the timeout, _r_e_a_d_l_i_n_e will use the shorter but
complete key sequence. The value is specified in milliseconds,
- so a value of 1000 means that readline will wait one second for
+ so a value of 1000 means that _r_e_a_d_l_i_n_e 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
+ or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait
until another key is pressed to decide which key sequence to
complete.
- mark-directories (On)
- If set to On, completed directory names have a slash appended.
- mark-modified-lines (Off)
- If set to On, history lines that have been modified are dis-
- played with a preceding asterisk (*).
- mark-symlinked-directories (Off)
- If set to On, completed names which are symbolic links to direc-
- tories have a slash appended (subject to the value of mark-di-
- rectories).
- match-hidden-files (On)
- This variable, when set to On, causes readline to match files
- whose names begin with a `.' (hidden files) when performing
- filename completion. If set to Off, the leading `.' must be
- supplied by the user in the filename to be completed.
- menu-complete-display-prefix (Off)
- If set to On, menu completion displays the common prefix of the
+ mmaarrkk--ddiirreeccttoorriieess ((OOnn))
+ If set to OOnn, completed directory names have a slash appended.
+ mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
+ If set to OOnn, history lines that have been modified are dis-
+ played with a preceding asterisk (**).
+ mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff))
+ If set to OOnn, completed names which are symbolic links to direc-
+ tories have a slash appended (subject to the value of mmaarrkk--ddii--
+ rreeccttoorriieess).
+ mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn))
+ This variable, when set to OOnn, forces readline to match files
+ whose names begin with a "." (hidden files) when performing
+ filename completion. If set to OOffff, the user must include the
+ leading "." in the filename to be completed.
+ mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff))
+ If set to OOnn, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling
through the list.
- output-meta (Off)
- If set to On, readline will display characters with the eighth
+ oouuttppuutt--mmeettaa ((OOffff))
+ If set to OOnn, 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
+ The default is _O_f_f, but readline will set it to _O_n if the locale
contains eight-bit characters. This variable is dependent on
- the LC_CTYPE locale category, and may change if the locale is
+ the LLCC__CCTTYYPPEE locale category, and may change if the locale is
changed.
- page-completions (On)
- If set to On, readline uses an internal more-like pager to dis-
+ ppaaggee--ccoommpplleettiioonnss ((OOnn))
+ If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis-
play a screenful of possible completions at a time.
- print-completions-horizontally (Off)
- If set to On, readline will display completions with matches
+ pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
+ If set to OOnn, readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the
screen.
- revert-all-at-newline (Off)
- If set to On, readline will undo all changes to history lines
- before returning when accept-line is executed. By default, his-
- tory lines may be modified and retain individual undo lists
- across calls to readline.
- show-all-if-ambiguous (Off)
+ rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff))
+ If set to OOnn, readline will undo all changes to history lines
+ before returning when aacccceepptt--lliinnee is executed. By default, his-
+ tory lines may be modified and retain individual undo lists
+ across calls to rreeaaddlliinnee.
+ sseeaarrcchh--iiggnnoorree--ccaassee ((OOffff))
+ If set to OOnn, readline performs incremental and non-incremental
+ history list searches in a case-insensitive fashion.
+ sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
This alters the default behavior of the completion functions.
- If set to On, words which have more than one possible completion
- cause the matches to be listed immediately instead of ringing
+ If set to OOnn, words which have more than one possible completion
+ cause the matches to be listed immediately instead of ringing
the bell.
- show-all-if-unmodified (Off)
- This alters the default behavior of the completion functions in
- a fashion similar to show-all-if-ambiguous. If set to On, words
+ sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff))
+ This alters the default behavior of the completion functions in
+ a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, 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.
- show-mode-in-prompt (Off)
- If set to On, add a string to the beginning of the prompt indi-
+ sshhooww--mmooddee--iinn--pprroommpptt ((OOffff))
+ If set to OOnn, add a string to the beginning of the prompt indi-
cating the editing mode: emacs, vi command, or vi insertion.
- The mode strings are user-settable (e.g., emacs-mode-string).
- skip-completed-text (Off)
- If set to On, this alters the default completion behavior when
+ The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g).
+ sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff))
+ If set to OOnn, this alters the default completion behavior when
inserting a single match into the line. It's only active when
performing completion in the middle of a word. If enabled,
readline does not insert characters from the completion that
match characters after point in the word being completed, so
portions of the word following the cursor are not duplicated.
- vi-cmd-mode-string ((cmd))
- If the show-mode-in-prompt variable is enabled, this string is
+ vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd))))
+ If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t 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.
- vi-ins-mode-string ((ins))
- If the show-mode-in-prompt variable is enabled, this string is
+ vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss))))
+ If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t 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-
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
trol sequence into the mode string.
- visible-stats (Off)
- If set to On, a character denoting a file's type as reported by
- stat(2) is appended to the filename when listing possible com-
+ vviissiibbllee--ssttaattss ((OOffff))
+ If set to OOnn, a character denoting a file's type as reported by
+ _s_t_a_t(2) is appended to the filename when listing possible com-
pletions.
- Conditional Constructs
- Readline implements a facility similar in spirit to the conditional
- compilation features of the C preprocessor which allows key bindings
- and variable settings to be performed as the result of tests. There
+ CCoonnddiittiioonnaall CCoonnssttrruuccttss
+ Readline implements a facility similar in spirit to the conditional
+ compilation features of the C preprocessor which allows key bindings
+ and variable settings to be performed as the result of tests. There
are four parser directives used.
- $if The $if construct allows bindings to be made based on the edit-
- ing mode, the terminal being used, or the application using
- readline. The text of the test, after any comparison operator,
+ $$iiff The $$iiff construct allows bindings to be made based on the edit-
+ ing mode, the terminal being used, or the application using
+ readline. The text of the test, after any comparison operator,
extends to the end of the line; unless otherwise noted, no char-
acters are required to isolate it.
- mode The mode= form of the $if directive is used to test
+ mmooddee The mmooddee== form of the $$iiff 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 in-
- stance, to set bindings in the emacs-standard and emacs-
- ctlx keymaps only if readline is starting out in emacs
+ used in conjunction with the sseett kkeeyymmaapp command, for in-
+ stance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and _e_m_a_c_s_-
+ _c_t_l_x keymaps only if readline is starting out in emacs
mode.
- term The term= form may be used to include terminal-specific
+ tteerrmm The tteerrmm== 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 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 in-
+ of the == is tested against the full name of the terminal
+ and the portion of the terminal name before the first --.
+ This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d, for in-
stance.
- version
- The version test may be used to perform comparisons
- against specific readline versions. The version expands
+ vveerrssiioonn
+ The vveerrssiioonn test may be used to perform comparisons
+ against specific readline versions. The vveerrssiioonn expands
to the current readline version. The set of comparison
- operators includes =, (and ==), !=, <=, >=, <, and >.
+ operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>.
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.1).
- If the minor version is omitted, it is assumed to be 0.
- The operator may be separated from the string version and
+ decimal point, and an optional minor version (e.g., 77..11).
+ If the minor version is omitted, it is assumed to be 00.
+ The operator may be separated from the string vveerrssiioonn and
from the version number argument by whitespace.
- application
- The application construct is used to include application-
- specific settings. Each program using the readline li-
- brary sets the application name, and an initialization
+ _a_p_p_l_i_c_a_t_i_o_n
+ The _a_p_p_l_i_c_a_t_i_o_n construct is used to include application-
+ specific settings. Each program using the readline li-
+ brary sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization
file can test for a particular value. This could be used
to bind key sequences to functions useful for a specific
program. For instance, the following command adds a key
sequence that quotes the current or previous word in
- bash:
+ bbaasshh:
- $if Bash
+ $$iiff Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
- $endif
+ $$eennddiiff
- variable
- The variable construct provides simple equality tests for
- readline variables and values. The permitted comparison
- operators are =, ==, and !=. The variable name must be
+ _v_a_r_i_a_b_l_e
+ The _v_a_r_i_a_b_l_e construct provides simple equality tests for
+ readline variables and values. The permitted comparison
+ operators are _=, _=_=, and _!_=. The variable name must be
separated from the comparison operator by whitespace; the
operator may be separated from the value on the right
hand side by whitespace. Both string and boolean vari-
ables may be tested. Boolean variables must be tested
- against the values on and off.
+ against the values _o_n and _o_f_f.
- $endif This command, as seen in the previous example, terminates an $if
+ $$eennddiiff This command, as seen in the previous example, terminates an $$iiff
command.
- $else Commands in this branch of the $if directive are executed if the
+ $$eellssee Commands in this branch of the $$iiff directive are executed if the
test fails.
- $include
+ $$iinncclluuddee
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 /etc/inputrc:
+ ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c:
- $include /etc/inputrc
+ $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c
-SEARCHING
+SSEEAARRCCHHIINNGG
Readline provides commands for searching through the command history
for lines containing a specified string. There are two search modes:
- incremental and non-incremental.
+ _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l.
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
- 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
+ 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 CC--rr. Typing CC--ss 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 Escape 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
+ iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an incremental
+ search. If that variable has not been assigned a value the _E_s_c_a_p_e and
+ CC--JJ characters will terminate an incremental search. CC--GG 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-s or C-r 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
+ To find other matching entries in the history list, type CC--ss or CC--rr 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 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.
- Non-incremental searches read the entire search string before starting
- to search for matching history lines. The search string may be typed
+ 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.
-EDITING COMMANDS
- The following is a list of the names of the commands and the default
+EEDDIITTIINNGG CCOOMMMMAANNDDSS
+ 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, point refers to the current cursor posi-
- tion, and mark refers to a cursor position saved by the set-mark com-
- mand. The text between the point and mark is referred to as the re-
- gion.
+ In the following descriptions, _p_o_i_n_t refers to the current cursor posi-
+ tion, and _m_a_r_k refers to a cursor position saved by the sseett--mmaarrkk com-
+ mand. The text between the point and mark is referred to as the _r_e_-
+ _g_i_o_n.
- Commands for Moving
- beginning-of-line (C-a)
+ CCoommmmaannddss ffoorr MMoovviinngg
+ bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa))
Move to the start of the current line.
- end-of-line (C-e)
+ eenndd--ooff--lliinnee ((CC--ee))
Move to the end of the line.
- forward-char (C-f)
+ ffoorrwwaarrdd--cchhaarr ((CC--ff))
Move forward a character.
- backward-char (C-b)
+ bbaacckkwwaarrdd--cchhaarr ((CC--bb))
Move back a character.
- forward-word (M-f)
+ ffoorrwwaarrdd--wwoorrdd ((MM--ff))
Move forward to the end of the next word. Words are composed of
alphanumeric characters (letters and digits).
- backward-word (M-b)
+ bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
Move back to the start of the current or previous word. Words
are composed of alphanumeric characters (letters and digits).
- previous-screen-line
+ pprreevviioouuss--ssccrreeeenn--lliinnee
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
+ nneexxtt--ssccrreeeenn--lliinnee
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
+ 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 the screen and, if possible, the terminal's scrollback
- buffer, then redraw the current line, leaving the current line
+ cclleeaarr--ddiissppllaayy ((MM--CC--ll))
+ 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)
+ cclleeaarr--ssccrreeeenn ((CC--ll))
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.
- redraw-current-line
+ rreeddrraaww--ccuurrrreenntt--lliinnee
Refresh the current line.
- Commands for Manipulating the History
- accept-line (Newline, Return)
+ CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
+ aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
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 add_history(). If the line is a modified history
+ call with aadddd__hhiissttoorryy(()). If the line is a modified history
line, the history line is restored to its original state.
- previous-history (C-p)
+ pprreevviioouuss--hhiissttoorryy ((CC--pp))
Fetch the previous command from the history list, moving back in
the list.
- next-history (C-n)
- Fetch the next command from the history list, moving forward in
+ nneexxtt--hhiissttoorryy ((CC--nn))
+ Fetch the next command from the history list, moving forward in
the list.
- beginning-of-history (M-<)
+ bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
Move to the first line in the history.
- end-of-history (M->)
- Move to the end of the input history, i.e., the line currently
+ eenndd--ooff--hhiissttoorryy ((MM-->>))
+ Move to the end of the input history, i.e., the line currently
being entered.
- operate-and-get-next (C-o)
+ ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo))
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 ar-
- gument, if supplied, specifies the history entry to use instead
+ gument, if supplied, specifies the history entry to use instead
of the current line.
- fetch-history
- With a numeric argument, fetch that entry from the history list
+ ffeettcchh--hhiissttoorryy
+ 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.
- reverse-search-history (C-r)
- Search backward starting at the current line and moving `up'
+ rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
+ Search backward starting at the current line and moving "up"
through the history as necessary. This is an incremental
search.
- forward-search-history (C-s)
- Search forward starting at the current line and moving `down'
+ ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
+ Search forward starting at the current line and moving "down"
through the history as necessary. This is an incremental
search.
- non-incremental-reverse-search-history (M-p)
+ nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
Search backward through the history starting at the current line
- using a non-incremental search for a string supplied by the
+ using a non-incremental search for a string supplied by the
user.
- non-incremental-forward-search-history (M-n)
- Search forward through the history using a non-incremental
+ nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
+ Search forward through the history using a non-incremental
search for a string supplied by the user.
- history-search-backward
+ hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
Search backward through the history for the string of characters
between the start of the current line and the current cursor po-
- sition (the point). The search string must match at the begin-
+ sition (the _p_o_i_n_t). The search string must match at the begin-
ning of a history line. This is a non-incremental search.
- history-search-forward
- Search forward through the history for the string of characters
+ hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
+ 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.
- history-substring-search-backward
+ hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--bbaacckkwwaarrdd
Search backward through the history for the string of characters
between the start of the current line and the current cursor po-
- sition (the point). The search string may match anywhere in a
+ sition (the _p_o_i_n_t). The search string may match anywhere in a
history line. This is a non-incremental search.
- history-substring-search-forward
- Search forward through the history for the string of characters
+ hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--ffoorrwwaarrdd
+ 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-
cremental search.
- yank-nth-arg (M-C-y)
+ yyaannkk--nntthh--aarrgg ((MM--CC--yy))
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 in-
- serts 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.
- yank-last-arg (M-., M-_)
- Insert the last argument to the previous command (the last word
+ 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 in-
+ serts 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.
+ yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
+ Insert the 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
+ exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg
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
+ 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.
- Commands for Changing Text
- end-of-file (usually C-d)
+ CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
+ _e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd))
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 EOF.
- delete-char (C-d)
+ _s_t_t_y(1). 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 EEOOFF.
+ ddeelleettee--cchhaarr ((CC--dd))
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
+ same character as the tty EEOOFF character, as CC--dd commonly is, see
above for the effects.
- backward-delete-char (Rubout)
+ bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
Delete the character behind the cursor. When given a numeric
argument, save the deleted text on the kill ring.
- forward-backward-delete-char
+ ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
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.
- quoted-insert (C-q, C-v)
+ qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
Add the next character that you type to the line verbatim. This
- is how to insert characters like C-q, for example.
- tab-insert (M-TAB)
+ is how to insert characters like CC--qq, for example.
+ ttaabb--iinnsseerrtt ((MM--TTAABB))
Insert a tab character.
- self-insert (a, b, A, 1, !, ...)
+ sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ...))
Insert the character typed.
- transpose-chars (C-t)
+ ttrraannssppoossee--cchhaarrss ((CC--tt))
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.
- transpose-words (M-t)
+ ttrraannssppoossee--wwoorrddss ((MM--tt))
Drag the word before point past the word after point, moving
point over that word as well. If point is at the end of the
line, this transposes the last two words on the line.
- upcase-word (M-u)
+ uuppccaassee--wwoorrdd ((MM--uu))
Uppercase the current (or following) word. With a negative ar-
gument, uppercase the previous word, but do not move point.
- downcase-word (M-l)
+ ddoowwnnccaassee--wwoorrdd ((MM--ll))
Lowercase the current (or following) word. With a negative ar-
gument, lowercase the previous word, but do not move point.
- capitalize-word (M-c)
+ ccaappiittaalliizzee--wwoorrdd ((MM--cc))
Capitalize the current (or following) word. With a negative ar-
gument, capitalize the previous word, but do not move point.
- overwrite-mode
- Toggle overwrite mode. With an explicit positive numeric argu-
+ oovveerrwwrriittee--mmooddee
+ 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 emacs mode; vi mode does overwrite differently. Each call
- to readline() starts in insert mode. In overwrite mode, charac-
- ters bound to self-insert replace the text at point rather than
- pushing the text to the right. Characters bound to back-
- ward-delete-char replace the character before point with a
+ only eemmaaccss mode; vvii mode does overwrite differently. Each call
+ to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac-
+ ters bound to sseellff--iinnsseerrtt replace the text at point rather than
+ pushing the text to the right. Characters bound to bbaacckk--
+ wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a
space. By default, this command is unbound.
- Killing and Yanking
- kill-line (C-k)
+ KKiilllliinngg aanndd YYaannkkiinngg
+ kkiillll--lliinnee ((CC--kk))
Kill the text from point to the end of the line.
- backward-kill-line (C-x Rubout)
+ bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
Kill backward to the beginning of the line.
- unix-line-discard (C-u)
+ uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
Kill backward from point to the beginning of the line. The
killed text is saved on the kill-ring.
- kill-whole-line
+ kkiillll--wwhhoollee--lliinnee
Kill all characters on the current line, no matter where point
is.
- kill-word (M-d)
+ kkiillll--wwoorrdd ((MM--dd))
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 forward-word.
- backward-kill-word (M-Rubout)
+ same as those used by ffoorrwwaarrdd--wwoorrdd.
+ bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
Kill the word behind point. Word boundaries are the same as
- those used by backward-word.
- unix-word-rubout (C-w)
+ those used by bbaacckkwwaarrdd--wwoorrdd.
+ uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
Kill the word behind point, using white space as a word bound-
ary. The killed text is saved on the kill-ring.
- unix-filename-rubout
+ uunniixx--ffiilleennaammee--rruubboouutt
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.
- delete-horizontal-space (M-\)
+ ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
Delete all spaces and tabs around point.
- kill-region
- Kill the text between the point and mark (saved cursor posi-
- tion). This text is referred to as the region.
- copy-region-as-kill
+ kkiillll--rreeggiioonn
+ Kill the text between the point and _m_a_r_k (saved cursor posi-
+ tion). This text is referred to as the _r_e_g_i_o_n.
+ ccooppyy--rreeggiioonn--aass--kkiillll
Copy the text in the region to the kill buffer.
- copy-backward-word
+ ccooppyy--bbaacckkwwaarrdd--wwoorrdd
Copy the word before point to the kill buffer. The word bound-
- aries are the same as backward-word.
- copy-forward-word
+ aries are the same as bbaacckkwwaarrdd--wwoorrdd.
+ ccooppyy--ffoorrwwaarrdd--wwoorrdd
Copy the word following point to the kill buffer. The word
- boundaries are the same as forward-word.
- yank (C-y)
+ boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
+ yyaannkk ((CC--yy))
Yank the top of the kill ring into the buffer at point.
- yank-pop (M-y)
+ yyaannkk--ppoopp ((MM--yy))
Rotate the kill ring, and yank the new top. Only works follow-
- ing yank or yank-pop.
+ ing yyaannkk or yyaannkk--ppoopp.
- Numeric Arguments
- digit-argument (M-0, M-1, ..., M--)
+ NNuummeerriicc AArrgguummeennttss
+ ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ...,, MM----))
Add this digit to the argument already accumulating, or start a
new argument. M-- starts a negative argument.
- universal-argument
+ uunniivveerrssaall--aarrgguummeenntt
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 universal-argument again ends the nu-
+ lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again 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-
@@ -797,152 +804,152 @@ READLINE(3) Library Functions Manual READLINE(3)
ment count four, a second time makes the argument count sixteen,
and so on.
- Completing
- complete (TAB)
+ CCoommpplleettiinngg
+ ccoommpplleettee ((TTAABB))
Attempt to perform completion on the text before point. The ac-
- tual completion performed is application-specific. Bash, for
+ tual completion performed is application-specific. BBaasshh, for
instance, attempts completion treating the text as a variable
- (if the text begins with $), username (if the text begins with
- ~), hostname (if the text begins with @), or command (including
+ (if the text begins with $$), username (if the text begins with
+ ~~), hostname (if the text begins with @@), or command (including
aliases and functions) in turn. If none of these produces a
- match, filename completion is attempted. Gdb, on the other
+ match, filename completion is attempted. GGddbb, on the other
hand, allows completion of program functions and variables, and
only attempts filename completion under certain circumstances.
- possible-completions (M-?)
+ ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
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
+ for display to the value of ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh, the value
+ of the environment variable CCOOLLUUMMNNSS, or the screen width, in
that order.
- insert-completions (M-*)
- Insert all completions of the text before point that would have
- been generated by possible-completions.
- menu-complete
- Similar to complete, but replaces the word to be completed with
- a single match from the list of possible completions. Repeated
- execution of menu-complete steps through the list of possible
- completions, inserting each match in turn. At the end of the
+ iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
+ Insert all completions of the text before point that would have
+ been generated by ppoossssiibbllee--ccoommpplleettiioonnss.
+ mmeennuu--ccoommpplleettee
+ Similar to ccoommpplleettee, but replaces the word to be completed with
+ a single match from the list of possible completions. Repeated
+ execution of mmeennuu--ccoommpplleettee 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 ar-
+ bbeellll--ssttyyllee) and the original text is restored. An argument of _n
+ moves _n 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 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
+ mand is intended to be bound to TTAABB, but is unbound by default.
+ mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd
+ Identical to mmeennuu--ccoommpplleettee, but moves backward through the list
+ of possible completions, as if mmeennuu--ccoommpplleettee had been given a
negative argument. 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.
-
- Keyboard Macros
- start-kbd-macro (C-x ()
- Begin saving the characters typed into the current keyboard
+ ddeelleettee--cchhaarr--oorr--lliisstt
+ Deletes the character under the cursor if not at the beginning
+ or end of the line (like ddeelleettee--cchhaarr). If at the end of the
+ line, behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss.
+
+ KKeeyybbooaarrdd MMaaccrrooss
+ ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
+ Begin saving the characters typed into the current keyboard
macro.
- end-kbd-macro (C-x ))
+ eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
Stop saving the characters typed into the current keyboard macro
and store the definition.
- call-last-kbd-macro (C-x e)
+ ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
Re-execute the last keyboard macro defined, by making the char-
acters in the macro appear as if typed at the keyboard.
- print-last-kbd-macro ()
+ pprriinntt--llaasstt--kkbbdd--mmaaccrroo (())
Print the last keyboard macro defined in a format suitable for
- the inputrc file.
+ the _i_n_p_u_t_r_c file.
- Miscellaneous
- re-read-init-file (C-x C-r)
- Read in the contents of the inputrc file, and incorporate any
+ MMiisscceellllaanneeoouuss
+ rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
+ Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any
bindings or variable assignments found there.
- abort (C-g)
+ aabboorrtt ((CC--gg))
Abort the current editing command and ring the terminal's bell
- (subject to the setting of bell-style).
- do-lowercase-version (M-A, M-B, M-x, ...)
- If the metafied character x is uppercase, run the command that
+ (subject to the setting of bbeellll--ssttyyllee).
+ ddoo--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ...))
+ If the metafied character _x is uppercase, run the command that
is bound to the corresponding metafied lowercase character. The
- behavior is undefined if x is already lowercase.
- prefix-meta (ESC)
- Metafy the next character typed. ESC f is equivalent to Meta-f.
- undo (C-_, C-x C-u)
+ behavior is undefined if _x is already lowercase.
+ pprreeffiixx--mmeettaa ((EESSCC))
+ Metafy the next character typed. EESSCC ff is equivalent to MMeettaa--ff.
+ uunnddoo ((CC--__,, CC--xx CC--uu))
Incremental undo, separately remembered for each line.
- revert-line (M-r)
- Undo all changes made to this line. This is like executing the
- undo command enough times to return the line to its initial
+ rreevveerrtt--lliinnee ((MM--rr))
+ Undo all changes made to this line. This is like executing the
+ uunnddoo command enough times to return the line to its initial
state.
- tilde-expand (M-&)
+ ttiillddee--eexxppaanndd ((MM--&&))
Perform tilde expansion on the current word.
- set-mark (C-@, M-<space>)
- Set the mark to the point. If a numeric argument is supplied,
+ sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>))
+ Set the mark to the point. If a numeric argument is supplied,
the mark is set to that position.
- exchange-point-and-mark (C-x C-x)
- Swap the point with the mark. The current cursor position is
- set to the saved position, and the old cursor position is saved
+ eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
+ Swap the point with the mark. The current cursor position is
+ set to the saved position, and the old cursor position is saved
as the mark.
- character-search (C-])
+ cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
A character is read and point is moved to the next occurrence of
that character. A negative argument searches for previous oc-
currences.
- character-search-backward (M-C-])
+ cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
A character is read and point is moved to the previous occur-
rence of that character. A negative argument searches for sub-
sequent occurrences.
- skip-csi-sequence
+ sskkiipp--ccssii--sseeqquueennccee
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.
+ 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-[.
- insert-comment (M-#)
- Without a numeric argument, the value of the readline com-
- ment-begin variable is inserted at the beginning of the current
+ iinnsseerrtt--ccoommmmeenntt ((MM--##))
+ Without a numeric argument, the value of the readline ccoomm--
+ mmeenntt--bbeeggiinn variable is inserted at the beginning of the current
line. If a numeric argument is supplied, this command acts as a
toggle: if the characters at the beginning of the line do not
- match the value of comment-begin, the value is inserted, other-
- wise the characters in comment-begin are 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 comment-begin
- makes the current line a shell comment. If a numeric argument
+ match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other-
+ wise the characters in ccoommmmeenntt--bbeeggiinn are 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 ccoommmmeenntt--bbeeggiinn
+ makes 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.
- dump-functions
+ dduummpp--ffuunnccttiioonnss
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
- inputrc file.
- dump-variables
- Print all of the settable variables and their values to the
- readline output stream. If a numeric argument is supplied, the
+ put is formatted in such a way that it can be made part of an
+ _i_n_p_u_t_r_c file.
+ dduummpp--vvaarriiaabblleess
+ 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.
- dump-macros
+ _i_n_p_u_t_r_c file.
+ dduummpp--mmaaccrrooss
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.
- emacs-editing-mode (C-e)
- When in vi command mode, this causes a switch to emacs editing
+ _i_n_p_u_t_r_c file.
+ eemmaaccss--eeddiittiinngg--mmooddee ((CC--ee))
+ When in vvii command mode, this causes a switch to eemmaaccss editing
mode.
- vi-editing-mode (M-C-j)
- When in emacs editing mode, this causes a switch to vi editing
+ vvii--eeddiittiinngg--mmooddee ((MM--CC--jj))
+ When in eemmaaccss editing mode, this causes a switch to vvii editing
mode.
-DEFAULT KEY BINDINGS
- 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 metafied characters. The printable ASCII characters not
- mentioned in the list of emacs standard bindings are bound to the
- self-insert function, which just inserts the given character into the
+DDEEFFAAUULLTT KKEEYY BBIINNDDIINNGGSS
+ 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 _m_e_t_a_f_i_e_d characters. The printable ASCII characters not
+ mentioned in the list of emacs standard bindings are bound to the
+ sseellff--iinnsseerrtt function, which just inserts the given character into the
input line. In vi insertion mode, all characters not specifically men-
- tioned are bound to self-insert. Characters assigned to signal genera-
- tion by stty(1) or the terminal driver, such as C-Z or C-C, retain that
+ tioned are bound to sseellff--iinnsseerrtt. Characters assigned to signal genera-
+ tion by _s_t_t_y(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 bell-style variable).
+ setting of the bbeellll--ssttyyllee variable).
- Emacs Mode
+ EEmmaaccss MMooddee
Emacs Standard bindings
"C-@" set-mark
@@ -1034,8 +1041,7 @@ READLINE(3) Library Functions Manual READLINE(3)
"C-XE" call-last-kbd-macro
"C-XC-?" backward-kill-line
-
- VI Mode bindings
+ VVII MMooddee bbiinnddiinnggss
VI Insert Mode functions
"C-D" vi-eof-maybe
@@ -1043,15 +1049,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 +1081,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 +1115,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 +1130,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 +1145,37 @@ READLINE(3) Library Functions Manual READLINE(3)
"|" vi-column
"~" vi-change-case
-SEE ALSO
- The Gnu Readline Library, Brian Fox and Chet Ramey
- The Gnu History Library, Brian Fox and Chet Ramey
- bash(1)
+SSEEEE AALLSSOO
+ _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
+ _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
+ _b_a_s_h(1)
-FILES
- ~/.inputrc
- Individual readline initialization file
+FFIILLEESS
+ _~_/_._i_n_p_u_t_r_c
+ Individual rreeaaddlliinnee initialization file
-AUTHORS
+AAUUTTHHOORRSS
Brian Fox, Free Software Foundation
bfox@gnu.org
Chet Ramey, Case Western Reserve University
chet.ramey@case.edu
-BUG REPORTS
- If you find a bug in readline, you should report it. But first, you
+BBUUGG RREEPPOORRTTSS
+ If you find a bug in rreeaaddlliinnee,, 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 readline library that you have.
+ latest version of the rreeaaddlliinnee library that you have.
Once you have determined that a bug actually exists, mail a bug report
- to bug-readline@gnu.org. If you have a fix, you are welcome to mail
+ to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g. If you have a fix, you are welcome to mail
that as well! Suggestions and `philosophical' bug reports may be
- mailed to bug-readline@gnu.org or posted to the Usenet newsgroup
- gnu.bash.bug.
+ mailed to _b_u_g_-_r_e_a_d_l_i_n_e@_g_n_u_._o_r_g or posted to the Usenet newsgroup
+ ggnnuu..bbaasshh..bbuugg.
Comments and bug reports concerning this manual page should be directed
- to chet.ramey@case.edu.
+ to _c_h_e_t_._r_a_m_e_y_@_c_a_s_e_._e_d_u.
-BUGS
+BBUUGGSS
It's too big and too slow.
-
-
-GNU Readline 8.2 2022 September 19 READLINE(3)
+GNU Readline 8.3 2024 March 29 _R_E_A_D_L_I_N_E(3)
diff --git a/doc/readline.3 b/doc/readline.3
index 77ef02a..b5ca022 100644
--- a/doc/readline.3
+++ b/doc/readline.3
@@ -6,15 +6,36 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Mon Sep 19 11:11:22 EDT 2022
+.\" Last Change: Fri Mar 29 11:54:44 EDT 2024
.\"
-.TH READLINE 3 "2022 September 19" "GNU Readline 8.2"
+.TH READLINE 3 "2024 March 29" "GNU Readline 8.3"
.\"
+.ie \n(.g \{\
+.ds ' \(aq
+.ds " \(dq
+.ds ^ \(ha
+.ds ~ \(ti
+.\}
+.el \{\
+.ds ' '
+.\" 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.
.\"
.de FN
-\fI\|\\$1\|\fP
+\%\fI\|\\$1\|\fP
+..
+.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,15 +55,15 @@ 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\-2024 Free Software Foundation, Inc.
+.if t Readline is Copyright \(co 1989\-2024 Free Software Foundation, Inc.
.SH DESCRIPTION
.LP
.B readline
will read a line from the terminal
and return it, using
.B prompt
-as a prompt. If
+as a prompt. If
.B prompt
is \fBNULL\fP or the empty string, no prompt is issued.
The line returned is allocated with
@@ -50,6 +71,9 @@ The line returned is allocated with
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
@@ -77,11 +101,12 @@ 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,
+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
+keys are denoted by M\-\fIkey\fP, 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
@@ -116,7 +141,7 @@ 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 .
+.IR \*~/.inputrc .
If that file does not exist or cannot be read, the ultimate default is
.IR /etc/inputrc .
When a program which uses the readline library starts up, the
@@ -138,7 +163,7 @@ or
.RS
C\-Meta\-u: universal\-argument
.RE
-.sp
+.LP
into the
.I inputrc
would make M\-C\-u execute the readline command
@@ -176,13 +201,15 @@ whitespace between the name and the colon.
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,
@@ -196,11 +223,11 @@ 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
@@ -209,13 +236,15 @@ 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
+.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,
@@ -226,10 +255,9 @@ is again bound to the function
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
@@ -248,11 +276,11 @@ an escape character
.B \e\e
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
@@ -300,7 +328,7 @@ 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 '.
+including \*" and \*'.
.PP
.B Bash
allows the current readline key bindings to be displayed or modified
@@ -332,8 +360,12 @@ 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 readline 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.
The variables and their default values are:
.PP
@@ -349,19 +381,24 @@ 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.
@@ -370,9 +407,14 @@ If set to \fBnone\fP, readline never rings the bell. If set to
If set to \fBaudible\fP, readline 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 (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
+.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
@@ -384,7 +426,8 @@ 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 ,
+readline uses this color for
the common prefix instead of its default.
.TP
.B colored\-stats (Off)
@@ -392,9 +435,13 @@ If set to \fBOn\fP, readline 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 is inserted when the
.B insert\-comment
command is executed.
This command is bound to
@@ -410,7 +457,7 @@ 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.
-.TP
+.TP
.B completion\-ignore\-case (Off)
If set to \fBOn\fP, readline performs filename matching and completion
in a case\-insensitive fashion.
@@ -445,11 +492,11 @@ 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
+This variable is dependent on the \fBLC_CTYPE\fP locale category, and
may change if the locale is changed.
.TP
.B disable\-completion (Off)
-If set to \fBOn\fP, readline will inhibit word completion. Completion
+If set to \fBOn\fP, readline will inhibit word completion. Completion
characters will be inserted into the line as if they had been
mapped to \fBself-insert\fP.
.TP
@@ -468,13 +515,13 @@ or
.BR vi .
.TP
.B emacs\-mode\-string (@)
-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 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
+non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
.TP
.B enable\-active\-region (On)
@@ -512,8 +559,8 @@ If set to \fBOn\fP, tilde expansion is performed when readline
attempts word completion.
.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)
@@ -538,12 +585,13 @@ 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
+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
+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'')
+.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
@@ -564,7 +612,7 @@ also affects the default keymap.
.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
+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.
@@ -588,11 +636,13 @@ 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 readline 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
@@ -622,6 +672,10 @@ before returning when \fBaccept\-line\fP is executed. By default,
history lines may be modified and retain individual undo lists across
calls to \fBreadline\fP.
.TP
+.B search\-ignore\-case (Off)
+If set to \fBOn\fP, readline 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
@@ -633,9 +687,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
@@ -653,7 +707,7 @@ 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
@@ -664,18 +718,18 @@ 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.
+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
+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
+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
@@ -684,7 +738,8 @@ 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
+.TP
+.B $if
The
.B $if
construct allows bindings to be made based on the
@@ -693,14 +748,16 @@ readline. The text of the test, after any comparison operator,
extends to the end of the line;
unless otherwise noted, no characters are required to isolate it.
.RS
-.IP \fBmode\fP
+.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.
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
+.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
@@ -713,7 +770,8 @@ to match both
and
.IR sun\-cmd ,
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.
@@ -733,24 +791,29 @@ minor version (e.g., \fB7.1\fP). If the minor version is omitted, it
is assumed to be \fB0\fP.
The operator may be separated from the string \fBversion\fP
and from the version number argument by whitespace.
-.IP \fBapplication\fP
-The \fBapplication\fP construct is used to include
-application-specific settings. Each program using the readline
+.TP
+.I application
+The \fIapplication\fP construct is used to include
+application-specific settings.
+Each program using the readline
library sets the \fIapplication name\fP, and an initialization
file can test for a particular value.
This could be used to bind key sequences to functions useful for
a specific program. For instance, the following command adds a
key sequence that quotes the current or previous word in \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
+.TP
+.I variable
The \fIvariable\fP construct provides simple equality tests for readline
variables and values.
The permitted comparison operators are \fI=\fP, \fI==\fP, and \fI!=\fP.
@@ -760,21 +823,24 @@ side by whitespace.
Both string and boolean variables may be tested. Boolean variables must be
tested against the values \fIon\fP and \fIoff\fP.
.RE
-.IP \fB$endif\fP
+.TP
+.B $endif
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 $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
.RS
+.PP
.nf
\fB$include\fP \^ \fI/etc/inputrc\fP
-.fi
+.fi
.RE
.SH SEARCHING
Readline provides commands for searching through the command history
@@ -916,12 +982,16 @@ 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.
.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.
.TP
.B non\-incremental\-reverse\-search\-history (M\-p)
Search backward through the history starting at the current line
@@ -966,7 +1036,9 @@ 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.
+as if the
+.Q !\fIn\fP
+history expansion had been specified.
.TP
.B
yank\-last\-arg (M\-.\^, M\-_\^)
@@ -980,15 +1052,16 @@ 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.
+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
interprets it as the end of input and returns
@@ -1005,7 +1078,7 @@ commonly is, see above for the effects.
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.
@@ -1017,7 +1090,7 @@ how to insert characters like \fBC\-q\fP, for example.
.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 transpose\-chars (C\-t)
@@ -1121,7 +1194,7 @@ 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.
.TP
@@ -1148,7 +1221,7 @@ 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
+\fB\*~\fP), hostname (if the text begins with \fB@\fP), or
command (including aliases and functions) in turn. If none
of these produces a match, filename completion is attempted.
.BR Gdb ,
@@ -1179,7 +1252,7 @@ At the end of the list of completions, the bell is rung
(subject to the setting of \fBbell\-style\fP)
and the original text is restored.
An argument of \fIn\fP moves \fIn\fP positions forward in the list
-of matches; a negative argument may be used to move backward
+of matches; a negative argument may be used to move backward
through the list.
This command is intended to be bound to \fBTAB\fP, but is unbound
by default.
@@ -1225,7 +1298,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.
@@ -1269,7 +1342,9 @@ character. A negative argument searches for subsequent occurrences.
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
+bound to
+.Q \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\-[.
@@ -1279,8 +1354,8 @@ Without a numeric argument, the value of the readline
.B comment\-begin
variable is inserted at the beginning of the current line.
If a numeric argument is supplied, this command acts as a toggle: if
-the characters at the beginning of the line do not match the value
-of \fBcomment\-begin\fP, the value is inserted, otherwise
+the characters at the beginning of the line do not match the value
+of \fBcomment\-begin\fP, the value is inserted, otherwise
the characters in \fBcomment-begin\fP are deleted from the beginning of
the line.
In either case, the line is accepted as if a newline had been typed.
@@ -1352,7 +1427,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 +1455,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
@@ -1427,12 +1502,12 @@ Emacs Meta bindings
"M-U" upcase-word
"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 +1516,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 +1561,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 +1595,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 +1610,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 +1623,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 +1637,7 @@ VI Command Mode functions
.SH FILES
.PD 0
.TP
-.FN ~/.inputrc
+.FN \*~/.inputrc
Individual \fBreadline\fP initialization file
.PD
.SH AUTHORS
diff --git a/doc/readline.dvi b/doc/readline.dvi
index 7296d40..6da5ffa 100644
--- a/doc/readline.dvi
+++ b/doc/readline.dvi
Binary files differ
diff --git a/doc/readline.html b/doc/readline.html
index 1002f4f..10f3621 100644
--- a/doc/readline.html
+++ b/doc/readline.html
@@ -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, 19 January 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-2022 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,21 @@ 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.toc-numbered-mark {list-style: none}
-->
</style>
@@ -54,7 +54,6 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<h1 class="settitle" align="center">GNU Readline Library</h1>
@@ -64,34 +63,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 +98,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 +117,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 +144,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 +158,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,57 +177,57 @@ 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>
-<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>
+<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.
-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
+The Meta key is labeled <kbd class="key">ALT</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
+The <kbd class="key">ALT</kbd> key on the right may also be configured to work as a
Meta key or may be configured as some other modifier, such as a
Compose key for typing accented characters.
</p>
-<p>If you do not have a Meta or <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>If you do not have a Meta or <kbd class="key">ALT</kbd> key, or another key working as
+a Meta key, the identical keystroke can be generated by typing <kbd class="key">ESC</kbd>
+<em class="emph">first</em>, and then typing <kbd class="key">k</kbd>.
+Either process is known as <em class="dfn">metafying</em> the <kbd class="key">k</kbd> key.
</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>The text <kbd class="kbd">M-C-k</kbd> is read as &lsquo;Meta-Control-k&rsquo; and describes the
+character produced by <em class="dfn">metafying</em> <kbd class="kbd">C-k</kbd>.
</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
+<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
+(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
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
+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
@@ -237,12 +236,12 @@ as you type it in, allowing you to just fix your typo, and not forcing
you to retype the majority of the line. Using these editing commands,
you move the cursor to the place that needs correction, and delete or
insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <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
+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,15 +249,15 @@ 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
character appears where the cursor was, and then the cursor moves one
@@ -267,9 +266,9 @@ 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
+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>C-f</kbd>.
+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
@@ -278,85 +277,85 @@ characters to the right of the cursor are &lsquo;pulled back&rsquo; to fill in t
blank space created by the removal of the text. A list of the bare
essentials for editing the text of an input line follows.
</p>
-<dl compact="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>
+<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
+<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
+other commands have been added 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
about 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
+<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 +363,90 @@ 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
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>
+<dt><kbd class="kbd">C-w</kbd></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.
+<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
+<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.
</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>
+<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>C-y</kbd> or <kbd>M-y</kbd>.
+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 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;.
+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
+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>C-d</kbd> command an argument of 10, you could type &lsquo;<samp>M-1 0 C-d</samp>&rsquo;,
+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.
@@ -456,131 +455,133 @@ 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
+<kbd class="kbd">C-r</kbd>. 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 will terminate an incremental search.
+<kbd class="kbd">C-g</kbd> will abort an incremental search and restore the original line.
When the search is terminated, the history entry containing the
search string becomes the current line.
</p>
-<p>To find other matching entries in the history list, type <kbd>C-r</kbd> or
-<kbd>C-s</kbd> as appropriate.
+<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 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 <tt class="key">RET</tt> will terminate the search and accept
+For instance, a <kbd class="key">RET</kbd> will terminate the search and accept
the line, thereby executing the command from the history list.
A movement command will terminate the search, make the last line found
the current line, and begin editing.
</p>
-<p>Readline remembers the last incremental search string. If two
-<kbd>C-r</kbd>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
+<p>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 lines.
+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,
+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>INPUTRC</code>. If
-that variable is unset, the default is <samp>~/.inputrc</samp>. If that
+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, the ultimate default is
-<samp>/etc/inputrc</samp>.
+<samp class="file">/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
+<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
+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 compact="compact">
-<dt><span>Variable Settings</span></dt>
+<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.
+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>
+<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 &quot;undoes&quot; the effects of <code class="code">active-region-start-color</code>
and restores &quot;normal&quot; terminal display appearance after displaying text
in the active region.
This string must not take up any physical character positions on the display,
@@ -589,55 +590,59 @@ 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
+<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>off</samp>&rsquo;.
+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>
+<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 when the
-<code>insert-comment</code> command is executed. The default value
-is <code>&quot;#&quot;</code>.
+<code class="code">insert-comment</code> command is executed. 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
@@ -646,27 +651,27 @@ A value of 0 will cause 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;.
+The default value is &lsquo;<samp class="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>
+<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 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>
+<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,
@@ -675,161 +680,161 @@ 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 <code>100</code>.
+The default limit is <code class="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
+<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 will convert characters with the
+eighth bit set to an <small class="sc">ASCII</small> key sequence by stripping 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>on</samp>&rsquo;, but
-will be set to &lsquo;<samp>off</samp>&rsquo; if the locale is one that contains
+The default value is &lsquo;<samp class="samp">on</samp>&rsquo;, but
+will be set to &lsquo;<samp class="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
+This variable is dependent on the <code class="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.
+<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 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;.
+been mapped to <code class="code">self-insert</code>. The default is &lsquo;<samp class="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,
+<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
+<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 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;.
+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
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
+Use the &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
-The default is &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"></a><span><code class="code">enable-active-region</code><a class="copiable-link" href="#index-enable_002dactive_002dregion"> &para;</a></span></dt>
+<dd><p>The <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
+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;.
+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>;
+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>On</samp>&rsquo;.
+The default is &lsquo;<samp class="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
+<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 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;.
+arrow keys. The default is &lsquo;<samp class="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
+<dt><code class="code">enable-meta-key</code></dt>
+<dd><p>When set to &lsquo;<samp class="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;.
+The default is &lsquo;<samp class="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;.
+<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;, tilde expansion is performed when Readline
+attempts word completion. The default is &lsquo;<samp class="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
+<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 an attempt is made 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
+<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>This variable can be set to either &lsquo;<samp class="samp">on</samp>&rsquo; or &lsquo;<samp class="samp">off</samp>&rsquo;. Setting it
+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 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;.
+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
+<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 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
+default value is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline will set it to &lsquo;<samp class="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
+The name <code class="code">meta-flag</code> is a synonym for this variable.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
may change if the locale is changed.
</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> will 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>
+<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
@@ -837,153 +842,159 @@ 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 (<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
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>This variable, when set to &lsquo;<samp class="samp">on</samp>&rsquo;, causes Readline to display 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
+<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>mark-directories</code>).
-The default is &lsquo;<samp>off</samp>&rsquo;.
+<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 will display 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
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline will set it to &lsquo;<samp class="samp">on</samp>&rsquo; if the
locale contains eight-bit characters.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
may change if the locale is changed.
</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 <code class="code">more</code>-like pager
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">print-completions-horizontally</code></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline will display 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 <code class="code">accept-line</code> is executed. 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>
+<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>on</samp>&rsquo;,
+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
+<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
+is after the &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>off</samp>&rsquo;.
+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
+Use the &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
-The default is &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
+Use the &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
-The default is &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>
+<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
@@ -1000,121 +1011,121 @@ 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>).
</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).
+&lsquo;<samp class="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>,
+<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>,
+<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
+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 the
special character names are not 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>
+<dl class="table">
+<dt><code class="code"><kbd class="kbd">\C-</kbd></code></dt>
<dd><p>control prefix
</p></dd>
-<dt><span><code><kbd>\M-</kbd></code></span></dt>
+<dt><code class="code"><kbd class="kbd">\M-</kbd></code></dt>
<dd><p>meta prefix
</p></dd>
-<dt><span><code><kbd>\e</kbd></code></span></dt>
+<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>
+<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>
+<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>
+<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>
@@ -1124,11 +1135,11 @@ 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 &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 +1147,97 @@ 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.
</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,
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>,
+&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">sun</code> to match both <code class="code">sun</code> and <code class="code">sun-cmd</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
+is assumed to be &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
+<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>application name</var>, and you can test for
+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
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
+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 +1245,40 @@ $endif
</dl>
</dd>
-<dt><span><code>$endif</code></span></dt>
+<dt><code class="code">$endif</code></dt>
<dd><p>This command, as seen in the previous example, terminates an
-<code>$if</code> command.
+<code class="code">$if</code> command.
</p>
</dd>
-<dt><span><code>$else</code></span></dt>
-<dd><p>Commands in this branch of the <code>$if</code> directive are executed if
+<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>$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>:
+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 behaviour of line input editing for
# programs that use the GNU Readline library. Existing
# programs include FTP, Bash, and GDB.
#
@@ -1371,24 +1382,24 @@ $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>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>.
</p>
-<ul class="section-toc">
+<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,48 +1410,48 @@ 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.
</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.
</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.
</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.
</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
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
Readline line does not take up more than one physical line or if the length
@@ -1448,19 +1459,19 @@ 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.
</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,67 +1479,67 @@ 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>.
+<code class="code">add_history()</code>.
If this line is a modified history line, the history line is restored
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.
</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.
</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.
</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.
</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>
+<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.
@@ -1536,7 +1547,7 @@ This is a non-incremental search.
By default, this command is unbound.
</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>
+<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.
@@ -1544,7 +1555,7 @@ This is a non-incremental search.
By default, this command is unbound.
</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>
+<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.
@@ -1552,7 +1563,7 @@ 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>
+<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.
@@ -1560,32 +1571,32 @@ 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
+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>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.
+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, the argument is extracted
+as if the &lsquo;<samp class="samp">!<var class="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>
+<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.
+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
@@ -1594,7 +1605,7 @@ 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,66 +1615,66 @@ 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>
+<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>EOF</small> character, as <kbd>C-d</kbd>
+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.
</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>
+<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 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.
</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>
+<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>C-q</kbd>, for example.
+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>
+<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 yourself.
</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
+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
+to the inserted text. It uses the concept of an <em class="emph">active mark</em>: when the
mark is active, Readline redisplay uses the terminal&rsquo;s standout mode to
denote the region.
</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
@@ -1672,38 +1683,39 @@ 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>
+<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>
+<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>
+<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>
+<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>emacs</code> mode; <code>vi</code> mode does overwrite differently.
-Each call to <code>readline()</code> starts in insert mode.
+<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.
@@ -1713,122 +1725,113 @@ before point with a space.
<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>
+<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 line.
With a negative numeric argument, kill backward from the cursor to the
beginning of the current 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.
</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>
+<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.
The killed text is saved 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.
</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>
+<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.
</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>
+<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>yank</code> or <code>yank-pop</code>.
+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 +1845,58 @@ 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>.
</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
+Repeated execution of <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>)
+(subject to the setting of <code class="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
+An argument of <var class="var">n</var> moves <var class="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
+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.
</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>).
+end of the line (like <code class="code">delete-char</code>).
If at the end of the line, behaves identically to
-<code>possible-completions</code>.
+<code class="code">possible-completions</code>.
This command is unbound by default.
</p>
</dd>
@@ -1901,101 +1904,101 @@ 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>
+<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. 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>.
+without a meta key. 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>
+<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 beginning.
</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>
+<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, the mark is set 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>
+<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. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
</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>
+<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>A character is read and point is moved 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>
+<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>A character is read and point is moved 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
@@ -2005,77 +2008,85 @@ 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>
+<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, the value of the <code class="code">comment-begin</code>
variable is inserted at the beginning of the current line.
If a numeric argument is supplied, this command acts as a toggle: if
the characters at the beginning of the line do not match the value
-of <code>comment-begin</code>, the value is inserted, otherwise
-the characters in <code>comment-begin</code> are deleted from the beginning of
+of <code class="code">comment-begin</code>, the value is inserted, otherwise
+the characters in <code class="code">comment-begin</code> are deleted from the beginning of
the line.
In either case, the line is accepted as if a newline had been typed.
</p>
</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>
+<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>
+<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,
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-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>
</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>
</dl>
<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 <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 +2094,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 +2117,71 @@ 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
+<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 behaviour of
Readline is sufficient. This section describes how to use Readline in
the simplest way possible, perhaps to replace calls in your code to
-<code>gets()</code> or <code>fgets()</code>.
+<code class="code">gets()</code> or <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, no prompt is displayed.
+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.
</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 <code class="code">readline</code> encounters an <code class="code">EOF</code> while reading the line, and the
+line is empty at that point, then <code class="code">(char *)NULL</code> is returned.
Otherwise, the line is ended just as if a newline had been typed.
</p>
-<p>Readline performs some expansion on the <var>prompt</var> before it is
-displayed on the screen. See the description of <code>rl_expand_prompt</code>
-(see <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
+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,40 +2209,40 @@ rl_gets ()
}
</pre></div>
-<p>This function gives the user the default behaviour of <tt class="key">TAB</tt>
+<p>This function gives the user the default behaviour of <kbd class="key">TAB</kbd>
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>.
+complete on 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
@@ -2238,33 +2252,33 @@ 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>
+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>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>.
+in <code class="code">readline.h</code> use the <code class="code">stdio</code> library, the file
+<code class="code">&lt;stdio.h&gt;</code> should be included before <code class="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
+<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
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,65 +2287,65 @@ 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 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>
<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
@@ -2351,428 +2365,440 @@ command functions.
<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>
+<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 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>.
+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> is available to 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>.
</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>
+<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>EOF</samp>&rsquo; character) on an empty line or encountered a read error and
+stty &lsquo;<samp class="samp">EOF</samp>&rsquo; character) on an empty line or encountered a read error 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>
+<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
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>
+<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>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>.
+<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>.
</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>
+<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>rl_prompt</var>, but may be changed temporarily by functions that
+<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>
+<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 library.
</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>
+<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>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
+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>
+<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>TERM</code> environment variable
+Readline sets this to the value of the <code class="env">TERM</code> environment variable
the first time it is called.
</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>
+<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. 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 <code class="code">readline</code> 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 <code class="code">readline</code>
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.
+<code class="code">rl_getc</code>, the default 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.
</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>
+<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>If non-zero, Readline will call indirectly through this pointer
to update the display with the current contents of the editing buffer.
-By default, it is set to <code>rl_redisplay</code>, the default Readline
-redisplay function (see <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>).
+<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>).
+<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="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="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_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
+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 compact="compact">
-<dt><span><code>RL_STATE_NONE</code></span></dt>
+<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>
+<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)
+<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 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.
</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.
</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>
+<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>1</var> means Readline is currently in emacs mode; <var>0</var>
+<var class="var">1</var> means Readline is currently in emacs mode; <var class="var">0</var>
means that vi mode is active.
</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,12 +2815,12 @@ 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
@@ -2802,19 +2828,19 @@ name. The user is able to type 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
+<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>. You, as the
programmer, 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. 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,864 +2851,877 @@ 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
+<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>
+<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>malloc()</code>; the caller should free it by calling
-<code>rl_free_keymap()</code> when done.
+<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 subordindate 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>
-<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
+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.
+installed before the first call to <code class="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>).
+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.
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>.
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>. 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>.
</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>.
+<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>.
</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>).
+<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>, the current keymap is used. If <var class="var">type</var> is
+not <code class="code">NULL</code>, the type of the object is returned 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="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.
+<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="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>
+<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.
</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>
+<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>free</code> or
-<code>rl_free</code> when you are done.
+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.
</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.
</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
+uses <code class="code">rl_insert_text()</code> or <code class="code">rl_delete_text()</code> to do it, then
undoing is already done for you automatically.
</p>
<p>If you do multiple insertions or multiple deletions, or any combination
of these operations, you should group them together into one operation.
-This is done with <code>rl_begin_undo_group()</code> and
-<code>rl_end_undo_group()</code>.
+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>
-<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>.
</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>
+<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>rl_insert_text()</code> and
-<code>rl_delete_text()</code>, but could be the result of calls to
-<code>rl_add_undo()</code>.
+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
+<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>
+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.
</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
+<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
+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>rl_save_prompt</code> to save the prompt information
+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>
+<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>rl_save_prompt</code> before the last call to <code>rl_message</code>,
-call <code>rl_restore_prompt</code> before calling this function.
+<code class="code">rl_save_prompt</code> before the last call to <code class="code">rl_message</code>,
+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 <code class="code">rl_save_prompt</code> was called to save the prompt before a call
+to <code class="code">rl_message</code>, this function should be called 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 <code class="code">rl_on_new_line_with_prompt()</code>
+function or <code class="code">rl_already_prompted</code> variable is used.
It returns the number of visible characters on the last line of the
(possibly multi-line) prompt.
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.
</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>
+<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>,
+If <var class="var">start</var> is less than <var class="var">end</var>,
the text is appended, otherwise prepended. If the last command was
not a kill, a new kill ring slot is used.
</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
+<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>Cause <var class="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.
+<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;
+<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>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;
+<code class="code">rl_read_key()</code>. Up to 512 characters may be pushed back.
+<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
+<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>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
+<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>
+<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="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>
+<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.
-The <var>meta_flag</var> argument should be non-zero if Readline should
+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>
+<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>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
+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>
+<var class="var">terminal_name</var> as the terminal type (e.g., <code class="code">vt100</code>).
+If <var class="var">terminal_name</var> is <code class="code">NULL</code>, the value of the <code class="code">TERM</code>
environment variable is used.
</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>.
+<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_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_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_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>.
+<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>.
The point and mark are preserved, if possible.
-If <var>clear_undo</var> is non-zero, the undo list associated with the
+If <var class="var">clear_undo</var> is non-zero, the undo list associated with the
current line is cleared.
</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>
+<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, possibly 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
+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
+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>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>).
+<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>).
</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
@@ -3690,88 +3729,93 @@ use all of a terminal&rsquo;s capabilities, and this function will return
values for only those capabilities Readline uses.
</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_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="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> mark.
+When this is enabled, the text between point and mark (the <var class="var">region</var>) is
+displayed in the terminal&rsquo;s standout mode (a <var class="var">face</var>).
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>
+<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 mark.
</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>
+<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>An alternate interface is available to plain <code>readline()</code>. Some
+<p>An alternate interface is available to plain <code class="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>
+window system I/O, typically by using a main loop to <code class="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>
+<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 *lhandler)</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">lhandler</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
+If that character completes the line, <code class="code">rl_callback_read_char</code> will
+invoke the <var class="var">lhandler</var> function installed by
+<code class="code">rl_callback_handler_install</code> to process the line.
+Before calling the <var class="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,
+<code class="code">rl_callback_handler_install</code>.
+If the <var class="var">lhandler</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.
+<code class="code">EOF</code> is indicated by calling <var class="var">lhandler</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
@@ -3779,34 +3823,34 @@ wish to perform their own signal handling; Readline&rsquo;s internal signal hand
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>
+If the <var class="var">lhandler</var> installed by <code class="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
+to by the value of <code class="code">rl_deprep_term_function</code> should be called 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;
+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;
@@ -3864,12 +3908,12 @@ invert_case_line (count, key)
<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,7 +3921,7 @@ 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;
@@ -3991,12 +4035,12 @@ 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
@@ -4009,217 +4053,217 @@ restore the terminal to a sane state, or provide application writers with
functions to do so manually.
</p>
<p>Readline contains an internal signal handler that is installed for a
-number of signals (<code>SIGINT</code>, <code>SIGQUIT</code>, <code>SIGTERM</code>,
-<code>SIGHUP</code>,
-<code>SIGALRM</code>, <code>SIGTSTP</code>, <code>SIGTTIN</code>, and <code>SIGTTOU</code>).
+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 one of these signals is received, the signal handler
will reset the terminal attributes to those that were in effect before
-<code>readline()</code> was called, reset the signal handling to what it was
-before <code>readline()</code> was called, and resend the signal to the calling
+<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>
+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>SIGWINCH</code> signal handler the calling application has installed.
-Readline calls the application&rsquo;s <code>SIGWINCH</code> signal handler without
+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>longjmp</code> back to a main processing loop), it <em>must</em>
-call <code>rl_cleanup_after_signal()</code> (described below), to restore the
+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
+(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
+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>,
+does not need to do any processing between calls to <code class="code">rl_callback_read_char</code>,
setting this variable may be desirable.
</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
+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="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>
+<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
+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
+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>
+<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>rl_pending_signal()</code> can be used independently
+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
+<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>SIGWINCH</code>.
+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
+<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&rsquo;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.
</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
@@ -4228,19 +4272,19 @@ 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
@@ -4253,230 +4297,230 @@ 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
+<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>count</var> and <var>invoking_key</var>.
+<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
+<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 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
+<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>state</var> is zero, and returns them
+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>malloc()</code>; Readline
+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>
+<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>rl_completion_matches()</code>). The default is to do filename completion.
+<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
+<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 the default filename generator
+function, <code class="code">rl_filename_completion_function()</code>, is used.
+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
+<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>@</samp>&rsquo; is similar to &lsquo;<samp>!</samp>&rsquo;, but
+performing partial completion. &lsquo;<samp class="samp">@</samp>&rsquo; is similar to &lsquo;<samp class="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>
+<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>rl_completion_matches()</code> and <code>rl_completion_entry_function</code>).
+<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>rl_complete_internal()</code> with an
-argument depending on <var>invoking_key</var>.
+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="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;.
+<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="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_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>.
+the same interface as <code class="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>
+<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>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>.
+<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>NULL</code> pointer.
+terminated with a <code class="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
+<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>entry_func</var> returns a <code>NULL</code> pointer to the caller
+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
+<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
+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 the
array of strings returned will be used.
-If this function sets the <code>rl_attempted_completion_over</code>
+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>
+attempted and one of the characters in <code class="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
+<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.
</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>
+<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.
+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 an embedded 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
+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>rl_completer_word_break_characters</code> should be
+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>
+<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>This function, if defined, is called by the completer when real filename
completion is done, after all the matching names have been generated.
-It is passed a <code>NULL</code> terminated array of matches.
-The first element (<code>matches[0]</code>) is the
+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 each element deleted
from the array must be freed.
</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.
It could be used to expand symbolic links or shell variables in pathnames.
@@ -4488,36 +4532,36 @@ 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
+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 is
displayed when the possible completions are printed or inserted. It is
called 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.
+is passed 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,16 +4569,18 @@ 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>
+<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 called when reading
directory entries from the filesystem for completion and comparing
-them to the partial word to be completed. The function should
+them to the filename portion of the partial word to be completed
+(after its potential modification by <code class="code">rl_completion_rewrite_hook</code>).
+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.
+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
@@ -4542,76 +4588,95 @@ 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>
+<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 to call before
+comparing the filename portion of a word to be completed with directory
+entries from the filesystem.
+The function takes two arguments: <var class="var">fname</var>, the filename 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.
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
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.
</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>. 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
+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>rl_completer_word_break_characters</code> itself. If the function
-returns <code>NULL</code>, <code>rl_completer_word_break_characters</code> is used.
+<code class="code">rl_completer_word_break_characters</code> itself. If the function
+returns <code class="code">NULL</code>, <code class="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>
+<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,
+<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>
+<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 a filename to be quoted by the completer
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>
+<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>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.
@@ -4619,12 +4684,12 @@ 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.
+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.
@@ -4632,141 +4697,153 @@ It is set to the default before any application-specific completion function
is called, 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, <var class="var">rl_completion_append_character</var> is not appended to
matches at the end of the command line, as described above.
It is set to 0 before any application-specific completion function
is called, and may only be changed within such a function.
</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>
+<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>rl_completer_quote_characters</var>, it sets this variable
+characters in <var class="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.
</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.
</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>
+<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, a slash will be appended to completed filenames that are
symbolic links to directory names, subject to the value of the
-user-settable <var>mark-directories</var> variable.
+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.
+<var class="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.
</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>
+<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 duplicates in the matches are removed.
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>
+<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>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,
+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.
+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="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>
+<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>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
+<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>.
+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_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>Non-zero means that Readline should apply filename-style quoting,
+including any application-specified quoting mechanism,
+to all completion matches even if we are 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 effected 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_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
sort the completions and, depending on the value of
-<code>rl_ignore_completion_duplicates</code>, will attempt to remove duplicate
+<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.
+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 any application-specific
completion function is called, allowing such functions to present
-the same interface as <code>rl_complete()</code>.
+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
+completion functions that call <code class="code">rl_complete_internal()</code>. This is
set to the appropriate value before any application-specific completion
function is called.
</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>
+<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, completion is inhibited. The completion
-character will be inserted as any other bound to <code>self-insert</code>.
+character will be inserted as any other 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
+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
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
+<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 +4919,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 +4929,7 @@ char *progname;
int done;
char *
-dupstr (s)
- char *s;
+dupstr (char *s)
{
char *r;
@@ -4862,9 +4938,8 @@ dupstr (s)
return (r);
}
-main (argc, argv)
- int argc;
- char **argv;
+int
+main (int argc, char **argv)
{
char *line, *s;
@@ -4900,8 +4975,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 +5014,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 +5028,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 +5052,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 +5074,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 +5093,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 +5131,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 +5191,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 +5200,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 +5239,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 +5253,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 +5270,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 +5289,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 +5305,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 +5401,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 +5499,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 +5699,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 +5745,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 +5783,577 @@ 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">enable-active-region</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-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 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-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="#Utility-Functions">Utility Functions</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>
diff --git a/doc/readline.info b/doc/readline.info
index 4ea6b8c..64e7d6c 100644
--- a/doc/readline.info
+++ b/doc/readline.info
@@ -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, 19 January
+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-2022 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -67,10 +66,10 @@ File: readline.info, Node: Introduction and Notation, Next: Readline Interacti
The following paragraphs 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
@@ -81,11 +80,11 @@ Compose key for typing accented characters.
If you do not have a Meta or <ALT> key, or another key working as a
Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
+_first_, and then typing <k>. Either process is known as “metafying”
the <k> key.
- The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
+ 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
@@ -132,8 +131,8 @@ 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
@@ -142,23 +141,23 @@ the cursor, characters to the right of the cursor are 'pulled back' to
fill in the blank space created by the removal of the text. A list of
the bare essentials for editing the text of an input line follows.
-'C-b'
+‘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
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
+delete the character underneath the cursor, like ‘C-d’, rather than the
character to the left of the cursor.)

@@ -169,22 +168,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>.
+commands have been added in addition to ‘C-b’, ‘C-f’, ‘C-d’, and <DEL>.
Here are some commands for moving more rapidly about the line.
-'C-a'
+‘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 +193,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 +209,34 @@ 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
+ Here is how to “yank” the text back into the line. Yanking means to
copy the most-recently-killed text from the kill buffer.
-'C-y'
+‘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’.

File: readline.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
@@ -250,14 +249,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.

@@ -268,24 +267,24 @@ 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
+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
+‘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
+‘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
+ 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
@@ -293,9 +292,9 @@ 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
+ 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
@@ -310,16 +309,16 @@ 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, the
+ultimate default is ‘/etc/inputrc’.
When a program which uses the Readline library starts up, the init
file is read, and the key bindings are set.
- In addition, the 'C-x C-r' command re-reads this init file, thus
+ 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:
@@ -337,20 +336,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 +363,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 +374,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,72 +387,75 @@ 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'
+ ‘comment-begin’
The string to insert at the beginning of the line when the
- 'insert-comment' command is executed. The default value is
- '"#"'.
+ ‘insert-comment’ command is executed. 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.
- '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'.
+ and completion. The default value is ‘off’.
- 'completion-prefix-display-length'
+ ‘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'
+ ‘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
@@ -462,88 +464,88 @@ Variable Settings
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'.
+ limit is ‘100’.
- 'convert-meta'
- If set to 'on', Readline will convert characters with the
+ ‘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
+ 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
+ ‘LC_CTYPE’ locale category, and may change if the locale is
changed.
- 'disable-completion'
- If set to 'On', Readline will inhibit word completion.
+ ‘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'.
+ they had been mapped to ‘self-insert’. The default is ‘off’.
- 'echo-control-characters'
- When set to 'on', on operating systems that indicate they
+ ‘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
+ ‘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'.
+ 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
+ Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal
- control sequence into the mode string. The default is '@'.
+ control sequence into the mode string. The default is ‘@’.
- 'enable-active-region'
- The "point" is the current cursor position, and "mark" refers
+ ‘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
+ “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',
+ 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'.
+ non-incremental history searches. The default is ‘On’.
- 'enable-bracketed-paste'
- When set to 'On', Readline configures the terminal to insert
+ ‘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 will try to enable the application
keypad when it is called. Some systems need this to enable
- the arrow keys. The default is 'off'.
+ the arrow keys. The default is ‘off’.
- 'enable-meta-key'
- When set to 'on', Readline will try to enable any meta
+ ‘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'.
+ characters. The default is ‘on’.
- 'expand-tilde'
- If set to 'on', tilde expansion is performed when Readline
- attempts word completion. The default is 'off'.
+ ‘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
+ ‘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
@@ -552,43 +554,43 @@ Variable Settings
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
+ ‘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'
+ a new screen line. This variable is automatically set to ‘on’
for terminals of height 1. By default, this variable is set
- to 'off'.
+ to ‘off’.
- 'input-meta'
- If set to 'on', Readline will enable eight-bit input (it will
+ ‘input-meta’
+ If set to ‘on’, Readline will enable eight-bit input (it will
not clear the eighth bit in the characters it reads),
regardless of what the terminal claims it can support. The
- default value is 'off', but Readline will set it to 'on' if
+ 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
+ ‘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'
+ ‘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
+ given a value, the characters <ESC> and ‘C-J’ will 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
@@ -596,125 +598,130 @@ Variable Settings
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
+ 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'.
+ value is ‘500’.
- 'mark-directories'
- If set to 'on', completed directory names have a slash
- appended. The default is 'on'.
+ ‘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-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
+ ‘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'.
+ ‘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.
+ ‘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
+ ‘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'.
+ cycling through the list. The default is ‘off’.
- 'output-meta'
- If set to 'on', Readline will display characters with the
+ ‘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
+ 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
+ ‘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.
+ variable is ‘on’ by default.
- 'print-completions-horizontally'
- If set to 'on', Readline will display completions with matches
+ ‘print-completions-horizontally’
+ If set to ‘on’, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down
- the screen. The default is 'off'.
+ 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 ‘accept-line’ is executed. 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
+ 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'.
+ ‘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
+ is available. Use the ‘\1’ and ‘\2’ escapes to begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(cmd)'.
+ 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
+ is available. Use the ‘\1’ and ‘\2’ escapes to begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(ins)'.
+ 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.
@@ -740,11 +747,11 @@ 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,
@@ -761,51 +768,51 @@ Key Bindings
"\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-'
+ ‘\C-’
control prefix
- '\M-'
+ ‘\M-’
meta prefix
- '\e'
+ ‘\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'
+ ‘\NNN’
the eight-bit character whose value is the octal value NNN
(one to three digits)
- '\xHH'
+ ‘\xHH’
the eight-bit character whose value is the hexadecimal value
HH (one or two hex digits)
@@ -813,8 +820,8 @@ Key Bindings
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
+ character in the macro text, including ‘"’ and ‘'’. For example,
+ the following binding will make ‘‘C-x’ \’ insert a single ‘\’ into
the line:
"\C-x\\": "\\"
@@ -829,45 +836,45 @@ compilation features of the C preprocessor which allows key bindings and
variable settings to be performed as the result of tests. There are
four parser directives used.
-'$if'
- The '$if' construct allows bindings to be made based on the editing
+‘$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.
+ ‘=’ 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
+ ‘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 is assumed to be ‘0’. The operator may
+ be separated from the string ‘version’ and from the version
number argument by whitespace. The following example sets a
variable if the Readline version being used is 7.0 or newer:
$if version >= 7.0
set show-mode-in-prompt on
$endif
- 'application'
+ ‘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 +887,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
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'
+‘$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'
+‘$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':
+ directive reads from ‘/etc/inputrc’:
$include /etc/inputrc

@@ -1038,10 +1045,10 @@ 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”.

File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
@@ -1049,50 +1056,50 @@ File: readline.info, Node: Commands For Moving, Next: Commands For History, U
1.4.1 Commands For Moving
-------------------------
-'beginning-of-line (C-a)'
+‘beginning-of-line (C-a)’
Move to the start of the current line.
-'end-of-line (C-e)'
+‘end-of-line (C-e)’
Move to the end of the line.
-'forward-char (C-f)'
+‘forward-char (C-f)’
Move forward a character.
-'backward-char (C-b)'
+‘backward-char (C-b)’
Move back a character.
-'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.
-'redraw-current-line ()'
+‘redraw-current-line ()’
Refresh the current line. By default, this is unbound.

@@ -1101,103 +1108,103 @@ 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
+ with ‘add_history()’. If this line is a modified history line, the
history line is restored to its original state.
-'previous-history (C-p)'
+‘previous-history (C-p)’
Move 'back' through the history list, fetching the previous
command.
-'next-history (C-n)'
+‘next-history (C-n)’
Move 'forward' through the history list, fetching the next command.
-'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.
-'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.
-'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 ()'
+‘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.
-'history-search-backward ()'
+‘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.
-'history-substring-search-forward ()'
+‘history-substring-search-forward ()’
Search forward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substring-search-backward ()'
+‘history-substring-search-backward ()’
Search backward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
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'
+ argument N is computed, the argument is extracted 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.
+ 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,43 +1215,43 @@ 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
+ same character as the tty EOF character, as ‘C-d’ commonly is, see
above for the effects.
-'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.
-'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, !, ...)'
+‘self-insert (a, b, A, 1, !, ...)’
Insert yourself.
-'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
@@ -1252,39 +1259,39 @@ File: readline.info, Node: Commands For Text, Next: Commands For Killing, Pre
mark_: when the mark is active, Readline redisplay uses the
terminal's standout mode to denote the 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.
@@ -1295,76 +1302,69 @@ File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Pre
1.4.4 Killing And Yanking
-------------------------
-'kill-line (C-k)'
+‘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.
-'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.
-'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)'
+‘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-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
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’.

File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
@@ -1372,15 +1372,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 +1395,43 @@ 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’.
-'menu-complete ()'
- Similar to 'complete', but replaces the word to be completed with a
+‘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
+ execution of ‘menu-complete’ steps through the list of possible
completions, inserting each match in turn. At the end of the list
of completions, the bell is rung (subject to the setting of
- 'bell-style') and the original text is restored. An argument of N
+ ‘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
+‘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 ()'
+‘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’). If at the end of the line,
+ behaves identically to ‘possible-completions’. This command is
unbound by default.

@@ -1440,18 +1440,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,53 +1461,53 @@ 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>)'
+‘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'.
+ meta key. 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 beginning.
-'tilde-expand (M-~)'
+‘tilde-expand (M-~)’
Perform tilde expansion on the current word.
-'set-mark (C-@)'
+‘set-mark (C-@)’
Set the mark to the point. If a numeric argument is supplied, the
mark is set to that position.
-'exchange-point-and-mark (C-x C-x)'
+‘exchange-point-and-mark (C-x C-x)’
Swap the point with the mark. The current cursor position is set
to the saved position, and the old cursor position is saved as the
mark.
-'character-search (C-])'
+‘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-backward (M-C-])'
+‘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.
-'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
@@ -1516,67 +1516,74 @@ File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up:
inserting stray characters into the editing buffer. This is
unbound by default, but usually bound to ESC-[.
-'insert-comment (M-#)'
- Without a numeric argument, the value of the 'comment-begin'
+‘insert-comment (M-#)’
+ Without a numeric argument, the value of the ‘comment-begin’
variable is inserted at the beginning of the current line. If a
numeric argument is supplied, this command acts as a toggle: if the
characters at the beginning of the line do not match the value of
- 'comment-begin', the value is inserted, otherwise the characters in
- 'comment-begin' are deleted from the beginning of the line. In
+ ‘comment-begin’, the value is inserted, otherwise the characters in
+ ‘comment-begin’ are deleted from the beginning of the line. In
either case, the line is accepted as if a newline had been typed.
-'dump-functions ()'
+‘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.
-'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.
+‘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.
+

File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
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 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-2023 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,17 +1630,21 @@ 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 behaviour of Readline is
sufficient. This section describes how to use Readline in the simplest
-way possible, perhaps to replace calls in your code to 'gets()' or
-'fgets()'.
-
- The function 'readline()' prints a prompt PROMPT and then reads and
-returns a single line of text from the user. If PROMPT is 'NULL' or the
-empty string, no prompt is displayed. The line 'readline' returns is
-allocated with 'malloc()'; the caller should 'free()' the line when it
-has finished with it. The declaration for 'readline' in ANSI C is
+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. 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, no prompt is displayed. The line ‘readline’
+returns is allocated with ‘malloc()’; the caller should ‘free()’ the
+line when it has finished with it. The declaration for ‘readline’ in
+ANSI C is
char *readline (const char *PROMPT);
@@ -1642,18 +1653,18 @@ 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.
- 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 ‘(char *)NULL’ is returned.
Otherwise, the line is ended just as if a newline had been typed.
Readline performs some expansion on the PROMPT before it is displayed
-on the screen. See the description of 'rl_expand_prompt' (*note
+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 +1672,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. */
@@ -1694,21 +1705,21 @@ and has the advantage of no static buffer to overflow:
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()'.
+‘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::).
@@ -1726,18 +1737,18 @@ 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 file ‘<stdio.h>’ should be included before
+‘readline.h’.
- 'readline.h' defines a C preprocessor variable that should be treated
-as an integer, 'RL_READLINE_VERSION', which may be used to conditionally
+ ‘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 +1769,51 @@ 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_compentry_func_t (const char *, int);’
-'typedef char **rl_completion_func_t (const char *, int, int);'
+‘typedef char **rl_completion_func_t (const char *, int, int);’
-'typedef char *rl_quote_func_t (char *, int, char *);'
+‘typedef char *rl_quote_func_t (char *, int, char *);’
-'typedef char *rl_dequote_func_t (char *, int);'
+‘typedef char *rl_dequote_func_t (char *, int);’
-'typedef int rl_compignore_func_t (char **);'
+‘typedef int rl_compignore_func_t (char **);’
-'typedef void rl_compdisp_func_t (char **, int, int);'
+‘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 **);’

File: readline.info, Node: Function Writing, Prev: Readline Typedefs, Up: Custom Functions
@@ -1814,7 +1825,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)
@@ -1846,16 +1857,16 @@ 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’ is available to increase the
+ memory allocated to ‘rl_line_buffer’.
-- Variable: int rl_point
- The offset of the current cursor position in 'rl_line_buffer' (the
+ 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
@@ -1865,18 +1876,18 @@ These variables are available to function writers.
-- 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
+ (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.
-- 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
@@ -1896,9 +1907,9 @@ These variables are available to function writers.
-- 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()’.
-- Variable: char * rl_display_prompt
The string displayed as the prompt. This is usually identical to
@@ -1907,10 +1918,10 @@ 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.
@@ -1921,7 +1932,7 @@ These variables are available to function writers.
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,7 +1941,7 @@ 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'
+ application, Readline sets this to the value of the ‘TERM’
environment variable the first time it is called.
-- Variable: const char * rl_readline_name
@@ -1939,16 +1950,16 @@ 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
@@ -1958,11 +1969,11 @@ These variables are available to function writers.
-- 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,7 +1984,7 @@ 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
+ ‘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.
@@ -1989,42 +2000,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
+ 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,80 +2070,80 @@ 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'
+ ‘RL_STATE_SIGHANDLER’
Readline is currently executing the readline signal handler.
- 'RL_STATE_UNDOING'
+ ‘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'
+ ‘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.
@@ -2156,7 +2176,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.
@@ -2179,7 +2199,7 @@ 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’. You, as the programmer,
should bind the functions you write to descriptive names as well.
Readline provides a function for doing that:
@@ -2187,7 +2207,7 @@ Readline provides a function for doing that:
*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 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 +2221,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,7 +2246,7 @@ 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 subordindate keymaps and macros.
-- Function: int rl_empty_keymap (Keymap keymap)
Return non-zero if there are no keys bound to functions in KEYMAP;
@@ -2243,17 +2263,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
@@ -2273,16 +2293,16 @@ File: readline.info, Node: Binding Keys, Next: Associating Function Names and
------------------
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
+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
+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
+initialization function assigned to the ‘rl_startup_hook’ variable
(*note Readline Variables::).
These functions manage key bindings.
@@ -2339,7 +2359,7 @@ initialization function assigned to the 'rl_startup_hook' variable
-- 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 +2377,12 @@ 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
+ by DATA; this can be a function (‘ISFUNC’), a macro (‘ISMACR’), or
+ a keymap (‘ISKMAP’). This makes new keymaps as necessary. The
initial keymap in which to do bindings is MAP.
-- Function: int rl_parse_and_bind (char *line)
- Parse LINE as if it had been read from the 'inputrc' file and
+ 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::).
@@ -2386,16 +2406,16 @@ associate a new function name with an arbitrary function.
-- 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’, 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"
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 +2424,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,21 +2436,28 @@ 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.
+
-- 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)
@@ -2448,33 +2475,33 @@ functions much more useful. It is certainly easy to try something if
you know you can undo it.
If your function simply inserts text once, or deletes text once, and
-uses 'rl_insert_text()' or 'rl_delete_text()' to do it, then undoing is
+uses ‘rl_insert_text()’ or ‘rl_delete_text()’ to do it, then undoing is
already done for you automatically.
If you do multiple insertions or multiple deletions, or any
combination of these operations, you should group them together into one
-operation. This is done with 'rl_begin_undo_group()' and
-'rl_end_undo_group()'.
+operation. This is done with ‘rl_begin_undo_group()’ and
+‘rl_end_undo_group()’.
The types of events that can be undone are:
enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
- Notice that 'UNDO_DELETE' means to insert some text, and
-'UNDO_INSERT' means to delete some text. That is, the undo code tells
-what to undo, not how to undo it. 'UNDO_BEGIN' and 'UNDO_END' are tags
-added by 'rl_begin_undo_group()' and 'rl_end_undo_group()'.
+ Notice that ‘UNDO_DELETE’ means to insert some text, and
+‘UNDO_INSERT’ means to delete some text. That is, the undo code tells
+what to undo, not how to undo it. ‘UNDO_BEGIN’ and ‘UNDO_END’ are tags
+added by ‘rl_begin_undo_group()’ and ‘rl_end_undo_group()’.
-- Function: int rl_begin_undo_group (void)
Begins saving undo information in a group construct. The undo
- information usually comes from calls to 'rl_insert_text()' and
- 'rl_delete_text()', but could be the result of calls to
- 'rl_add_undo()'.
+ 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,11 +2512,11 @@ 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.
@@ -2506,7 +2533,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 +2562,52 @@ 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’, 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 ‘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’.
-- 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
+ by ‘readline()’. It may also be called to expand the primary
+ prompt if the ‘rl_on_new_line_with_prompt()’ function or
+ ‘rl_already_prompted’ variable is used. It returns the number of
visible characters on the last line of the (possibly multi-line)
prompt. 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
+ ‘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.
-- 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.

@@ -2611,7 +2638,7 @@ File: readline.info, Node: Modifying Text, Next: Character Input, Prev: Redis
-- 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.
+ ‘rl_insert_text()’ instead.

File: readline.info, Node: Character Input, Next: Terminal Management, Prev: Modifying Text, Up: Readline Convenience Functions
@@ -2623,9 +2650,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 +2661,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()’. Up to 512 characters may be pushed back.
+ ‘rl_stuff_char’ returns 1 if the character was successfully
inserted; 0 otherwise.
-- Function: int rl_execute_next (int c)
- Make C be the next command to be executed when 'rl_read_key()' is
+ 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 +2700,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.

File: readline.info, Node: Terminal Management, Next: Utility Functions, Prev: Character Input, Up: Readline Convenience Functions
@@ -2682,24 +2709,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()'
+ Modify the terminal settings for Readline's use, so ‘readline()’
can read a single character at a time from the keyboard. The
META_FLAG argument should be non-zero if Readline should read
eight-bit input.
-- Function: void rl_deprep_terminal (void)
- Undo the effects of 'rl_prep_terminal()', leaving the terminal in
+ 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,8 +2738,8 @@ 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
+ TERMINAL_NAME as the terminal type (e.g., ‘vt100’). If
+ TERMINAL_NAME is ‘NULL’, the value of the ‘TERM’ environment
variable is used.

@@ -2723,35 +2750,35 @@ 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'.
+ 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
+ Replace the contents of ‘rl_line_buffer’ with TEXT. The point and
mark are preserved, if possible. If CLEAR_UNDO is non-zero, the
undo list associated with the current line is cleared.
-- Function: void rl_extend_line_buffer (int len)
- Ensure that 'rl_line_buffer' has enough space to hold LEN
+ Ensure that ‘rl_line_buffer’ has enough space to hold LEN
characters, possibly reallocating it if necessary.
-- Function: int rl_initialize (void)
Initialize or re-initialize Readline's internal state. It's not
- strictly necessary to call this; 'readline()' calls it before
+ 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 +2786,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 +2831,36 @@ 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::).
-- 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)
@@ -2842,10 +2871,13 @@ File: readline.info, Node: Miscellaneous Functions, Next: Alternate Interface,
not use all of a terminal's capabilities, and this function will
return values for only those capabilities Readline uses.
+ -- 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)
@@ -2874,9 +2906,9 @@ 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
+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
+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.
@@ -2887,21 +2919,21 @@ functions available to make this easy.
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
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
+ 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,
+ ‘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.
+ modified for Readline's use again. ‘EOF’ is indicated by calling
+ LHANDLER with a ‘NULL’ line.
-- Function: void rl_callback_sigcleanup (void)
Clean up any internal state the callback interface uses to maintain
@@ -2914,9 +2946,9 @@ functions available to make this easy.
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
+ ‘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
+ ‘rl_deprep_term_function’ should be called before the program exits
to reset the terminal settings.

@@ -2927,8 +2959,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.
@@ -3125,88 +3157,88 @@ order to restore the terminal to a sane state, or provide application
writers with functions to do so manually.
Readline contains an internal signal handler that is installed for a
-number of signals ('SIGINT', 'SIGQUIT', 'SIGTERM', 'SIGHUP', 'SIGALRM',
-'SIGTSTP', 'SIGTTIN', and 'SIGTTOU'). When one of these signals is
+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
+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 desirable.
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 +3249,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
@@ -3269,7 +3301,7 @@ to update its idea of the terminal size when it receives a 'SIGWINCH'.
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 +3317,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()’.

File: readline.info, Node: Custom Completers, Prev: Readline Signal Handling, Up: Programming with GNU Readline
@@ -3330,48 +3362,48 @@ 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
+ 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
+ ‘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.

@@ -3385,50 +3417,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
+ performing partial completion. ‘@’ is similar to ‘!’, but possible
completions are not listed if the possible completions share a
common prefix.
-- Function: int rl_complete (int ignore, int invoking_key)
Complete the word at or before point. You have supplied the
function that does the initial simple matching selection algorithm
- (see 'rl_completion_matches()' and 'rl_completion_entry_function').
+ (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 +3473,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,19 +3484,19 @@ 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
+ 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
+ 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.
@@ -3472,11 +3504,11 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
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.
+ ‘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.
@@ -3487,7 +3519,7 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
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
+ that delimits the filename (usually ‘'’ or ‘"’). If QUOTE_CHAR is
zero, the filename was not in an embedded string.
-- Variable: rl_linebuf_func_t * rl_char_is_quoted_p
@@ -3497,14 +3529,14 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
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
+ ‘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
+ 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.
@@ -3520,7 +3552,7 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
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()'.
+ 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 +3562,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
+ ‘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. 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
@@ -3546,7 +3578,7 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
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
+ value is passed to ‘stat()’ to determine the file's type and
characteristics. This function does not need to remove quote
characters from the filename.
@@ -3557,58 +3589,75 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
-- 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
- 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.
+ them to the filename portion of the partial word to be completed
+ (after its potential modification by ‘rl_completion_rewrite_hook’).
+ 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.
+
+ -- Variable: rl_dequote_func_t * rl_completion_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. The function takes two
+ arguments: FNAME, the filename 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
+ the list. It takes three arguments: (‘char **’MATCHES, ‘int’
+ NUM_MATCHES, ‘int’ MAX_LENGTH) where MATCHES is the array of
matching strings, NUM_MATCHES is the number of strings in that
array, and MAX_LENGTH is the length of the longest string in that
array. Readline provides a convenience function,
- 'rl_display_match_list', that takes care of doing the display to
+ ‘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.
-- 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()’. 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’, ‘rl_completer_word_break_characters’ is used.
-- 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
@@ -3633,8 +3682,8 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
-- 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
+ 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
@@ -3688,22 +3737,31 @@ File: readline.info, Node: Completion Variables, Next: A Short Completion Exam
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
+ ‘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
+ ‘rl_filename_quote_chars’. This is _always_ non-zero when
completion is attempted, and can only be changed within an
application-specific completion function. The quoting is effected
via a call to the function pointed to by
- 'rl_filename_quoting_function'.
+ ‘rl_filename_quoting_function’.
+
+ -- Variable: int rl_full_quoting_desired
+ Non-zero means that Readline should apply filename-style quoting,
+ including any application-specified quoting mechanism, to all
+ completion matches even if we are 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 effected via a call to the
+ function pointed to by ‘rl_filename_quoting_function’.
-- Variable: int rl_attempted_completion_over
If an application-specific completion function assigned to
- 'rl_attempted_completion_function' sets this variable to a non-zero
+ ‘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 +3771,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()'.
+ such functions to 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
+ the completion functions that call ‘rl_complete_internal()’. This
is set to the appropriate value before any application-specific
completion function is called.
-- 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'.
+ ‘self-insert’.

File: readline.info, Node: A Short Completion Example, Prev: Completion Variables, Up: Custom Completers
@@ -3742,8 +3800,8 @@ 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
+library. It is called ‘fileman’, and the source code resides in
+‘examples/fileman.c’. This sample application provides completion of
command names, line editing features, and access to the history list.
/* fileman.c -- A tiny application which demonstrates how to use the
@@ -3822,8 +3880,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 +3890,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 +3899,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 +3936,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 +3975,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 +3989,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 +4013,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 +4035,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 +4054,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 +4092,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 +4152,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 +4161,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 +4200,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 +4214,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 +4231,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 +4250,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 +4269,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 +4278,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
@@ -4761,7 +4810,7 @@ Function and Variable Index
* bind-tty-special-chars: Readline Init File Syntax.
(line 68)
* blink-matching-paren: Readline Init File Syntax.
- (line 73)
+ (line 76)
* bracketed-paste-begin (): Commands For Text. (line 36)
* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13)
* capitalize-word (M-c): Commands For Text. (line 69)
@@ -4772,39 +4821,39 @@ Function and Variable Index
* clear-display (M-C-l): Commands For Moving. (line 40)
* clear-screen (C-l): Commands For Moving. (line 45)
* 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 102)
* completion-ignore-case: Readline Init File Syntax.
- (line 106)
+ (line 109)
* completion-map-case: Readline Init File Syntax.
- (line 111)
+ (line 114)
* completion-prefix-display-length: Readline Init File Syntax.
- (line 117)
+ (line 120)
* completion-query-items: Readline Init File Syntax.
- (line 124)
+ (line 127)
* convert-meta: Readline Init File Syntax.
- (line 135)
+ (line 138)
* 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)
* 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 148)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
* downcase-word (M-l): Commands For Text. (line 65)
@@ -4815,19 +4864,19 @@ Function and Variable Index
* dump-variables (): Miscellaneous Commands.
(line 76)
* echo-control-characters: Readline Init File Syntax.
- (line 150)
+ (line 153)
* editing-mode: Readline Init File Syntax.
- (line 155)
+ (line 158)
* emacs-editing-mode (C-e): Miscellaneous Commands.
(line 88)
* emacs-mode-string: Readline Init File Syntax.
- (line 161)
+ (line 164)
* enable-active-region: Readline Init File Syntax.
- (line 171)
+ (line 174)
* enable-bracketed-paste: Readline Init File Syntax.
- (line 184)
+ (line 187)
* enable-keypad: Readline Init File Syntax.
- (line 193)
+ (line 196)
* 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.
@@ -4835,8 +4884,10 @@ Function and Variable Index
* end-of-line (C-e): Commands For Moving. (line 9)
* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
(line 37)
+* execute-named-command (M-x): Miscellaneous Commands.
+ (line 96)
* expand-tilde: Readline Init File Syntax.
- (line 204)
+ (line 207)
* fetch-history (): Commands For History.
(line 102)
* forward-backward-delete-char (): Commands For Text. (line 21)
@@ -4845,51 +4896,51 @@ Function and Variable Index
(line 32)
* forward-word (M-f): Commands For Moving. (line 18)
* history-preserve-point: Readline Init File Syntax.
- (line 208)
+ (line 211)
* history-search-backward (): Commands For History.
(line 56)
* history-search-forward (): Commands For History.
(line 50)
* history-size: Readline Init File Syntax.
- (line 214)
+ (line 217)
* history-substring-search-backward (): Commands For History.
(line 68)
* history-substring-search-forward (): Commands For History.
(line 62)
* horizontal-scroll-mode: Readline Init File Syntax.
- (line 223)
+ (line 226)
* input-meta: Readline Init File Syntax.
- (line 232)
+ (line 235)
* insert-comment (M-#): Miscellaneous Commands.
(line 61)
* insert-completions (M-*): Commands For Completion.
(line 18)
* isearch-terminators: Readline Init File Syntax.
- (line 242)
+ (line 245)
* keymap: Readline Init File Syntax.
- (line 249)
+ (line 252)
* 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 282)
* mark-symlinked-directories: Readline Init File Syntax.
- (line 284)
+ (line 287)
* match-hidden-files: Readline Init File Syntax.
- (line 289)
+ (line 292)
* menu-complete (): Commands For Completion.
(line 22)
* menu-complete-backward (): Commands For Completion.
(line 34)
* menu-complete-display-prefix: Readline Init File Syntax.
- (line 296)
+ (line 299)
* meta-flag: Readline Init File Syntax.
- (line 232)
+ (line 235)
* next-history (C-n): Commands For History.
(line 16)
* next-screen-line (): Commands For Moving. (line 33)
@@ -4900,10 +4951,10 @@ Function and Variable Index
* operate-and-get-next (C-o): Commands For History.
(line 95)
* output-meta: Readline Init File Syntax.
- (line 301)
+ (line 304)
* overwrite-mode (): Commands For Text. (line 73)
* page-completions: Readline Init File Syntax.
- (line 309)
+ (line 312)
* possible-completions (M-?): Commands For Completion.
(line 11)
* prefix-meta (<ESC>): Miscellaneous Commands.
@@ -4920,35 +4971,35 @@ Function and Variable Index
* reverse-search-history (C-r): Commands For History.
(line 26)
* revert-all-at-newline: Readline Init File Syntax.
- (line 319)
+ (line 322)
* revert-line (M-r): Miscellaneous Commands.
(line 26)
* rl_activate_mark: Miscellaneous Functions.
- (line 55)
+ (line 60)
* rl_add_defun: Function Naming. (line 18)
* rl_add_funmap_entry: Associating Function Names and Bindings.
- (line 62)
+ (line 69)
* rl_add_undo: Allowing Undoing. (line 39)
* rl_alphabetic: Utility Functions. (line 38)
* rl_already_prompted: Readline Variables. (line 70)
* rl_attempted_completion_function: Completion Variables.
(line 11)
* rl_attempted_completion_over: Completion Variables.
- (line 256)
+ (line 282)
* rl_basic_quote_characters: Completion Variables.
- (line 143)
+ (line 160)
* rl_basic_word_break_characters: Completion Variables.
- (line 137)
+ (line 154)
* rl_begin_undo_group: Allowing Undoing. (line 28)
-* rl_binding_keymap: Readline Variables. (line 195)
* rl_bind_key: Binding Keys. (line 21)
+* 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_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_binding_keymap: Readline Variables. (line 204)
* rl_callback_handler_install: Alternate Interface. (line 13)
* rl_callback_handler_remove: Alternate Interface. (line 42)
* rl_callback_read_char: Alternate Interface. (line 22)
@@ -4966,7 +5017,7 @@ Function and Variable Index
* rl_cleanup_after_signal: Readline Signal Handling.
(line 107)
* rl_clear_history: Miscellaneous Functions.
- (line 49)
+ (line 54)
* rl_clear_message: Redisplay. (line 51)
* rl_clear_pending_input: Character Input. (line 29)
* rl_clear_signals: Readline Signal Handling.
@@ -4976,50 +5027,52 @@ 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 177)
+* rl_completer_word_break_characters: Completion Variables.
+ (line 163)
* rl_completion_append_character: Completion Variables.
- (line 185)
+ (line 202)
* rl_completion_display_matches_hook: Completion Variables.
- (line 124)
+ (line 141)
* 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 232)
* rl_completion_invoking_key: Completion Variables.
- (line 279)
+ (line 305)
* rl_completion_mark_symlink_dirs: Completion Variables.
- (line 221)
+ (line 238)
* rl_completion_matches: Completion Functions.
(line 43)
* rl_completion_mode: Completion Functions.
(line 36)
* rl_completion_query_items: Completion Variables.
- (line 178)
+ (line 195)
* rl_completion_quote_character: Completion Variables.
- (line 203)
+ (line 220)
+* rl_completion_rewrite_hook: Completion Variables.
+ (line 125)
* rl_completion_suppress_append: Completion Variables.
- (line 197)
+ (line 214)
* rl_completion_suppress_quote: Completion Variables.
- (line 209)
+ (line 226)
* rl_completion_type: Completion Variables.
- (line 271)
+ (line 297)
* rl_completion_word_break_hook: Completion Variables.
- (line 151)
+ (line 168)
* 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 67)
* rl_delete_text: Modifying Text. (line 10)
+* rl_deprep_term_function: Readline Variables. (line 186)
* rl_deprep_terminal: Terminal Management. (line 12)
-* rl_deprep_term_function: Readline Variables. (line 185)
* rl_ding: Utility Functions. (line 35)
* rl_directory_completion_hook: Completion Variables.
(line 63)
@@ -5029,11 +5082,11 @@ Function and Variable Index
* 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_done: Readline Variables. (line 27)
* rl_echo_signal_char: Readline Signal Handling.
(line 143)
-* rl_editing_mode: Readline Variables. (line 301)
+* rl_editing_mode: Readline Variables. (line 310)
* rl_empty_keymap: Keymaps. (line 33)
* rl_end: Readline Variables. (line 18)
* rl_end_undo_group: Allowing Undoing. (line 34)
@@ -5041,23 +5094,23 @@ Function and Variable Index
* rl_erase_empty_line: Readline Variables. (line 53)
* rl_event_hook: Readline Variables. (line 130)
* 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 211)
+* rl_executing_keymap: Readline Variables. (line 200)
+* rl_executing_keyseq: Readline Variables. (line 215)
+* rl_executing_macro: Readline Variables. (line 208)
* rl_expand_prompt: Redisplay. (line 66)
-* rl_explicit_arg: Readline Variables. (line 292)
+* rl_explicit_arg: Readline Variables. (line 301)
* rl_extend_line_buffer: Utility Functions. (line 26)
* rl_filename_completion_desired: Completion Variables.
- (line 236)
+ (line 253)
* rl_filename_completion_function: Completion Functions.
(line 57)
* rl_filename_dequoting_function: Completion Variables.
(line 36)
* rl_filename_quote_characters: Completion Variables.
- (line 166)
+ (line 183)
* rl_filename_quoting_desired: Completion Variables.
- (line 246)
+ (line 263)
* rl_filename_quoting_function: Completion Variables.
(line 23)
* rl_filename_rewrite_hook: Completion Variables.
@@ -5070,31 +5123,33 @@ Function and Variable Index
* rl_free_line_state: Readline Signal Handling.
(line 113)
* rl_free_undo_list: Allowing Undoing. (line 44)
+* rl_full_quoting_desired: Completion Variables.
+ (line 273)
* rl_function_dumper: Associating Function Names and Bindings.
- (line 46)
+ (line 53)
* rl_function_of_keyseq: Associating Function Names and Bindings.
(line 13)
* rl_function_of_keyseq_len: Associating Function Names and Bindings.
(line 22)
* rl_funmap_names: Associating Function Names and Bindings.
- (line 56)
+ (line 63)
* 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)
* rl_get_screen_size: Readline Signal Handling.
(line 165)
* rl_get_termcap: Miscellaneous Functions.
- (line 41)
+ (line 43)
+* rl_getc: Character Input. (line 14)
+* rl_getc_function: Readline Variables. (line 135)
* rl_gnu_readline_p: Readline Variables. (line 89)
* rl_ignore_completion_duplicates: Completion Variables.
- (line 232)
+ (line 249)
* rl_ignore_some_completions_function: Completion Variables.
(line 55)
* rl_inhibit_completion: Completion Variables.
- (line 285)
+ (line 311)
* rl_initialize: Utility Functions. (line 30)
* rl_input_available_hook: Readline Variables. (line 151)
* rl_insert_completions: Completion Functions.
@@ -5106,29 +5161,30 @@ Function and Variable Index
* rl_invoking_keyseqs_in_map: Associating Function Names and Bindings.
(line 41)
* rl_keep_mark_active: Miscellaneous Functions.
- (line 65)
-* rl_key_sequence_length: Readline Variables. (line 210)
+ (line 70)
+* rl_key_sequence_length: Readline Variables. (line 219)
* rl_kill_text: Modifying Text. (line 18)
* rl_last_func: Readline Variables. (line 116)
* rl_library_version: Readline Variables. (line 79)
* rl_line_buffer: Readline Variables. (line 8)
* rl_list_funmap_names: Associating Function Names and Bindings.
- (line 52)
+ (line 59)
* rl_macro_bind: Miscellaneous Functions.
(line 6)
+* rl_macro_display_hook: Readline Variables. (line 192)
* 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 76)
* rl_message: Redisplay. (line 42)
* rl_modifying: Allowing Undoing. (line 56)
* 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_numeric_arg: Readline Variables. (line 305)
* rl_on_new_line: Redisplay. (line 14)
* rl_on_new_line_with_prompt: Redisplay. (line 18)
* rl_outstream: Readline Variables. (line 107)
@@ -5141,19 +5197,23 @@ Function and Variable Index
* rl_point: Readline Variables. (line 14)
* rl_possible_completions: Completion Functions.
(line 27)
+* rl_pre_input_hook: Readline Variables. (line 125)
* rl_prefer_env_winsize: Readline Variables. (line 111)
+* rl_prep_term_function: Readline Variables. (line 179)
* rl_prep_terminal: Terminal Management. (line 6)
-* rl_prep_term_function: Readline Variables. (line 178)
-* rl_pre_input_hook: Readline Variables. (line 125)
+* rl_print_keybinding: Associating Function Names and Bindings.
+ (line 46)
* 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_read_key: Character Input. (line 6)
+* rl_readline_name: Readline Variables. (line 98)
+* rl_readline_state: Readline Variables. (line 222)
+* rl_readline_version: Readline Variables. (line 82)
* rl_redisplay: Redisplay. (line 6)
-* rl_redisplay_function: Readline Variables. (line 172)
+* rl_redisplay_function: Readline Variables. (line 173)
+* rl_reparse_colors: Miscellaneous Functions.
+ (line 51)
* rl_replace_line: Utility Functions. (line 21)
* rl_reset_after_signal: Readline Signal Handling.
(line 121)
@@ -5172,7 +5232,7 @@ Function and Variable Index
* rl_set_keymap: Keymaps. (line 43)
* rl_set_keymap_name: Keymaps. (line 56)
* rl_set_paren_blink_timeout: Miscellaneous Functions.
- (line 36)
+ (line 38)
* rl_set_prompt: Redisplay. (line 80)
* rl_set_screen_size: Readline Signal Handling.
(line 153)
@@ -5182,9 +5242,9 @@ Function and Variable Index
* rl_show_char: Redisplay. (line 36)
* rl_signal_event_hook: Readline Variables. (line 143)
* rl_sort_completion_matches: Completion Variables.
- (line 263)
+ (line 289)
* rl_special_prefixes: Completion Variables.
- (line 171)
+ (line 188)
* rl_startup_hook: Readline Variables. (line 121)
* rl_stuff_char: Character Input. (line 18)
* rl_terminal_name: Readline Variables. (line 93)
@@ -5202,24 +5262,24 @@ Function and Variable Index
* 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 32)
* rl_variable_value: Miscellaneous Functions.
- (line 25)
+ (line 27)
+* search-ignore-case: Readline Init File Syntax.
+ (line 329)
* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 33)
* 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 334)
* show-all-if-unmodified: Readline Init File Syntax.
- (line 332)
+ (line 340)
* show-mode-in-prompt: Readline Init File Syntax.
- (line 341)
+ (line 349)
* skip-completed-text: Readline Init File Syntax.
- (line 347)
+ (line 355)
* skip-csi-sequence (): Miscellaneous Commands.
(line 52)
* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
@@ -5232,85 +5292,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 368)
* vi-editing-mode (M-C-j): Miscellaneous Commands.
(line 92)
* vi-ins-mode-string: Readline Init File Syntax.
- (line 371)
+ (line 379)
* visible-stats: Readline Init File Syntax.
- (line 382)
+ (line 390)
* yank (C-y): Commands For Killing.
- (line 70)
+ (line 63)
* yank-last-arg (M-. or M-_): Commands For History.
(line 83)
* yank-nth-arg (M-C-y): Commands For History.
(line 74)
* yank-pop (M-y): Commands For Killing.
- (line 73)
+ (line 66)

Tag Table:
-Node: Top866
-Node: Command Line Editing1591
-Node: Introduction and Notation2243
-Node: Readline Interaction3867
-Node: Readline Bare Essentials5059
-Node: Readline Movement Commands6849
-Node: Readline Killing Commands7810
-Node: Readline Arguments9732
-Node: Searching10777
-Node: Readline Init File12930
-Node: Readline Init File Syntax14086
-Node: Conditional Init Constructs37389
-Node: Sample Init File41586
-Node: Bindable Readline Commands44711
-Node: Commands For Moving45766
-Node: Commands For History47525
-Node: Commands For Text52489
-Node: Commands For Killing56192
-Node: Numeric Arguments58906
-Node: Commands For Completion60046
-Node: Keyboard Macros62015
-Node: Miscellaneous Commands62704
-Node: Readline vi Mode66632
-Node: Programming with GNU Readline68449
-Node: Basic Behavior69435
-Node: Custom Functions73118
-Node: Readline Typedefs74601
-Node: Function Writing76235
-Node: Readline Variables77549
-Node: Readline Convenience Functions91224
-Node: Function Naming92296
-Node: Keymaps93558
-Node: Binding Keys96637
-Node: Associating Function Names and Bindings101185
-Node: Allowing Undoing104415
-Node: Redisplay106965
-Node: Modifying Text111024
-Node: Character Input112271
-Node: Terminal Management115352
-Node: Utility Functions117175
-Node: Miscellaneous Functions120503
-Node: Alternate Interface123922
-Node: A Readline Example126664
-Node: Alternate Interface Example128603
-Node: Readline Signal Handling132135
-Node: Custom Completers141388
-Node: How Completing Works142108
-Node: Completion Functions145415
-Node: Completion Variables148989
-Node: A Short Completion Example164795
-Node: GNU Free Documentation License177632
-Node: Concept Index202806
-Node: Function and Variable Index204327
+Node: Top863
+Node: Command Line Editing1588
+Node: Introduction and Notation2240
+Node: Readline Interaction3888
+Node: Readline Bare Essentials5080
+Node: Readline Movement Commands6902
+Node: Readline Killing Commands7903
+Node: Readline Arguments9885
+Node: Searching10946
+Node: Readline Init File13145
+Node: Readline Init File Syntax14321
+Node: Conditional Init Constructs38971
+Node: Sample Init File43340
+Node: Bindable Readline Commands46465
+Node: Commands For Moving47536
+Node: Commands For History49339
+Node: Commands For Text54391
+Node: Commands For Killing58186
+Node: Numeric Arguments60655
+Node: Commands For Completion61811
+Node: Keyboard Macros63844
+Node: Miscellaneous Commands64549
+Node: Readline vi Mode68928
+Node: Programming with GNU Readline70797
+Node: Basic Behavior71783
+Node: Custom Functions75769
+Node: Readline Typedefs77288
+Node: Function Writing79014
+Node: Readline Variables80332
+Node: Readline Convenience Functions94832
+Node: Function Naming95908
+Node: Keymaps97178
+Node: Binding Keys100285
+Node: Associating Function Names and Bindings104889
+Node: Allowing Undoing108530
+Node: Redisplay111152
+Node: Modifying Text115307
+Node: Character Input116558
+Node: Terminal Management119707
+Node: Utility Functions121566
+Node: Miscellaneous Functions124962
+Node: Alternate Interface128686
+Node: A Readline Example131476
+Node: Alternate Interface Example133427
+Node: Readline Signal Handling136959
+Node: Custom Completers146500
+Node: How Completing Works147220
+Node: Completion Functions150595
+Node: Completion Variables154265
+Node: A Short Completion Example171897
+Node: GNU Free Documentation License184570
+Node: Concept Index209747
+Node: Function and Variable Index211268

End Tag Table
diff --git a/doc/readline.pdf b/doc/readline.pdf
index b0925cd..9b52668 100644
--- a/doc/readline.pdf
+++ b/doc/readline.pdf
Binary files differ
diff --git a/doc/readline.ps b/doc/readline.ps
index 011e8cb..7a77778 100644
--- a/doc/readline.ps
+++ b/doc/readline.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 2022.1 (TeX Live 2022) Copyright 2022 Radical Eye Software
+%%Creator: dvips(k) 2023.1 (TeX Live 2023) Copyright 2023 Radical Eye Software
%%Title: readline.dvi
-%%CreationDate: Tue Sep 20 14:17:05 2022
+%%CreationDate: Fri Apr 5 13:11:47 2024
%%Pages: 86
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o readline.ps readline.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2022.09.20:1017
+%DVIPSSource: TeX output 2024.04.05:0911
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -6683,16 +6683,16 @@ 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.)3218
+1623 y(Jan)m(uary)f(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)28 b(man)m(ual)i(describ)s(es)
+f(the)g(GNU)h(Readline)g(Library)e(\(v)m(ersion)i(8.3,)h(19)f(Jan)m
+(uary)f(2024\),)j(a)d(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
@@ -6806,11 +6806,11 @@ 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
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(35)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(35)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
@@ -6830,7 +6830,7 @@ 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(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(42)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
@@ -6841,7 +6841,7 @@ g(:)h(:)f(:)h(:)f(:)g(:)30 b Ft(43)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(44)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
@@ -6851,7 +6851,7 @@ g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Ft(46)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(47)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
@@ -6859,24 +6859,24 @@ b(Alternate)32 b(In)m(terface)g(Example)18 b Fn(:)e(:)f(:)h(:)f(:)g(:)h
f(:)g(:)h(:)f(:)h(:)31 b Ft(48)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(51)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(54)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(54)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(55)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(56)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(61)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(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
@@ -7144,9 +7144,9 @@ b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g
(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
+150 886 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 996 y(searc)m(h)31 b(string.)275 1145 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
@@ -7255,627 +7255,638 @@ Fs(visible)p Ft(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g
(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
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
-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
-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
-(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
+(the)i(con)m(trol)1110 3784 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
+3893 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
+4003 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 4113 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 4222 y(acters)31
+b(\(usually)g Fs(cchars)p Ft(\).)630 4398 y Fs(blink-matching-paren)
+1110 4507 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
+4617 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 4726 y(default)31
+b(is)f(`)p Fs(off)p Ft('.)630 4902 y Fs(colored-completion-prefi)o(x)
+1110 5011 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
+5121 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
+5230 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 5340
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
-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
+(color)i(de\014nition)e(in)g Fs(LS_COLORS)e Ft(for)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
-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
-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
+b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 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 408 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 518 y(default)31 b(is)f(`)p Fs(off)p Ft('.)630
+682 y Fs(colored-stats)1110 792 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 902 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 1011 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 1121 y(is)30 b(`)p Fs(off)p Ft('.)630
+1285 y Fs(comment-begin)1110 1395 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
+1504 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
+1669 y Fs(completion-display-width)1110 1778 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 1888 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 1998 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 2107 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
+2271 y Fs(completion-ignore-case)1110 2381 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 2491 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
+Ft('.)630 2655 y Fs(completion-map-case)1110 2765 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
+b Ft(is)22 b(enabled,)i(Readline)f(treats)1110 2874 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
+2984 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 3093 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 3258 y Fs(completion-prefix-displa)o
+(y-le)o(ngth)1110 3367 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
+3477 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 3587
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
+(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 3696
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
+f(completions.)630 3861 y Fs(completion-query-items)1110
+3970 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 4080 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
+s(e)g(displa)m(y)m(ed.)77 b(If)1110 4189 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
+(to)h(this)1110 4299 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
+4408 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
+4518 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
+4628 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
+4737 y(zero.)g(The)29 b(default)i(limit)g(is)g Fs(100)p
+Ft(.)630 4902 y Fs(convert-meta)1110 5011 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
+5121 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
+5230 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 5340
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
+(one)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(Command)29 b(Line)i(Editing)2153 b(7)1110 299 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
+408 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.)630 591 y Fs(disable-completion)1110 701 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 810 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 920 y(to)31 b Fs(self-insert)p
+Ft(.)38 b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630
+1103 y Fs(echo-control-characters)1110 1212 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 1322 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
+1431 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 1614 y Fs(editing-mode)1110 1724 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 1833 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 1943 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 2052 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 2235 y Fs
+(emacs-mode-string)1110 2345 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 2454 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
+2564 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 2673 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
+2783 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 2892 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 3002 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 3112 y(default)31 b(is)f(`)p Fs(@)p Ft('.)630
+3294 y Fs(enable-active-region)1110 3404 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
+b(and)46 b Fj(mark)52 b Ft(refers)46 b(to)i(a)1110 3513
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
+([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 3623 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
+(and)g(mark)g(is)g(referred)g(to)h(as)g(the)1110 3733
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
+1110 3842 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
+3952 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 4061 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
+b(defaults)g(to)h(the)f(string)1110 4171 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
+(sho)m(ws)1110 4281 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
+4390 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 4500 y(is)e(`)p
+Fs(On)p Ft('.)630 4682 y Fs(enable-bracketed-paste)1110
+4792 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
+4902 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 5011 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)i(k)m(eyb)s(oard.)1110 5121 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
+b Ft(;)40 b(it)1110 5230 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
-eop end
+5340 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('.)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
+b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fs(enable-keypad)1110
+408 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
+518 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 628 y(The)j(default)g(is)
+h(`)p Fs(off)p Ft('.)630 784 y Fs(enable-meta-key)1110
+894 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
+1003 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 1113 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 1223 y(default)31 b(is)f(`)p Fs(on)p Ft('.)630
+1379 y Fs(expand-tilde)1110 1489 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
+(Readline)h(attempts)1110 1598 y(w)m(ord)i(completion.)42
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 1755
+y Fs(history-preserve-point)1110 1864 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 1974 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 2084 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
+2193 y(is)30 b(`)p Fs(off)p Ft('.)630 2350 y Fs(history-size)1110
+2459 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 2569
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 2679 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
+2788 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
+2898 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 3007
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
+(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3117
+y(b)s(e)c(set)h(to)g(500.)630 3273 y Fs(horizontal-scroll-mode)1110
+3383 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
+b(it)g(to)h(`)p Fs(on)p Ft(')1110 3493 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
+(tally)1110 3602 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 3712
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
+(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3821
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
+(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3931
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
+4088 y Fs(input-meta)1110 4197 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
+i(will)f(not)h(clear)1110 4307 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
+4416 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
+Ft(',)j(but)1110 4526 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
+(haracters.)1110 4635 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
+b(ariable)1110 4745 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
+b(ma)m(y)i(c)m(hange)g(if)1110 4855 y(the)31 b(lo)s(cale)h(is)e(c)m
+(hanged.)630 5011 y Fs(isearch-terminators)1110 5121
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
+(an)f(incremen)m(tal)1110 5230 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
+5340 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)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(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
+408 y(incremen)m(tal)c(searc)m(h.)630 596 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
+(for)f(k)m(ey)h(binding)1110 706 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
+Ft(,)1110 816 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 925 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 1035 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 1144 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 1254 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 1442 y Fs(keyseq-timeout)1110
+1551 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 1661
+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 1771 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 1880 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
+1990 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 2099 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 2209 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
+2318 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
+1110 2428 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
+b(is)1110 2538 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
+b(alue,)1110 2647 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)
+2757 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 2945 y Fs(mark-directories)1110
+3054 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
+3164 y(The)30 b(default)g(is)h(`)p Fs(on)p Ft('.)630
+3352 y Fs(mark-modified-lines)1110 3461 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
+(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3571 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
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3680 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
+3868 y Fs(mark-symlinked-directori)o(es)1110 3978 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
+(are)h(sym)m(b)s(olic)g(links)f(to)1110 4088 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
+b(to)g(the)g(v)-5 b(alue)70 b(of)1110 4197 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
+4385 y Fs(match-hidden-files)1110 4495 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 4604
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 4714
+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
+4823 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 5011 y Fs(menu-complete-display-pr)o(efix)1110
+5121 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
+5230 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 5340 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
+Ft('.)p eop end
%%Page: 10 14
TeXDict begin 10 13 bop 150 -116 a Ft(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(10)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
-(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
+b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fs(output-meta)1110
+408 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
+518 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 628 y(default)26
+b(is)f(`)p Fs(off)p Ft(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
+Fs(on)p Ft(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
+737 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
+847 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 998 y Fs(page-completions)
+1110 1107 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 1217 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 1326 y(b)m(y)e(default.)630 1477 y Fs
+(print-completions-horizo)o(ntal)o(ly)1110 1587 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 1696 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 1806 y(The)30 b(default)g(is)h(`)p Fs(off)p
+Ft('.)630 1956 y Fs(revert-all-at-newline)1110 2066 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 2176
+y(returning)f(when)f Fs(accept-line)f Ft(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 2285 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 2395 y Fs(readline\(\))p Ft(.)38
+b(The)30 b(default)g(is)h(`)p Fs(off)p Ft('.)630 2545
+y Fs(search-ignore-case)1110 2655 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 2765 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 2874 y(is)30 b(`)p Fs(off)p Ft('.)630 3025
+y Fs(show-all-if-ambiguous)1110 3134 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 3244 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 3354 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 3463 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
+3614 y Fs(show-all-if-unmodified)1110 3724 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
+(functions)e(in)h(a)1110 3833 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
+Fs(on)p Ft(',)f(w)m(ords)f(whic)m(h)1110 3943 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 4052 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 4162
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 4271 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 4422 y Fs(show-mode-in-prompt)1110 4532 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 4641
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
+h(insertion.)49 b(The)32 b(mo)s(de)1110 4751 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
+b Ft(\).)87 b(The)45 b(default)1110 4861 y(v)-5 b(alue)31
+b(is)f(`)p Fs(off)p Ft('.)630 5011 y Fs(skip-completed-text)1110
+5121 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
+5230 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
+5340 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)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(not)41
b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
-(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
-(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
-4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+(c)m(haracters)1110 408 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
+518 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
+628 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 737 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
+p Fs(Makefilefile)p Ft(',)1110 847 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
+b(alue)1110 956 y(is)30 b(`)p Fs(off)p Ft('.)630 1117
+y Fs(vi-cmd-mode-string)1110 1226 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 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
+(is)h(dis-)1110 1336 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
+1445 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
+1555 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
+1665 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 1774 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
+1884 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 1993
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
+Fs(\(cmd\))p Ft('.)630 2153 y Fs(vi-ins-mode-string)1110
+2263 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
+2373 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 2482 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
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 2592 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
+(meta-)h(and)e(con)m(trol)1110 2701 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(Use)35 b(the)g(`)p Fs(\\1)p Ft(')1110 2811 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
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2921
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
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3030
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
+Fs(\(ins\))p Ft('.)630 3190 y Fs(visible-stats)1110 3300
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
+3410 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 3570
+y(Key)f(Bindings)630 3679 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 3789 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 3898 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 4008 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 4143 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 4253 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 4362 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 4472 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 4581 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 4691 y(comfortable.)630
+4826 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
+4935 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 5096 y Fj(k)m(eyname)g Ft(:)42
+b Fj(function-name)35 b Ft(or)c Fj(macro)1110 5205 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
-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
-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
-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
+(English.)39 b(F)-8 b(or)30 b(example:)1350 5340 y Fs(Control-u:)45
+b(universal-argument)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
+b(Command)29 b(Line)i(Editing)2107 b(12)1350 299 y Fs(Meta-Rubout:)44
+b(backward-kill-word)1350 408 y(Control-o:)h(">)i(output")1110
+544 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
+653 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 763 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 873 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 982 y(output)p Ft(')29 b(in)m(to)i(the)g(line\).)1110
+1118 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 1227 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 1337 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
+1498 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 1608 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 1717 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 1827 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 1936 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 2046 y(recognized.)1350
+2181 y Fs("\\C-u":)46 b(universal-argument)1350 2291
+y("\\C-x\\C-r":)f(re-read-init-file)1350 2400 y("\\e[11~":)g("Function)
+h(Key)g(1")1110 2536 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
+2645 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 2755
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
+2865 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 3026 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
+b(ailable)32 b(when)d(sp)s(ecifying)630 3135 y(k)m(ey)i(sequences:)630
+3296 y Fl(\\C-)336 b Ft(con)m(trol)32 b(pre\014x)630
+3458 y Fl(\\M-)336 b Ft(meta)31 b(pre\014x)630 3619 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
+3780 y Fl(\\\\)384 b Ft(bac)m(kslash)630 3941 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
+4102 y Fl(\\')384 b Fs(')p Ft(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 4263 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
+(bac)m(kslash)630 4373 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+4534 y Fs(\\a)384 b Ft(alert)31 b(\(b)s(ell\))630 4695
+y Fs(\\b)384 b Ft(bac)m(kspace)630 4856 y Fs(\\d)g Ft(delete)630
+5018 y Fs(\\f)g Ft(form)30 b(feed)630 5179 y Fs(\\n)384
+b Ft(newline)630 5340 y Fs(\\r)g Ft(carriage)32 b(return)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
+b(Command)29 b(Line)i(Editing)2107 b(13)630 299 y Fs(\\t)384
+b Ft(horizon)m(tal)32 b(tab)630 456 y Fs(\\v)384 b Ft(v)m(ertical)32
+b(tab)630 612 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 722 y(three)c(digits\))630
+878 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 988 y Ft(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 1145 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 1254 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 1364 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 1473 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 1583 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 1716 y Fs("\\C-x\\\\":)45
+b("\\\\")150 1913 y Fi(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)
+150 2060 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
+2169 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 2279 y(result)f(of)h(tests.)41
+b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
+2435 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 2545 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 2655 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
+2764 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 2921 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
+(whether)e(Read-)1110 3031 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
+(conjunction)1110 3140 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
+3250 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 3359 y(starting)f(out)g
+(in)f Fs(emacs)f Ft(mo)s(de.)630 3516 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 3626 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 3735 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 3845 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
+(terminal)1110 3954 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
+(oth)f Fs(sun)g Ft(and)1110 4064 y Fs(sun-cmd)p Ft(,)c(for)h(instance.)
+630 4221 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
+(against)1110 4330 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
+4440 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
+4549 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
+(on)1110 4659 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
+4768 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 4878
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)
+Ft('.)40 b(The)1110 4988 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
+5097 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
+5207 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
+5340 y Fs($if)47 b(version)f(>=)h(7.0)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)1350 299 y Fs(set)47
+b(show-mode-in-prompt)42 b(on)1350 408 y($endif)630 568
+y(application)1110 677 y Ft(The)21 b Fj(application)j
Ft(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
-(set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(set-)1110 787 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
+897 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
+1006 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 1116
+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 1225 y(the)e(curren)m(t)f(or)g(previous)
+g(w)m(ord)g(in)g(Bash:)1350 1360 y Fs($if)47 b(Bash)1350
+1469 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
+1579 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 1689 y($endif)630
+1848 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 1958 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 2067 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)s(e)g(separated)g(from)g(the)1110 2177 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
+(e)f(separated)1110 2286 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(Both)35 b(string)1110 2396 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(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 2506 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
+2615 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 2750 y
+Fs($if)47 b(editing-mode)d(==)k(emacs)1350 2859 y(set)f
+(show-mode-in-prompt)42 b(on)1350 2969 y($endif)150 3128
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
+3288 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
+(fails.)150 3447 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
+(commands)630 3557 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
+(from)630 3666 y Fs(/etc/inputrc)p Ft(:)870 3801 y Fs($include)46
+b(/etc/inputrc)150 4000 y Fi(1.3.3)63 b(Sample)41 b(Init)g(File)150
+4147 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
+b(ariable)27 b(assignmen)m(t,)i(and)150 4257 y(conditional)j(syn)m
(tax.)p eop end
%%Page: 15 19
TeXDict begin 15 18 bop 150 -116 a Ft(Chapter)30 b(1:)41
@@ -8208,304 +8219,305 @@ 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
(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
+(mo)m(v)m(e)i(the)f(cursor.)150 683 y Fs(overwrite-mode)26
+b(\(\))630 792 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 902 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 1012 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 1121
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
+1258 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
+1368 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
+1478 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 1615
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
+1819 y Fi(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
+1994 y Fs(kill-line)28 b(\(C-k\))630 2104 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
+2213 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
+2378 y Fs(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
+2487 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(a)630 2597 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
+630 2707 y(curren)m(t)30 b(line.)150 2871 y Fs(unix-line-discard)c
+(\(C-u\))630 2981 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
+3146 y Fs(kill-whole-line)c(\(\))630 3255 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
+3365 y(this)30 b(is)h(un)m(b)s(ound.)150 3530 y Fs(kill-word)d(\(M-d\))
+630 3639 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 3749 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 3914 y Fs(backward-kill-word)25 b(\(M-DEL\))630
+4023 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(.)150 4188 y Fs(unix-word-rubout)d(\(C-w\))630
+4298 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 4407 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
+(kill-ring.)150 4572 y Fs(unix-filename-rubout)25 b(\(\))630
+4682 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
+4791 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 4956 y Fs
+(delete-horizontal-space)24 b(\(\))630 5066 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 5230
+y Fs(kill-region)d(\(\))630 5340 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.)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
+(copy-region-as-kill)25 b(\(\))630 408 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 518 y(By)31 b(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)
+150 689 y Fs(copy-backward-word)25 b(\(\))630 799 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
+908 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
+1079 y Fs(copy-forward-word)26 b(\(\))630 1189 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
+1298 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
+1469 y Fs(yank)f(\(C-y\))630 1579 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 1749 y Fs(yank-pop)d(\(M-y\))630 1859
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
+1969 y(command)30 b(is)h Fs(yank)e Ft(or)h Fs(yank-pop)p
+Ft(.)150 2179 y Fi(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 2357 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 2467 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 2576 y Fl(M--)j Ft(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)150 2747 y Fs(universal-argument)25 b(\(\))630
+2857 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 2966 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)
+3076 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
+3185 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)
+3295 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
+3404 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
+3514 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
+3624 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
+3733 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 3944 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(Y)-10 b(ou)150 4122 y Fs(complete)28 b(\(TAB\))630
+4231 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
+4341 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
+4512 y Fs(possible-completions)25 b(\(M-?\))630 4621
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
+4731 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 4840 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
+b(ariable)38 b Fs(COLUMNS)p Ft(,)630 4950 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 5121 y Fs(insert-completions)25
+b(\(M-*\))630 5230 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 5340 y(b)m(y)g Fs(possible-completions)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
-(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(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fs(menu-complete)27
+b(\(\))630 408 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 518 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
+628 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
+737 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
+847 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
+Fj(n)630 956 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
+(used)g(to)630 1066 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
+(ound)e(to)630 1176 y Fs(TAB)p Ft(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 1331 y Fs(menu-complete-backward)24
+b(\(\))630 1441 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
+(p)s(ossible)630 1550 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
+1705 y Fs(delete-char-or-list)25 b(\(\))630 1815 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
+(eginning)e(or)h(end)f(of)h(the)630 1925 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
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2034
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
+(ound)e(b)m(y)i(default.)150 2229 y Fi(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 2399 y Fs(start-kbd-macro)26 b(\(C-x)j(\(\))630
+2509 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
+2664 y Fs(end-kbd-macro)d(\(C-x)i(\)\))630 2774 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 2883
+y(de\014nition.)150 3039 y Fs(call-last-kbd-macro)c(\(C-x)k(e\))630
+3148 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
+3258 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 3413 y Fs(print-last-kbd-macro)25 b(\(\))630
+3523 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)
+Fj(inputrc)35 b Ft(\014le.)150 3718 y Fi(1.4.8)63 b(Some)41
+b(Miscellaneous)i(Commands)150 3888 y Fs(re-read-init-file)26
+b(\(C-x)j(C-r\))630 3997 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
+(bindings)d(or)i(v)-5 b(ariable)630 4107 y(assignmen)m(ts)31
+b(found)e(there.)150 4262 y Fs(abort)g(\(C-g\))630 4372
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
+4481 y(setting)j(of)g Fs(bell-style)p Ft(\).)150 4637
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
+Fs(,)g(...)o(\))630 4746 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)
+(b)s(ound)e(to)630 4856 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
+(unde\014ned)e(if)630 4965 y Fj(x)37 b Ft(is)30 b(already)h(lo)m(w)m
+(er)h(case.)150 5121 y Fs(prefix-meta)27 b(\(ESC\))630
+5230 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 5340 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(.)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(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fs(undo)29
+b(\(C-_)g(or)h(C-x)g(C-u\))630 408 y Ft(Incremen)m(tal)h(undo,)f
+(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
+584 y Fs(revert-line)27 b(\(M-r\))630 693 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
+803 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
+150 978 y Fs(tilde-expand)d(\(M-~\))630 1088 y Ft(P)m(erform)j(tilde)h
+(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 1263
+y Fs(set-mark)d(\(C-@\))630 1373 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 1482 y(to)f(that)g(p)s(osition.)
+150 1658 y Fs(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+1767 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 1877 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 2052
+y Fs(character-search)26 b(\(C-]\))630 2162 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 2271 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
+(ccurrences.)150 2447 y Fs(character-search-backwar)o(d)24
+b(\(M-C-]\))630 2556 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
+g(that)630 2666 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
+2841 y Fs(skip-csi-sequence)d(\(\))630 2951 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
+(as)g(those)h(de\014ned)630 3061 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
+(trol)g(Sequence)630 3170 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
+Ft(e[)p Fs(")p Ft(,)g(k)m(eys)f(pro-)630 3280 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
+(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630 3389 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
+(editing)h(bu\013er.)44 b(This)31 b(is)630 3499 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
+3674 y Fs(insert-comment)26 b(\(M-#\))630 3784 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
+b(is)g(in-)630 3893 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
+(supplied,)630 4003 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
+(line)630 4113 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
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4222
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
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4332
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
+(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 4507 y Fs(dump-functions)d
+(\(\))630 4617 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
+4726 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
+4836 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.)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
+(default.)150 5011 y Fs(dump-variables)26 b(\(\))630
+5121 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
+(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(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 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
+(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-macros)27
+b(\(\))630 408 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
+518 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
+628 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
+d(b)m(y)630 737 y(default.)150 897 y Fs(emacs-editing-mode)e(\(C-e\))
+630 1006 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
+1166 y Fs(vi-editing-mode)26 b(\(M-C-j\))630 1275 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
-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
+Fs(vi)f Ft(editing)h(mo)s(de.)150 1435 y Fs(execute-named-command)25
+b(\(M-x\))630 1544 y Ft(Read)j(a)g(bindable)f(readline)h(command)g
+(name)g(from)f(the)h(input)f(and)g(execute)j(the)e(func-)630
+1654 y(tion)e(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 1763 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
+1873 y(that)31 b(argumen)m(t)g(to)g(the)f(function)h(it)f(executes.)150
+2114 y Fr(1.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2273
+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 2383 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 2492 y(the)e Fm(posix)e
+Ft(standard.)275 2627 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 2736
+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 2846 y Ft(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g
+Fs(emacs)f Ft(mo)s(de.)275 2980 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 3090 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 3200 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 3309 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
b(Programming)54 b(with)f(GNU)h(Readline)150 543 y Ft(This)24
@@ -8527,173 +8539,180 @@ b(the)f(default)h(b)s(eha)m(viour)f(of)h(Readline)g(is)g(su\016cien)m
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
+1852 y(line)c(of)h(text)g(from)e(the)i(user.)39 b(Since)29
+b(it's)h(p)s(ossible)f(to)g(en)m(ter)h(c)m(haracters)h(in)m(to)f(the)f
+(line)g(while)g(quoting)150 1962 y(them)42 b(to)g(disable)g(an)m(y)g
+(Readline)g(editing)h(function)e(they)h(migh)m(t)h(normally)f(ha)m(v)m
+(e,)k(this)41 b(line)h(ma)m(y)150 2072 y(include)35 b(em)m(b)s(edded)f
+(newlines)h(and)f(other)h(sp)s(ecial)h(c)m(haracters.)56
+b(If)35 b Fj(prompt)h Ft(is)f Fs(NULL)f Ft(or)h(the)h(empt)m(y)150
+2181 y(string,)31 b(no)g(prompt)f(is)h(displa)m(y)m(ed.)43
+b(The)31 b(line)g Fs(readline)e Ft(returns)h(is)h(allo)s(cated)i(with)d
+Fs(malloc\(\))p Ft(;)g(the)150 2291 y(caller)g(should)f
+Fs(free\(\))e Ft(the)i(line)h(when)e(it)i(has)f(\014nished)e(with)i
+(it.)41 b(The)29 b(declaration)h(for)f Fs(readline)e
+Ft(in)150 2400 y(ANSI)j(C)g(is)390 2538 y Fs(char)47
+b(*readline)e(\(const)h(char)h(*)p Fl(prompt)p Fs(\);)150
+2676 y Ft(So,)31 b(one)f(migh)m(t)h(sa)m(y)390 2814 y
+Fs(char)47 b(*line)f(=)h(readline)f(\("Enter)g(a)h(line:)g("\);)150
+2951 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
+(newline)g(remo)m(v)m(ed,)150 3061 y(so)31 b(only)f(the)h(text)g
+(remains.)275 3199 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
+(empt)m(y)h(at)g(that)150 3308 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
+3418 y(b)s(een)g(t)m(yp)s(ed.)275 3556 y(Readline)22
b(p)s(erforms)e(some)j(expansion)e(on)h(the)g Fj(prompt)h
Ft(b)s(efore)f(it)g(is)g(displa)m(y)m(ed)h(on)f(the)g(screen.)38
-b(See)150 3336 y(the)27 b(description)g(of)h Fs(rl_expand_prompt)22
+b(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(40\))g(for)f
-(additional)150 3446 y(details,)41 b(esp)s(ecially)f(if)e
+(additional)150 3775 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)
+(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
+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
+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: 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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(27)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)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(completion)30 b(on)e(\014le)150 2732 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
+2841 y(of)g(the)f Fs(TAB)g Ft(k)m(ey)h(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
-2803 y(rl_bind_key\(\))29 b Ft(tak)m(es)35 b(t)m(w)m(o)g(argumen)m(ts:)
+3104 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
+(an)m(t)g(to)g(bind,)g(and)150 3214 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)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 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
+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
-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
+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
+(54\).)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(arious)36 b(functions)h(and)150 4660 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
+(a)g(user)e(program)h(to)h(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 4761 y(tionalit)m(y)48
+(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
-4871 y Fs(<readline/readline.h>)28 b Ft(in)33 b(an)m(y)h(\014le)f(that)
+5121 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
+(de\014-)150 5230 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
+Ft(should)i(b)s(e)h(included)f(b)s(efore)150 5340 y Fs(readline.h)p
+Ft(.)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(Programming)30 b(with)g(GNU)h(Readline)1683 b(28)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
+b(jor)150 737 y(v)m(ersion)29 b(n)m(um)m(b)s(er;)g Fj(mm)f
Ft(is)h(the)g(t)m(w)m(o-digit)j(minor)c(v)m(ersion)i(n)m(um)m(b)s(er.)
38 b(F)-8 b(or)30 b(Readline)g(4.2,)g(for)f(example,)150
-628 y(the)i(v)-5 b(alue)30 b(of)h Fs(RL_READLINE_VERSION)25
-b Ft(w)m(ould)30 b(b)s(e)g Fs(0x0402)p Ft(.)150 837 y
-Fi(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)150 984 y
-Ft(F)-8 b(or)31 b(readabilit)m(y)-8 b(,)33 b(w)m(e)d(declare)i(a)f(n)m
-(um)m(b)s(er)e(of)h(new)g(ob)5 b(ject)31 b(t)m(yp)s(es,)g(all)g(p)s
-(oin)m(ters)f(to)i(functions.)275 1128 y(The)j(reason)h(for)f
+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 1034
+y Fi(2.2.1)63 b(Readline)40 b(T)m(yp)s(edefs)150 1181
+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 1310 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 1419
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
+b(alues.)275 1548 y(F)d(or)37 b(instance,)j(sa)m(y)d(w)m(e)g(w)m(an)m
(t)h(to)g(declare)f(a)h(v)-5 b(ariable)37 b Fj(func)42
b Ft(as)37 b(a)g(p)s(oin)m(ter)g(to)g(a)h(function)e(whic)m(h)150
-1492 y(tak)m(es)27 b(t)m(w)m(o)g Fs(int)e Ft(argumen)m(ts)h(and)f
+1657 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 1767 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
+1895 y Fs(int)f(\(*func\)\(\);)150 2024 y Ft(or)h(the)h(ANSI-C)f(st)m
+(yle)i(declaration)275 2152 y Fs(int)d(\(*func\)\(int,)e(int\);)150
+2281 y Ft(w)m(e)k(ma)m(y)g(write)275 2409 y Fs(rl_command_func_t)25
+b(*func;)275 2538 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 2685
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
+2795 y(typedef)g(char)i(*rl_compentry_func_t)24 b(\(const)29
+b(char)g(*,)h(int\);)150 2905 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
+3014 y(typedef)f(char)i(*rl_quote_func_t)c(\(char)i(*,)i(int,)f(char)h
+(*\);)150 3124 y(typedef)e(char)i(*rl_dequote_func_t)25
+b(\(char)k(*,)h(int\);)150 3233 y(typedef)e(int)i(rl_compignore_func_t)
+25 b(\(char)k(**\);)150 3343 y(typedef)f(void)i(rl_compdisp_func_t)25
+b(\(char)k(**,)g(int,)h(int\);)150 3453 y(typedef)e(int)i
+(rl_hook_func_t)c(\(void\);)150 3562 y(typedef)i(int)i(rl_getc_func_t)c
+(\(FILE)j(*\);)150 3672 y(typedef)f(int)i(rl_linebuf_func_t)c(\(char)i
+(*,)i(int\);)150 3781 y(typedef)e(int)i(rl_intfunc_t)d(\(int\);)150
+3891 y(#define)h(rl_ivoidfunc_t)f(rl_hook_func_t)150
+4000 y(typedef)h(int)i(rl_icpfunc_t)d(\(char)i(*\);)150
+4110 y(typedef)f(int)i(rl_icppfunc_t)d(\(char)i(**\);)150
+4220 y(typedef)f(void)i(rl_voidfunc_t)c(\(void\);)150
+4329 y(typedef)i(void)i(rl_vintfunc_t)c(\(int\);)150
+4439 y(typedef)i(void)i(rl_vcpfunc_t)d(\(char)i(*\);)150
+4548 y(typedef)f(void)i(rl_vcppfunc_t)c(\(char)j(**\);)150
+4717 y Fi(2.2.2)63 b(W)-10 b(riting)41 b(a)f(New)h(F)-10
+b(unction)150 4864 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 4973 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 5083
+y(of)h(the)f(line)h(read)f(so)h(far.)275 5211 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
@@ -8912,2131 +8931,2205 @@ 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
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
+(ting)390 5340 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)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
+299 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 408 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 518 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
+628 y Fj(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 737 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(46\),)i(whic)m(h)d(ma)m
+(y)i(not)390 847 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 956 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 1066 y(can)k(p)s(oten)m(tially)h
+(exceed)f(the)f(v)-5 b(alue)31 b(of)g Fj(k)m(eyseq-timeout)p
+Ft(,)i(it)e(should)e(increase)i(the)g(timeout)g(or)390
+1176 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 1285 y(application)g(that)g(sets)f
+Fj(rl)p 1294 1285 28 4 v 40 w(getc)p 1494 1285 V 41 w(function)g
+Ft(should)f(consider)g(setting)i Fj(rl)p 2883 1285 V
+40 w(input)p 3136 1285 V 39 w(a)m(v)-5 b(ailable)p 3516
+1285 V 43 w(ho)s(ok)390 1395 y Ft(as)31 b(w)m(ell.)3371
+1600 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_redisplay_function)390 1710 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
+(date)g(the)g(displa)m(y)390 1819 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
+1929 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
+2134 y([V)-8 b(ariable])-3598 b Fh(rl_vintfunc_t)56 b(*)d
+(rl_prep_term_function)390 2244 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
+(initialize)h(the)e(terminal.)390 2354 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
+(whether)e(or)h(not)g(to)h(use)390 2463 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)
+2573 y([T)-8 b(erminal)31 b(Managemen)m(t],)i(page)e(43\).)3371
+2778 y([V)-8 b(ariable])-3598 b Fh(rl_voidfunc_t)56 b(*)d
+(rl_deprep_term_functio)q(n)390 2888 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 2998 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 3107 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
+b(erminal)30 b(Managemen)m(t],)j(page)e(43\).)3371 3313
+y([V)-8 b(ariable])-3598 b Fh(void)54 b(rl_macro_display_hook)390
+3422 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 3532 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 3641 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
+3751 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 3861 y(b)s(efore)k(the)h(k)m(ey)g(sequence.)3371
+4066 y([V)-8 b(ariable])-3598 b Fh(Keymap)54 b(rl_executing_keymap)390
+4176 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
+(whic)m(h)390 4285 y(the)c(curren)m(tly)f(executing)i(Readline)f
+(function)f(w)m(as)g(found.)3371 4491 y([V)-8 b(ariable])-3598
+b Fh(Keymap)54 b(rl_binding_keymap)390 4600 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
+4710 y(the)c(last)g(k)m(ey)g(binding)e(o)s(ccurred.)3371
+4915 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_macro)390
+5025 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 5230
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
-(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
-(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
-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
-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
+5340 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.)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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(33)3371
+299 y([V)-8 b(ariable])-3598 b Fh(char)54 b(*)e(rl_executing_keyseq)390
+408 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
+518 y(function.)3371 695 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_key_sequence_lengt)q(h)390 805 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 805 28 4 v 40 w(executing)p
+2032 805 V 41 w(k)m(eyseq)p Ft(.)3371 982 y([V)-8 b(ariable])-3598
+b Fh(int)53 b(rl_readline_state)390 1092 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
+1201 y(with)k(the)g Fs(RL_SETSTATE)c Ft(macro,)41 b(and)c(unset)h(with)
+f(the)h Fs(RL_UNSETSTATE)d Ft(macro.)63 b(Use)39 b(the)390
+1311 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
+b(state)j(bits)390 1421 y(include:)390 1575 y Fs(RL_STATE_NONE)870
+1685 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 1840 y Fs
+(RL_STATE_INITIALIZING)870 1949 y Ft(Readline)g(is)f(initializing)j
+(its)e(in)m(ternal)g(data)g(structures.)390 2104 y Fs
+(RL_STATE_INITIALIZED)870 2213 y Ft(Readline)g(has)f(completed)h(its)g
+(initialization.)390 2368 y Fs(RL_STATE_TERMPREPPED)870
+2478 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 2587
+y(pla)m(y)-8 b(.)390 2742 y Fs(RL_STATE_READCMD)870 2852
+y Ft(Readline)31 b(is)f(reading)h(a)g(command)f(from)g(the)g(k)m(eyb)s
+(oard.)390 3006 y Fs(RL_STATE_METANEXT)870 3116 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 3271 y Fs(RL_STATE_DISPATCHING)870 3380
+y Ft(Readline)h(is)f(dispatc)m(hing)h(to)g(a)g(command.)390
+3535 y Fs(RL_STATE_MOREINPUT)870 3645 y Ft(Readline)g(is)f(reading)h
+(more)f(input)g(while)g(executing)i(an)e(editing)h(command.)390
+3799 y Fs(RL_STATE_ISEARCH)870 3909 y Ft(Readline)g(is)f(p)s(erforming)
+g(an)g(incremen)m(tal)i(history)e(searc)m(h.)390 4064
+y Fs(RL_STATE_NSEARCH)870 4173 y Ft(Readline)h(is)f(p)s(erforming)g(a)g
+(non-incremen)m(tal)i(history)e(searc)m(h.)390 4328 y
+Fs(RL_STATE_SEARCH)870 4437 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 4592 y Fs(RL_STATE_NUMERICARG)870 4702 y
+Ft(Readline)31 b(is)f(reading)h(a)g(n)m(umeric)f(argumen)m(t.)390
+4856 y Fs(RL_STATE_MACROINPUT)870 4966 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 5076 y(macro.)390
+5230 y Fs(RL_STATE_MACRODEF)870 5340 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.)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)
-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
-(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
+299 y Fs(RL_STATE_OVERWRITE)870 408 y Ft(Readline)31
+b(is)f(in)g(o)m(v)m(erwrite)i(mo)s(de.)390 576 y Fs
+(RL_STATE_COMPLETING)870 686 y Ft(Readline)f(is)f(p)s(erforming)g(w)m
+(ord)g(completion.)390 853 y Fs(RL_STATE_SIGHANDLER)870
+963 y Ft(Readline)h(is)f(curren)m(tly)h(executing)g(the)g(readline)g
+(signal)g(handler.)390 1130 y Fs(RL_STATE_UNDOING)870
+1240 y Ft(Readline)g(is)f(p)s(erforming)g(an)g(undo.)390
+1407 y Fs(RL_STATE_INPUTPENDING)870 1517 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 1684 y Fs(RL_STATE_TTYCSAVED)870 1794 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 1961 y Fs(RL_STATE_CALLBACK)870
+2071 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 2181
+y(tion)31 b(2.4.12)h([Alternate)h(In)m(terface],)f(page)f(46\).)390
+2348 y Fs(RL_STATE_VIMOTION)870 2458 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 2625 y Fs(RL_STATE_MULTIKEY)870
+2735 y Ft(Readline)h(is)f(reading)h(a)g(m)m(ultiple-k)m(eystrok)m(e)i
+(command.)390 2902 y Fs(RL_STATE_VICMDONCE)870 3012 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 3121 y(during)29
+b(the)i(curren)m(t)f(call)i(to)f Fs(readline\(\))p Ft(.)390
+3289 y Fs(RL_STATE_DONE)870 3399 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 3508 y(return)i(the)i(line)g(to)g(the)f(caller.)390
+3676 y Fs(RL_STATE_TIMEOUT)870 3785 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 3895 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 4004 y Ft(elapsed\))31 b(and)f(is)g(returning)g
+(that)h(status)f(to)h(the)g(caller.)390 4172 y Fs(RL_STATE_EOF)870
+4281 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
+4391 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 4501 y(caller.)3371
+4701 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_explicit_arg)390
+4811 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
+(eci\014ed)f(b)m(y)g(the)h(user.)390 4920 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
+5121 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_numeric_arg)390
+5230 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
+(user)e(b)s(efore)390 5340 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
-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
+(bindable)f(command)h(function.)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(int)53 b(rl_editing_mode)390
+408 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 518 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 759 y Fr(2.4)68
+b(Readline)47 b(Con)l(v)l(enience)f(F)-11 b(unctions)150
+983 y Fi(2.4.1)63 b(Naming)41 b(a)g(F)-10 b(unction)150
+1130 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 1240 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
+150 1349 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
+1484 y Fs(Meta-Rubout:)92 b(backward-kill-word)275 1619
+y Ft(This)84 b(binds)h(the)g(k)m(eystrok)m(e)j Fs(Meta-Rubout)82
b Ft(to)87 b(the)e(function)h Fk(descriptively)94 b Ft(named)150
-408 y Fs(backward-kill-word)p Ft(.)63 b(Y)-8 b(ou,)43
+1728 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
+(write)g(to)150 1838 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
+2023 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 2023
+30 5 v 43 w(command)p 2427 2023 V 45 w(func)p 2656 2023
+V 45 w(t)g(*function,)565 2132 y(in)m(t)g(k)m(ey)p Fg(\))390
+2242 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
+(that)h(gets)390 2351 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
+Ft(using)g Fs(rl_bind_key\(\))p Ft(.)275 2536 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
+b(It)30 b(is)g(the)g(recommended)g(w)m(a)m(y)150 2646
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
+(do)150 2755 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
+150 2865 y(functions)c(describ)s(ed)f(b)s(elo)m(w.)150
+3064 y Fi(2.4.2)63 b(Selecting)41 b(a)f(Keymap)150 3211
y Ft(Key)f(bindings)e(tak)m(e)j(place)g(on)f(a)g Fj(k)m(eymap)p
Ft(.)66 b(The)38 b(k)m(eymap)h(is)g(the)g(asso)s(ciation)h(b)s(et)m(w)m
-(een)f(the)g(k)m(eys)150 2008 y(that)29 b(the)g(user)e(t)m(yp)s(es)i
+(een)f(the)g(k)m(eys)150 3321 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
+3430 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 3615 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 3725 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 3834 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
+4019 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 4128 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
+Ft(.)3350 4313 y([F)-8 b(unction])-3599 b Fh(Keymap)54
+b(rl_make_keymap)c Fg(\()p Ff(v)m(oid)p Fg(\))390 4423
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
+(haracters)i(b)s(ound)c(to)j(rl)p 2909 4423 28 4 v 40
+w(insert,)g(the)g(lo)m(w)m(ercase)390 4532 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 4642 y(n)m(umeric)30 b(argumen)m(ts.)3350 4827
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 4936 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
+Fj(k)m(eymap)p Ft(.)3350 5121 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)
+b(k)m(eymap)p Fg(\))390 5230 y Ft(F)-8 b(ree)32 b(all)g(storage)g(asso)
s(ciated)g(with)f Fj(k)m(eymap)p Ft(.)42 b(This)30 b(calls)i
Fs(rl_discard_keymap)26 b Ft(to)32 b(free)f(sub-)390
-4042 y(ordindate)f(k)m(eymaps)h(and)f(macros.)3350 4229
-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
+5340 y(ordindate)f(k)m(eymaps)h(and)f(macros.)p eop end
+%%Page: 36 40
+TeXDict begin 36 39 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(36)3350
+299 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_empty_keymap)d
+Fg(\()p Ff(Keymap)34 b(k)m(eymap)p Fg(\))390 408 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
+518 y(an)m(y)g(k)m(eys)g(b)s(ound.)275 710 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
+820 y(k)m(eymap)31 b(is)f(activ)m(e.)3350 1012 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
+Ff(v)m(oid)p Fg(\))390 1122 y Ft(Returns)29 b(the)i(curren)m(tly)f
+(activ)m(e)j(k)m(eymap.)3350 1314 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
+b(k)m(eymap)p Fg(\))390 1423 y Ft(Mak)m(es)e Fj(k)m(eymap)h
+Ft(the)e(curren)m(tly)f(activ)m(e)j(k)m(eymap.)3350 1616
+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 1725
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
+(supplied)g(in)h(a)h Fs(set)390 1835 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
+2027 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 2137 y Ft(Return)e(the)i
(name)f(matc)m(hing)h Fj(k)m(eymap)p Ft(.)50 b Fj(name)38
b Ft(is)c(one)f(whic)m(h)g(w)m(ould)g(b)s(e)f(supplied)g(in)h(a)h
-Fs(set)390 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 2246 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 2439
+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 2548 y Ft(Set)g(the)f(name)h(of)g Fj(k)m(eymap)p
Ft(.)50 b(This)33 b(name)h(will)f(then)h(b)s(e)e Fs(")p
Ft(registered)p Fs(")i Ft(and)f(a)m(v)-5 b(ailable)36
-b(for)d(use)390 1304 y(in)i(a)g Fs(set)29 b(keymap)k
+b(for)d(use)390 2658 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 2767 y Fj(name)27
b Ft(ma)m(y)c(not)g(b)s(e)e(one)i(of)f(Readline's)h(builtin)f(k)m
(eymap)g(names;)j(y)m(ou)e(ma)m(y)g(not)f(add)g(a)g(di\013eren)m(t)390
-1523 y(name)36 b(for)g(one)g(of)g(Readline's)h(builtin)e(k)m(eymaps.)58
+2877 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
+2986 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
+Fj(k)m(eymap)390 3096 y Ft(argumen)m(t.)50 b(Y)-8 b(ou)34
b(ma)m(y)h(asso)s(ciate)g(a)f(registered)g Fj(name)39
b Ft(with)33 b(a)h(new)f(k)m(eymap)h(b)m(y)f(calling)i(this)390
-1852 y(function)c(more)h(than)f(once)i(with)e(the)h(same)g
+3206 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
+(remo)m(v)m(e)390 3315 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
+(cop)m(y)g(of)390 3425 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)
+b Ft(is)c(one)g(of)f(Readline's)h(builtin)390 3534 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
+(eymaps.)150 3738 y Fi(2.4.3)63 b(Binding)42 b(Keys)150
+3885 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
+150 3994 y(ternal)30 b(k)m(eymaps:)40 b Fs(emacs_standard_keymap)p
Ft(,)24 b Fs(emacs_meta_keymap)p Ft(,)h Fs(emacs_ctlx_keymap)p
-Ft(,)g Fs(vi_)150 2739 y(movement_keymap)p Ft(,)41 b(and)h
+Ft(,)g Fs(vi_)150 4104 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
+b Ft(is)42 b(the)g(default,)150 4213 y(and)30 b(the)g(examples)h(in)f
+(this)h(man)m(ual)f(assume)g(that.)275 4352 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
+4461 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
+Fs(readline\(\))c Ft(will)150 4571 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
+(ey)g(bindings)f(in)g(an)h(initialization)150 4681 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(ariables],)150 4790 y(page)31 b(29\).)275 4929 y(These)f(functions)g
+(manage)h(k)m(ey)g(bindings.)3350 5121 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
+b(,)32 b(rl)p 1441 5121 30 5 v 43 w(command)p 1904 5121
+V 45 w(func)p 2133 5121 V 45 w(t)h(*function)p Fg(\))390
+5230 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 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
-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
+b(Returns)32 b(non-zero)i(in)f(the)g(case)390 5340 y(of)e(an)f(in)m(v)
+-5 b(alid)31 b Fj(k)m(ey)p Ft(.)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
+299 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 299
+30 5 v 43 w(command)p 2270 299 V 45 w(func)p 2499 299
+V 45 w(t)h(*function,)565 408 y(Keymap)h(map)p Fg(\))390
+518 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
+715 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 715
+V 44 w(command)p 2480 715 V 44 w(func)p 2708 715 V 45
+w(t)565 825 y(*function)p Fg(\))390 934 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 1044 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 1241 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 1241
+V 44 w(command)p 2846 1241 V 44 w(func)p 3074 1241 V
+46 w(t)565 1351 y(*function,)i(Keymap)g(map)p Fg(\))390
+1461 y Ft(Binds)27 b Fj(k)m(ey)36 b Ft(to)28 b Fj(function)f
+Ft(if)g(it)h(is)f(not)h(already)g(b)s(ound)d(in)i Fj(map)p
+Ft(.)39 b(Returns)27 b(non-zero)g(in)g(the)h(case)390
+1570 y(of)j(an)f(in)m(v)-5 b(alid)31 b Fj(k)m(ey)39 b
+Ft(or)30 b(if)g Fj(k)m(ey)39 b Ft(is)31 b(already)g(b)s(ound.)3350
+1767 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 1877 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
+1987 y(case)31 b(of)g(error.)3350 2184 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
+b(k)m(ey)-8 b(,)33 b(Keymap)g(map)p Fg(\))390 2293 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
+2491 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_unbind_function_in)q
+(_map)f Fg(\()p Ff(rl)p 1821 2491 V 44 w(command)p 2285
+2491 V 45 w(func)p 2514 2491 V 45 w(t)33 b(*function,)565
+2600 y(Keymap)h(map)p Fg(\))390 2710 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
+Fj(map)p Ft(.)3350 2907 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
+(*command,)f(Keymap)565 3017 y(map)p Fg(\))390 3126 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
+Fj(command)i Ft(in)d Fj(map)p Ft(.)3350 3324 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
+Ff(const)34 b(c)m(har)g(*k)m(eyseq,)e(rl)p 2119 3324
+V 44 w(command)p 2583 3324 V 44 w(func)p 2811 3324 V
+46 w(t)565 3433 y(*function)p Fg(\))390 3543 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
+Ft(,)390 3652 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 3762 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 3959
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
+Fg(\()p Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 4069
+y(rl)p 639 4069 V 44 w(command)p 1103 4069 V 44 w(func)p
+1331 4069 V 45 w(t)f(*function,)h(Keymap)g(map)p Fg(\))390
+4178 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)
+Fj(function)p Ft(.)39 b(This)390 4288 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
+4398 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 4595 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
+e(rl)p 1910 4595 V 44 w(command)p 2374 4595 V 44 w(func)p
+2602 4595 V 45 w(t)h(*function,)565 4704 y(Keymap)h(map)p
+Fg(\))390 4814 y Ft(Equiv)-5 b(alen)m(t)31 b(to)g Fs
+(rl_bind_keyseq_in_map)p Ft(.)3350 5011 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
+Ff(const)34 b(c)m(har)g(*k)m(eyseq,)565 5121 y(rl)p 639
+5121 V 44 w(command)p 1103 5121 V 44 w(func)p 1331 5121
+V 45 w(t)f(*function)p Fg(\))390 5230 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
+(the)h(curren)m(tly)f(activ)m(e)j(k)m(eymap.)390 5340
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(is)c(already)h(b)s(ound.)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_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
+408 y(rl)p 639 408 30 5 v 44 w(command)p 1103 408 V 44
+w(func)p 1331 408 V 45 w(t)f(*function,)h(Keymap)g(map)p
+Fg(\))390 518 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
+Ft(.)46 b(Returns)31 b(non-zero)h(in)g(the)390 628 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
+Ft(is)c(already)h(b)s(ound.)3350 792 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
+901 y(Keymap)g(map)p Fg(\))390 1011 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)
+1120 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
+g(function)g(\()p Fs(ISFUNC)p Ft(\),)h(a)390 1230 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(.)41 b(The)390 1339 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 1503 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
+Ff(c)m(har)34 b(*line)p Fg(\))390 1613 y Ft(P)m(arse)c
Fj(line)35 b Ft(as)29 b(if)h(it)g(had)e(b)s(een)h(read)g(from)g(the)h
Fs(inputrc)d Ft(\014le)j(and)e(p)s(erform)g(an)m(y)i(k)m(ey)g(bindings)
-390 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 1723 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
+1886 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
+1996 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
+b(Section)g(1.3)h([Readline)390 2106 y(Init)d(File],)i(page)f(4\).)150
+2291 y Fi(2.4.4)63 b(Asso)s(ciating)41 b(F)-10 b(unction)42
+b(Names)f(and)g(Bindings)150 2438 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 2548 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 2657 y(arbitrary)j(function.)3350 2821
+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 2931 y Ft(Return)c(the)g(function)g(with)g(name)h
+Fj(name)p Ft(.)3350 3095 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 3204 y(*k)m(eyseq,)f(Keymap)g(map,)g(in)m(t)h
+(*t)m(yp)s(e)p Fg(\))390 3314 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
+Ft(,)g(the)h(curren)m(t)390 3424 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)
+(in)h(the)g Fs(int)390 3533 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
+Ft(translated)p Fs(")f Ft(k)m(ey)390 3643 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
+(NUL.)3350 3807 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
+b(c)m(har)565 3916 y(*k)m(eyseq,)f(size)p 1121 3916 V
+44 w(t)g(len,)g(Keymap)h(map,)f(in)m(t)g(*t)m(yp)s(e)p
+Fg(\))390 4026 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
+4135 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
+Ft(translated)p Fs(")390 4245 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)
+3350 4409 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
+2678 4409 V 44 w(t)h(len,)565 4519 y(Keymap)h(map)p Fg(\))390
+4628 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
+(digits,)390 4738 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
+(argumen)m(t.)40 b(This)390 4847 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
+-5 b(ailable)27 b(as)d Fs(rl_numeric_arg)390 4957 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
+g(the)g(curren)m(t)f(command.)3350 5121 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
+1717 5121 V 44 w(command)p 2181 5121 V 44 w(func)p 2409
+5121 V 45 w(t)33 b(*function)p Fg(\))390 5230 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
+(to)i(in)m(v)m(ok)m(e)h Fj(function)e Ft(in)390 5340
+y(the)g(curren)m(t)f(k)m(eymap.)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
+299 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 299 30 5 v 44 w(command)p
+2547 299 V 44 w(func)p 2775 299 V 45 w(t)565 408 y(*function,)34
+b(Keymap)g(map)p Fg(\))390 518 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 628 y(the)g(k)m(eymap)f
+Fj(map)p Ft(.)3350 822 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 932 y(readable)p Fg(\))390
+1041 y Ft(Prin)m(t)d(k)m(ey)g(sequences)g(b)s(ound)d(to)j(Readline)h
+(function)e(name)g Fj(name)35 b Ft(in)29 b(k)m(eymap)h
+Fj(map)p Ft(.)40 b(If)30 b Fj(map)390 1151 y Ft(is)h(NULL,)g(this)g
+(uses)g(the)g(curren)m(t)g(k)m(eymap.)44 b(If)30 b Fj(readable)37
+b Ft(is)31 b(non-zero,)h(the)f(list)h(is)f(formatted)390
+1260 y(in)f(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)h(an)f Fs(inputrc)e Ft(\014le)j(and)f(re-read.)3350
+1455 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 1564 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 1674 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
+1783 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 1978 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 2087 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
+2281 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 2391
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 2501 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 2610 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
+3350 2804 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 2804
+V 43 w(command)p 2794 2804 V 45 w(func)p 3023 2804 V
+45 w(t)565 2914 y(*function)p Fg(\))390 3024 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
+3133 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 3337 y Fi(2.4.5)63 b(Allo)m(wing)41
+b(Undoing)150 3484 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
+m(h)h(more)150 3594 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
+275 3733 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
+3843 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
+m(ou)h(automatically)-8 b(.)275 3983 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
+(com)m(bination)h(of)e(these)h(op)s(erations,)150 4092
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
+4202 y(group\(\))28 b Ft(and)i Fs(rl_end_undo_group\(\))p
+Ft(.)275 4341 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 4458 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
+4598 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
+4707 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
+b Fs(UNDO_BEGIN)25 b Ft(and)150 4817 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
+b Ft(and)30 b Fs(rl_end_undo_group\(\))p Ft(.)3350 5011
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
+Fg(\()p Ff(v)m(oid)p Fg(\))390 5121 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 5230 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
-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
+Ft(,)f(but)h(could)h(b)s(e)f(the)390 5340 y(result)30
+b(of)h(calls)g(to)g Fs(rl_add_undo\(\))p Ft(.)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_end_undo_group)e
+Fg(\()p Ff(v)m(oid)p Fg(\))390 408 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
+Ft(.)39 b(There)29 b(should)390 518 y(b)s(e)h(one)g(call)i(to)f
Fs(rl_end_undo_group\(\))25 b Ft(for)30 b(eac)m(h)i(call)g(to)f
-Fs(rl_begin_undo_group\(\))p Ft(.)3350 3906 y([F)-8 b(unction])-3599
+Fs(rl_begin_undo_group\(\))p Ft(.)3350 708 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 708 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 818 y(*text)p Fg(\))390 927 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 1037 y Fj(start)h Ft(to)e Fj(end)p Ft(,)f(and)g
+(encompasses)h Fj(text)p Ft(.)3350 1227 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 1336 y Ft(F)-8 b(ree)31 b(the)g(existing)g(undo)f(list.)3350
+1526 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_do_undo)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1636 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
+1745 y(if)30 b(something)h(w)m(as)g(undone.)275 1935
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 2045 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
+b(Y)-8 b(ou)39 b(m)m(ust)150 2155 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
+b(.)3350 2345 y([F)g(unction])-3599 b Fh(int)53 b(rl_modifying)c
Fg(\()p Ff(in)m(t)34 b(start,)e(in)m(t)i(end)p Fg(\))390
-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
+2454 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
+e(unit.)70 b(It)40 b(is)390 2564 y(assumed)30 b(that)h(y)m(ou)f(will)h
+(subsequen)m(tly)f(mo)s(dify)f(that)i(text.)150 2766
+y Fi(2.4.6)63 b(Redispla)m(y)3350 2965 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
+Fg(\))390 3075 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
+Fs(rl_line_)390 3185 y(buffer)p Ft(.)3350 3375 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
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3484 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
+(whether)c(or)g(not)h(Readline)h(thinks)e(the)390 3594
+y(screen)30 b(displa)m(y)h(is)f(correct.)3350 3784 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
+Ff(v)m(oid)p Fg(\))390 3893 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
+(new)f(\(empt)m(y\))i(line,)g(usually)e(after)390 4003
+y(outputting)i(a)f(newline.)3350 4193 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 4303 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 Fj(rl)p 3106 4303 28 4 v 40 w(prompt)i
+Ft(already)390 4412 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 4522 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 4631 y(should)29 b(b)s(e)h(used)g
+(after)h(setting)g Fj(rl)p 1590 4631 V 40 w(already)p
+1920 4631 V 41 w(prompted)p Ft(.)3350 4821 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 4931 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
+5121 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 5230 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 5340 y(new)30 b(line.)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_crlf)48
+b Fg(\()p Ff(v)m(oid)p Fg(\))390 408 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
+3350 640 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 750 y Ft(Displa)m(y)g(c)m
(haracter)g Fj(c)k Ft(on)32 b Fs(rl_outstream)p Ft(.)44
b(If)32 b(Readline)h(has)g(not)f(b)s(een)g(set)h(to)g(displa)m(y)g
-(meta)390 3891 y(c)m(haracters)27 b(directly)-8 b(,)29
+(meta)390 860 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 969 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 1201 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 1311 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 1420
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 1530 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 Fj(ec)m(ho)390 1639 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
+1749 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 1859 y(function.)3350 2091 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 2200 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
+(with)f(a)g(call)i(to)e Fs(rl_save_)390 2310 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
-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
-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
-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(calling)390 2419 y(this)30 b(function.)3350 2651 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 2761 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 2871 y(message)31 b(in)g(the)f(message)i
+(area)f(with)f Fs(rl_message\(\))p Ft(.)3350 3102 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_restore_prompt)c Fg(\()p
+Ff(v)m(oid)p Fg(\))390 3212 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 3322 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 3431 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
+3541 y(clear_message)p Ft(.)3350 3773 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 3882 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 3992 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
+4102 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
+4211 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
+(visible)f(c)m(haracters)390 4321 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
+b(ma)m(y)h(indicate)f(that)390 4430 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)
+(space)g(when)f(displa)m(y)m(ed)390 4540 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
+(ecial)h(mark)m(ers)f Fs(RL_PROMPT_)390 4649 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
+4759 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
+(eci\014c)h(escap)s(e)g(sequences)390 4869 y(in)e(prompts.)3350
+5101 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 5210
y Ft(Mak)m(e)28 b(Readline)g(use)f Fj(prompt)h Ft(for)e(subsequen)m(t)h
(redispla)m(y)-8 b(.)40 b(This)26 b(calls)i Fs(rl_expand_prompt\(\))390
-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
-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
-(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
+5320 y Ft(to)j(expand)f(the)g(prompt)g(and)g(sets)g Fs(rl_prompt)e
+Ft(to)j(the)g(result.)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.7)63 b(Mo)s(difying)43 b(T)-10 b(ext)3350
+502 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 612
+y Ft(Insert)d Fj(text)k Ft(in)m(to)d(the)g(line)g(at)g(the)g(curren)m
+(t)f(cursor)g(p)s(osition.)45 b(Returns)30 b(the)i(n)m(um)m(b)s(er)f
+(of)g(c)m(har-)390 721 y(acters)g(inserted.)3350 919
+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
+1028 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
+b(Returns)36 b(the)i(n)m(um)m(b)s(er)f(of)390 1138 y(c)m(haracters)32
+b(deleted.)3350 1335 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
+Fg(\))390 1445 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
+(line.)3350 1642 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
+Fg(\))390 1752 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(kill)h(ring,)g(app)s(ending)390 1862 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
+(command.)51 b(The)34 b(text)h(is)390 1971 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
+b(the)390 2081 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 2278 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(*macro)p Fg(\))390 2388 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
+390 2497 y(a)31 b(macro.)41 b(Not)31 b(esp)s(ecially)h(useful;)e(use)g
+Fs(rl_insert_text\(\))c Ft(instead.)150 2703 y Fi(2.4.8)63
+b(Character)39 b(Input)3350 2906 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
+3016 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 3126 y(dles)e(input)g(inserted)g(in)m(to)i(the)e
+(input)g(stream)h(via)g Fj(rl)p 2226 3126 28 4 v 40 w(p)s(ending)p
+2583 3126 V 38 w(input)h Ft(\(see)f(Section)h(2.3)f([Read-)390
+3235 y(line)40 b(V)-8 b(ariables],)43 b(page)d(29\))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 3345 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
+(function)g(assigned)390 3454 y(to)d(the)g Fs(rl_event_hook)26
+b Ft(v)-5 b(ariable.)3350 3652 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
+Fg(\))390 3761 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)s(e)e(the)i(k)m(eyb)s(oard.)3350 3959 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
+Fg(\))390 4068 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
+4178 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
+(y)390 4288 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
+(inserted;)390 4397 y(0)g(otherwise.)3350 4595 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
+Ff(in)m(t)34 b(c)p Fg(\))390 4704 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
+Fs(rl_read_key\(\))e Ft(is)k(called.)58 b(This)390 4814
+y(sets)31 b Fj(rl)p 635 4814 V 40 w(p)s(ending)p 992
+4814 V 38 w(input)p Ft(.)3350 5011 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 5121 y Ft(Unset)42 b Fj(rl)p 729 5121 V 40
+w(p)s(ending)p 1086 5121 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 5230 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
-(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)
-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
-(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
-(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(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
+(already)g(b)s(een)f(read)390 5340 y(with)30 b Fs(rl_read_key\(\))p
+Ft(.)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_set_keyboard_input)q
+(_tim)q(eou)q(t)e Fg(\()p Ff(in)m(t)34 b(u)p Fg(\))390
+408 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 518 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 628 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 737
+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 957 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 1067 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 1177 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
+(rl_num_chars_to_read)p Ft(,)c(b)s(efore)390 1286 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)
+1396 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 1505 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 1615 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 1835 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 1945 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
+(timeout)390 2054 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
+Ft(m)m(ust)c(b)s(e)g(non-NULL)390 2164 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 2274
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
+(if)g(the)390 2383 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
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 2493 y(whether)k(the)g(timeout)i(has)e(expired.)150
+2710 y Fi(2.4.9)63 b(T)-10 b(erminal)41 b(Managemen)m(t)3350
+2925 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 2925 30 5 v 44 w(\015ag)p
+Fg(\))390 3034 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
+390 3144 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 3144 28 4 v 41 w(\015ag)39
+b Ft(argumen)m(t)31 b(should)f(b)s(e)g(non-zero)390 3254
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
+3474 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_deprep_terminal)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3583 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
+3693 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 3913 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
+Ff(Keymap)34 b(kmap)p Fg(\))390 4023 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
+(e)h(displa)m(y)m(ed)g(b)m(y)390 4132 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
+4353 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 4462
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
+390 4572 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
+390 4681 y Fj(kmap)p Ft(.)3350 4902 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
+b(v)-6 b(alue)p Fg(\))390 5011 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
+(output)h(stream)390 5121 y(\()p Fj(rl)p 492 5121 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
+Fj(rl)p 3115 5121 V 40 w(outstream)p Ft(;)i(an)m(y)390
+5230 y(other)43 b(v)-5 b(alue)43 b(enables)h(output.)77
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
+(initializes)h(the)390 5340 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
-(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(alue.)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(int)53 b(rl_reset_terminal)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*terminal)p 2232 299
+30 5 v 43 w(name)p Fg(\))390 408 y Ft(Reinitialize)26
b(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
+Fj(terminal)p 2977 408 28 4 v 40 w(name)29 b Ft(as)24
+b(the)g(termi-)390 518 y(nal)32 b(t)m(yp)s(e)g(\(e.g.,)i
+Fs(vt100)p Ft(\).)44 b(If)31 b Fj(terminal)p 1753 518
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
+628 y(v)-5 b(ariable)31 b(is)g(used.)150 822 y Fi(2.4.10)63
+b(Utilit)m(y)40 b(F)-10 b(unctions)3350 1013 y Ft([F)i(unction])-3599
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 1013 30 5 v 44 w(state)f(*sp)p Fg(\))390 1123 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
+Fj(readline)p 3518 1123 28 4 v 40 w(state)390 1232 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 1342 y(structure.)3350 1518 y([F)-8 b(unction])-3599
b Fh(int)53 b(rl_restore_state)e Fg(\()p Ff(struct)34
-b(readline)p 1916 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
+b(readline)p 1916 1518 30 5 v 44 w(state)f(*sp)p Fg(\))390
+1628 y Ft(Restore)23 b(Readline's)g(in)m(ternal)g(state)g(to)g(that)g
(stored)f(in)g Fj(sp)p Ft(,)i(whic)m(h)d(m)m(ust)h(ha)m(v)m(e)i(b)s
-(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390 4420 y(call)30 b(to)g
+(een)d(sa)m(v)m(ed)i(b)m(y)g(a)390 1737 y(call)30 b(to)g
Fs(rl_save_state)p Ft(.)37 b(The)28 b(con)m(ten)m(ts)j(of)e(the)g
-Fj(readline)p 2470 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
+Fj(readline)p 2470 1737 28 4 v 41 w(state)35 b Ft(structure)29
+b(are)g(do)s(cumen)m(ted)390 1847 y(in)h Fs(readline.h)p
Ft(.)38 b(The)30 b(caller)i(is)e(resp)s(onsible)f(for)i(freeing)f(the)h
-(structure.)3350 4716 y([F)-8 b(unction])-3599 b Fh(void)54
+(structure.)3350 2023 y([F)-8 b(unction])-3599 b Fh(void)54
b(rl_free)47 b Fg(\()p Ff(v)m(oid)33 b(*mem)p Fg(\))390
-4825 y Ft(Deallo)s(cate)25 b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)
+2133 y Ft(Deallo)s(cate)25 b(the)c(memory)g(p)s(oin)m(ted)g(to)h(b)m(y)
f Fj(mem)p Ft(.)38 b Fj(mem)21 b Ft(m)m(ust)g(ha)m(v)m(e)i(b)s(een)d
-(allo)s(cated)j(b)m(y)e Fs(malloc)p Ft(.)3350 5011 y([F)-8
+(allo)s(cated)j(b)m(y)e Fs(malloc)p Ft(.)3350 2309 y([F)-8
b(unction])-3599 b Fh(void)54 b(rl_replace_line)c Fg(\()p
Ff(const)34 b(c)m(har)f(*text,)g(in)m(t)g(clear)p 2406
-5011 30 5 v 44 w(undo)p Fg(\))390 5121 y Ft(Replace)41
+2309 30 5 v 44 w(undo)p Fg(\))390 2419 y Ft(Replace)41
b(the)e(con)m(ten)m(ts)i(of)f Fs(rl_line_buffer)35 b
Ft(with)k Fj(text)p Ft(.)69 b(The)39 b(p)s(oin)m(t)h(and)e(mark)h(are)h
-(pre-)390 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
+(pre-)390 2528 y(serv)m(ed,)27 b(if)e(p)s(ossible.)39
+b(If)25 b Fj(clear)p 1422 2528 28 4 v 41 w(undo)k Ft(is)d(non-zero,)h
(the)f(undo)e(list)i(asso)s(ciated)h(with)e(the)h(curren)m(t)390
-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
+2638 y(line)31 b(is)f(cleared.)3350 2814 y([F)-8 b(unction])-3599
+b Fh(void)54 b(rl_extend_line_buffer)d Fg(\()p Ff(in)m(t)34
+b(len)p Fg(\))390 2924 y Ft(Ensure)29 b(that)h Fs(rl_line_buffer)d
+Ft(has)j(enough)f(space)i(to)g(hold)f Fj(len)g Ft(c)m(haracters,)i(p)s
+(ossibly)d(real-)390 3034 y(lo)s(cating)j(it)f(if)f(necessary)-8
+b(.)3350 3210 y([F)g(unction])-3599 b Fh(int)53 b(rl_initialize)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 3319 y Ft(Initialize)39
+b(or)e(re-initialize)i(Readline's)f(in)m(ternal)f(state.)62
+b(It's)37 b(not)g(strictly)h(necessary)f(to)h(call)390
+3429 y(this;)31 b Fs(readline\(\))c Ft(calls)32 b(it)f(b)s(efore)f
+(reading)g(an)m(y)h(input.)3350 3605 y([F)-8 b(unction])-3599
+b Fh(int)53 b(rl_ding)48 b Fg(\()p Ff(v)m(oid)p Fg(\))390
+3715 y Ft(Ring)30 b(the)h(terminal)g(b)s(ell,)f(ob)s(eying)h(the)f
+(setting)i(of)e Fs(bell-style)p Ft(.)3350 3891 y([F)-8
+b(unction])-3599 b Fh(int)53 b(rl_alphabetic)d Fg(\()p
+Ff(in)m(t)33 b(c)p Fg(\))390 4001 y Ft(Return)d(1)g(if)h
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
+4177 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 4287 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 4396 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 4506 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
+4616 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 4725 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 4835 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 4944 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
+5054 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 5230 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
+b(should)150 5340 y(refrain)d(from)g(using)g(them.)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_uppercase_p)d
+Fg(\()p Ff(in)m(t)34 b(c)p Fg(\))390 408 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
+3350 589 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 698 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
+(haracter.)3350 878 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
+988 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 1168 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
+1278 y Ft(If)23 b Fj(c)30 b Ft(is)24 b(a)g(lo)m(w)m(ercase)i(alphab)s
(etic)e(c)m(haracter,)j(return)c(the)h(corresp)s(onding)e(upp)s(ercase)
-h(c)m(haracter.)3350 4756 y([F)-8 b(unction])-3599 b
+h(c)m(haracter.)3350 1458 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 1567 y Ft(If)28 b Fj(c)35 b Ft(is)29 b(an)g(upp)s(ercase)f
(alphab)s(etic)h(c)m(haracter,)i(return)d(the)h(corresp)s(onding)f(lo)m
-(w)m(ercase)j(c)m(harac-)390 4975 y(ter.)3350 5213 y([F)-8
+(w)m(ercase)j(c)m(harac-)390 1677 y(ter.)3350 1857 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 1967 y Ft(If)c Fj(c)36 b
Ft(is)31 b(a)f(n)m(um)m(b)s(er,)g(return)f(the)h(v)-5
-b(alue)31 b(it)g(represen)m(ts.)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 2163 y Fi(2.4.11)63
+b(Miscellaneous)42 b(F)-10 b(unctions)3350 2357 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
+2467 y(Keymap)g(map)p Fg(\))390 2576 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
+2686 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 2795 y(is)k(deprecated;)i(use)
+e Fs(rl_generic_bind)c Ft(instead.)3350 2976 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 3085 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
+3195 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
+3304 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 Fj(readable)41 b Ft(is)36 b(greater)390 3414 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
+3524 y Ft(\014le)i(and)g(re-read.)3350 3704 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 3813 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
+(Readline)g(com-)390 3923 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
+Ft(\014le)i(\(see)h(Section)f(1.3.1)390 4032 y([Readline)g(Init)f(File)
+i(Syn)m(tax],)f(page)g(4\).)3350 4213 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(c)m(har)g(*v)-6 b(ariable)p Fg(\))390 4322 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
+Ft(.)41 b(F)-8 b(or)30 b(b)s(o)s(olean)390 4432 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
+Ft(')f(or)h(`)p Fs(off)p Ft('.)3350 4612 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(readable)p Fg(\))390 4721 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
+4831 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
+(made)g(part)h(of)390 4941 y(an)e Fs(inputrc)f Ft(\014le)h(and)g
+(re-read.)3350 5121 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 5230 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
-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
+(sho)m(wing)i(a)f(balancing)390 5340 y(c)m(haracter)32
+b(when)d Fs(blink-matching-paren)c Ft(has)30 b(b)s(een)g(enabled.)p
+eop end
+%%Page: 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(char)54 b(*)e(rl_get_termcap)e
+Fg(\()p Ff(const)34 b(c)m(har)g(*cap)p Fg(\))390 408
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
+b(fetc)m(hes)h(the)g(termcap)390 518 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 628 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
+(erasing)g(a)f(line.)38 b(Readline)390 737 y(do)s(es)d(not)g(use)g(all)
+g(of)h(a)f(terminal's)g(capabilities,)k(and)34 b(this)h(function)g
+(will)g(return)f(v)-5 b(alues)35 b(for)390 847 y(only)30
+b(those)h(capabilities)i(Readline)e(uses.)3350 1023 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_reparse_colors)c Fg(\()p
+Ff(v)m(oid)p Fg(\))390 1133 y Ft(Read)31 b(or)f(re-read)h(color)g
+(de\014nitions)f(from)g Fs(LS_COLORS)p Ft(.)3350 1310
+y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_clear_history)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1419 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 1529 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
+Fs(clear_history)e Ft(b)s(ecause)i(it)390 1638 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
+(history)f(list.)3350 1815 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
+Fg(\))390 1924 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
+(and)f(mark)g(\(the)390 2034 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
+b(arious)390 2144 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
+b(for)d(applications)390 2253 y(to)k(call.)3350 2430
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
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2539 y Ft(T)-8 b(urn)29
+b(o\013)i(the)f(activ)m(e)j(mark.)3350 2716 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 2825 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
+2935 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 3045 y(the)k(duration)f(of)g(a)h(single)g(bindable)f
+(Readline)h(function.)3350 3221 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
+Fg(\))390 3331 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
+150 3525 y Fi(2.4.12)63 b(Alternate)40 b(In)m(terface)150
+3672 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)
+3781 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
+(op)f(to)150 3891 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
+(need,)j(Readline)e(can)f(also)i(b)s(e)150 4001 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
+b(to)f(mak)m(e)150 4110 y(this)e(easy)-8 b(.)3350 4287
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
+Fg(\()p Ff(const)34 b(c)m(har)g(*prompt,)565 4396 y(rl)p
+639 4396 30 5 v 44 w(v)m(cpfunc)p 1016 4396 V 45 w(t)f(*lhandler)p
+Fg(\))390 4506 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(alue)23 b(of)g Fj(prompt)p Ft(.)390 4615 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
+(line)390 4725 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
+(line)g(as)g(an)390 4835 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
+Fs(free)f Ft(the)h(line)h(when)e(it)i(it)390 4944 y(\014nished)g(with)h
+(it.)3350 5121 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
+5230 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 5340 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)
-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
-(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
-(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
-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
+(input)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)390
+299 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 408 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 518 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 628 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 737 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 847 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 1040 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_callback_sigcleanup)e
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1150 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 1259 y(to)35
+b(rl)p 572 1259 28 4 v 40 w(callbac)m(k)p 928 1259 V
+42 w(read)p 1142 1259 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 1369 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 1479 y(Readline's)f(in)m(ternal)g(signal)g
+(handler)f(calls)h(this)g(when)e(appropriate.)3350 1672
+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 1782 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 1891
+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 2001 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 2110 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
+b Ft(should)30 b(b)s(e)h(called)390 2220 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
+2424 y Fi(2.4.13)63 b(A)41 b(Readline)f(Example)150 2571
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 2680 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
+Ft(')150 2790 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
+2900 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
+3039 y Fs(/*)47 b(Invert)f(the)h(case)g(of)g(the)g(COUNT)f(following)g
+(characters.)e(*/)390 3148 y(int)390 3258 y(invert_case_line)f
+(\(count,)j(key\))629 3367 y(int)h(count,)f(key;)390
+3477 y({)485 3587 y(register)g(int)h(start,)f(end,)h(i;)485
+3806 y(start)g(=)g(rl_point;)485 4025 y(if)h(\(rl_point)d(>=)i
+(rl_end\))581 4134 y(return)f(\(0\);)485 4354 y(if)i(\(count)e(<)h(0\))
+581 4463 y({)676 4573 y(direction)f(=)h(-1;)676 4682
+y(count)g(=)g(-count;)581 4792 y(})485 4902 y(else)581
+5011 y(direction)e(=)j(1;)485 5230 y(/*)g(Find)e(the)h(end)g(of)g(the)g
+(range)g(to)g(modify.)f(*/)485 5340 y(end)h(=)h(start)e(+)i(\(count)e
+(*)h(direction\);)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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(48)485
+408 y Fs(/*)48 b(Force)e(it)h(to)g(be)h(within)e(range.)g(*/)485
+518 y(if)i(\(end)e(>)i(rl_end\))581 628 y(end)f(=)g(rl_end;)485
+737 y(else)g(if)g(\(end)g(<)g(0\))581 847 y(end)g(=)g(0;)485
+1066 y(if)h(\(start)e(==)h(end\))581 1176 y(return)f(\(0\);)485
+1395 y(if)i(\(start)e(>)h(end\))581 1504 y({)676 1614
+y(int)g(temp)g(=)g(start;)676 1724 y(start)g(=)g(end;)676
+1833 y(end)g(=)h(temp;)581 1943 y(})485 2162 y(/*)g(Tell)e(readline)g
+(that)g(we)i(are)f(modifying)e(the)i(line,)629 2271 y(so)g(it)g(will)g
+(save)f(the)h(undo)g(information.)d(*/)485 2381 y(rl_modifying)h
+(\(start,)h(end\);)485 2600 y(for)h(\(i)h(=)f(start;)f(i)i(!=)f(end;)f
+(i++\))581 2710 y({)676 2819 y(if)i(\(_rl_uppercase_p)43
+b(\(rl_line_buffer[i]\)\))772 2929 y(rl_line_buffer[i])g(=)k
+(_rl_to_lower)e(\(rl_line_buffer[i]\);)676 3039 y(else)i(if)g
+(\(_rl_lowercase_p)d(\(rl_line_buffer[i]\)\))772 3148
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
+3258 y(})485 3367 y(/*)j(Move)e(point)h(to)g(on)g(top)g(of)g(the)g
+(last)g(character)e(changed.)g(*/)485 3477 y(rl_point)h(=)h
+(\(direction)e(==)j(1\))f(?)g(end)g(-)h(1)f(:)h(start;)485
+3587 y(return)f(\(0\);)390 3696 y(})150 3929 y Fi(2.4.14)63
+b(Alternate)40 b(In)m(terface)g(Example)150 4076 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 4186 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
+4295 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
+4463 y Fs(/*)47 b(Standard)f(include)g(files.)g(stdio.h)f(is)j
+(required.)d(*/)390 4573 y(#include)h(<stdlib.h>)390
+4682 y(#include)g(<string.h>)390 4792 y(#include)g(<unistd.h>)390
+4902 y(#include)g(<locale.h>)390 5121 y(/*)h(Used)g(for)g(select\(2\))e
+(*/)390 5230 y(#include)h(<sys/types.h>)390 5340 y(#include)g
+(<sys/select.h>)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)
-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
-(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
-(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
+408 y Fs(#include)46 b(<signal.h>)390 628 y(#include)g(<stdio.h>)390
+847 y(/*)h(Standard)f(readline)f(include)h(files.)g(*/)390
+956 y(#include)g(<readline/readline.h>)390 1066 y(#include)g
+(<readline/history.h>)390 1285 y(static)g(void)h(cb_linehandler)d
+(\(char)i(*\);)390 1395 y(static)g(void)h(sighandler)e(\(int\);)390
+1614 y(int)i(running;)390 1724 y(int)g(sigwinch_received;)390
+1833 y(const)f(char)h(*prompt)f(=)h("rltest$)f(";)390
+2052 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 2073 42 84
+v 533 2162 a(reading)g(a)h(character.)e(*/)390 2271 y(static)h(void)390
+2381 y(sighandler)f(\(int)i(sig\))390 2491 y({)485 2600
+y(sigwinch_received)d(=)j(1;)390 2710 y(})390 2929 y(/*)g(Callback)f
+(function)f(called)h(for)h(each)g(line)g(when)f(accept-line)f
+(executed,)g(EOF)533 3039 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
+3148 y(also)g(call)f(exit\(3\).)g(*/)390 3258 y(static)g(void)390
+3367 y(cb_linehandler)e(\(char)i(*line\))390 3477 y({)485
+3587 y(/*)i(Can)f(use)f(^D)i(\(stty)e(eof\))h(or)g(`exit')f(to)h(exit.)
+f(*/)485 3696 y(if)i(\(line)e(==)h(NULL)g(||)g(strcmp)f(\(line,)g
+("exit"\))g(==)h(0\))581 3806 y({)676 3915 y(if)h(\(line)e(==)h(0\))772
+4025 y(printf)f(\("\\n"\);)676 4134 y(printf)g(\("exit\\n"\);)676
+4244 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 4264 V 820 4354 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 4374 42 76 v 820 4463 a(being)g(displayed.)f(*/)676
+4573 y(rl_callback_handler_remove)c(\(\);)676 4792 y(running)46
+b(=)i(0;)581 4902 y(})485 5011 y(else)581 5121 y({)676
+5230 y(if)g(\(*line\))772 5340 y(add_history)d(\(line\);)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
-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
-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
-(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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(50)676
+299 y Fs(printf)46 b(\("input)g(line:)h(\045s\\n",)f(line\);)676
+408 y(free)h(\(line\);)581 518 y(})390 628 y(})390 847
+y(int)390 956 y(main)g(\(int)f(c,)h(char)g(**v\))390
+1066 y({)485 1176 y(fd_set)g(fds;)485 1285 y(int)g(r;)485
+1504 y(/*)h(Set)f(the)f(default)g(locale)g(values)g(according)g(to)h
+(environment)e(variables.)g(*/)p 3874 1525 42 84 v 485
+1614 a(setlocale)h(\(LC_ALL,)f(""\);)485 1833 y(/*)j(Handle)e(window)g
+(size)g(changes)g(when)h(readline)e(is)j(not)f(active)f(and)h(reading)
+629 1943 y(characters.)d(*/)485 2052 y(signal)j(\(SIGWINCH,)e
+(sighandler\);)485 2271 y(/*)j(Install)d(the)i(line)g(handler.)f(*/)485
+2381 y(rl_callback_handler_instal)o(l)c(\(prompt,)j(cb_linehandler\);)
+485 2600 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
+2710 y(to)g(read)f(on)i(readline's)d(input)h(stream)g(\(defaults)f(to)j
+(standard)d(input\))h(and)629 2819 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
+2929 y(have)g(to)h(modify)g(the)f(user's)h(terminal)e(settings.)g(*/)
+485 3039 y(running)h(=)i(1;)485 3148 y(while)f(\(running\))581
+3258 y({)676 3367 y(FD_ZERO)f(\(&fds\);)676 3477 y(FD_SET)g(\(fileno)g
+(\(rl_instream\),)e(&fds\);)676 3696 y(r)k(=)f(select)f(\(FD_SETSIZE,)f
+(&fds,)h(NULL,)h(NULL,)f(NULL\);)676 3806 y(if)i(\(r)f(<)g(0)h(&&)f
+(errno)f(!=)h(EINTR\))772 3915 y({)867 4025 y(perror)f(\("rltest:)g
+(select"\);)867 4134 y(rl_callback_handler_remov)o(e)c(\(\);)867
+4244 y(break;)772 4354 y(})676 4463 y(if)48 b(\(sigwinch_received\))390
+4573 y({)485 4682 y(rl_resize_terminal)43 b(\(\);)485
+4792 y(sigwinch_received)h(=)j(0;)390 4902 y(})676 5011
+y(if)h(\(r)f(<)g(0\))390 5121 y(continue;)676 5340 y(if)h(\(FD_ISSET)d
+(\(fileno)h(\(rl_instream\),)e(&fds\)\))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)772
+299 y Fs(rl_callback_read_char)42 b(\(\);)581 408 y(})485
+628 y(printf)47 b(\("rltest:)e(Event)h(loop)h(has)g(exited\\n"\);)485
+737 y(return)g(0;)390 847 y(})150 1101 y Fr(2.5)68 b(Readline)47
+b(Signal)e(Handling)150 1260 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 1370 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 1479 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 1589 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
+1698 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 1808 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
+(or)d(pro)m(vide)150 1918 y(application)e(writers)e(with)g(functions)g
+(to)h(do)f(so)h(man)m(ually)-8 b(.)275 2061 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
+2170 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
+b(When)150 2280 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
+(to)g(those)150 2390 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
+(handling)f(to)h(what)f(it)h(w)m(as)150 2499 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
+2609 y(the)34 b(calling)i(application's)f(signal)g(handler)e(returns,)h
+(Readline)g(will)h(reinitialize)h(the)e(terminal)h(and)150
+2718 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
+(handler)f(p)s(erforms)150 2828 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)s(e)e(ab)s(orted)g(\(see)i(the)150 2938 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
+3081 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 3190 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
+Fs(xterm)p Ft(\).)39 b(The)150 3300 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
+(information,)g(and)e(then)150 3410 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
+(installed.)51 b(Readline)35 b(calls)g(the)150 3519 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
+(terminal)f(to)h(its)g(original)g(state.)150 3629 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
+3738 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
+Fk(must)39 b Ft(call)31 b Fs(rl_cleanup_)150 3848 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
+(state.)275 3991 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
+(In-)150 4101 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
+(to)150 4210 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 4320 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 4430 y(and)k(restores)h(the)f(terminal)h(state.)275
+4573 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 4682 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 4792 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 4902 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 5011 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 5121 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 5230 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
+5340 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)
-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
-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(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)
-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(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
-(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)
-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
-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
-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(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
-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
-(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
-(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
-(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(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
+(application)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
-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(Programming)30 b(with)g(GNU)h(Readline)1683 b(52)150
+299 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 408 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 545 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
+655 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 764 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 874 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 1062 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_catch_signals)390 1172 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
+1282 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 1418 y(The)g(default)g(v)-5 b(alue)31
+b(of)g Fs(rl_catch_signals)26 b Ft(is)k(1.)3371 1607
+y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_catch_sigwinch)390
+1716 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 1826 y Fs(SIGWINCH)p Ft(.)390 1963
+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 2151 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_persistent_signal_)q(hand)q(ler)q(s)390
+2261 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
+2370 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 2480 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 2617 y(The)30 b(default)g(v)-5 b(alue)31
+b(of)g Fs(rl_persistent_signal_han)o(dle)o(rs)24 b Ft(is)31
+b(0.)3371 2805 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_change_environment)390 2915 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
+3024 y(line)h(will)h(mo)s(dify)e(the)h Fj(LINES)35 b
+Ft(and)29 b Fj(COLUMNS)35 b Ft(en)m(vironmen)m(t)30 b(v)-5
+b(ariables)31 b(up)s(on)d(receipt)j(of)g(a)390 3134 y
+Fs(SIGWINCH)390 3271 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
+3459 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
+150 3569 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
+m(enience)150 3678 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 3867 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 3977 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 4086 y(handled,)i(or)g(0)h(if)f(there)h(is)f(no)g(p)s
+(ending)f(signal.)3350 4275 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 4384 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 4494 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 4603 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 4792 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
+4902 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
+5011 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 5121 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 5230 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
-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)
-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
+5340 y(curren)m(t)30 b(input)g(line.)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_reset_after_signal)d
+Fg(\()p Ff(v)m(oid)p Fg(\))390 408 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 518 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 681 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 790 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
+900 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 1010 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(29\))h(and)e(wish)g(to)150 1119 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
+1282 y([F)-8 b(unction])-3599 b Fh(void)54 b(rl_check_signals)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 1391 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 1501 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 1611 y(whether)30 b(or)g(not)h(there)
+f(are)h(an)m(y)g(p)s(ending)e(signals.)275 1773 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
+1883 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 1992 y(size)k(when)f(it)h(receiv)m(es)h(a)e
+Fs(SIGWINCH)p Ft(.)3350 2155 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 2265 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 2374 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
+Fj(sig)39 b Ft(set)31 b(to)g Fs(SIGINT)p Ft(,)390 2484
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 2647 y([F)-8
+b(unction])-3599 b Fh(void)54 b(rl_resize_terminal)c
+Fg(\()p Ff(v)m(oid)p Fg(\))390 2756 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 2919 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
+3029 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 3138 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
+(that)h(terminal)f(dimension)g(is)390 3248 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
+(dimensions)f(of)h(the)g(terminal,)390 3357 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)
+3467 y(app)s(ear)30 b(on)g(a)h(single)g(line)g(and)e(on)i(the)f
+(screen.)275 3630 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
+m(terested)g(in)150 3739 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
+3902 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
+4011 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 4121 y(men)m(ts.)3350 4284 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 4393 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 4556
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 4719 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
+4828 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 4938 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 5047 y(signals)28 b Ft(and)i
+Fs(rl_catch_sigwinch)p Ft(.)3350 5210 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 5320 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
-(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
-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
-(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
-(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
-(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
+Ft(.)p eop end
+%%Page: 54 58
+TeXDict begin 54 57 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(54)150
+299 y Fr(2.6)68 b(Custom)45 b(Completers)150 458 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 568
+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
+677 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 787 y(co)s(op)s(erate)j(to)h(pro)m(vide)e(this)g
+(service.)150 970 y Fi(2.6.1)63 b(Ho)m(w)40 b(Completing)i(W)-10
+b(orks)150 1117 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 1227 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 1336 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 1446 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 1555 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 1665 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 1791 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
+1918 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
+e(the)h(same)330 2027 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
+Fj(in)m(v)m(oking)p 3107 2027 28 4 v 41 w(k)m(ey)p Ft(.)57
+b(It)36 b(isolates)330 2137 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 2247 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 2356
+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
+2466 y(desired.)199 2592 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 2702 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
+2811 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
+2921 y(completion_entry_functio)o(n)p Ft(.)199 3047 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
+Fs(rl_completion_matches\(\))o Ft(,)c(returning)330 3157
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
+Fj(state)p Ft(.)49 b Fj(text)330 3267 y Ft(is)32 b(the)g(partial)h(w)m
(ord)f(to)h(b)s(e)e(completed.)47 b Fj(state)38 b Ft(is)32
b(zero)h(the)f(\014rst)g(time)g(the)h(function)e(is)h(called,)330
-1353 y(allo)m(wing)46 b(the)e(generator)h(to)f(p)s(erform)f(an)m(y)h
+3376 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
+330 3486 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
+Fs(\(char)h(*\)NULL)e Ft(to)330 3595 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
+(p)s(ossibilities)h(left.)65 b(Usually)330 3705 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
+3814 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)
+3924 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
+(when)330 4034 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
+e Fj(application-)330 4143 y(sp)s(eci\014c)d(completion)i(function)p
+Ft(.)3350 4303 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
+2020 4303 30 5 v 43 w(k)m(ey)p Fg(\))390 4413 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
+4522 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
+4632 y(default)31 b(is)f(to)h(do)f(\014lename)h(completion.)3371
+4792 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 4902
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
+b(If)40 b(the)390 5011 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
+5121 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
+5230 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
-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
+5340 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.)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)150
+299 y Fi(2.6.2)63 b(Completion)41 b(F)-10 b(unctions)150
+446 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
+640 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 640 30 5 v 44 w(to)p
+1994 640 V 43 w(do)p Fg(\))390 749 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 749
+28 4 v 40 w(to)p 2328 749 V 41 w(do)41 b Ft(sa)m(ys)c(what)f(to)i(do)e
+(with)g(the)h(com-)390 859 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)
-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
+969 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 1078 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
+(as)g(p)s(erforming)e(partial)390 1188 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
+(the)g(p)s(ossible)390 1297 y(completions)32 b(share)e(a)g(common)h
+(pre\014x.)3350 1491 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 1491 30 5 v 43 w(k)m(ey)p Fg(\))390 1601
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 1710 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 1820 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 1930 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
-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
+Fj(in)m(v)m(oking)p 3314 1930 28 4 v 41 w(k)m(ey)p Ft(.)3350
+2124 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 2124 30 5 v 43 w(k)m(ey)p Fg(\))390 2233 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
+Fs(rl_)390 2343 y(complete_internal\(\))25 b Ft(with)30
+b(an)g(argumen)m(t)h(of)g(`)p Fs(?)p Ft('.)3350 2537
+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
+2517 2537 V 44 w(k)m(ey)p Fg(\))390 2646 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 2756 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
+2865 y(an)30 b(argumen)m(t)h(of)g(`)p Fs(*)p Ft('.)3350
+3059 y([F)-8 b(unction])-3599 b Fh(int)53 b(rl_completion_mode)e
+Fg(\()p Ff(rl)p 1455 3059 V 44 w(command)p 1919 3059
+V 44 w(func)p 2147 3059 V 46 w(t)33 b(*cfunc)p Fg(\))390
+3169 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 3279 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 3388 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 3498
+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
+3692 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
+3801 y(rl)p 639 3801 V 44 w(comp)s(en)m(try)p 1145 3801
+V 44 w(func)p 1373 3801 V 45 w(t)f(*en)m(try)p 1767 3801
+V 44 w(func)p Fg(\))390 3911 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 4020
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
+(substitution)390 4130 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
+b(The)26 b(arra)m(y)h(is)f(terminated)390 4240 y(with)k(a)h
+Fs(NULL)e Ft(p)s(oin)m(ter.)390 4379 y Fj(en)m(try)p
+603 4379 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
+b(The)39 b(\014rst)g(argumen)m(t)h(is)390 4489 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
+4598 y(subsequen)m(t)33 b(calls.)52 b Fj(en)m(try)p 1320
+4598 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 4708
+y(more)d(matc)m(hes.)3350 4902 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 5011
+y(state)p Fg(\))390 5121 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 Fj(text)28 b Ft(is)e(a)g(partial)h(\014le-)390 5230
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
-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
+5340 y(functions)30 b(\(the)h(Bash)f(completion)i(functions)e(call)i
+(this)e(and)g(other)g(Readline)h(functions\).)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)3350
+299 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
+408 y(state)p Fg(\))390 518 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(`)
-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
+(preceded)g(b)m(y)390 628 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 737 y(the)g(\014rst)e(call)j
+(and)e(non-zero)h(for)f(subsequen)m(t)f(calls.)150 955
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
+1170 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 1279
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 1389 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
+1609 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
+1719 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
+390 1829 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
+1938 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
+Fs(NULL)p Ft(,)h(or)g(if)390 2048 y(this)c(v)-5 b(ariable)22
+b(is)g(set)h(to)f Fs(NULL)p Ft(,)h(then)f Fs(rl_complete\(\))c
+Ft(will)k(call)h(the)f(v)-5 b(alue)23 b(of)f Fs(rl_completion_)390
+2157 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
+2267 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 2377 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 2486 y(no)d(matc)m(hes.)3371
+2707 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 2816
+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
+2926 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
+3036 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
+b(The)32 b(function)390 3145 y(is)37 b(called)h(with)e
+Fj(text)p Ft(,)k Fj(matc)m(h)p 1438 3145 28 4 v 41 w(t)m(yp)s(e)p
+Ft(,)f(and)d Fj(quote)p 2119 3145 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
+3255 y(quoted.)76 b(The)42 b Fj(matc)m(h)p 1210 3255
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
+3364 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
+(insert)g(a)390 3474 y(closing)22 b(quote)f(c)m(haracter.)40
+b(The)20 b Fj(quote)p 1751 3474 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
+(haracter)390 3584 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
+(haracter.)3371 3804 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 3914
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
+4023 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
+4133 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(,)42 b(the)c(text)390 4243 y(of)k(the)h(w)m(ord)f(to)g(b)s(e)g
+(dequoted,)j(and)d Fj(quote)p 2014 4243 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
+4352 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
+2368 4352 V 41 w(c)m(har)39 b Ft(is)32 b(zero,)i(the)e(\014lename)g(w)m
+(as)h(not)390 4462 y(in)d(an)g(em)m(b)s(edded)g(string.)3371
+4682 y([V)-8 b(ariable])-3598 b Fh(rl_linebuf_func_t)57
+b(*)c(rl_char_is_quoted_p)390 4792 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
+(sp)s(eci\014c)f(c)m(haracter)390 4902 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
+(the)f(program)390 5011 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
+b Fj(text)p Ft(,)27 b(the)e(text)h(of)f(the)390 5121
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
+(whether)g(a)390 5230 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
+b(b)s(e)h(used)f(to)i(break)390 5340 y(w)m(ords)f(for)g(the)h
+(completer.)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)3371
+299 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
+408 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
+518 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 628 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 737 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 847 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
+1063 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
+(rl_directory_completio)q(n_ho)q(ok)390 1172 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
+1282 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 1392 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
+(directory)h(name\))390 1501 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
+(with)f(a)h(new)390 1611 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
+(directory)i(name)f(should)g(ha)m(v)m(e)i(a)390 1720
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
+(replacing)390 1830 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
+(ev)m(en)g(if)e(no)h(other)390 1940 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
+(haracters)h(from)e(the)390 2049 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
+Fs(opendir\(\))p Ft(.)390 2199 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 2309 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 2419 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371
+2635 y([V)-8 b(ariable])-3598 b Fh(rl_icppfunc_t)56 b(*)d
+(rl_directory_rewrite_h)q(ook;)390 2744 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 2854 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 2963 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
+3073 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 3183 y(serted.)k(It)27 b(is)f(called)h(b)s(efore)f(rl)p
+1463 3183 28 4 v 40 w(directory)p 1859 3183 V 41 w(completion)p
+2333 3183 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 3292 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
+(from)e(the)390 3402 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
+Ft(.)390 3552 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
+3662 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
-1850 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 2052
+3771 y(argumen)m(t)d(if)f(it)h(returns)e(0.)3371 3987
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
+(rl_filename_stat_hook)390 4097 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
+g(b)s(efore)f(deciding)390 4206 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
+(di\014es)f(its)i(\014lename)390 4316 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
+4426 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
+(haracters)390 4535 y(from)30 b(the)g(\014lename.)390
+4686 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
+4795 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 4905 y(returns)e(0.)3371 5121 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
+5230 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
-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
-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
+5340 y(from)25 b(the)h(\014lesystem)f(for)h(completion)g(and)f
+(comparing)h(them)f(to)i(the)e(\014lename)h(p)s(ortion)f(of)h(the)p
+eop end
+%%Page: 58 62
+TeXDict begin 58 61 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(58)390
+299 y(partial)41 b(w)m(ord)e(to)i(b)s(e)e(completed)i(\(after)f(its)h
+(p)s(oten)m(tial)g(mo)s(di\014cation)f(b)m(y)g Fs(rl_completion_)390
+408 y(rewrite_hook)p Ft(\).)52 b(The)35 b(function)g(should)f(p)s
+(erform)g(an)m(y)i(necessary)g(application)g(or)f(system-)390
+518 y(sp)s(eci\014c)45 b(con)m(v)m(ersion)i(on)e(the)h(\014lename,)j
+(suc)m(h)c(as)h(con)m(v)m(erting)h(b)s(et)m(w)m(een)f(c)m(haracter)h
+(sets)f(or)390 628 y(con)m(v)m(erting)33 b(from)e(a)g(\014lesystem)h
+(format)f(to)h(a)g(c)m(haracter)g(input)f(format.)43
+b(The)31 b(function)f(tak)m(es)390 737 y(t)m(w)m(o)e(argumen)m(ts:)38
+b Fj(fname)p Ft(,)28 b(the)e(\014lename)g(to)h(b)s(e)f(con)m(v)m
+(erted,)j(and)c Fj(fnlen)p Ft(,)i(its)f(length)h(in)f(b)m(ytes.)40
+b(It)390 847 y(m)m(ust)33 b(either)h(return)f(its)g(\014rst)g(argumen)m
+(t)h(\(if)g(no)f(con)m(v)m(ersion)i(tak)m(es)g(place\))f(or)g(the)f
+(con)m(v)m(erted)390 956 y(\014lename)d(in)g(newly-allo)s(cated)j
+(memory)-8 b(.)41 b(The)30 b(con)m(v)m(erted)h(form)f(is)g(used)g(to)h
+(compare)g(against)390 1066 y(the)25 b(w)m(ord)f(to)i(b)s(e)e
+(completed,)j(and,)f(if)e(it)h(matc)m(hes,)j(is)d(added)f(to)h(the)g
+(list)g(of)g(matc)m(hes.)40 b(Readline)390 1176 y(will)31
+b(free)f(the)h(allo)s(cated)h(string.)3371 1358 y([V)-8
+b(ariable])-3598 b Fh(rl_dequote_func_t)57 b(*)c
+(rl_completion_rewrite_)q(hoo)q(k)390 1468 y Ft(If)38
+b(non-zero,)i(this)e(is)g(the)h(address)e(of)h(a)h(function)e(to)i
+(call)g(b)s(efore)f(comparing)g(the)h(\014lename)390
+1577 y(p)s(ortion)e(of)g(a)g(w)m(ord)g(to)g(b)s(e)g(completed)h(with)f
+(directory)g(en)m(tries)h(from)e(the)i(\014lesystem.)60
+b(The)390 1687 y(function)38 b(tak)m(es)i(t)m(w)m(o)g(argumen)m(ts:)57
+b Fj(fname)p Ft(,)41 b(the)d(\014lename)h(to)g(b)s(e)f(con)m(v)m
+(erted,)k(after)d(an)m(y)g Fs(rl_)390 1797 y(filename_dequoting_funct)o
+(ion)27 b Ft(has)34 b(b)s(een)f(applied,)h(and)g Fj(fnlen)p
+Ft(,)g(its)g(length)g(in)f(b)m(ytes.)52 b(It)390 1906
+y(m)m(ust)33 b(either)h(return)f(its)g(\014rst)g(argumen)m(t)h(\(if)g
+(no)f(con)m(v)m(ersion)i(tak)m(es)g(place\))f(or)g(the)f(con)m(v)m
+(erted)390 2016 y(\014lename)44 b(in)g(newly-allo)s(cated)i(memory)-8
+b(.)82 b(The)44 b(function)f(should)h(p)s(erform)e(an)m(y)j(necessary)
+390 2125 y(application)29 b(or)e(system-sp)s(eci\014c)h(con)m(v)m
+(ersion)h(on)f(the)f(\014lename,)i(suc)m(h)e(as)h(con)m(v)m(erting)h(b)
+s(et)m(w)m(een)390 2235 y(c)m(haracter)44 b(sets)e(or)g(con)m(v)m
+(erting)i(from)d(a)h(c)m(haracter)i(input)d(format)h(to)h(some)f(other)
+g(format.)390 2345 y(Readline)31 b(compares)g(the)f(con)m(v)m(erted)i
+(form)e(against)h(directory)g(en)m(tries,)g(after)g(their)f(p)s(oten)m
+(tial)390 2454 y(mo)s(di\014cation)41 b(b)m(y)f Fs
+(rl_filename_rewrite_hook)p Ft(,)d(and)j(adds)g(an)m(y)h(matc)m(hes)g
+(to)h(the)f(list)g(of)390 2564 y(matc)m(hes.)h(Readline)31
+b(will)g(free)f(the)h(allo)s(cated)h(string.)3371 2746
+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
+2856 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
+390 2966 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
+(Readline)390 3075 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
+Fj(n)m(um)p 3370 3075 28 4 v 40 w(matc)m(hes)p Ft(,)390
+3185 y Fs(int)26 b Fj(max)p 735 3185 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 3185 V 39 w(matc)m(hes)j
+Ft(is)c(the)390 3294 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 3294 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
+3404 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
+Ft(,)390 3513 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(ma)m(y)f(call)h(that)390 3623 y(function)d(from)g(this)g(ho)s(ok.)
+3371 3806 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 3915 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
+4025 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 4134 y(completion)c(in)e(Bash:)41
+b Fs(")30 b(\\t\\n\\"\\\\'`@$><=;|&{\(")p Ft(.)3371 4317
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
+(rl_basic_quote_charact)q(ers)390 4427 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
+4609 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 4719
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)
+4829 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(.)3371 5011 y([V)-8 b(ariable])-3598 b Fh(rl_cpvfunc_t)56
+b(*)d(rl_completion_word_brea)q(k_ho)q(ok)390 5121 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
+5230 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 5340 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)
-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
+(completion.)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(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 408 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 614 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
+724 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
+b(Completion)390 833 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
+(rl_completer_word_break)o(_)390 943 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
+(they)g(also)h(app)s(ear)e(within)h(this)390 1052 y(list.)3371
+1258 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_filename_quote_char)q(act)q(ers)390 1367 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
+1477 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
+1682 y([V)-8 b(ariable])-3598 b Fh(const)54 b(char)f(*)g
+(rl_special_prefixes)390 1792 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
+(left)i(in)e Fj(text)k Ft(when)390 1902 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.)
+g(help)f(determine)h(what)390 2011 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)
+2121 y(complete)j(shell)e(v)-5 b(ariables)31 b(and)f(hostnames.)3371
+2326 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_query_i)q
+(tems)390 2436 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
+(ossible-completions)h(call.)390 2545 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
+(displa)m(ying)i(them.)82 b(The)390 2655 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
+(for)390 2765 y(con\014rmation.)3371 2970 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
+3080 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
+3189 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
+(haracter)390 3299 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
+(ything)g(b)s(eing)f(app)s(ended)f(auto-)390 3408 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
+3518 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
+3628 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
+(application-sp)s(eci\014c)390 3737 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
+g(a)h(function.)3371 3943 y([V)-8 b(ariable])-3598 b
+Fh(int)53 b(rl_completion_suppres)q(s_ap)q(pen)q(d)390
+4052 y Ft(If)33 b(non-zero,)i Fj(rl)p 949 4052 28 4 v
+39 w(completion)p 1421 4052 V 42 w(app)s(end)p 1755 4052
+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 4162 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 4271
y(completion)32 b(function)e(is)g(called,)i(and)e(ma)m(y)h(only)f(b)s
(e)g(c)m(hanged)h(within)f(suc)m(h)g(a)h(function.)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
+4477 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_quote_c)q
+(hara)q(cte)q(r)390 4587 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
+(haracters)g(in)390 4696 y Fj(rl)p 457 4696 V 40 w(completer)p
+885 4696 V 41 w(quote)p 1145 4696 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
+(c)m(haracter)i(found.)390 4806 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
+3371 5011 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_suppres)
+q(s_qu)q(ote)390 5121 y Ft(If)32 b(non-zero,)h(Readline)g(do)s(es)f
(not)h(app)s(end)d(a)j(matc)m(hing)g(quote)g(c)m(haracter)h(when)d(p)s
-(erforming)390 1614 y(completion)25 b(on)e(a)h(quoted)g(string.)38
+(erforming)390 5230 y(completion)25 b(on)e(a)h(quoted)g(string.)38
b(It)24 b(is)f(set)h(to)h(0)f(b)s(efore)f(an)m(y)h(application-sp)s
-(eci\014c)h(completion)390 1724 y(function)30 b(is)g(called,)i(and)e
+(eci\014c)h(completion)390 5340 y(function)30 b(is)g(called,)i(and)e
(ma)m(y)h(only)g(b)s(e)e(c)m(hanged)i(within)f(suc)m(h)g(a)h(function.)
-3371 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
+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_completion_found_q)q
+(uote)390 408 y Ft(When)31 b(Readline)i(is)e(completing)i(quoted)f
(text,)h(it)f(sets)g(this)g(v)-5 b(ariable)32 b(to)h(a)f(non-zero)g(v)
--5 b(alue)32 b(if)390 2162 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h
+-5 b(alue)32 b(if)390 518 y(the)21 b(w)m(ord)g(b)s(eing)g(completed)h
(con)m(tains)g(or)f(is)g(delimited)h(b)m(y)f(an)m(y)g(quoting)h(c)m
-(haracters,)i(including)390 2271 y(bac)m(kslashes.)42
+(haracters,)i(including)390 628 y(bac)m(kslashes.)42
b(This)29 b(is)i(set)g(b)s(efore)f(an)m(y)g(application-sp)s(eci\014c)i
-(completion)g(function)e(is)g(called.)3371 2491 y([V)-8
+(completion)g(function)e(is)g(called.)3371 800 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
+(irs)390 909 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
+(links)390 1019 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
+Fj(mark-directories)k Ft(v)-5 b(ariable.)390 1129 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
+1238 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(v)-5 b(ariable\))390 1348 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
+(preference)g(b)s(efore)g(an)m(y)h(application-)390 1457
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
+b(alue,)33 b(the)390 1567 y(user's)d(preferences)g(are)h(honored.)3371
+1739 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_ignore_completion_)q
+(dupl)q(ica)q(tes)390 1849 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(default)i(is)f(1.)3371 2021 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)
+2131 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
+b(This)390 2240 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
+(within)e(an)390 2350 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(alue)40 b(b)m(y)f(suc)m(h)h(a)390 2459 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
+(Readline)h(attempts)g(to)g(quote)g(com-)390 2569 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
+Fs(rl_filename_quote_chara)o(cter)o(s)390 2679 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
+(non-zero)g(v)-5 b(alue.)3371 2851 y([V)d(ariable])-3598
+b Fh(int)53 b(rl_filename_quoting_d)q(esir)q(ed)390 2960
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
+3070 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
+3180 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(when)f(comple-)390 3289 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
+(completion)390 3399 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
-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
-y(of)31 b Fs(rl_ignore_completion_du)o(pli)o(cate)o(s)p
+(to)g(b)m(y)g Fs(rl_filename_)390 3508 y(quoting_function)p
+Ft(.)3371 3680 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_full_quoting_desir)q(ed)390 3790 y Ft(Non-zero)45
+b(means)e(that)h(Readline)h(should)d(apply)h(\014lename-st)m(yle)j
+(quoting,)h(including)d(an)m(y)390 3900 y(application-sp)s(eci\014ed)d
+(quoting)g(mec)m(hanism,)i(to)e(all)g(completion)g(matc)m(hes)h(ev)m
+(en)f(if)f(w)m(e)h(are)390 4009 y(not)35 b(otherwise)h(treating)h(the)e
+(matc)m(hes)i(as)e(\014lenames.)55 b(This)35 b(is)g Fk(always)45
+b Ft(zero)36 b(when)e(comple-)390 4119 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 4228 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 4338 y(quoting_function)
+p Ft(.)3371 4510 y([V)-8 b(ariable])-3598 b Fh(int)53
+b(rl_attempted_completi)q(on_o)q(ver)390 4620 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 4729 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 4839 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 4949 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 5121 y([V)-8
+b(ariable])-3598 b Fh(int)53 b(rl_sort_completion_ma)q(tche)q(s)390
+5230 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 5340 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)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
+299 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 408 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
+(hes.)3371 593 y([V)-8 b(ariable])-3598 b Fh(int)53 b
+(rl_completion_type)390 702 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
+(curren)m(tly)h(attempt-)390 812 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 922 y(F)-8 b(unctions],)39 b(page)f(55\))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 1031 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
+(allo)m(wing)f(suc)m(h)e(functions)390 1141 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
+1325 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_completion_invokin)q
+(g_ke)q(y)390 1435 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 1544 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
+(appropriate)f(v)-5 b(alue)390 1654 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
+1838 y([V)-8 b(ariable])-3598 b Fh(int)53 b(rl_inhibit_completion)390
+1948 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
+(will)f(b)s(e)390 2057 y(inserted)h(as)h(an)m(y)g(other)f(b)s(ound)e
+(to)k Fs(self-insert)p Ft(.)150 2257 y Fi(2.6.4)63 b(A)40
+b(Short)i(Completion)g(Example)150 2403 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
+2513 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
+150 2623 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
+%%Page: 62 66
+TeXDict begin 62 65 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(62)390
299 y Fe(/*)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 +11166,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: 63 67
+TeXDict begin 63 66 bop 150 -116 a Ft(Chapter)30 b(2:)41
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(63)390
299 y Fe(})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,235 +11184,231 @@ 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
-("\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
-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
+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: 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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(64)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
+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 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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(65)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: 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
+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: 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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(67)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: 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
+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: 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
+b(Programming)30 b(with)g(GNU)h(Readline)1683 b(69)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: 70 74
TeXDict begin 70 73 bop 3659 -116 a Ft(70)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
@@ -11956,7 +12045,7 @@ eop end
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
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(54)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
@@ -11992,21 +12081,21 @@ TeXDict begin 79 82 bop 3659 -116 a Ft(79)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(45)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(45)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(45)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(45)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(45)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(45)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
@@ -12089,173 +12178,174 @@ b(\(\))9 b Fa(:)k(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
g(:)26 b Fb(22)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(:)
+941 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(20)2025 1031 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(23)2025 1121 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(21)2025
+1210 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(22)2025 1300 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
+1390 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 1480
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(20)2025 1570 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
+1659 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(25)2025 1747 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(24)2021 2046 y Fr(E)2025 2170 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 2260 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
+2350 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(25)2025 2440 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
+(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(7)2025 2530 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
+b Fb(7)2025 2619 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
+2709 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
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23 b Fb(8)2025 2799 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
+b Fb(23)2025 2889 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
+(:)g(:)g(:)37 b Fb(19)2025 2979 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
+3068 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)
+g(:)g(:)g(:)34 b Fb(17)2025 3158 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 Fb(24)2025 3248 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(25)2025 3335 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 3633 y Fr(F)2025 3757 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 3847 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
+b Fb(20)2025 3936 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(17)2025 3751 y Fe(forward-search-history)f
+h(:)f(:)g(:)g(:)g(:)31 b Fb(17)2025 4026 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
+(:)g(:)g(:)23 b Fb(18)2025 4113 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
+b Fb(17)2021 4403 y Fr(H)2025 4527 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(:)
+4617 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(18)2025 4706 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(18)2025 4796 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
+g(:)37 b Fb(8)2025 4886 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
+4976 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
+5063 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
+g(:)g(:)h(:)25 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
+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(8)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(24)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(22)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(8)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(21)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(21)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(21)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(21)146 1683 y Fr(M)150 1804 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(:)
+1892 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 Fb(9)150 1981 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 Fb(9)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(23)150
-1600 y Fe(menu-complete-backward)31 b(\(\))16 b Fa(:)d(:)g(:)g(:)g(:)g
+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(23)150 1692 y(men)n(u-complete-displa)n(y-pre\014x)10
+b Fb(23)150 2247 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
+h(:)f(:)g(:)25 b Fb(9)150 2334 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
+h(:)f(:)g(:)36 b Fb(8)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(18)150 2329 y Fe(next-screen-line)e(\(\))14 b Fa(:)g(:)f(:)g(:)g
+b Fb(18)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(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(:)h(:)f(:)g(:)28 b Fb(17)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(18)150 2576 y Fe(non-incremental-reverse-)227 2663
+b Fb(18)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(18)146 3004 y Fr(O)150 3133 y Fe(operate-and-get-next)30
+b Fb(18)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(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
+(:)g(:)g(:)g(:)h(:)27 b Fb(19)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(:)33 b Fb(21)146
-3633 y Fr(P)150 3762 y Fb(page-completions)6 b Fa(:)15
+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 3853 y Fe(possible-completions)30 b(\(M-?\))13
+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(22)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(23)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(18)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(17)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(23)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
b(\(C-x)e(C-r\))17 b Fa(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
@@ -12274,7 +12364,7 @@ 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
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(46)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
@@ -12282,7 +12372,7 @@ 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
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(40)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
@@ -12293,70 +12383,69 @@ Fe(rl_bind_key)10 b Fa(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(36)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(37)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(37)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(37)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
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
(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(38)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
(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
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(47)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(:)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(47)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(53)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
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(46)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(41)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
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
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
-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
-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
-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(:)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
-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
-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
-(:)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
+(:)g(:)g(:)g(:)g(:)34 b Fb(40)2025 3119 y Fe(rl_complete)17
+b Fa(:)e(:)e(:)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(:)31
+b Fb(54,)c(55)2025 3206 y Fe(rl_complete_internal)f 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(55)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(:)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 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 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(42)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(41)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(46)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(42)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
3992 y Fe(rl_ding)e Fa(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
@@ -12369,14 +12458,14 @@ 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
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(40)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(53)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(36)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(40)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
@@ -12392,7 +12481,7 @@ 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(:)
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(44)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
@@ -12402,9 +12491,9 @@ 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
(:)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(40)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(39)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
@@ -12414,9 +12503,9 @@ g(:)23 b Fb(38)150 702 y Fe(rl_funmap_names)17 b Fa(:)g(:)c(:)g(:)g(:)g
f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(39)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(38)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(36)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
@@ -12426,7 +12515,7 @@ 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
(:)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(46)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
@@ -12437,19 +12526,19 @@ 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
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(42)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
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(39)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
(:)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(42)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(39)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
Fe(rl_macro_dumper)17 b Fa(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
@@ -12464,7 +12553,7 @@ 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
(:)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(41)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)
@@ -12477,163 +12566,168 @@ 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(:)21 b Fb(40)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(38)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
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
(:)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(43)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
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(39)150
+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(42)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(38)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(42)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(40)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(46)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(53)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(40)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(53)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(44)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(53)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
+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(44)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(41)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(44)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(37)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(43)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(36)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(36)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(45)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(41)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(53)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(53)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(43)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(41)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(42)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(43)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(38)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(43)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(43)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(43)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(37)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(37)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(37)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(37)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(56)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(45)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
+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(45)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(10)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(20)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(24)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(10)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(10)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(10)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(10)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(24)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(23)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(:)
+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(24)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(20)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(20)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
+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(22)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(21)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(21)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(21)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
+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(25)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(:)
+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
diff --git a/doc/readline_3.ps b/doc/readline_3.ps
index 91d94ef..67c4c35 100644
--- a/doc/readline_3.ps
+++ b/doc/readline_3.ps
@@ -1,11 +1,12 @@
%!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: Fri Apr 5 09:11:47 2024
+%%DocumentNeededResources: font Times-Italic
+%%+ font Times-Roman
%%+ font Times-Bold
-%%+ font Times-Italic
%%+ font Courier
-%%DocumentSuppliedResources: procset grops 1.22 4
+%%+ font Courier-Bold
+%%DocumentSuppliedResources: procset grops 1.23 0
%%Pages: 17
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
@@ -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,1577 @@ 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
+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\2552024 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 .088
+(will read a line from the terminal and return it, using)2.588 F F3(pr)
+2.587 E(ompt)-.18 E F1 .087(as a prompt.)2.587 F(If)5.087 E F3(pr)2.587
+E(ompt)-.18 E F1(is)2.587 E F3(NULL)2.587 E F1(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
+(The line returned is allocated with)5.399 F F0(malloc)3.28 E F1 .4
+(\(3\); the caller must free it).31 F .262(when \214nished.)108 259.2 R
+.261(The line returned has the \214nal ne)5.262 F .261(wline remo)-.25 F
+-.15(ve)-.15 G .261(d, so only the te).15 F .261
+(xt of the line remains.)-.15 F(Since)5.261 E(it')108 271.2 Q 3.55(sp)
+-.55 G 1.05(ossible to enter characters into the line while quoting the\
+m to disable an)-3.55 F(y)-.15 E F3 -.18(re)3.55 G(adline).18 E F1 1.05
+(editing function)3.55 F(the)108 283.2 Q 2.5(ym)-.15 G(ight normally ha)
+-2.5 E -.15(ve)-.2 G 2.5(,t).15 G(his line may include embedded ne)-2.5
+E(wlines and other special characters.)-.25 E F3 -.18(re)108 300 S
+(adline).18 E F1(of)3.79 E 1.29
(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
+(mands are similar to those of emacs.)108 312 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
+(This manual page describes only the most basic use of)108 328.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 .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.)
+F F0(The GNU Readline Libr)108 340.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 357.6 Q(ALUE)-1.478 E F3 -.18(re)108 369.6 S
+(adline).18 E F1 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
+F(If)6.089 E F3(EOF)3.589 E F1 1.089(is encountered)3.589 F .283
+(while reading a line, and the line is empty)108 381.6 R(,)-.65 E F3
+(NULL)2.783 E F1 .283(is returned.)2.783 F .283(If an)5.283 F F3(EOF)
+2.783 E F1 .283(is read with a non\255empty line, it)2.783 F
+(is treated as a ne)108 393.6 Q(wline.)-.25 E F2(NO)72 410.4 Q -.986(TA)
+-.438 G(TION)-.054 E F1 .077
+(An Emacs-style notation is used to denote k)108 422.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
+(ys are denoted by C\255)-.05 F F0 -.1(ke)C(y)-.2 E F1 2.576(,e)C .076
+(.g., C\255n means)-2.576 F 2.582(Control\255N. Similarly)108 434.4 R(,)
+-.65 E F0(meta)2.962 E F1 -.1(ke)2.842 G .082(ys are denoted by M\255)
+-.05 F F0 -.1(ke)C(y)-.2 E F1 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
+(boards without a).15 F F0(meta)108.38 446.4 Q F1 -.1(ke)3.472 G 2.012
+-.65(y, M)-.05 H<ad>.65 E F0(x)A F1 .712(means ESC)3.212 F F0(x)3.212 E
+F1 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 F0(x)3.981 E F1 -.1(ke)3.741 G 4.511 -.65(y. T)-.05
+H .711(his mak).65 F .711(es ESC the)-.1 F F0 .711(meta pr)3.211 F
+(e\214x)-.37 E F1(.)A .48(The combination M\255C\255)108 458.4 R F0(x)A
+F1 .48(means ESC\255Control\255)2.98 F F0(x)A F1 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)
+(pressing the)108 470.4 Q F0(x)3.27 E F1 -.1(ke)3.03 G -.65(y.)-.05 G
+(\)).65 E .596(Readline commands may be gi)108 487.2 R -.15(ve)-.25 G
+3.096(nn).15 G(umeric)-3.096 E F0(ar)3.426 E(guments)-.37 E F1 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
+5.595 E(ho)108 499.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
(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
+(ument to a command that).18 F 1.019(acts in the forw)108 511.2 R 1.018
+(ard direction \(e.g.,)-.1 F F3(kill\255line)3.518 E F1 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
+(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 523.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
+-.25 E -.65(w.)-.25 G .811(When a command is described as)108 540 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 .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
+(or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F0
+(yank-)-3.312 E(ing)108 552 Q F1 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 F0
+.029(kill ring)B F1 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
+-.15 F .567(which can be yank)108 564 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\
+108 576 Q F2(INITIALIZA)72 592.8 Q(TION FILE)-1.04 E F1 .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
+604.8 R F0(inputr)2.591 E(c)-.37 E F1 2.591(\214le\). The)2.591 F .091
+(name of this \214le)2.591 F .007(is tak)108 616.8 R .007(en from the v)
+-.1 F .007(alue of the)-.25 F F3(INPUTRC)2.507 E F1(en)2.507 E .007
+(vironment v)-.4 F 2.507(ariable. If)-.25 F .007(that v)2.507 F .007
+(ariable is unset, the def)-.25 F .008(ault is)-.1 F F0(\001/.in-)2.608
+E(putr)108 628.8 Q(c)-.37 E F1 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)
+(xist or cannot be read, the ultimate def)-.15 F .904(ault is)-.1 F F0
+(/etc/inputr)4.554 E(c)-.37 E F1 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
+le is read, and the k)108 640.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
+(There are only a fe)108 652.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
+-.15 E .553(ning with a)108 664.8 R F3(#)3.053 E F1 .554(are comments.)
+3.053 F .554(Lines be)5.554 F .554(ginning with a)-.15 F F3($)3.054 E F1
.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
+5.554 F -.1(ke)108 676.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
+(wn commands and bind-)-.25 F(ings.)108 688.8 Q -.15(Fo)108 705.6 S 2.5
+(re).15 G(xample, placing)-2.65 E(M\255Control\255u: uni)144 722.4 Q
+-.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(GNU Readline 8.3)72 768 Q
+(2024 March 29)128.74 E(1)198.45 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
+/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(or)108 84 Q(C\255Meta\255u: uni)144 96 Q -.15(ve)-.25 G
+(rsal\255ar).15 E(gument)-.18 E(into the)108 112.8 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 readline command).15 E F0(univer)2.58 E
+(sal\255ar)-.1 E(gument)-.37 E F1(.).68 E 1.153(The follo)108 129.6 R
+1.154(wing symbolic character names are recognized while processing k)
+-.25 F 1.454 -.15(ey b)-.1 H(indings:).15 E F0(DEL)4.234 E F1(,).53 E F0
+(ESC)4.164 E F1(,).72 E F0(ES-)4.164 E(CAPE)108 141.6 Q F1(,).73 E F0
+(LFD)3.08 E F1(,).28 E F0(NEWLINE)3.2 E 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(,)1.27 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 .209
+(In addition to command names, readline allo)108 158.4 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
+-.1 H(s).15 E(pressed \(a)108 170.4 Q F0(macr)2.5 E(o)-.45 E F1(\).)A/F2
+10/Times-Bold@0 SF -.25(Ke)87 187.2 S 2.5(yB).25 G(indings)-2.5 E F1
+.366(The syntax for controlling k)108 199.2 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)
+5.366 F .264(command or the te)108 211.2 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
+223.2 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 F0(Meta\255)2.638 E F1(or)
+2.638 E F0(Contr)2.638 E(ol\255)-.45 E F1(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
+108 235.2 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
+247.2 Q .361(When using the form)108 264 R F2 -.1(ke)2.861 G(yname).1 E
+F1(:)A F0(function-name).833 E F1(or)2.861 E F0(macr)2.861 E(o)-.45 E F1
+(,)A F0 -.1(ke)2.861 G(yname)-.2 E F1 .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 276 R
+(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF
+(Control-u: universal\255argument)144 292.8 Q
+(Meta-Rubout: backward\255kill\255word)144 304.8 Q
+(Control-o: "> output")144 316.8 Q F1 .148(In the abo)108 333.6 R .448
+-.15(ve ex)-.15 H(ample,).15 E F0(C\255u)2.488 E F1 .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 F1(,)A F0(M-DEL)3.327 E F1 .147
+(is bound to the function)3.177 F F2(backward\255kill\255w)108 345.6 Q
+(ord)-.1 E F1 3.005(,a)C(nd)-3.005 E F0(C\255o)2.845 E F1 .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
+108 357.6 Q(xt \231> output\232 into the line\).)-.15 E .056
+(In the second form,)108 374.4 R F2("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
+F2 -.1(ke)2.556 G(yseq).1 E F1(dif)2.555 E .055(fers from)-.25 F F2 -.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 386.4 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 .386(GNU Emacs style k)108
+398.4 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 410.4 Q
+F3("\\C\255u": universal\255argument)144 427.2 Q
+("\\C\255x\\C\255r": re\255read\255init\255file)144 439.2 Q
+("\\e[11\001": "Function Key 1")144 451.2 Q F1 .198(In this e)108 468 R
+(xample,)-.15 E F0(C-u)2.538 E F1 .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 F1(.)A F0 .199(C-x C-r)5.039 F F1 .199
+(is bound to the function)3.429 F F2 -.18(re)108 480 S<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 496.8 Q -.25(va)
+-.2 G(ilable when specifying k).25 E .3 -.15(ey s)-.1 H(equences is).15
+E F2<5c43ad>144 508.8 Q F1(control pre\214x)180 508.8 Q F2<5c4dad>144
+520.8 Q F1(meta pre\214x)180 520.8 Q F2(\\e)144 532.8 Q F1
+(an escape character)180 532.8 Q F2(\\\\)144 544.8 Q F1(backslash)180
+544.8 Q F2(\\")144 556.8 Q F1(literal ", a double quote)180 556.8 Q F2
+<5c08>144 568.8 Q F1(literal \010, a single quote)180 568.8 Q(In additi\
+on to the GNU Emacs style escape sequences, a second set of backslash e\
+scapes is a)108 585.6 Q -.25(va)-.2 G(ilable:).25 E F2(\\a)144 597.6 Q
+F1(alert \(bell\))180 597.6 Q F2(\\b)144 609.6 Q F1(backspace)180 609.6
+Q F2(\\d)144 621.6 Q F1(delete)180 621.6 Q F2(\\f)144 633.6 Q F1
+(form feed)180 633.6 Q F2(\\n)144 645.6 Q F1(ne)180 645.6 Q(wline)-.25 E
+F2(\\r)144 657.6 Q F1(carriage return)180 657.6 Q F2(\\t)144 669.6 Q F1
+(horizontal tab)180 669.6 Q F2(\\v)144 681.6 Q F1 -.15(ve)180 681.6 S
+(rtical tab).15 E F2(\\)144 693.6 Q F0(nnn)A F1
+(the eight-bit character whose v)180 693.6 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
+705.6 Q F0(HH)A F1(the eight-bit character whose v)180 705.6 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 .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
-EP
+(When entering the te)108 722.4 R .74(xt of a macro, single or double q\
+uotes should be used to indicate a macro de\214nition.)-.15 F
+(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(2)198.45 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
+/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 .089(Unquoted te)108 84 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(are e)108 96 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 \010.)-.15 E/F2 10/Times-Bold@0 SF(Bash)108 112.8 Q
+F1(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 F2(bind)2.929
+E F1 -.2(bu)2.929 G .429(iltin command.).2 F 1.095
+(The editing mode may be switched during interacti)108 124.8 R 1.395
+-.15(ve u)-.25 H 1.095(se by using the).15 F F2<ad6f>3.595 E F1 1.095
+(option to the)3.595 F F2(set)3.595 E F1 -.2(bu)3.595 G 1.095
+(iltin com-).2 F 3.076(mand. Other)108 136.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
+-.15 F(The)5.575 E F0(inputr)3.085 E(c)-.37 E F1 .575
+(\214le may be edited and)3.385 F(re-read if a program does not pro)108
+148.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 F2 -.92(Va)87 165.6 S(riables).92 E F1
+.043(Readline has v)108 177.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
+E 5.043(.A)-.55 G -.25(va)-2.5 G .043(riable may be set in the).25 F F0
+(inpu-)2.554 E(tr)108 189.6 Q(c)-.37 E F1
+(\214le with a statement of the form)2.81 E F2(set)144 206.4 Q F0
+(variable\255name value)2.5 E F1 .79(Except where noted, readline v)108
+223.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F
+(alues)-.25 E F2(On)3.29 E F1(or)3.29 E F2(Off)3.29 E F1 .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
+5.79 E .508(nized v)108 235.2 R .508(ariable names are ignored.)-.25 F
+.508(When readline reads a v)5.508 F .508(ariable v)-.25 F .508
+(alue, empty or null v)-.25 F .509(alues, \231on\232 \(case-)-.25 F
+(insensiti)108 247.2 Q -.15(ve)-.25 G .594(\), and \2311\232 are equi)
+.15 F -.25(va)-.25 G .594(lent to).25 F F2(On)3.094 E F1 5.594(.A)C .594
+(ll other v)-5.594 F .593(alues are equi)-.25 F -.25(va)-.25 G .593
+(lent to).25 F F2(Off)3.093 E F1 5.593(.T)C .593(he v)-5.593 F .593
+(ariables and their)-.25 F(def)108 259.2 Q(ault v)-.1 E(alues are:)-.25
+E F2(acti)108 276 Q -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18
+E F1 2.729(As)144 288 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 300 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 312 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 324 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
+(the def)144 336 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
+.655(terminal in standout mode, as obtained from the terminal')144 348 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 360 Q F2
+(acti)108 372 Q -.1(ve)-.1 G<ad72>.1 E(egion\255end\255color)-.18 E F1
+3.777(As)144 384 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 396 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 408 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
+144 420 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
(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 432 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
+erminal')144 444 R 2.751(st)-.55 G .251(erminfo description.)-2.751 F(A)
+5.251 E(sample v)144 456 Q(alue might be \231\\e[0m\232.)-.25 E F2
+(bell\255style \(audible\))108 468 Q F1 .01
+(Controls what happens when readline w)144 480 R .011
+(ants to ring the terminal bell.)-.1 F .011(If set to)5.011 F F2(none)
+2.511 E F1 2.511(,r)C .011(eadline ne)-2.511 F -.15(ve)-.25 G(r).15 E
+.94(rings the bell.)144 492 R .94(If set to)5.94 F F2(visible)3.44 E F1
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
+-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F2(audible)3.44 E F1(,)A
+(readline attempts to ring the terminal')144 504 Q 2.5(sb)-.55 G(ell.)
+-2.5 E F2(bind\255tty\255special\255chars \(On\))108 516 Q F1 .178
+(If set to)144 528 R F2(On)2.678 E F1 .178(\(the def)2.678 F .178
+(ault\), readline attempts to bind the control)-.1 F .178
+(characters that are treated specially)5.178 F 1.196(by the k)144 540 R
+(ernel')-.1 E 3.696(st)-.55 G 1.196(erminal dri)-3.696 F -.15(ve)-.25 G
+3.696(rt).15 G 3.695(ot)-3.696 G 1.195(heir readline equi)-3.695 F -.25
+(va)-.25 G 3.695(lents. These).25 F -.15(ove)3.695 G 1.195
+(rride the def).15 F 1.195(ault readline)-.1 F .306
+(bindings described here.)144 552 R -.8(Ty)5.307 G .307
+(pe \231stty -a\232 at a).8 F F2(bash)2.807 E F1 .307
+(prompt to see your current terminal settings, in-)2.807 F
+(cluding the special control characters \(usually)144 564 Q F2(cchars)
+2.5 E F1(\).)A F2(blink\255matching\255par)108 576 Q(en \(Off\))-.18 E
+F1 .21(If set to)144 588 R F2(On)2.71 E F1 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\
+(parenthesis is inserted.)144 600 Q F2(color)108 612 Q
+(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F1 .515(If set to)
+144 624 R F2(On)3.015 E F1 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)
+(completions using a dif)144 636 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 from the v)-.1 F 2.935(alue of the)-.25 F F2(LS_COLORS)144 648 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 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
+(there is a color de\214nition in)3.077 F F2($LS_COLORS)3.077 E F1 .577
+(for the cus-)3.077 F .07(tom suf)144 660 R .069(\214x \231readline-col\
+ored-completion-pre\214x\232, readline uses this color for the common p\
+re\214x in-)-.25 F(stead of its def)144 672 Q(ault.)-.1 E F2(color)108
+684 Q(ed\255stats \(Off\))-.18 E F1 1.579(If set to)144 696 R F2(On)
+4.079 E F1 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 708 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
+(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(3)198.45 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
+/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(comment\255begin \()108 84 Q F1<99>
+A F2(#)A F1<9a>A F2(\))A F1 1.396(The string that is inserted when the)
+144 96 R F2(insert\255comment)3.896 E F1 1.396(command is e)3.896 F -.15
+(xe)-.15 G 3.896(cuted. This).15 F 1.396(command is)3.896 F(bound to)144
+108 Q F2(M\255#)2.5 E F1(in emacs mode and to)2.5 E F2(#)2.5 E F1
+(in vi command mode.)2.5 E F2(completion\255display\255width \(\2551\))
+108 120 Q F1 1.453(The number of screen columns used to display possibl\
+e matches when performing completion.)144 132 R .194(The v)144 144 R
+.193(alue is ignored if it is less than 0 or greater than the terminal \
+screen width.)-.25 F 2.693(Av)5.193 G .193(alue of 0 will)-2.943 F
+(cause matches to be displayed one per line.)144 156 Q(The def)5 E
+(ault v)-.1 E(alue is \2551.)-.25 E F2(completion\255ignor)108 168 Q
+(e\255case \(Off\))-.18 E F1(If set to)144 180 Q F2(On)2.5 E F1 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
+siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F2
+(completion\255map\255case \(Off\))108 192 Q F1 .093(If set to)144 204 R
+F2(On)2.593 E F1 2.593(,a)C(nd)-2.593 E F2(completion\255ignor)2.593 E
+(e\255case)-.18 E F1 .093(is enabled, readline treats h)2.593 F .093
+(yphens \()-.05 F F0<ad>A F1 2.593(\)a)C .094(nd underscores)-2.593 F
+(\()144 216 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 228 Q
+(e\214x\255display\255length \(0\))-.18 E F1 .829(The length in charact\
+ers of the common pre\214x of a list of possible completions that is di\
+splayed)144 240 R 1.274(without modi\214cation.)144 252 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 264 S(lue are repla\
+ced with an ellipsis when displaying possible completions.).25 E F2
+(completion\255query\255items \(100\))108 276 Q F1 .53
+(This determines when the user is queried about vie)144 288 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
+144 300 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 276 R
+-.15 F .561(alue greater than or)-.25 F .783(equal to zero.)144 312 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
+the v)5.783 F .782(alue of this)-.25 F -.25(va)144 324 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
+(re simply)-2.868 F(listed on the terminal.)144 336 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
+F2(con)108 348 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F1 .613(If set to)
+144 360 R F2(On)3.113 E F1 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
+ghth bit and pre\214xing it with an escape character \(in ef)144 372 R
+1.316(fect, using escape as the)-.25 F F0 .503(meta pr)144 384 R(e\214x)
+-.37 E F1 3.003(\). The)B(def)3.003 E .503(ault is)-.1 F F0(On)3.003 E
+F1 3.003(,b)C .503(ut readline will set it to)-3.203 F F0(Of)3.003 E(f)
+-.18 E F1 .502(if the locale contains eight-bit char)3.003 F(-)-.2 E
+3.049(acters. This)144 396 R -.25(va)3.049 G .549
+(riable is dependent on the).25 F F2(LC_CTYPE)3.049 E F1 .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
+(nd may change if the lo-)-3.049 F(cale is changed.)144 408 Q F2
+(disable\255completion \(Off\))108 420 Q F1 .038(If set to)144 432 R F2
+(On)2.538 E F1 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
+144 444 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F2(self-insert)2.5 E F1
+(.)A F2(echo\255contr)108 456 Q(ol\255characters \(On\))-.18 E F1 1.21
+(When set to)144 468 R F2(On)3.71 E F1 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
+(corresponding to a signal generated from the k)144 480 Q -.15(ey)-.1 G
+(board.).15 E F2(editing\255mode \(emacs\))108 492 Q F1 .142
+(Controls whether readline be)144 504 R .141(gins with a set of k)-.15 F
+.441 -.15(ey b)-.1 H .141(indings similar to).15 F F0(Emacs)2.641 E F1
+(or)2.641 E F0(vi)2.641 E F1(.)A F2(editing\255mode)5.141 E F1
+(can be set to either)144 516 Q F2(emacs)2.5 E F1(or)2.5 E F2(vi)2.5 E
+F1(.)A F2(emacs\255mode\255string \(@\))108 528 Q F1 .517(If the)144 540
+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 516
+(last line of the primary prompt when emacs editing mode is acti)144 552
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
+.621(xpanded lik)-.15 F 3.121(ea)-.1 G -.1(ke)144 564 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
+.84(es and backslash escape sequences is)-.15 F -.2(av)144 576 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
+144 588 Q F2(enable\255acti)108 600 Q -.1(ve)-.1 G<ad72>.1 E
+(egion \(On\))-.18 E F1(The)144 612 Q F0(point)3.245 E F1 .746
+(is the current cursor position, and)3.245 F F0(mark)3.246 E F1 .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)
+(tween the point and mark is referred to as the)144 624 R F0 -.37(re)
+2.844 G(gion)-.03 E F1 5.344(.W)C .344(hen this v)-5.344 F .344
+(ariable is set to)-.25 F F0(On)2.844 E F1 2.844(,r)C .344(eadline al-)
+-2.844 F(lo)144 636 Q .098(ws certain commands to designate the re)-.25
+F .098(gion as)-.15 F F0(active)2.598 E F1 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
+(eadline high-)-2.598 F .971(lights the te)144 648 R .971(xt in the re)
+-.15 F .971(gion using the v)-.15 F .971(alue of the)-.25 F F2(acti)3.47
+E -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18 E F1 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
+(the string that enables the terminal')144 660 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)
+-.15 F(brack)144 672 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\
+-.15 E F2(enable\255brack)108 684 Q(eted\255paste \(On\))-.1 E F1 .841
+(When set to)144 696 R F2(On)3.341 E F1 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
-EP
+treating each character as if it had been read from the k)144 708 R -.15
+(ey)-.1 G(-).15 E 4.486(board. This)144 720 R(pre)4.486 E -.15(ve)-.25 G
+1.986(nts readline from e).15 F -.15(xe)-.15 G 1.986(cuting an).15 F
+4.486(ye)-.15 G 1.986(diting commands bound to k)-4.486 F 2.285 -.15
+(ey s)-.1 H(equences).15 E(GNU Readline 8.3)72 768 Q(2024 March 29)
+128.74 E(4)198.45 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
+/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(appearing in the pasted te)144 84 Q(xt.)-.15 E/F2 10
+/Times-Bold@0 SF(enable\255k)108 96 Q(eypad \(Off\))-.1 E F1 .892
+(When set to)144 108 R F2(On)3.393 E F1 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
+(tems need this to enable the arro)144 120 Q 2.5(wk)-.25 G -.15(ey)-2.6
+G(s.).15 E F2(enable\255meta\255k)108 132 Q(ey \(On\))-.1 E F1 .64
+(When set to)144 144 R F2(On)3.14 E F1 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
+(he terminal claims to support).15 F(when it is called.)144 156 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(su).15 G(sed to send eight-bit characters.)-2.5 E F2
+(expand\255tilde \(Off\))108 168 Q F1(If set to)144 180 Q F2(On)2.5 E F1
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 E(ord completion.)-.1 E F2(history\255pr)108 192 Q(eser)-.18 E -.1
+(ve)-.1 G(\255point \(Off\)).1 E F1 .552(If set to)144 204 R F2(On)3.052
+E F1 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 216 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 228 Q F1 .949(Set the maximum number of history entries sa)144 240 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
+E .482(history entries are deleted and no ne)144 252 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
+(ber of history entries is not limited.)144 264 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
+(If an)5.355 F .82(attempt is made to set)144 276 R F0(history\255size)
+3.32 E F1 .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
+(tries will be set to 500.)144 288 Q F2(horizontal\255scr)108 300 Q
+(oll\255mode \(Off\))-.18 E F1 .449(When set to)144 312 R F2(On)2.949 E
+F1 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 \
+ ne)144 324 R(w)-.25 E 2.5(line. This)144 336 R
+(setting is automatically enabled for terminals of height 1.)2.5 E F2
+(input\255meta \(Off\))108 348 Q F1 .367(If set to)144 360 R F2(On)2.867
+E F1 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
+(acters it reads\), re)144 372 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
+5.956 F F2(meta\255\215ag)3.457 E F1 .957(is a)3.457 F(synon)144 384 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
+(ault is)-.1 F F0(Of)3.27 E(f)-.18 E F1 3.27(,b)C .77
+(ut readline will set it to)-3.47 F F0(On)3.27 E F1 .77
+(if the locale contains)3.27 F 1.866(eight-bit characters.)144 396 R
+1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F2
+(LC_CTYPE)4.367 E F1 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 408 Q F2
+(isear)108 420 Q(ch\255terminators \()-.18 E F1<99>A F2(C\255[C\255J)A
+F1<9a>A F2(\))A F1 .439(The string of characters that should terminate \
+an incremental search without subsequently e)144 432 R -.15(xe)-.15 G
+(cut-).15 E .934(ing the character as a command.)144 444 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 F0(ESC)3.435 E F1
+(and)144 456 Q F0(C\255J)2.5 E F1(will terminate an incremental search.)
+2.5 E F2 -.1(ke)108 468 S(ymap \(emacs\)).1 E F1 2.323
+(Set the current readline k)144 480 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 F0 2.323(emacs, emacs-standar)4.823 F(d,)-.37 E
+.781(emacs-meta, emacs-ctlx, vi, vi-mo)144 492 R(ve)-.1 E 3.282(,v)-.1 G
+(i-command)-3.282 E F1 3.282(,a)C(nd)-3.282 E F0(vi-insert)3.572 E F1(.)
+.68 E F0(vi)5.782 E F1 .782(is equi)3.282 F -.25(va)-.25 G .782(lent to)
+.25 F F0(vi-command)3.282 E F1(;)A F0(emacs)144 504 Q F1 .683(is equi)
+3.183 F -.25(va)-.25 G .683(lent to).25 F F0(emacs-standar)3.183 E(d)
+-.37 E F1 5.682(.T)C .682(he def)-5.682 F .682(ault v)-.1 F .682
+(alue is)-.25 F F0(emacs)3.372 E F1 5.682(.T).27 G .682(he v)-5.682 F
+.682(alue of)-.25 F F2(editing\255mode)3.182 E F1(also af)144 516 Q
+(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F2 -.1(ke)
+108 528 S(yseq\255timeout \(500\)).1 E F1 .367(Speci\214es the duration)
+144 540 R F0 -.37(re)2.867 G(adline).37 E F1 .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
+-.1 H(equence).15 E .525(\(one that can form a complete k)144 552 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
+.524(dditional in-)-3.024 F .806(put to complete a longer k)144 564 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
+F0 -.37(re)3.307 G(adline).37 E F1(will)3.307 E .907(use the shorter b)
+144 576 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
+.05(1000 means that)144 588 R F0 -.37(re)2.55 G(adline).37 E F1 .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
+(less than or equal to zero, or to a non-numeric v)144 600 R(alue,)-.25
+E F0 -.37(re)2.551 G(adline).37 E F1 .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
+-2.551 E(to decide which k)144 612 Q .3 -.15(ey s)-.1 H
+(equence to complete.).15 E F2(mark\255dir)108 624 Q(ectories \(On\))
+-.18 E F1(If set to)144 636 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 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
+.15 E F2(mark\255modi\214ed\255lines \(Off\))108 648 Q F1(If set to)144
+660 Q F2(On)2.5 E F1 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
+-.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F2
+(*)A F1(\).)A F2(mark\255symlink)108 672 Q(ed\255dir)-.1 E
+(ectories \(Off\))-.18 E F1 .175(If set to)144 684 R F2(On)2.675 E F1
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
-EP
+-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 696
+Q(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F1(\).)A
+(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(5)198.45 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(match\255hidden\255\214les \(On\))
+108 84 Q F1 .013(This v)144 96 R .013(ariable, when set to)-.25 F F2(On)
+2.513 E F1 2.513(,f)C .013
+(orces readline to match \214les whose names be)-2.513 F .013
+(gin with a \231.)-.15 F 5.012<9a28>-.7 G(hidden)-5.012 E .126
+(\214les\) when performing \214lename completion.)144 108 R .127
+(If set to)5.127 F F2(Off)2.627 E F1 2.627(,t)C .127
+(he user must include the leading \231.)-2.627 F 5.127<9a69>-.7 G(n)
+-5.127 E(the \214lename to be completed.)144 120 Q F2
+(menu\255complete\255display\255pr)108 132 Q(e\214x \(Off\))-.18 E F1
+1.586(If set to)144 144 R F2(On)4.086 E F1 4.086(,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 \
+-4.086 F(\(which may be empty\) before c)144 156 Q
+(ycling through the list.)-.15 E F2(output\255meta \(Off\))108 168 Q F1
+.506(If set to)144 180 R F2(On)3.006 E F1 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
+ta-)-3.006 F(pre\214x)144 192 Q .885(ed escape sequence.)-.15 F .884
+(The def)5.884 F .884(ault is)-.1 F F0(Of)3.384 E(f)-.18 E F1 3.384(,b)C
+.884(ut readline will set it to)-3.584 F F0(On)3.384 E F1 .884
+(if the locale contains)3.384 F 1.866(eight-bit characters.)144 204 R
+1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F2
+(LC_CTYPE)4.367 E F1 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 216 Q F2
+(page\255completions \(On\))108 228 Q F1 .809(If set to)144 240 R F2(On)
+3.308 E F1 3.308(,r)C .808(eadline uses an internal)-3.308 F F0(mor)
+3.308 E(e)-.37 E F1(-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\
+(tions at a time.)144 252 Q F2
+(print\255completions\255horizontally \(Off\))108 264 Q F1 .227
+(If set to)144 276 R F2(On)2.727 E F1 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
+-2.727 F(-)-.2 E(der)144 288 Q 2.5(,r)-.4 G(ather than do)-2.5 E
+(wn the screen.)-.25 E F2 -2.29 -.18(re v)108 300 T
+(ert\255all\255at\255newline \(Off\)).08 E F1 .699(If set to)144 312 R
+F2(On)3.199 E F1 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
+-3.199 F F2(accept\255line)3.198 E F1(is)3.198 E -.15(exe)144 324 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
+(vidual undo lists across calls to)-.25 F F2 -.18(re)144 336 S(adline)
+.18 E F1(.)A F2(sear)108 348 Q(ch\255ignor)-.18 E(e\255case \(Off\))-.18
+E F1 .29(If set to)144 360 R F2(On)2.79 E F1 2.79(,r)C .289(eadline per\
+forms incremental and non-incremental history list searches in a case\
+\255in-)-2.79 F(sensiti)144 372 Q .3 -.15(ve f)-.25 H(ashion.).05 E F2
+(sho)108 384 Q(w\255all\255if\255ambiguous \(Off\))-.1 E F1 .303
+(This alters the def)144 396 R .303(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.804(,w)C .304(ords which ha)-2.904 F .604 -.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
-(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
+isted immediately instead of ringing the)144 408 R(bell.)144 420 Q F2
+(sho)108 432 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F1 5.345
+(This alters the def)144 444 R 5.345(ault beha)-.1 F 5.345
+(vior of the completion functions in a f)-.2 F 5.346(ashion similar to)
+-.1 F F2(sho)144 456 Q(w\255all\255if\255ambiguous)-.1 E F1 6.691(.I)C
+4.191(fs)-6.691 G 1.691(et to)-4.191 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.039(without an)144 468 R 3.539
(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
-(dd a string to the be)-3.521 F 1.022
+(ossible partial completion \(the possible completions don')-3.539 F
+3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\
+s to be listed immediately instead of ringing the bell.)144 480 Q F2
+(sho)108 492 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F1 1.022
+(If set to)144 504 R F2(On)3.522 E F1 3.522(,a)C 1.022
+(dd a string to the be)-3.522 F 1.021
(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
-(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
-.518(riable is enabled, this string is displayed immediately before the)
+(command, or vi insertion.)144 516 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 528 Q F1 .094(If set to)144 540 R
+F2(On)2.594 E F1 2.594(,t)C .095(his alters the def)-2.594 F .095
+(ault completion beha)-.1 F .095
+(vior when inserting a single match into the line.)-.2 F(It')144 552 Q
+2.546(so)-.55 G .046(nly acti)-2.546 F .346 -.15(ve w)-.25 H .046
+(hen performing completion in the middle of a w).15 F 2.545(ord. If)-.1
+F .045(enabled, readline does not)2.545 F 1.394(insert characters from \
+the completion that match characters after point in the w)144 564 R
+1.395(ord being com-)-.1 F(pleted, so portions of the w)144 576 Q
+(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F2
+(vi\255cmd\255mode\255string \(\(cmd\)\))108 588 Q F1 .518(If the)144
+600 R F0(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F1 -.25(va)3.018 G
+.517(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
+144 612 R .775 -.15(ve a)-.25 H .476(nd in command mode.).15 F .476
+(The v)5.476 F(alue)-.25 E .33(is e)144 624 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\
+(es and backslash es-)-.15 F .244(cape sequences is a)144 636 R -.25(va)
+-.2 G 2.744(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.744 F
+.245(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
--.25(va)3.017 G .518
+648 Q F2(vi\255ins\255mode\255string \(\(ins\)\))108 660 Q F1 .518
+(If the)144 672 R F0(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F1
+-.25(va)3.018 G .517
(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\
+684 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .187(The v)
+5.186 F .187(alue is)-.25 F -.15(ex)144 696 S .924(panded lik).15 F
+3.424(eak)-.1 G 1.224 -.15(ey b)-3.524 H .924
+(inding, so the standard set of meta- and control pre\214x).15 F .923
+(es and backslash es-)-.15 F .244(cape sequences is a)144 708 R -.25(va)
+-.2 G 2.744(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.744 F
+.245(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
+720 Q(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(6)198.45 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)
+/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(visible\255stats \(Off\))108 84 Q
+F1 .847(If set to)144 96 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 108 Q F2(Conditional Constructs)
+87 124.8 Q F1 .05(Readline implements a f)108 136.8 R .05(acility simil\
+ar in spirit to the conditional compilation features of the C preproces\
+sor)-.1 F .097(which allo)108 148.8 R .097(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 .096
+(There are four parser)5.096 F(directi)108 160.8 Q -.15(ve)-.25 G 2.5
+(su).15 G(sed.)-2.5 E F2($if)108 177.6 Q F1(The)144 177.6 Q F2($if)2.962
+E F1 .462(construct allo)2.962 F .463(ws bindings to be made based on t\
+he editing mode, the terminal being used,)-.25 F .962
+(or the application using readline.)144 189.6 R .961(The te)5.962 F .961
+(xt of the test, after an)-.15 F 3.461(yc)-.15 G .961
+(omparison operator)-3.461 F 3.461(,e)-.4 G .961(xtends to)-3.611 F(the\
+ end of the line; unless otherwise noted, no characters are required to\
+ isolate it.)144 201.6 Q F2(mode)144 218.4 Q F1(The)180 218.4 Q F2
+(mode=)3.711 E F1 1.211(form of the)3.711 F F2($if)3.711 E F1(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
-(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
+(mode. This)180 230.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 .029(set bindings in the)180 242.4 R F0(emacs-standar)2.529 E(d)
+-.37 E F1(and)2.529 E F0(emacs-ctlx)2.529 E F1 -.1(ke)2.529 G .029
+(ymaps only if readline is starting out)-.05 F(in emacs mode.)180 254.4
+Q F2(term)144 271.2 Q F1(The)180 271.2 Q F2(term=)3.197 E F1 .696
+(form may be used to include terminal-speci\214c k)3.197 F .996 -.15
+(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 283.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\
+(wo)3.154 G .654(rd on the right side of).1 F(the)180 295.2 Q F2(=)3.004
+E F1 .504(is tested ag)3.004 F .503(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
+307.2 Q F2<ad>2.5 E F1 5(.T)C(his allo)-5 E(ws)-.25 E F0(sun)2.84 E F1
+(to match both)2.74 E F0(sun)2.84 E F1(and)2.74 E F0(sun\255cmd)2.84 E
+F1 2.5(,f).77 G(or instance.)-2.5 E F2 -.1(ve)144 324 S(rsion).1 E F1
+(The)180 336 Q F2 -.1(ve)3.108 G(rsion).1 E F1 .608
+(test may be used to perform comparisons ag)3.108 F .609
+(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 348 Q F2 -.1
+(ve)2.772 G(rsion).1 E F1 -.15(ex)2.772 G .272
+(pands to the current readline v).15 F 2.771(ersion. The)-.15 F .271
+(set of comparison operators in-)2.771 F(cludes)180 360 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 372 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 .1(tional minor v)180 384 R
+.1(ersion \(e.g.,)-.15 F F2(7.1)2.6 E F1 .1(\). If the minor v)B .101
+(ersion is omitted, it is assumed to be)-.15 F F2(0)2.601 E F1 5.101(.T)
+C(he)-5.101 E .06(operator may be separated from the string)180 396 R F2
+-.1(ve)2.56 G(rsion).1 E F1 .06(and from the v)2.56 F .06
+(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 408 Q F0
+(application)144.33 424.8 Q F1(The)180 436.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 .114(using the readline library sets the)180
+448.8 R F0 .114(application name)2.614 F F1 2.614(,a)C .114
+(nd an initialization \214le can test for a)-2.614 F .5(particular v)180
+460.8 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15
+(ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397
+(ci\214c program.)180 472.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
+(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 484.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 501.6 Q/F4 10/Courier@0 SF(Bash)6 E 6(#Q)180 513.6 S
+(uote the current or previous word)-6 E("\\C-xq": "\\eb\\"\\ef\\"")180
+525.6 Q F3($endif)180 537.6 Q F0(variable)144.29 554.4 Q F1(The)180
+566.4 Q F0(variable)3.776 E F1 1.276(construct pro)3.776 F 1.276
+(vides simple equality tests for readline v)-.15 F 1.277(ariables and v)
+-.25 F(alues.)-.25 E .08(The permitted comparison operators are)180
+578.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 the comparison operat\
+or by whitespace; the operator may be separated from)180 590.4 R .13
+(the v)180 602.4 R .13(alue on the right hand side by whitespace.)-.25 F
+.129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F
+(tested. Boolean v)180 614.4 Q(ariables 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($endif)108 631.2 Q F1(This command, as seen in the pre)
+144 631.2 Q(vious e)-.25 E(xample, terminates an)-.15 E F2($if)2.5 E F1
+(command.)2.5 E F2($else)108 648 Q F1(Commands in this branch of the)144
+648 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($include)108 664.8 Q
+F1 .356(This directi)144 676.8 R .656 -.15(ve t)-.25 H(ak).15 E .356
+(es a single \214lename as an ar)-.1 F .357
(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
-(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
+144 688.8 R(or e)-.15 E(xample, the follo)-.15 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 705.6 Q F0(/etc/inputr)5.833 E(c)-.37 E F1
+(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(7)198.45 E 0 Cg EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E(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)
+/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(SEARCHING)72 84 Q F1 1.004
+(Readline pro)108 96 R 1.003(vides commands for searching through the c\
+ommand history for lines containing a speci\214ed)-.15 F 2.5
+(string. There)108 108 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 124.8 R .697
+(gin before the user has \214nished typing the search string.)-.15 F
+.698(As each character of the)5.698 F .113
+(search string is typed, readline displays the ne)108 136.8 R .112
+(xt entry from the history matching the string typed so f)-.15 F(ar)-.1
+E 5.112(.A)-.55 G(n)-5.112 E .544
+(incremental search requires only as man)108 148.8 R 3.044(yc)-.15 G
+.544(haracters as needed to \214nd the desired history entry)-3.044 F
+5.545(.T)-.65 G 3.045(os)-6.345 G(earch)-3.045 E(backw)108 160.8 Q .181
+(ard in the history for a particular string, type)-.1 F/F3 10
+/Times-Bold@0 SF(C\255r)2.681 E F1 5.181(.T)C(yping)-5.981 E F3(C\255s)
+2.68 E F1 .18(searches forw)2.68 F .18(ard through the history)-.1 F(.)
+-.65 E .354(The characters present in the v)108 172.8 R .354
+(alue of the)-.25 F F3(isear)2.854 E(ch-terminators)-.18 E F1 -.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
+(tal search.)108 184.8 R .6(If that v)5.6 F .6
+(ariable has not been assigned a v)-.25 F .6(alue the)-.25 F F0(Escape)
+3.1 E F1(and)3.1 E F3(C\255J)3.1 E F1 .6(characters will terminate an)
+3.1 F .122(incremental search.)108 196.8 R F3(C\255G)5.122 E F1 .122
+(will abort an incremental search and restore the original line.)2.622 F
+.123(When the search is)5.123 F(terminated, the history entry containin\
+g the search string becomes the current line.)108 208.8 Q 2.407 -.8
+(To \214)108 225.6 T .806
+(nd other matching entries in the history list, type).8 F F3(C\255s)
+3.306 E F1(or)3.306 E F3(C\255r)3.306 E F1 .806(as appropriate.)3.306 F
+.806(This will search back-)5.806 F -.1(wa)108 237.6 S .535(rd or forw)
+.1 F .535(ard in the history for the ne)-.1 F .536
+(xt line matching the search string typed so f)-.15 F(ar)-.1 E 5.536(.A)
+-.55 G .836 -.15(ny o)-5.536 H .536(ther k).15 F .836 -.15(ey s)-.1 H
+(e-).15 E .385
(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
+249.6 R -.15(xe)-.15 G .384(cute that command.).15 F -.15(Fo)5.384 G
+2.884(ri).15 G .384(nstance, a)-2.884 F(ne)108 261.6 Q .337
(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
+-.15(xe)-.15 G .338(cuting the command from the history list.).15 F
+2.998(Am)108 273.6 S -.15(ove)-2.998 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\
+(he last line found the current line, and be)-2.997 F .497(gin edit-)
+-.15 F(ing.)108 285.6 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
+302.4 R(The search string may be typed by the user or be part of the co\
+ntents of the current line.)108 314.4 Q F2(EDITING COMMANDS)72 331.2 Q
+F1 1.392(The follo)108 343.2 R 1.391
(wing is a list of the names of the commands and the def)-.25 F 1.391
(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
-3.892(ya)-.15 G(re)-3.892 E 2.5(bound. Command)108 278.4 R
+3.891(ya)-.15 G(re)-3.891 E 2.5(bound. Command)108 355.2 R
(names without an accompan)2.5 E(ying k)-.15 E .3 -.15(ey s)-.1 H
-(equence are unbound by def).15 E(ault.)-.1 E .055(In the follo)108
-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
+(equence are unbound by def).15 E(ault.)-.1 E .054(In the follo)108 372
+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 384 Q -.15(ve)-.2 G 2.5
+(db).15 G 2.5(yt)-2.5 G(he)-2.5 E F3(set\255mark)2.5 E F1 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
+(xt between the point and mark is referred to as the)-.15 E F0 -.37(re)
+2.5 G(gion)-.03 E F1(.)A F3(Commands f)87 400.8 Q(or Mo)-.25 E(ving)-.1
+E(beginning\255of\255line \(C\255a\))108 412.8 Q F1(Mo)144 424.8 Q .3
+-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F3
+(end\255of\255line \(C\255e\))108 436.8 Q F1(Mo)144 448.8 Q .3 -.15
+(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F3 -.25(fo)108
+460.8 S(rward\255char \(C\255f\)).25 E F1(Mo)144 472.8 Q .3 -.15(ve f)
+-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F3
+(backward\255char \(C\255b\))108 484.8 Q F1(Mo)144 496.8 Q .3 -.15(ve b)
+-.15 H(ack a character).15 E(.)-.55 E F3 -.25(fo)108 508.8 S(rward\255w)
+.25 E(ord \(M\255f\))-.1 E F1(Mo)144 520.8 Q .823 -.15(ve f)-.15 H(orw)
+.15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W)
+-.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F
+(ters and digits\).)144 532.8 Q F3(backward\255w)108 544.8 Q
+(ord \(M\255b\))-.1 E F1(Mo)144 556.8 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
-(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\
+(characters \(letters and digits\).)144 568.8 Q F3(pr)108 580.8 Q -.15
+(ev)-.18 G(ious\255scr).15 E(een\255line)-.18 E F1 .891(Attempt to mo)
+144 592.8 R 1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891
+(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89
+(ysical screen line.)-.05 F 1.055(This will not ha)144 604.8 R 1.355
+-.15(ve t)-.2 H 1.055(he desired ef).15 F 1.056
+(fect if the current readline line does not tak)-.25 F 3.556(eu)-.1 G
+3.556(pm)-3.556 G 1.056(ore than one)-3.556 F(ph)144 616.8 Q(ysical lin\
+e or if point is not greater than the length of the prompt plus the scr\
+een width.)-.05 E F3(next\255scr)108 628.8 Q(een\255line)-.18 E F1 .638
+(Attempt to mo)144 640.8 R .938 -.15(ve p)-.15 H .638
+(oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F
+.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .194(will not ha)
+144 652.8 R .494 -.15(ve t)-.2 H .194(he desired ef).15 F .194
+(fect if the current readline line does not tak)-.25 F 2.695(eu)-.1 G
+2.695(pm)-2.695 G .195(ore than one ph)-2.695 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
+length of the prompt plus the)144 664.8 R(screen width.)144 676.8 Q F3
+(clear\255display \(M\255C\255l\))108 688.8 Q F1 1.498
+(Clear the screen and, if possible, the terminal')144 700.8 R 3.999(ss)
+-.55 G 1.499(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.999(,t)-.4 G
+1.499(hen redra)-3.999 F 3.999(wt)-.15 G 1.499(he current line,)-3.999 F
+(lea)144 712.8 Q(ving the current line at the top of the screen.)-.2 E
+(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(8)198.45 E 0 Cg EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(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
+/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(clear\255scr)108 84 Q
+(een \(C\255l\))-.18 E F1 1.36(Clear the screen, then redra)144 96 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 108 S
+(th an ar).4 E
+(gument, refresh the current line without clearing the screen.)-.18 E F2
+-.18(re)108 120 S(draw\255curr).18 E(ent\255line)-.18 E F1
+(Refresh the current line.)144 132 Q F2(Commands f)87 148.8 Q
+(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108
+160.8 Q(n\))-.15 E F1 .364(Accept the line re)144 172.8 R -.05(ga)-.15 G
+.364(rdless of where the cursor is.).05 F .364
+(If this line is non-empty)5.364 F 2.864(,i)-.65 G 2.864(tm)-2.864 G
+.365(ay be added to the)-2.864 F .741
+(history list for future recall with)144 184.8 R F2(add_history\(\))
+3.241 E F1 5.741(.I)C 3.241(ft)-5.741 G .74
(he line is a modi\214ed history line, the history)-3.241 F
-(line is restored to its original state.)144 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
-(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
-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.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
-(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
-(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)
--.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\).)
--.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
+(line is restored to its original state.)144 196.8 Q F2(pr)108 208.8 Q
+-.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F1(Fetch the pre)144
+220.8 Q(vious command from the history list, mo)-.25 E
+(ving back in the list.)-.15 E F2(next\255history \(C\255n\))108 232.8 Q
+F1(Fetch the ne)144 244.8 Q(xt command from the history list, mo)-.15 E
+(ving forw)-.15 E(ard in the list.)-.1 E F2
+(beginning\255of\255history \(M\255<\))108 256.8 Q F1(Mo)144 268.8 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 280.8 Q F1(Mo)144 292.8 Q
+.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
+(,i)-.65 G(.e., the line currently being entered.)-2.5 E F2
+(operate\255and\255get\255next \(C\255o\))108 304.8 Q F1 .733(Accept th\
+e current line for return to the calling application as if a ne)144
+316.8 R .733(wline had been entered, and)-.25 F .368(fetch the ne)144
+328.8 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 .367(gument, if)-.18 F(supplied, speci\
+\214es the history entry to use instead of the current line.)144 340.8 Q
+F2(fetch\255history)108 352.8 Q F1 -.4(Wi)144 364.8 S .256
+(th a numeric ar).4 F .256
+(gument, fetch that entry from the history list and mak)-.18 F 2.757(ei)
+-.1 G 2.757(tt)-2.757 G .257(he current line.)-2.757 F -.4(Wi)5.257 G
+(th-).4 E(out an ar)144 376.8 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 388.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F1 1.313
+(Search backw)144 400.8 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(This is an incremental search.)144 412.8 Q F2 -.25(fo)108 424.8 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F1 .972
+(Search forw)144 436.8 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
+(This is an incremental search.)144 448.8 Q F2(non\255incr)108 460.8 Q
+(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H(rse\255sear).15 E
+(ch\255history \(M\255p\))-.18 E F1 .165(Search backw)144 472.8 R .164(\
+ard through the history starting at the current line using a non-increm\
+ental search for)-.1 F 2.5(as)144 484.8 S(tring supplied by the user)
+-2.5 E(.)-.55 E F2(non\255incr)108 496.8 Q(emental\255f)-.18 E
+(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 E F1 1.353
+(Search forw)144 508.8 R 1.354(ard through the history using a non-incr\
+emental search for a string supplied by the)-.1 F(user)144 520.8 Q(.)
+-.55 E F2(history\255sear)108 532.8 Q(ch\255backward)-.18 E F1 .951
+(Search backw)144 544.8 R .951(ard through the history for the string o\
+f characters between the start of the current)-.1 F .12
+(line and the current cursor position \(the)144 556.8 R F0(point)2.62 E
+F1 2.62(\). The)B .12(search string must match at the be)2.62 F .12
+(ginning of a)-.15 F(history line.)144 568.8 Q
+(This is a non-incremental search.)5 E F2(history\255sear)108 580.8 Q
+(ch\255f)-.18 E(orward)-.25 E F1 .249(Search forw)144 592.8 R .249(ard \
+through the history for the string of characters between the start of t\
+he current line)-.1 F .035(and the point.)144 604.8 R .035
+(The search string must match at the be)5.035 F .036
+(ginning of a history line.)-.15 F .036(This is a non-incre-)5.036 F
+(mental search.)144 616.8 Q F2(history\255substring\255sear)108 628.8 Q
+(ch\255backward)-.18 E F1 .951(Search backw)144 640.8 R .951(ard throug\
+h the history for the string of characters between the start of the cur\
+rent)-.1 F .007(line and the current cursor position \(the)144 652.8 R
+F0(point)2.507 E F1 2.507(\). The)B .007(search string may match an)
+2.507 F .007(ywhere in a history)-.15 F 2.5(line. This)144 664.8 R
+(is a non-incremental search.)2.5 E F2(history\255substring\255sear)108
+676.8 Q(ch\255f)-.18 E(orward)-.25 E F1 .249(Search forw)144 688.8 R
+.249(ard through the history for the string of characters between the s\
+tart of the current line)-.1 F .318(and the point.)144 700.8 R .319
+(The search string may match an)5.318 F .319(ywhere in a history line.)
+-.15 F .319(This is a non-incremental)5.319 F(search.)144 712.8 Q
+(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(9)198.45 E 0 Cg EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(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
+/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(yank\255nth\255ar)108 84 Q 2.5(g\()
+-.1 G<4dad43ad7929>-2.5 E F1 .622(Insert the \214rst ar)144 96 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 .772(at point.)144
+108 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 120 Q .292(vious command be)-.25 F .292
+(gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)
+-2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291
+(ument inserts the).18 F F0(n)2.791 E F1 .291(th w)B .291
+(ord from the end of)-.1 F .236(the pre)144 132 R .236(vious command.)
+-.25 F .236(Once the ar)5.236 F(gument)-.18 E F0(n)2.736 E F1 .236
+(is computed, the ar)2.736 F .236(gument is e)-.18 F .237
+(xtracted as if the \231!)-.15 F F0(n)A F1<9a>A(history e)144 144 Q
+(xpansion had been speci\214ed.)-.15 E F2(yank\255last\255ar)108 156 Q
+2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F1 1.308
+(Insert the last ar)144 168 R 1.308(gument to the pre)-.18 F 1.307
+(vious command \(the last w)-.25 F 1.307(ord of the pre)-.1 F 1.307
+(vious history entry\).)-.25 F -.4(Wi)144 180 S .203(th a numeric ar).4
+F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e)
+-.1 E F2(yank\255nth\255ar)2.704 E(g)-.1 E F1 5.204(.S)C(uccessi)-5.204
+E .504 -.15(ve c)-.25 H .204(alls to).15 F F2(yank\255last\255ar)2.704 E
+(g)-.1 E F1(mo)144 192 Q .807 -.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 204 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
+(gument supplied to these successi)-.18 F .716 -.15(ve c)-.25 H .416
+(alls de-).15 F 1.218(termines the direction to mo)144 216 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
+-.05(ga)-.15 G(ti).05 E 1.517 -.15(ve a)-.25 H -.18(rg).15 G 1.217
(ument switches the direction).18 F .494
-(through the history \(back or forw)144 156 R 2.994(ard\). The)-.1 F
+(through the history \(back or forw)144 228 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
+(acilities are used to e)-.1 F .494(xtract the last)-.15 F(ar)144 240 Q
+(gument, as if the \231!$\232 history e)-.18 E
+(xpansion had been speci\214ed.)-.15 E F2(Commands f)87 256.8 Q
+(or Changing T)-.25 E(ext)-.92 E F0(end\255of\255\214le)108 268.8 Q F2
+(\(usually C\255d\))2.5 E F1 .652
+(The character indicating end-of-\214le as set, for e)144 280.8 R .651
+(xample, by)-.15 F F0(stty)3.491 E F1 3.151(\(1\). If).32 F .651
+(this character is read when)3.151 F .167
+(there are no characters on the line, and point is at the be)144 292.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
+(the end of input and returns)144 304.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 316.8 Q F1
+.442(Delete the character at point.)144 328.8 R .442
+(If this function is bound to the same character as the tty)5.442 F F2
+(EOF)2.941 E F1(char)2.941 E(-)-.2 E(acter)144 340.8 Q 2.5(,a)-.4 G(s)
+-2.5 E F2(C\255d)2.5 E F1(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
+(or the ef).15 E(fects.)-.25 E F2(backward\255delete\255char \(Rubout\))
+108 352.8 Q F1 .552(Delete the character behind the cursor)144 364.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
+(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 376.8 Q F2
+-.25(fo)108 388.8 S(rward\255backward\255delete\255char).25 E F1 .474
+(Delete the character under the cursor)144 400.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 412.8 Q F2
+(quoted\255insert \(C\255q, C\255v\))108 424.8 Q F1 1.228(Add the ne)144
+436.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.729(wt)-.25 G 3.729(oi)
+-3.729 G 1.229(nsert characters lik)-3.729 F(e)-.1 E F2(C\255q)144 448.8
+Q F1 2.5(,f)C(or e)-2.5 E(xample.)-.15 E F2(tab\255insert \(M-T)108
+460.8 Q(AB\))-.9 E F1(Insert a tab character)144 472.8 Q(.)-.55 E F2
+(self\255insert \(a, b, A, 1, !,)108 484.8 Q F1 1.666(...)2.5 G F2(\))
+-1.666 E F1(Insert the character typed.)144 496.8 Q F2
+(transpose\255chars \(C\255t\))108 508.8 Q F1 .322
+(Drag the character before point forw)144 520.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
+532.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 544.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 556.8 Q(ords \(M\255t\))-.1 E F1 .024(Drag the w)144
+568.8 R .024(ord before point past the w)-.1 F .023(ord after point, mo)
+-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523(rt).15 G .023(hat w)
+-2.523 F .023(ord as well.)-.1 F .023(If point)5.023 F
+(is at the end of the line, this transposes the last tw)144 580.8 Q 2.5
+(ow)-.1 G(ords on the line.)-2.6 E F2(upcase\255w)108 592.8 Q
+(ord \(M\255u\))-.1 E F1 1.698(Uppercase the current \(or follo)144
+604.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 616.8 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F2(do)108 628.8 Q
+(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F1(Lo)144 640.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 652.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 664.8 Q
+(ord \(M\255c\))-.1 E F1 1.974(Capitalize the current \(or follo)144
+676.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 688.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
+700.8 S(rwrite\255mode).1 E F1 -.8(To)144 712.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 724.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
+(gument, switches to insert mode.)-.18 F .781(This command af)5.781 F
+(fects)-.25 E(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(10)193.45
+E 0 Cg EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E/F1 10/Times-Bold@0 SF
-(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
+/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(only)144 84 Q/F2 10/Times-Bold@0 SF(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 3.968(mode. In)144 96 R -.15(ove)3.968 G 1.468
+(rwrite mode, characters bound to).15 F F2(self\255insert)3.969 E F1
+1.469(replace the te)3.969 F 1.469(xt at point rather than)-.15 F .958
+(pushing the te)144 108 R .958(xt to the right.)-.15 F .957
+(Characters bound to)5.958 F F2(backward\255delete\255char)3.457 E F1
+.957(replace the character)3.457 F(before point with a space.)144 120 Q
+(By def)5 E(ault, this command is unbound.)-.1 E F2(Killing and Y)87
+136.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 148.8 Q F1
+(Kill the te)144 160.8 Q(xt from point to the end of the line.)-.15 E F2
+(backward\255kill\255line \(C\255x Rubout\))108 172.8 Q F1(Kill backw)
+144 184.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F2
+(unix\255line\255discard \(C\255u\))108 196.8 Q F1(Kill backw)144 208.8
+Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
--2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 168 Q F0
+-2.5 G(he kill-ring.)-2.5 E F2(kill\255whole\255line)108 220.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
+232.8 Q F2(kill\255w)108 244.8 Q(ord \(M\255d\))-.1 E F1 1.308
+(Kill from point the end of the current w)144 256.8 R 1.308
+(ord, or if between w)-.1 F 1.308(ords, to the end of the ne)-.1 F 1.308
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 268.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 280.8 Q
+(ord \(M\255Rubout\))-.1 E F1(Kill the w)144 292.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 304.8 Q
+(ord\255rubout \(C\255w\))-.1 E F1 .365(Kill the w)144 316.8 R .365
+(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1
+F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15
+(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144
+328.8 Q F2(unix\255\214lename\255rubout)108 340.8 Q F1 .166(Kill the w)
+144 352.8 R .166
(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
+-.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 364.8 Q
(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.)
--2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 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
+-2.5 E F2(delete\255horizontal\255space \(M\255\\\))108 376.8 Q F1
+(Delete all spaces and tabs around point.)144 388.8 Q F2(kill\255r)108
+400.8 Q(egion)-.18 E F1 .302(Kill the te)144 412.8 R .301
+(xt between the point and)-.15 F F0(mark)2.801 E F1(\(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 F0 -.37(re)2.801 G(-).37 E
+(gion)144 424.8 Q F1(.)A F2(copy\255r)108 436.8 Q(egion\255as\255kill)
+-.18 E F1(Cop)144 448.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
+(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F2
+(copy\255backward\255w)108 460.8 Q(ord)-.1 E F1(Cop)144 472.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
+484.8 Q(ord)-.1 E F1(.)A F2(copy\255f)108 496.8 Q(orward\255w)-.25 E
+(ord)-.1 E F1(Cop)144 508.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 520.8 Q(ord)-.1 E F1(.)A F2(yank \(C\255y\))108 532.8 Q
+F1 -1(Ya)144 544.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 556.8 Q F1
+(Rotate the kill ring, and yank the ne)144 568.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 585.6 Q
+(guments)-.1 E(digit\255ar)108 597.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 609.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 621.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
+(ument.).18 E F2(uni)108 633.6 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
+E F1 .779(This is another w)144 645.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
+657.6 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+669.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
+-.2 F(-)-.2 E .898(wise ignored.)144 681.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 .243
-(neither a digit or minus sign, the ar)144 640.8 R .243
+(neither a digit or minus sign, the ar)144 693.6 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
+-.15 F 5.242(.T)-.55 G(he)-5.242 E(ar)144 705.6 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
+.378(gument count)-.18 F(four)144 717.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 March 29)128.74 E(11)193.45 E 0 Cg EP
%%Page: 12 12
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E .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\
+/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)6.243 E F1 3.743(,f)C 1.244
+(or instance, attempts completion treating the te)-3.743 F 1.244
+(xt as a v)-.15 F 1.244(ariable \(if the)-.25 F(te)144 132 Q .553(xt be)
+-.15 F .553(gins with)-.15 F F2($)3.053 E F1 .552
+(\), username \(if the te)B .552(xt be)-.15 F .552(gins with)-.15 F F2
+<01>3.052 E F1 .552(\), hostname \(if the te)B .552(xt be)-.15 F .552
+(gins with)-.15 F F2(@)3.052 E F1 .552(\), or)B .929
+(command \(including aliases and functions\) in turn.)144 144 R .93
+(If none of these produces a match, \214lename)5.929 F 1.274
+(completion is attempted.)144 156 R F2(Gdb)6.273 E F1 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 168 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)
+.25 E F2(possible\255completions \(M\255?\))108 180 Q F1 .261
+(List the possible completions of the te)144 192 R .262
+(xt before point.)-.15 F .262
+(When displaying completions, readline sets)5.262 F 1.002
+(the number of columns used for display to the v)144 204 R 1.002
+(alue of)-.25 F F2(completion-display-width)3.502 E F1 3.502(,t)C 1.002
+(he v)-3.502 F 1.002(alue of)-.25 F(the en)144 216 Q(vironment v)-.4 E
+(ariable)-.25 E/F3 9/Times-Bold@0 SF(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF
+(,)A F1(or the screen width, in that order)2.25 E(.)-.55 E F2
+(insert\255completions \(M\255*\))108 228 Q F1 .783
+(Insert all completions of the te)144 240 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
+.15 F F2(possible\255com-)3.283 E(pletions)144 252 Q F1(.)A F2
+(menu\255complete)108 264 Q F1 .929(Similar to)144 276 R F2(complete)
+3.429 E F1 3.429(,b)C .929(ut replaces the w)-3.629 F .929
+(ord to be completed with a single match from the list of)-.1 F 1.193
+(possible completions.)144 288 R 1.193(Repeated e)6.193 F -.15(xe)-.15 G
+1.193(cution of).15 F F2(menu\255complete)3.694 E F1 1.194
+(steps through the list of possible)3.694 F .829
+(completions, inserting each match in turn.)144 300 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
+(\(subject to the setting of)144 312 R F2(bell\255style)3.227 E F1 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)
+(An ar)5.727 F .727(gument of)-.18 F F0(n)3.227 E F1(mo)3.227 E -.15(ve)
+-.15 G(s).15 E F0(n)3.228 E F1 1.73(positions forw)144 324 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 336 Q
+(This command is intended to be bound to)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 348 Q F1 .82(Identical to)144 360 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 372 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
+2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F2
+(delete\255char\255or\255list)108 384 Q F1 .374
+(Deletes the character under the cursor if not at the be)144 396 R .373
+(ginning or end of the line \(lik)-.15 F(e)-.1 E F2(delete-char)2.873 E
+F1(\).)A(If at the end of the line, beha)144 408 Q -.15(ve)-.2 G 2.5(si)
+.15 G(dentically to)-2.5 E F2(possible-completions)2.5 E F1(.)A F2 -.25
+(Ke)87 424.8 S(yboard Macr).25 E(os)-.18 E(start\255kbd\255macr)108
+436.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)).833 E F1(Be)144 448.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
+(ey)-.1 G(board macro.).15 E F2(end\255kbd\255macr)108 460.8 Q 2.5(o\()
+-.18 G(C\255x \))-2.5 E(\)).833 E F1(Stop sa)144 472.8 Q
(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
-(board macro and store the de\214nition.).15 E F1
-(call\255last\255kbd\255macr)108 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
-(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
-(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
-.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
+(board macro and store the de\214nition.).15 E F2
+(call\255last\255kbd\255macr)108 484.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
+E F1(Re-e)144 496.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey)
+-.1 G .999(board macro de\214ned, by making the characters in the macro\
+ appear as if).15 F(typed at the k)144 508.8 Q -.15(ey)-.1 G(board.).15
+E F2(print\255last\255kbd\255macr)108 520.8 Q 2.5(o\()-.18 G(\))-2.5 E
+F1(Print the last k)144 532.8 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 549.6 Q -.18(re)108
+561.6 S<ad72>.18 E(ead\255init\255\214le \(C\255x C\255r\))-.18 E F1
+1.777(Read in the contents of the)144 573.6 R F0(inputr)4.277 E(c)-.37 E
+F1 1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776
+(indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144
+585.6 Q F2(abort \(C\255g\))108 597.6 Q F1 3.248
+(Abort the current editing command and ring the terminal')144 609.6 R
+5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F2
+(bell\255style)144 621.6 Q F1(\).)A F2(do\255lo)108 633.6 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.739(If the meta\214ed character)144
+645.6 R F0(x)4.239 E F1 1.739
+(is uppercase, run the command that is bound to the corresponding)4.239
+F(meta\214ed lo)144 657.6 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 669.6 Q(e\214x\255meta \(ESC\))-.18 E F1
+(Metafy the ne)144 681.6 Q(xt character typed.)-.15 E F3(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 693.6 Q F1
+(Incremental undo, separately remembered for each line.)144 705.6 Q
+(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(12)193.45 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/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
+/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 -2.29 -.18(re v)108 84 T
+(ert\255line \(M\255r\)).08 E F1 .23
+(Undo all changes made to this line.)144 96 R .231(This is lik)5.23 F
+2.731(ee)-.1 G -.15(xe)-2.881 G .231(cuting the).15 F F2(undo)2.731 E F1
+.231(command enough times to re-)2.731 F
+(turn the line to its initial state.)144 108 Q F2
+(tilde\255expand \(M\255&\))108 120 Q F1(Perform tilde e)144 132 Q
+(xpansion on the current w)-.15 E(ord.)-.1 E F2
+(set\255mark \(C\255@, M\255<space>\))108 144 Q F1
+(Set the mark to the point.)144 156 Q(If a numeric ar)5 E
+(gument is supplied, the mark is set to that position.)-.18 E F2
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 168 Q F1(Sw)144
+180 Q .283(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)
+2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa)
+144 192 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F2
+(character\255sear)108 204 Q(ch \(C\255]\))-.18 E F1 3.111(Ac)144 216 S
+.611(haracter is read and point is mo)-3.111 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
+(xt occurrence of that character)-.15 F 5.612(.A)-.55 G(ne)-2.5 E -.05
+(ga)-.15 G(ti).05 E .912 -.15(ve a)-.25 H -.18(rg).15 G(u-).18 E
+(ment searches for pre)144 228 Q(vious occurrences.)-.25 E F2
+(character\255sear)108 240 Q(ch\255backward \(M\255C\255]\))-.18 E F1
+2.695(Ac)144 252 S .194(haracter is read and point is mo)-2.695 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
+(vious occurrence of that character)-.25 F 5.194(.A)-.55 G(ne)-2.5 E
+-.05(ga)-.15 G(ti).05 E .494 -.15(ve a)-.25 H -.2(r-).15 G
+(gument searches for subsequent occurrences.)144 264 Q F2
+(skip\255csi\255sequence)108 276 Q F1 1.826
+(Read enough characters to consume a multi-k)144 288 R 2.126 -.15(ey s)
+-.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G
+4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 300 R .791
+(Such sequences be)5.791 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
+.286(If this sequence is bound to \231\\[\232, k)144 312 R -.15(ey)-.1 G
+2.786(sp).15 G .286(roducing such sequences will ha)-2.786 F .587 -.15
+(ve n)-.2 H 2.787(oe).15 G -.25(ff)-2.787 G .287(ect unless e).25 F
+(xplic-)-.15 E .026(itly bound to a readline command, instead of insert\
+ing stray characters into the editing b)144 324 R(uf)-.2 E(fer)-.25 E
+5.026(.T)-.55 G(his)-5.026 E(is unbound by def)144 336 Q(ault, b)-.1 E
+(ut usually bound to ESC\255[.)-.2 E F2(insert\255comment \(M\255#\))108
+348 Q F1 -.4(Wi)144 360 S .48(thout a numeric ar).4 F .48(gument, the v)
+-.18 F .481(alue of the readline)-.25 F F2(comment\255begin)2.981 E F1
+-.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 372 Q .245
+(ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244
+(gument is supplied, this command acts as a toggle: if)-.18 F .321
+(the characters at the be)144 384 R .321
+(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F2
+(comment\255begin)2.821 E F1 2.822(,t)C .322(he v)-2.822 F .322(alue is)
+-.25 F 1.014(inserted, otherwise the characters in)144 396 R F2
+(comment-begin)3.514 E F1 1.014(are deleted from the be)3.514 F 1.013
+(ginning of the line.)-.15 F 1.468
+(In either case, the line is accepted as if a ne)144 408 R 1.468
+(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F
+1.469(alue of)-.25 F F2(com-)3.969 E(ment\255begin)144 420 Q F1(mak)
+2.983 E .483(es the current line a shell comment.)-.1 F .483
+(If a numeric ar)5.483 F .482(gument causes the comment)-.18 F
+(character to be remo)144 432 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 444
+Q F1 .626(Print all of the functions and their k)144 456 R .926 -.15
+(ey b)-.1 H .627(indings to the readline output stream.).15 F .627
+(If a numeric ar)5.627 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 468 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\255v)108 480 Q(ariables)-.1 E F1 .283
+(Print all of the settable v)144 492 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 504 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 516 Q(os)-.18 E F1 .592
+(Print all of the readline k)144 528 R .892 -.15(ey s)-.1 H .592
+(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G
+3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 540 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
-(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
-(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)
+(ay that it can be made part of an)-.1 F F0(inputr)3.027 E(c)-.37 E F1
+(\214le.)144 552 Q F2(emacs\255editing\255mode \(C\255e\))108 564 Q F1
+(When in)144 576 Q F2(vi)2.5 E F1(command mode, this causes a switch to)
+2.5 E F2(emacs)2.5 E F1(editing mode.)2.5 E F2
+(vi\255editing\255mode \(M\255C\255j\))108 588 Q F1(When in)144 600 Q F2
+(emacs)2.5 E F1(editing mode, this causes a switch to)2.5 E F2(vi)2.5 E
+F1(editing mode.)2.5 E/F3 10.95/Times-Bold@0 SF(DEF)72 616.8 Q -.548(AU)
+-.986 G 2.014 -1.007(LT K).548 H(EY BINDINGS)1.007 E F1 .064(The follo)
+108 628.8 R .064(wing is a list of the def)-.25 F .064
+(ault emacs and vi bindings.)-.1 F .065
+(Characters with the eighth bit set are written as)5.065 F .527
+(M\255<character>, and are referred to as)108 640.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.115
+(in the list of emacs standard bindings are bound to the)108 652.8 R F2
+(self\255insert)3.615 E F1 1.116(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
-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
-EP
+664.8 R .945(In vi insertion mode, all characters not speci\214cally me\
+ntioned are bound to)5.945 F F2(self\255insert)108 676.8 Q F1 5.337(.C)C
+.337(haracters assigned to signal generation by)-5.337 F F0(stty)3.177 E
+F1 .338(\(1\) or the terminal dri).32 F -.15(ve)-.25 G 1.138 -.4(r, s)
+.15 H .338(uch as C-Z or C-C,).4 F .188(retain that function.)108 688.8
+R .188(Upper and lo)5.188 F .188(wer case meta\214ed characters are bou\
+nd to the same function in the emacs)-.25 F .304(mode meta k)108 700.8 R
+-.15(ey)-.1 G 2.804(map. The).15 F .305(remaining characters are unboun\
+d, which causes readline to ring the bell \(subject)2.804 F
+(to the setting of the)108 712.8 Q F2(bell\255style)2.5 E F1 -.25(va)2.5
+G(riable\).).25 E(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E(13)
+193.45 E 0 Cg EP
%%Page: 14 14
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("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
+/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(Emacs Mode)87 84 Q F1
+(Emacs Standard bindings)151.2 96 Q 2.5("C-@" set-mark)151.2 112.8 R 2.5
+("C-A" be)151.2 124.8 R(ginning-of-line)-.15 E 2.5("C-B" backw)151.2
+136.8 R(ard-char)-.1 E 2.5("C-D" delete-char)151.2 148.8 R 2.5
+("C-E" end-of-line)151.2 160.8 R 2.5("C-F" forw)151.2 172.8 R(ard-char)
+-.1 E 2.5("C-G" abort)151.2 184.8 R 2.5("C-H" backw)151.2 196.8 R
+(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 208.8 R 2.5
+("C-J" accept-line)151.2 220.8 R 2.5("C-K" kill-line)151.2 232.8 R 2.5
+("C-L" clear)151.2 244.8 R(-screen)-.2 E 2.5("C-M" accept-line)151.2
+256.8 R 2.5("C-N" ne)151.2 268.8 R(xt-history)-.15 E 2.5("C-P" pre)151.2
+280.8 R(vious-history)-.25 E 2.5("C-Q" quoted-insert)151.2 292.8 R 2.5
+("C-R" re)151.2 304.8 R -.15(ve)-.25 G(rse-search-history).15 E 2.5
+("C-S" forw)151.2 316.8 R(ard-search-history)-.1 E 2.5
+("C-T" transpose-chars)151.2 328.8 R 2.5("C-U" unix-line-discard)151.2
+340.8 R 2.5("C-V" quoted-insert)151.2 352.8 R 2.5("C-W" unix-w)151.2
+364.8 R(ord-rubout)-.1 E 2.5("C-Y" yank)151.2 376.8 R 2.5
+("C-]" character)151.2 388.8 R(-search)-.2 E 2.5("C-_" undo)151.2 400.8
+R 3.333("")151.2 412.8 S(to "/")-.833 E(self-insert)5 E 2.5("0" to)151.2
+424.8 R 2.5("9" self-insert)2.5 F 2.5(":" to)151.2 436.8 R 2.5
+("\001" self-insert)2.5 F 2.5("C-?" backw)151.2 448.8 R(ard-delete-char)
+-.1 E(Emacs Meta bindings)151.2 465.6 Q 2.5("M-C-G" abort)151.2 482.4 R
+2.5("M-C-H" backw)151.2 494.4 R(ard-kill-w)-.1 E(ord)-.1 E 2.5
+("M-C-I" tab-insert)151.2 506.4 R 2.5("M-C-J" vi-editing-mode)151.2
+518.4 R 2.5("M-C-L" clear)151.2 530.4 R(-display)-.2 E 2.5
+("M-C-M" vi-editing-mode)151.2 542.4 R 2.5("M-C-R" re)151.2 554.4 R -.15
+(ve)-.25 G(rt-line).15 E 2.5("M-C-Y" yank-nth-ar)151.2 566.4 R(g)-.18 E
+2.5("M-C-[" complete)151.2 578.4 R 2.5("M-C-]" character)151.2 590.4 R
+(-search-backw)-.2 E(ard)-.1 E 2.5("M-space" set-mark)151.2 602.4 R 2.5
+("M-#" insert-comment)151.2 614.4 R 2.5("M-&" tilde-e)151.2 626.4 R
+(xpand)-.15 E 2.5("M-*" insert-completions)151.2 638.4 R 2.5
+("M--" digit-ar)151.2 650.4 R(gument)-.18 E 2.5("M-." yank-last-ar)151.2
+662.4 R(g)-.18 E 2.5("M-0" digit-ar)151.2 674.4 R(gument)-.18 E 2.5
+("M-1" digit-ar)151.2 686.4 R(gument)-.18 E 2.5("M-2" digit-ar)151.2
+698.4 R(gument)-.18 E 2.5("M-3" digit-ar)151.2 710.4 R(gument)-.18 E 2.5
+("M-4" digit-ar)151.2 722.4 R(gument)-.18 E(GNU Readline 8.3)72 768 Q
+(2024 March 29)128.74 E(14)193.45 E 0 Cg EP
%%Page: 15 15
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("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
+/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("M-5" digit-ar)151.2 84 R(gument)-.18 E 2.5
+("M-6" digit-ar)151.2 96 R(gument)-.18 E 2.5("M-7" digit-ar)151.2 108 R
+(gument)-.18 E 2.5("M-8" digit-ar)151.2 120 R(gument)-.18 E 2.5
+("M-9" digit-ar)151.2 132 R(gument)-.18 E 2.5("M-<" be)151.2 144 R
+(ginning-of-history)-.15 E 2.5("M-=" possible-completions)151.2 156 R
+2.5("M->" end-of-history)151.2 168 R 2.5("M-?" possible-completions)
+151.2 180 R 2.5("M-B" backw)151.2 192 R(ard-w)-.1 E(ord)-.1 E 2.5
+("M-C" capitalize-w)151.2 204 R(ord)-.1 E 2.5("M-D" kill-w)151.2 216 R
+(ord)-.1 E 2.5("M-F" forw)151.2 228 R(ard-w)-.1 E(ord)-.1 E 2.5
+("M-L" do)151.2 240 R(wncase-w)-.25 E(ord)-.1 E 2.5
+("M-N" non-incremental-forw)151.2 252 R(ard-search-history)-.1 E 2.5
+("M-P" non-incremental-re)151.2 264 R -.15(ve)-.25 G(rse-search-history)
+.15 E 2.5("M-R" re)151.2 276 R -.15(ve)-.25 G(rt-line).15 E 2.5
+("M-T" transpose-w)151.2 288 R(ords)-.1 E 2.5("M-U" upcase-w)151.2 300 R
+(ord)-.1 E 2.5("M-Y" yank-pop)151.2 312 R 2.5
+("M-\\" delete-horizontal-space)151.2 324 R 2.5("M-\001" tilde-e)151.2
+336 R(xpand)-.15 E 2.5("M-C-?" backw)151.2 348 R(ard-kill-w)-.1 E(ord)
+-.1 E 2.5("M-_" yank-last-ar)151.2 360 R(g)-.18 E
+(Emacs Control-X bindings)151.2 376.8 Q 2.5("C-XC-G" abort)151.2 393.6 R
+2.5("C-XC-R" re-read-init-\214le)151.2 405.6 R 2.5("C-XC-U" undo)151.2
+417.6 R 2.5("C-XC-X" e)151.2 429.6 R(xchange-point-and-mark)-.15 E 2.5
+("C-X\(" start-kbd-macro)151.2 441.6 R 2.5("C-X\)" end-kbd-macro)151.2
+453.6 R 2.5("C-XE" call-last-kbd-macro)151.2 465.6 R 2.5("C-XC-?" backw)
+151.2 477.6 R(ard-kill-line)-.1 E/F2 10/Times-Bold@0 SF
+(VI Mode bindings)87 494.4 Q F1(VI Insert Mode functions)151.2 506.4 Q
+2.5("C-D" vi-eof-maybe)151.2 523.2 R 2.5("C-H" backw)151.2 535.2 R
+(ard-delete-char)-.1 E 2.5("C-I" complete)151.2 547.2 R 2.5
+("C-J" accept-line)151.2 559.2 R 2.5("C-M" accept-line)151.2 571.2 R 2.5
+("C-N" menu-complete)151.2 583.2 R 2.5("C-P" menu-complete-backw)151.2
+595.2 R(ard)-.1 E 2.5("C-R" re)151.2 607.2 R -.15(ve)-.25 G
+(rse-search-history).15 E 2.5("C-S" forw)151.2 619.2 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 631.2 R 2.5
+("C-U" unix-line-discard)151.2 643.2 R 2.5("C-V" quoted-insert)151.2
+655.2 R 2.5("C-W" vi-unix-w)151.2 667.2 R(ord-rubout)-.1 E 2.5
+("C-Y" yank)151.2 679.2 R 2.5("C-[" vi-mo)151.2 691.2 R -.15(ve)-.15 G
+(ment-mode).15 E 2.5("C-_" vi-undo)151.2 703.2 R 3.333("")151.2 715.2 S
+(to "\001")-.833 E(self-insert)5 E 2.5("C-?" backw)151.2 727.2 R
+(ard-delete-char)-.1 E(GNU Readline 8.3)72 768 Q(2024 March 29)128.74 E
+(15)193.45 E 0 Cg EP
%%Page: 16 16
%%BeginPageSetup
BP
%%EndPageSetup
-/F0 10/Times-Roman@0 SF 117.355(READLINE\(3\) Library)72 48 R
-(Functions Manual)2.5 E(READLINE\(3\))119.855 E 2.5("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
+/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(VI Command Mode functions)151.2 84 Q 2.5
+("C-D" vi-eof-maybe)151.2 100.8 R 2.5("C-E" emacs-editing-mode)151.2
+112.8 R 2.5("C-G" abort)151.2 124.8 R 2.5("C-H" backw)151.2 136.8 R
+(ard-char)-.1 E 2.5("C-J" accept-line)151.2 148.8 R 2.5("C-K" kill-line)
+151.2 160.8 R 2.5("C-L" clear)151.2 172.8 R(-screen)-.2 E 2.5
+("C-M" accept-line)151.2 184.8 R 2.5("C-N" ne)151.2 196.8 R(xt-history)
+-.15 E 2.5("C-P" pre)151.2 208.8 R(vious-history)-.25 E 2.5
+("C-Q" quoted-insert)151.2 220.8 R 2.5("C-R" re)151.2 232.8 R -.15(ve)
+-.25 G(rse-search-history).15 E 2.5("C-S" forw)151.2 244.8 R
+(ard-search-history)-.1 E 2.5("C-T" transpose-chars)151.2 256.8 R 2.5
+("C-U" unix-line-discard)151.2 268.8 R 2.5("C-V" quoted-insert)151.2
+280.8 R 2.5("C-W" vi-unix-w)151.2 292.8 R(ord-rubout)-.1 E 2.5
+("C-Y" yank)151.2 304.8 R 2.5("C-_" vi-undo)151.2 316.8 R -4.166 3.333
+("" f)151.2 328.8 T(orw)-3.333 E(ard-char)-.1 E 2.5("#" insert-comment)
+151.2 340.8 R 2.5("$" end-of-line)151.2 352.8 R 2.5("%" vi-match)151.2
+364.8 R 2.5("&" vi-tilde-e)151.2 376.8 R(xpand)-.15 E 2.5
+("*" vi-complete)151.2 388.8 R 2.5("+" ne)151.2 400.8 R(xt-history)-.15
+E 2.5("," vi-char)151.2 412.8 R(-search)-.2 E 2.5("-" pre)151.2 424.8 R
+(vious-history)-.25 E 2.5("." vi-redo)151.2 436.8 R 2.5("/" vi-search)
+151.2 448.8 R 2.5("0" be)151.2 460.8 R(ginning-of-line)-.15 E
+("1" to "9")151.2 472.8 Q(vi-ar)5 E(g-digit)-.18 E 2.5(";" vi-char)151.2
+484.8 R(-search)-.2 E 2.5("=" vi-complete)151.2 496.8 R 2.5
+("?" vi-search)151.2 508.8 R 2.5("A" vi-append-eol)151.2 520.8 R 2.5
+("B" vi-pre)151.2 532.8 R(v-w)-.25 E(ord)-.1 E 2.5("C" vi-change-to)
+151.2 544.8 R 2.5("D" vi-delete-to)151.2 556.8 R 2.5("E" vi-end-w)151.2
+568.8 R(ord)-.1 E 2.5("F" vi-char)151.2 580.8 R(-search)-.2 E 2.5
+("G" vi-fetch-history)151.2 592.8 R 2.5("I" vi-insert-be)151.2 604.8 R
+(g)-.15 E 2.5("N" vi-search-ag)151.2 616.8 R(ain)-.05 E 2.5("P" vi-put)
+151.2 628.8 R 2.5("R" vi-replace)151.2 640.8 R 2.5("S" vi-subst)151.2
+652.8 R 2.5("T" vi-char)151.2 664.8 R(-search)-.2 E 2.5("U" re)151.2
+676.8 R -.15(ve)-.25 G(rt-line).15 E 2.5("W" vi-ne)151.2 688.8 R(xt-w)
+-.15 E(ord)-.1 E 2.5("X" vi-rubout)151.2 700.8 R 2.5("Y" vi-yank-to)
+151.2 712.8 R 2.5("\\" vi-complete)151.2 724.8 R(GNU Readline 8.3)72 768
+Q(2024 March 29)128.74 E(16)193.45 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("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)
+/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("\000" vi-\214rst-print)151.2 84 R 2.5
+("_" vi-yank-ar)151.2 96 R(g)-.18 E 2.5("`" vi-goto-mark)151.2 108 R 2.5
+("a" vi-append-mode)151.2 120 R 2.5("b" vi-pre)151.2 132 R(v-w)-.25 E
+(ord)-.1 E 2.5("c" vi-change-to)151.2 144 R 2.5("d" vi-delete-to)151.2
+156 R 2.5("e" vi-end-w)151.2 168 R(ord)-.1 E 2.5("f" vi-char)151.2 180 R
+(-search)-.2 E 2.5("h" backw)151.2 192 R(ard-char)-.1 E 2.5
+("i" vi-insertion-mode)151.2 204 R 2.5("j" ne)151.2 216 R(xt-history)
+-.15 E 2.5("k" pre)151.2 228 R(vious-history)-.25 E 2.5("l" forw)151.2
+240 R(ard-char)-.1 E 2.5("m" vi-set-mark)151.2 252 R 2.5
+("n" vi-search-ag)151.2 264 R(ain)-.05 E 2.5("p" vi-put)151.2 276 R 2.5
+("r" vi-change-char)151.2 288 R 2.5("s" vi-subst)151.2 300 R 2.5
+("t" vi-char)151.2 312 R(-search)-.2 E 2.5("u" vi-undo)151.2 324 R 2.5
+("w" vi-ne)151.2 336 R(xt-w)-.15 E(ord)-.1 E 2.5("x" vi-delete)151.2 348
+R 2.5("y" vi-yank-to)151.2 360 R 2.5("|" vi-column)151.2 372 R 2.5
+("\001" vi-change-case)151.2 384 R/F2 10.95/Times-Bold@0 SF(SEE ALSO)72
+400.8 Q F0(The Gnu Readline Libr)108 412.8 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 424.8 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 436.8 Q F1(\(1\))A F2(FILES)72 453.6 Q F0
+(\001/.inputr)109.666 465.6 Q(c)-.37 E F1(Indi)144 477.6 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 494.4 S(THORS).548 E F1
+(Brian F)108 506.4 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E
+(bfox@gnu.or)108 518.4 Q(g)-.18 E(Chet Rame)108 535.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
+-.25 G(rsity).15 E(chet.rame)108 547.2 Q(y@case.edu)-.15 E F2 -.11(BU)72
+564 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F1 .691(If you \214nd a b)
+108 576 R .691(ug in)-.2 F F3 -.18(re)3.191 G(adline,).18 E F1 .691
+(you should report it.)3.191 F .69(But \214rst, you should mak)5.69 F
+3.19(es)-.1 G .69(ure that it really is a b)-3.19 F(ug,)-.2 E
+(and that it appears in the latest v)108 588 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 .704(Once you ha)108 604.8 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 .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 .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 616.8 Q 1.81 -.15(ve a \214)-.2 H 1.51
+(x, you are welcome to mail that as well!).15 F 1.509
+(Suggestions and `philosophical' b)6.509 F 1.509(ug reports may be)-.2 F
+(mailed to)108 628.8 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 645.6 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 662.4 S(GS).11 E F1(It')108 674.4 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 March 29)128.74 E(17)193.45 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/rltech.texi b/doc/rltech.texi
index a93f77d..497cd4d 100644
--- a/doc/rltech.texi
+++ b/doc/rltech.texi
@@ -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--2023 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -67,6 +67,9 @@ the simplest way possible, perhaps to replace calls in your code to
The function @code{readline()} prints a prompt @var{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 @var{prompt} is @code{NULL} or the empty string, no prompt is displayed.
The line @code{readline} returns is allocated with @code{malloc()};
the caller should @code{free()} the line when it has finished with it.
@@ -476,6 +479,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.
@@ -513,6 +518,15 @@ 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.
@@ -915,9 +929,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.
+@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
@@ -1346,13 +1370,15 @@ If @var{c} is a number, return the value it represents.
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.
+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
@@ -1389,6 +1415,10 @@ use all of a terminal's capabilities, and this function will return
values for only those capabilities Readline uses.
@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)
Clear the history list by deleting all of the entries, in the same manner
as the History library's @code{clear_history()} function.
@@ -2138,7 +2168,9 @@ The function should not modify the directory argument if it returns 0.
@deftypevar {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
+them to the filename portion of the partial word to be completed
+(after its potential modification by @code{rl_completion_rewrite_hook}).
+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.
@@ -2151,6 +2183,24 @@ matches, is added 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 to call before
+comparing the filename portion of a word to be completed with directory
+entries from the filesystem.
+The function takes two arguments: @var{fname}, the filename 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 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.
@@ -2298,6 +2348,17 @@ The quoting is effected via a call to the function pointed to
by @code{rl_filename_quoting_function}.
@end deftypevar
+@deftypevar int rl_full_quoting_desired
+Non-zero means that Readline should apply filename-style quoting,
+including any application-specified quoting mechanism,
+to all completion matches even if we are 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
+by @code{rl_filename_quoting_function}.
+@end deftypevar
+
@deftypevar int rl_attempted_completion_over
If an application-specific completion function assigned to
@code{rl_attempted_completion_function} sets this variable to a non-zero
@@ -2423,8 +2484,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 +2494,7 @@ char *progname;
int done;
char *
-dupstr (s)
- char *s;
+dupstr (char *s)
@{
char *r;
@@ -2443,9 +2503,8 @@ dupstr (s)
return (r);
@}
-main (argc, argv)
- int argc;
- char **argv;
+int
+main (int argc, char **argv)
@{
char *line, *s;
@@ -2481,8 +2540,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 +2579,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 +2593,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 +2617,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 +2639,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 +2658,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 +2696,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 +2756,8 @@ com_stat (arg)
return (0);
@}
-com_delete (arg)
- char *arg;
+int
+com_delete (char *arg)
@{
too_dangerous ("delete");
return (1);
@@ -2712,8 +2765,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 +2804,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 +2818,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 +2835,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 +2854,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)
@{
diff --git a/doc/rluser.texi b/doc/rluser.texi
index cbcbb45..45e8a85 100644
--- a/doc/rluser.texi
+++ b/doc/rluser.texi
@@ -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--2023 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
@@ -323,13 +325,14 @@ 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 lines.
+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
@@ -402,11 +405,12 @@ set editing-mode vi
@end example
Variable names and values, where appropriate, are recognized without regard
-to case. Unrecognized variable names are ignored.
+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
@@ -456,8 +460,12 @@ 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
@@ -716,11 +724,11 @@ 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
@@ -757,6 +765,12 @@ before returning when @code{accept-line} is executed. By default,
history lines may be modified and retain individual undo lists across
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
@@ -1458,6 +1472,16 @@ 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 previous word, but do not move the cursor.
@@ -1528,14 +1552,6 @@ 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.
@@ -1858,9 +1874,13 @@ pathname expansion.
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 proces 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.
@@ -1898,6 +1918,13 @@ editing mode.
@end ifclear
+@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.
+
@end ftable
@node Readline vi Mode
@@ -2098,14 +2125,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.
@@ -2122,14 +2160,15 @@ 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
+If the @option{-p} option is supplied, or if no options or @var{name}s
+are supplied, existing
completion specifications are printed in a way that allows them to be
reused as input.
The @option{-r} option removes a completion specification for
@@ -2187,6 +2226,10 @@ 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).
@@ -2330,7 +2373,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.
@@ -2458,9 +2508,11 @@ 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).
@@ -2468,9 +2520,10 @@ 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"
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 +2532,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.
diff --git a/doc/rluserman.dvi b/doc/rluserman.dvi
index e9c9e54..c5e68bd 100644
--- a/doc/rluserman.dvi
+++ b/doc/rluserman.dvi
Binary files differ
diff --git a/doc/rluserman.html b/doc/rluserman.html
index b594615..64d9185 100644
--- a/doc/rluserman.html
+++ b/doc/rluserman.html
@@ -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, 19 January 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-2022 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,15 @@ 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.toc-numbered-mark {list-style: none}
-->
</style>
@@ -53,7 +47,6 @@ ul.no-bullet {list-style: none}
</head>
<body lang="en">
-<h1 class="settitle" align="center">GNU Readline Library</h1>
@@ -63,34 +56,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 +91,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 +114,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,57 +133,57 @@ 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>
-<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>
+<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.
-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
+The Meta key is labeled <kbd class="key">ALT</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
+The <kbd class="key">ALT</kbd> key on the right may also be configured to work as a
Meta key or may be configured as some other modifier, such as a
Compose key for typing accented characters.
</p>
-<p>If you do not have a Meta or <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>If you do not have a Meta or <kbd class="key">ALT</kbd> key, or another key working as
+a Meta key, the identical keystroke can be generated by typing <kbd class="key">ESC</kbd>
+<em class="emph">first</em>, and then typing <kbd class="key">k</kbd>.
+Either process is known as <em class="dfn">metafying</em> the <kbd class="key">k</kbd> key.
</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>The text <kbd class="kbd">M-C-k</kbd> is read as &lsquo;Meta-Control-k&rsquo; and describes the
+character produced by <em class="dfn">metafying</em> <kbd class="kbd">C-k</kbd>.
</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
+<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
+(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
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
+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
@@ -199,12 +192,12 @@ as you type it in, allowing you to just fix your typo, and not forcing
you to retype the majority of the line. Using these editing commands,
you move the cursor to the place that needs correction, and delete or
insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press <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
+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,15 +205,15 @@ 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
character appears where the cursor was, and then the cursor moves one
@@ -229,9 +222,9 @@ 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
+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>C-f</kbd>.
+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
@@ -240,85 +233,85 @@ characters to the right of the cursor are &lsquo;pulled back&rsquo; to fill in t
blank space created by the removal of the text. A list of the bare
essentials for editing the text of an input line follows.
</p>
-<dl compact="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>
+<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
+<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
+other commands have been added 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
about 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
+<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 +319,90 @@ 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
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>
+<dt><kbd class="kbd">C-w</kbd></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.
+<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
+<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.
</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>
+<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>C-y</kbd> or <kbd>M-y</kbd>.
+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 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;.
+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
+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>C-d</kbd> command an argument of 10, you could type &lsquo;<samp>M-1 0 C-d</samp>&rsquo;,
+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.
@@ -418,131 +411,133 @@ 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
+<kbd class="kbd">C-r</kbd>. 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 will terminate an incremental search.
+<kbd class="kbd">C-g</kbd> will abort an incremental search and restore the original line.
When the search is terminated, the history entry containing the
search string becomes the current line.
</p>
-<p>To find other matching entries in the history list, type <kbd>C-r</kbd> or
-<kbd>C-s</kbd> as appropriate.
+<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 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 <tt class="key">RET</tt> will terminate the search and accept
+For instance, a <kbd class="key">RET</kbd> will terminate the search and accept
the line, thereby executing the command from the history list.
A movement command will terminate the search, make the last line found
the current line, and begin editing.
</p>
-<p>Readline remembers the last incremental search string. If two
-<kbd>C-r</kbd>s are typed without any intervening characters defining a new
-search string, any remembered search string is used.
+<p>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 lines.
+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,
+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>INPUTRC</code>. If
-that variable is unset, the default is <samp>~/.inputrc</samp>. If that
+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, the ultimate default is
-<samp>/etc/inputrc</samp>.
+<samp class="file">/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
+<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
+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 compact="compact">
-<dt><span>Variable Settings</span></dt>
+<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.
+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>
+<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 &quot;undoes&quot; the effects of <code class="code">active-region-start-color</code>
and restores &quot;normal&quot; terminal display appearance after displaying text
in the active region.
This string must not take up any physical character positions on the display,
@@ -551,55 +546,59 @@ 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
+<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>off</samp>&rsquo;.
+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>
+<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 when the
-<code>insert-comment</code> command is executed. The default value
-is <code>&quot;#&quot;</code>.
+<code class="code">insert-comment</code> command is executed. 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
@@ -608,27 +607,27 @@ A value of 0 will cause 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;.
+The default value is &lsquo;<samp class="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>
+<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 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>
+<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,
@@ -637,161 +636,161 @@ 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 <code>100</code>.
+The default limit is <code class="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
+<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 will convert characters with the
+eighth bit set to an <small class="sc">ASCII</small> key sequence by stripping 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>on</samp>&rsquo;, but
-will be set to &lsquo;<samp>off</samp>&rsquo; if the locale is one that contains
+The default value is &lsquo;<samp class="samp">on</samp>&rsquo;, but
+will be set to &lsquo;<samp class="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
+This variable is dependent on the <code class="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.
+<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 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;.
+been mapped to <code class="code">self-insert</code>. The default is &lsquo;<samp class="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,
+<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
+<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 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;.
+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
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
+Use the &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
-The default is &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"></a><span><code class="code">enable-active-region</code><a class="copiable-link" href="#index-enable_002dactive_002dregion"> &para;</a></span></dt>
+<dd><p>The <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
+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;.
+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>;
+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>On</samp>&rsquo;.
+The default is &lsquo;<samp class="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
+<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 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;.
+arrow keys. The default is &lsquo;<samp class="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
+<dt><code class="code">enable-meta-key</code></dt>
+<dd><p>When set to &lsquo;<samp class="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;.
+The default is &lsquo;<samp class="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;.
+<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;, tilde expansion is performed when Readline
+attempts word completion. The default is &lsquo;<samp class="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
+<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 an attempt is made 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
+<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>This variable can be set to either &lsquo;<samp class="samp">on</samp>&rsquo; or &lsquo;<samp class="samp">off</samp>&rsquo;. Setting it
+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 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;.
+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
+<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 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
+default value is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline will set it to &lsquo;<samp class="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
+The name <code class="code">meta-flag</code> is a synonym for this variable.
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
may change if the locale is changed.
</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> will 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>
+<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
@@ -799,153 +798,159 @@ 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 (<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
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>This variable, when set to &lsquo;<samp class="samp">on</samp>&rsquo;, causes Readline to display 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
+<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>mark-directories</code>).
-The default is &lsquo;<samp>off</samp>&rsquo;.
+<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 will display 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
+The default is &lsquo;<samp class="samp">off</samp>&rsquo;, but Readline will set it to &lsquo;<samp class="samp">on</samp>&rsquo; if the
locale contains eight-bit characters.
-This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+This variable is dependent on the <code class="code">LC_CTYPE</code> locale category, and
may change if the locale is changed.
</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 <code class="code">more</code>-like pager
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">print-completions-horizontally</code></dt>
+<dd><p>If set to &lsquo;<samp class="samp">on</samp>&rsquo;, Readline will display 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 <code class="code">accept-line</code> is executed. 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>
+<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>on</samp>&rsquo;,
+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
+<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
+is after the &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>off</samp>&rsquo;.
+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
+Use the &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
-The default is &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
+Use the &lsquo;<samp class="samp">\1</samp>&rsquo; and &lsquo;<samp class="samp">\2</samp>&rsquo; escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
-The default is &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>
+<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
@@ -962,121 +967,121 @@ 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>).
</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).
+&lsquo;<samp class="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>,
+<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>,
+<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
+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 the
special character names are not 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>
+<dl class="table">
+<dt><code class="code"><kbd class="kbd">\C-</kbd></code></dt>
<dd><p>control prefix
</p></dd>
-<dt><span><code><kbd>\M-</kbd></code></span></dt>
+<dt><code class="code"><kbd class="kbd">\M-</kbd></code></dt>
<dd><p>meta prefix
</p></dd>
-<dt><span><code><kbd>\e</kbd></code></span></dt>
+<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>
+<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>
+<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>
+<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>
@@ -1086,11 +1091,11 @@ 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 &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 +1103,97 @@ 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.
</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,
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>,
+&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">sun</code> to match both <code class="code">sun</code> and <code class="code">sun-cmd</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
+is assumed to be &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
+<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>application name</var>, and you can test for
+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
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
+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 +1201,40 @@ $endif
</dl>
</dd>
-<dt><span><code>$endif</code></span></dt>
+<dt><code class="code">$endif</code></dt>
<dd><p>This command, as seen in the previous example, terminates an
-<code>$if</code> command.
+<code class="code">$if</code> command.
</p>
</dd>
-<dt><span><code>$else</code></span></dt>
-<dd><p>Commands in this branch of the <code>$if</code> directive are executed if
+<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>$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>:
+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 behaviour of line input editing for
# programs that use the GNU Readline library. Existing
# programs include FTP, Bash, and GDB.
#
@@ -1333,24 +1338,24 @@ $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>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>.
</p>
-<ul class="section-toc">
+<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,48 +1366,48 @@ 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.
</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.
</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.
</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.
</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
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
Readline line does not take up more than one physical line or if the length
@@ -1410,19 +1415,19 @@ 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.
</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,67 +1435,67 @@ 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>.
+<code class="code">add_history()</code>.
If this line is a modified history line, the history line is restored
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.
</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.
</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.
</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.
</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>
+<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.
@@ -1498,7 +1503,7 @@ This is a non-incremental search.
By default, this command is unbound.
</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>
+<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.
@@ -1506,7 +1511,7 @@ This is a non-incremental search.
By default, this command is unbound.
</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>
+<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.
@@ -1514,7 +1519,7 @@ 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>
+<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.
@@ -1522,32 +1527,32 @@ 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
+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>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.
+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, the argument is extracted
+as if the &lsquo;<samp class="samp">!<var class="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>
+<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.
+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
@@ -1556,7 +1561,7 @@ 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,66 +1571,66 @@ 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>
+<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>EOF</small> character, as <kbd>C-d</kbd>
+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.
</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>
+<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 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.
</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>
+<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>C-q</kbd>, for example.
+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>
+<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 yourself.
</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
+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
+to the inserted text. It uses the concept of an <em class="emph">active mark</em>: when the
mark is active, Readline redisplay uses the terminal&rsquo;s standout mode to
denote the region.
</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
@@ -1634,38 +1639,39 @@ 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>
+<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>
+<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>
+<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>
+<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>emacs</code> mode; <code>vi</code> mode does overwrite differently.
-Each call to <code>readline()</code> starts in insert mode.
+<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.
@@ -1675,122 +1681,113 @@ before point with a space.
<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>
+<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 line.
With a negative numeric argument, kill backward from the cursor to the
beginning of the current 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.
</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>
+<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.
The killed text is saved 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.
</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>
+<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.
</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>
+<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>yank</code> or <code>yank-pop</code>.
+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 +1801,58 @@ 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>.
</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
+Repeated execution of <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>)
+(subject to the setting of <code class="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
+An argument of <var class="var">n</var> moves <var class="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
+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.
</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>).
+end of the line (like <code class="code">delete-char</code>).
If at the end of the line, behaves identically to
-<code>possible-completions</code>.
+<code class="code">possible-completions</code>.
This command is unbound by default.
</p>
</dd>
@@ -1863,101 +1860,101 @@ 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>
+<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. 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>.
+without a meta key. 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>
+<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 beginning.
</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>
+<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, the mark is set 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>
+<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. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
</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>
+<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>A character is read and point is moved 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>
+<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>A character is read and point is moved 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
@@ -1967,106 +1964,114 @@ 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>
+<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, the value of the <code class="code">comment-begin</code>
variable is inserted at the beginning of the current line.
If a numeric argument is supplied, this command acts as a toggle: if
the characters at the beginning of the line do not match the value
-of <code>comment-begin</code>, the value is inserted, otherwise
-the characters in <code>comment-begin</code> are deleted from the beginning of
+of <code class="code">comment-begin</code>, the value is inserted, otherwise
+the characters in <code class="code">comment-begin</code> are deleted from the beginning of
the line.
In either case, the line is accepted as if a newline had been typed.
</p>
</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>
+<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>
+<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,
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-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>
</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>
</dl>
<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 <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 +2145,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 +2243,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 +2443,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 +2489,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
diff --git a/doc/rluserman.info b/doc/rluserman.info
index 6bf1b4f..e432a35 100644
--- a/doc/rluserman.info
+++ b/doc/rluserman.info
@@ -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, 19 January 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-2022 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,10 +64,10 @@ File: rluserman.info, Node: Introduction and Notation, Next: Readline Interact
The following paragraphs 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
@@ -78,11 +78,11 @@ Compose key for typing accented characters.
If you do not have a Meta or <ALT> key, or another key working as a
Meta key, the identical keystroke can be generated by typing <ESC>
-_first_, and then typing <k>. Either process is known as "metafying"
+_first_, and then typing <k>. Either process is known as “metafying”
the <k> key.
- The text 'M-C-k' is read as 'Meta-Control-k' and describes the
-character produced by "metafying" 'C-k'.
+ 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
@@ -129,8 +129,8 @@ 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
@@ -139,23 +139,23 @@ the cursor, characters to the right of the cursor are 'pulled back' to
fill in the blank space created by the removal of the text. A list of
the bare essentials for editing the text of an input line follows.
-'C-b'
+‘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
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
+delete the character underneath the cursor, like ‘C-d’, rather than the
character to the left of the cursor.)

@@ -166,22 +166,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>.
+commands have been added in addition to ‘C-b’, ‘C-f’, ‘C-d’, and <DEL>.
Here are some commands for moving more rapidly about the line.
-'C-a'
+‘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 +191,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 +207,34 @@ 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
+ Here is how to “yank” the text back into the line. Yanking means to
copy the most-recently-killed text from the kill buffer.
-'C-y'
+‘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’.

File: rluserman.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction
@@ -247,14 +247,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.

@@ -265,24 +265,24 @@ 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
+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
+‘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
+‘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
+ 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
@@ -290,9 +290,9 @@ 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
+ 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
@@ -307,16 +307,16 @@ 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, the
+ultimate default is ‘/etc/inputrc’.
When a program which uses the Readline library starts up, the init
file is read, and the key bindings are set.
- In addition, the 'C-x C-r' command re-reads this init file, thus
+ 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:
@@ -334,20 +334,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 +361,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 +372,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,72 +385,75 @@ 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'
+ ‘comment-begin’
The string to insert at the beginning of the line when the
- 'insert-comment' command is executed. The default value is
- '"#"'.
+ ‘insert-comment’ command is executed. 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.
- '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'.
+ and completion. The default value is ‘off’.
- 'completion-prefix-display-length'
+ ‘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'
+ ‘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
@@ -459,88 +462,88 @@ Variable Settings
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'.
+ limit is ‘100’.
- 'convert-meta'
- If set to 'on', Readline will convert characters with the
+ ‘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
+ 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
+ ‘LC_CTYPE’ locale category, and may change if the locale is
changed.
- 'disable-completion'
- If set to 'On', Readline will inhibit word completion.
+ ‘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'.
+ they had been mapped to ‘self-insert’. The default is ‘off’.
- 'echo-control-characters'
- When set to 'on', on operating systems that indicate they
+ ‘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
+ ‘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'.
+ 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
+ Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal
- control sequence into the mode string. The default is '@'.
+ control sequence into the mode string. The default is ‘@’.
- 'enable-active-region'
- The "point" is the current cursor position, and "mark" refers
+ ‘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
+ “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',
+ 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'.
+ non-incremental history searches. The default is ‘On’.
- 'enable-bracketed-paste'
- When set to 'On', Readline configures the terminal to insert
+ ‘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 will try to enable the application
keypad when it is called. Some systems need this to enable
- the arrow keys. The default is 'off'.
+ the arrow keys. The default is ‘off’.
- 'enable-meta-key'
- When set to 'on', Readline will try to enable any meta
+ ‘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'.
+ characters. The default is ‘on’.
- 'expand-tilde'
- If set to 'on', tilde expansion is performed when Readline
- attempts word completion. The default is 'off'.
+ ‘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
+ ‘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
@@ -549,43 +552,43 @@ Variable Settings
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
+ ‘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'
+ a new screen line. This variable is automatically set to ‘on’
for terminals of height 1. By default, this variable is set
- to 'off'.
+ to ‘off’.
- 'input-meta'
- If set to 'on', Readline will enable eight-bit input (it will
+ ‘input-meta’
+ If set to ‘on’, Readline will enable eight-bit input (it will
not clear the eighth bit in the characters it reads),
regardless of what the terminal claims it can support. The
- default value is 'off', but Readline will set it to 'on' if
+ 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
+ ‘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'
+ ‘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
+ given a value, the characters <ESC> and ‘C-J’ will 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
@@ -593,125 +596,130 @@ Variable Settings
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
+ 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'.
+ value is ‘500’.
- 'mark-directories'
- If set to 'on', completed directory names have a slash
- appended. The default is 'on'.
+ ‘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-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
+ ‘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'.
+ ‘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.
+ ‘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
+ ‘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'.
+ cycling through the list. The default is ‘off’.
- 'output-meta'
- If set to 'on', Readline will display characters with the
+ ‘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
+ 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
+ ‘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.
+ variable is ‘on’ by default.
- 'print-completions-horizontally'
- If set to 'on', Readline will display completions with matches
+ ‘print-completions-horizontally’
+ If set to ‘on’, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down
- the screen. The default is 'off'.
+ 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 ‘accept-line’ is executed. 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
+ 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'.
+ ‘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
+ is available. Use the ‘\1’ and ‘\2’ escapes to begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(cmd)'.
+ 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
+ is available. Use the ‘\1’ and ‘\2’ escapes to begin and end
sequences of non-printing characters, which can be used to
embed a terminal control sequence into the mode string. The
- default is '(ins)'.
+ 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.
@@ -737,11 +745,11 @@ 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,
@@ -758,51 +766,51 @@ Key Bindings
"\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-'
+ ‘\C-’
control prefix
- '\M-'
+ ‘\M-’
meta prefix
- '\e'
+ ‘\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'
+ ‘\NNN’
the eight-bit character whose value is the octal value NNN
(one to three digits)
- '\xHH'
+ ‘\xHH’
the eight-bit character whose value is the hexadecimal value
HH (one or two hex digits)
@@ -810,8 +818,8 @@ Key Bindings
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
+ character in the macro text, including ‘"’ and ‘'’. For example,
+ the following binding will make ‘‘C-x’ \’ insert a single ‘\’ into
the line:
"\C-x\\": "\\"
@@ -826,45 +834,45 @@ compilation features of the C preprocessor which allows key bindings and
variable settings to be performed as the result of tests. There are
four parser directives used.
-'$if'
- The '$if' construct allows bindings to be made based on the editing
+‘$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.
+ ‘=’ 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
+ ‘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 is assumed to be ‘0’. The operator may
+ be separated from the string ‘version’ and from the version
number argument by whitespace. The following example sets a
variable if the Readline version being used is 7.0 or newer:
$if version >= 7.0
set show-mode-in-prompt on
$endif
- 'application'
+ ‘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 +885,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
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'
+‘$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'
+‘$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':
+ directive reads from ‘/etc/inputrc’:
$include /etc/inputrc

@@ -1035,10 +1043,10 @@ 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”.

File: rluserman.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
@@ -1046,50 +1054,50 @@ File: rluserman.info, Node: Commands For Moving, Next: Commands For History,
1.4.1 Commands For Moving
-------------------------
-'beginning-of-line (C-a)'
+‘beginning-of-line (C-a)’
Move to the start of the current line.
-'end-of-line (C-e)'
+‘end-of-line (C-e)’
Move to the end of the line.
-'forward-char (C-f)'
+‘forward-char (C-f)’
Move forward a character.
-'backward-char (C-b)'
+‘backward-char (C-b)’
Move back a character.
-'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.
-'redraw-current-line ()'
+‘redraw-current-line ()’
Refresh the current line. By default, this is unbound.

@@ -1098,103 +1106,103 @@ 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
+ with ‘add_history()’. If this line is a modified history line, the
history line is restored to its original state.
-'previous-history (C-p)'
+‘previous-history (C-p)’
Move 'back' through the history list, fetching the previous
command.
-'next-history (C-n)'
+‘next-history (C-n)’
Move 'forward' through the history list, fetching the next command.
-'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.
-'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.
-'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 ()'
+‘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.
-'history-search-backward ()'
+‘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.
-'history-substring-search-forward ()'
+‘history-substring-search-forward ()’
Search forward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
non-incremental search. By default, this command is unbound.
-'history-substring-search-backward ()'
+‘history-substring-search-backward ()’
Search backward through the history for the string of characters
between the start of the current line and the point. The search
string may match anywhere in a history line. This is a
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'
+ argument N is computed, the argument is extracted 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.
+ 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,43 +1213,43 @@ 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
+ same character as the tty EOF character, as ‘C-d’ commonly is, see
above for the effects.
-'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.
-'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, !, ...)'
+‘self-insert (a, b, A, 1, !, ...)’
Insert yourself.
-'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
@@ -1249,39 +1257,39 @@ File: rluserman.info, Node: Commands For Text, Next: Commands For Killing, Pr
mark_: when the mark is active, Readline redisplay uses the
terminal's standout mode to denote the 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.
@@ -1292,76 +1300,69 @@ File: rluserman.info, Node: Commands For Killing, Next: Numeric Arguments, Pr
1.4.4 Killing And Yanking
-------------------------
-'kill-line (C-k)'
+‘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.
-'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.
-'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)'
+‘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-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
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’.

File: rluserman.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
@@ -1369,15 +1370,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 +1393,43 @@ 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’.
-'menu-complete ()'
- Similar to 'complete', but replaces the word to be completed with a
+‘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
+ execution of ‘menu-complete’ steps through the list of possible
completions, inserting each match in turn. At the end of the list
of completions, the bell is rung (subject to the setting of
- 'bell-style') and the original text is restored. An argument of N
+ ‘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
+‘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 ()'
+‘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’). If at the end of the line,
+ behaves identically to ‘possible-completions’. This command is
unbound by default.

@@ -1437,18 +1438,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,53 +1459,53 @@ 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>)'
+‘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'.
+ meta key. 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 beginning.
-'tilde-expand (M-~)'
+‘tilde-expand (M-~)’
Perform tilde expansion on the current word.
-'set-mark (C-@)'
+‘set-mark (C-@)’
Set the mark to the point. If a numeric argument is supplied, the
mark is set to that position.
-'exchange-point-and-mark (C-x C-x)'
+‘exchange-point-and-mark (C-x C-x)’
Swap the point with the mark. The current cursor position is set
to the saved position, and the old cursor position is saved as the
mark.
-'character-search (C-])'
+‘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-backward (M-C-])'
+‘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.
-'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
@@ -1513,61 +1514,68 @@ File: rluserman.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up
inserting stray characters into the editing buffer. This is
unbound by default, but usually bound to ESC-[.
-'insert-comment (M-#)'
- Without a numeric argument, the value of the 'comment-begin'
+‘insert-comment (M-#)’
+ Without a numeric argument, the value of the ‘comment-begin’
variable is inserted at the beginning of the current line. If a
numeric argument is supplied, this command acts as a toggle: if the
characters at the beginning of the line do not match the value of
- 'comment-begin', the value is inserted, otherwise the characters in
- 'comment-begin' are deleted from the beginning of the line. In
+ ‘comment-begin’, the value is inserted, otherwise the characters in
+ ‘comment-begin’ are deleted from the beginning of the line. In
either case, the line is accepted as if a newline had been typed.
-'dump-functions ()'
+‘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.
-'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.
+‘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.
+

File: rluserman.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
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 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.

File: rluserman.info, Node: GNU Free Documentation License, Prev: Command Line Editing, Up: Top
@@ -1577,7 +1585,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 +1594,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 +2062,30 @@ their use in free software.

Tag Table:
-Node: Top909
-Node: Command Line Editing1431
-Node: Introduction and Notation2085
-Node: Readline Interaction3710
-Node: Readline Bare Essentials4903
-Node: Readline Movement Commands6694
-Node: Readline Killing Commands7656
-Node: Readline Arguments9579
-Node: Searching10625
-Node: Readline Init File12779
-Node: Readline Init File Syntax13936
-Node: Conditional Init Constructs37240
-Node: Sample Init File41438
-Node: Bindable Readline Commands44564
-Node: Commands For Moving45620
-Node: Commands For History47380
-Node: Commands For Text52345
-Node: Commands For Killing56049
-Node: Numeric Arguments58764
-Node: Commands For Completion59905
-Node: Keyboard Macros61875
-Node: Miscellaneous Commands62565
-Node: Readline vi Mode66494
-Node: GNU Free Documentation License67408
+Node: Top906
+Node: Command Line Editing1428
+Node: Introduction and Notation2082
+Node: Readline Interaction3731
+Node: Readline Bare Essentials4924
+Node: Readline Movement Commands6747
+Node: Readline Killing Commands7749
+Node: Readline Arguments9732
+Node: Searching10794
+Node: Readline Init File12994
+Node: Readline Init File Syntax14171
+Node: Conditional Init Constructs38822
+Node: Sample Init File43192
+Node: Bindable Readline Commands46318
+Node: Commands For Moving47390
+Node: Commands For History49194
+Node: Commands For Text54247
+Node: Commands For Killing58043
+Node: Numeric Arguments60513
+Node: Commands For Completion61670
+Node: Keyboard Macros63704
+Node: Miscellaneous Commands64410
+Node: Readline vi Mode68790
+Node: GNU Free Documentation License69756

End Tag Table
diff --git a/doc/rluserman.pdf b/doc/rluserman.pdf
index 3d2ae7e..8a5fc12 100644
--- a/doc/rluserman.pdf
+++ b/doc/rluserman.pdf
Binary files differ
diff --git a/doc/rluserman.ps b/doc/rluserman.ps
index db4f27b..87083de 100644
--- a/doc/rluserman.ps
+++ b/doc/rluserman.ps
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 2022.1 (TeX Live 2022) Copyright 2022 Radical Eye Software
+%%Creator: dvips(k) 2023.1 (TeX Live 2023) Copyright 2023 Radical Eye Software
%%Title: rluserman.dvi
-%%CreationDate: Tue Sep 20 14:17:06 2022
+%%CreationDate: Fri Apr 5 13:11:47 2024
%%Pages: 36
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o rluserman.ps rluserman.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2022.09.20:1017
+%DVIPSSource: TeX output 2024.04.05:0911
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -5212,30 +5212,30 @@ ifelse
%%Page: 1 1
TeXDict begin 1 0 bop 150 1318 a Fp(GNU)65 b(Readline)g(Library)g(User)
g(In)-5 b(terface)p 150 1418 3600 34 v 1873 1515 a Fo(Edition)30
-b(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.)3218 1623 y(Jan)m(uary)f(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
-(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)
--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 Fo(This)38 b(man)m(ual)h(describ)s(es)
+f(the)h(end)f(user)g(in)m(terface)i(of)f(the)g(GNU)g(Readline)g
+(Library)f(\(v)m(ersion)i(8.3,)150 4523 y(19)35 b(Jan)m(uary)f(2024\),)
+k(a)d(library)f(whic)m(h)g(aids)h(in)f(the)g(consistency)i(of)e(user)g
+(in)m(terface)i(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)-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
@@ -5574,9 +5574,9 @@ b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 628 y(terminate)i(the)g
(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
+150 886 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 996 y(searc)m(h)31 b(string.)275 1145 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
@@ -5685,627 +5685,638 @@ Fn(visible)p Fo(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g
(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
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
-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
-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
-(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
+(the)i(con)m(trol)1110 3784 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
+3893 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
+4003 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 4113 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 4222 y(acters)31
+b(\(usually)g Fn(cchars)p Fo(\).)630 4398 y Fn(blink-matching-paren)
+1110 4507 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
+4617 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 4726 y(default)31
+b(is)f(`)p Fn(off)p Fo('.)630 4902 y Fn(colored-completion-prefi)o(x)
+1110 5011 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
+5121 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
+5230 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 5340
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
-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
+(color)i(de\014nition)e(in)g Fn(LS_COLORS)e Fo(for)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
-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
-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
+b(Command)29 b(Line)i(Editing)2153 b(6)1110 299 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 408 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 518 y(default)31 b(is)f(`)p Fn(off)p Fo('.)630
+682 y Fn(colored-stats)1110 792 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 902 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 1011 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 1121 y(is)30 b(`)p Fn(off)p Fo('.)630
+1285 y Fn(comment-begin)1110 1395 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
+1504 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
+1669 y Fn(completion-display-width)1110 1778 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 1888 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 1998 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 2107 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
+2271 y Fn(completion-ignore-case)1110 2381 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 2491 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
+Fo('.)630 2655 y Fn(completion-map-case)1110 2765 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
+b Fo(is)22 b(enabled,)i(Readline)f(treats)1110 2874 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
+2984 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 3093 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 3258 y Fn(completion-prefix-displa)o
+(y-le)o(ngth)1110 3367 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
+3477 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 3587
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
+(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 3696
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
+f(completions.)630 3861 y Fn(completion-query-items)1110
+3970 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 4080 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
+s(e)g(displa)m(y)m(ed.)77 b(If)1110 4189 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
+(to)h(this)1110 4299 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
+4408 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
+4518 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
+4628 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
+4737 y(zero.)g(The)29 b(default)i(limit)g(is)g Fn(100)p
+Fo(.)630 4902 y Fn(convert-meta)1110 5011 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
+5121 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
+5230 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 5340
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
+(one)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(Command)29 b(Line)i(Editing)2153 b(7)1110 299 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
+408 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.)630 591 y Fn(disable-completion)1110 701 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 810 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 920 y(to)31 b Fn(self-insert)p
+Fo(.)38 b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630
+1103 y Fn(echo-control-characters)1110 1212 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 1322 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
+1431 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 1614 y Fn(editing-mode)1110 1724 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 1833 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 1943 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 2052 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 2235 y Fn
+(emacs-mode-string)1110 2345 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 2454 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
+2564 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 2673 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
+2783 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 2892 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 3002 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 3112 y(default)31 b(is)f(`)p Fn(@)p Fo('.)630
+3294 y Fn(enable-active-region)1110 3404 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
+b(and)46 b Fe(mark)52 b Fo(refers)46 b(to)i(a)1110 3513
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
+([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 3623 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
+(and)g(mark)g(is)g(referred)g(to)h(as)g(the)1110 3733
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
+1110 3842 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
+3952 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 4061 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
+b(defaults)g(to)h(the)f(string)1110 4171 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
+(sho)m(ws)1110 4281 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
+4390 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 4500 y(is)e(`)p
+Fn(On)p Fo('.)630 4682 y Fn(enable-bracketed-paste)1110
+4792 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
+4902 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 5011 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)i(k)m(eyb)s(oard.)1110 5121 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
+b Fo(;)40 b(it)1110 5230 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
-eop end
+5340 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('.)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
+b(Command)29 b(Line)i(Editing)2153 b(8)630 299 y Fn(enable-keypad)1110
+408 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
+518 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 628 y(The)j(default)g(is)
+h(`)p Fn(off)p Fo('.)630 784 y Fn(enable-meta-key)1110
+894 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
+1003 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 1113 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 1223 y(default)31 b(is)f(`)p Fn(on)p Fo('.)630
+1379 y Fn(expand-tilde)1110 1489 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
+(Readline)h(attempts)1110 1598 y(w)m(ord)i(completion.)42
+b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 1755
+y Fn(history-preserve-point)1110 1864 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 1974 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 2084 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
+2193 y(is)30 b(`)p Fn(off)p Fo('.)630 2350 y Fn(history-size)1110
+2459 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 2569
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 2679 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
+2788 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
+2898 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 3007
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
+(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3117
+y(b)s(e)c(set)h(to)g(500.)630 3273 y Fn(horizontal-scroll-mode)1110
+3383 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
+b(it)g(to)h(`)p Fn(on)p Fo(')1110 3493 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
+(tally)1110 3602 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 3712
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
+(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 3821
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
+(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 3931
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
+4088 y Fn(input-meta)1110 4197 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
+i(will)f(not)h(clear)1110 4307 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
+4416 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
+Fo(',)j(but)1110 4526 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
+(haracters.)1110 4635 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
+b(ariable)1110 4745 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
+b(ma)m(y)i(c)m(hange)g(if)1110 4855 y(the)31 b(lo)s(cale)h(is)e(c)m
+(hanged.)630 5011 y Fn(isearch-terminators)1110 5121
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
+(an)f(incremen)m(tal)1110 5230 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
+5340 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)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(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
+408 y(incremen)m(tal)c(searc)m(h.)630 596 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
+(for)f(k)m(ey)h(binding)1110 706 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
+Fo(,)1110 816 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 925 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 1035 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 1144 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 1254 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 1442 y Fn(keyseq-timeout)1110
+1551 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 1661
+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 1771 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 1880 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
+1990 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 2099 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 2209 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
+2318 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
+1110 2428 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
+b(is)1110 2538 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
+b(alue,)1110 2647 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)
+2757 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 2945 y Fn(mark-directories)1110
+3054 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
+3164 y(The)30 b(default)g(is)h(`)p Fn(on)p Fo('.)630
+3352 y Fn(mark-modified-lines)1110 3461 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
+(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 3571 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
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 3680 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
+3868 y Fn(mark-symlinked-directori)o(es)1110 3978 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
+(are)h(sym)m(b)s(olic)g(links)f(to)1110 4088 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
+b(to)g(the)g(v)-5 b(alue)70 b(of)1110 4197 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
+4385 y Fn(match-hidden-files)1110 4495 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 4604
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 4714
+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
+4823 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 5011 y Fn(menu-complete-display-pr)o(efix)1110
+5121 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
+5230 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 5340 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
+Fo('.)p eop end
%%Page: 10 13
TeXDict begin 10 12 bop 150 -116 a Fo(Chapter)30 b(1:)41
-b(Command)29 b(Line)i(Editing)2107 b(10)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
-(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
+b(Command)29 b(Line)i(Editing)2107 b(10)630 299 y Fn(output-meta)1110
+408 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
+518 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 628 y(default)26
+b(is)f(`)p Fn(off)p Fo(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
+Fn(on)p Fo(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
+737 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
+847 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 998 y Fn(page-completions)
+1110 1107 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 1217 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 1326 y(b)m(y)e(default.)630 1477 y Fn
+(print-completions-horizo)o(ntal)o(ly)1110 1587 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 1696 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 1806 y(The)30 b(default)g(is)h(`)p Fn(off)p
+Fo('.)630 1956 y Fn(revert-all-at-newline)1110 2066 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 2176
+y(returning)f(when)f Fn(accept-line)f Fo(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 2285 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 2395 y Fn(readline\(\))p Fo(.)38
+b(The)30 b(default)g(is)h(`)p Fn(off)p Fo('.)630 2545
+y Fn(search-ignore-case)1110 2655 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 2765 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 2874 y(is)30 b(`)p Fn(off)p Fo('.)630 3025
+y Fn(show-all-if-ambiguous)1110 3134 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 3244 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 3354 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 3463 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
+3614 y Fn(show-all-if-unmodified)1110 3724 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
+(functions)e(in)h(a)1110 3833 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
+Fn(on)p Fo(',)f(w)m(ords)f(whic)m(h)1110 3943 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 4052 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 4162
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 4271 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 4422 y Fn(show-mode-in-prompt)1110 4532 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 4641
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
+h(insertion.)49 b(The)32 b(mo)s(de)1110 4751 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
+b Fo(\).)87 b(The)45 b(default)1110 4861 y(v)-5 b(alue)31
+b(is)f(`)p Fn(off)p Fo('.)630 5011 y Fn(skip-completed-text)1110
+5121 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
+5230 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
+5340 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)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(not)41
b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
-(c)m(haracters)1110 4792 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f
-(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
-4902 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+(c)m(haracters)1110 408 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
+518 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
+628 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 737 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
+p Fn(Makefilefile)p Fo(',)1110 847 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
+b(alue)1110 956 y(is)30 b(`)p Fn(off)p Fo('.)630 1117
+y Fn(vi-cmd-mode-string)1110 1226 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 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
+(is)h(dis-)1110 1336 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
+1445 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
+1555 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
+1665 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 1774 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
+1884 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 1993
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
+Fn(\(cmd\))p Fo('.)630 2153 y Fn(vi-ins-mode-string)1110
+2263 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
+2373 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 2482 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
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 2592 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
+(meta-)h(and)e(con)m(trol)1110 2701 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(Use)35 b(the)g(`)p Fn(\\1)p Fo(')1110 2811 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
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 2921
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
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3030
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
+Fn(\(ins\))p Fo('.)630 3190 y Fn(visible-stats)1110 3300
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
+3410 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 3570
+y(Key)f(Bindings)630 3679 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 3789 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 3898 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 4008 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 4143 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 4253 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 4362 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 4472 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 4581 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 4691 y(comfortable.)630
+4826 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
+4935 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 5096 y Fe(k)m(eyname)g Fo(:)42
+b Fe(function-name)35 b Fo(or)c Fe(macro)1110 5205 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
-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
-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
-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
+(English.)39 b(F)-8 b(or)30 b(example:)1350 5340 y Fn(Control-u:)45
+b(universal-argument)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
+b(Command)29 b(Line)i(Editing)2107 b(12)1350 299 y Fn(Meta-Rubout:)44
+b(backward-kill-word)1350 408 y(Control-o:)h(">)i(output")1110
+544 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
+653 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 763 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 873 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 982 y(output)p Fo(')29 b(in)m(to)i(the)g(line\).)1110
+1118 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 1227 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 1337 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
+1498 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 1608 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 1717 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 1827 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 1936 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 2046 y(recognized.)1350
+2181 y Fn("\\C-u":)46 b(universal-argument)1350 2291
+y("\\C-x\\C-r":)f(re-read-init-file)1350 2400 y("\\e[11~":)g("Function)
+h(Key)g(1")1110 2536 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
+2645 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 2755
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
+2865 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 3026 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
+b(ailable)32 b(when)d(sp)s(ecifying)630 3135 y(k)m(ey)i(sequences:)630
+3296 y Fg(\\C-)336 b Fo(con)m(trol)32 b(pre\014x)630
+3458 y Fg(\\M-)336 b Fo(meta)31 b(pre\014x)630 3619 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
+3780 y Fg(\\\\)384 b Fo(bac)m(kslash)630 3941 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
+4102 y Fg(\\')384 b Fn(')p Fo(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 4263 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
+(bac)m(kslash)630 4373 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+4534 y Fn(\\a)384 b Fo(alert)31 b(\(b)s(ell\))630 4695
+y Fn(\\b)384 b Fo(bac)m(kspace)630 4856 y Fn(\\d)g Fo(delete)630
+5018 y Fn(\\f)g Fo(form)30 b(feed)630 5179 y Fn(\\n)384
+b Fo(newline)630 5340 y Fn(\\r)g Fo(carriage)32 b(return)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
+b(Command)29 b(Line)i(Editing)2107 b(13)630 299 y Fn(\\t)384
+b Fo(horizon)m(tal)32 b(tab)630 456 y Fn(\\v)384 b Fo(v)m(ertical)32
+b(tab)630 612 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 722 y(three)c(digits\))630
+878 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 988 y Fo(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 1145 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 1254 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 1364 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 1473 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 1583 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 1716 y Fn("\\C-x\\\\":)45
+b("\\\\")150 1913 y Fd(1.3.2)63 b(Conditional)41 b(Init)g(Constructs)
+150 2060 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
+2169 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 2279 y(result)f(of)h(tests.)41
+b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
+2435 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 2545 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 2655 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
+2764 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 2921 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
+(whether)e(Read-)1110 3031 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
+(conjunction)1110 3140 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
+3250 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 3359 y(starting)f(out)g
+(in)f Fn(emacs)f Fo(mo)s(de.)630 3516 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 3626 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 3735 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 3845 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
+(terminal)1110 3954 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
+(oth)f Fn(sun)g Fo(and)1110 4064 y Fn(sun-cmd)p Fo(,)c(for)h(instance.)
+630 4221 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
+(against)1110 4330 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
+4440 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
+4549 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
+(on)1110 4659 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
+4768 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 4878
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)
+Fo('.)40 b(The)1110 4988 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
+5097 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
+5207 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
+5340 y Fn($if)47 b(version)f(>=)h(7.0)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)1350 299 y Fn(set)47
+b(show-mode-in-prompt)42 b(on)1350 408 y($endif)630 568
+y(application)1110 677 y Fo(The)21 b Fe(application)j
Fo(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
-(set-)1110 5121 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(set-)1110 787 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
+897 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
+1006 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 1116
+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 1225 y(the)e(curren)m(t)f(or)g(previous)
+g(w)m(ord)g(in)g(Bash:)1350 1360 y Fn($if)47 b(Bash)1350
+1469 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
+1579 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 1689 y($endif)630
+1848 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 1958 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 2067 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)s(e)g(separated)g(from)g(the)1110 2177 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
+(e)f(separated)1110 2286 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(Both)35 b(string)1110 2396 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(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 2506 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
+2615 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 2750 y
+Fn($if)47 b(editing-mode)d(==)k(emacs)1350 2859 y(set)f
+(show-mode-in-prompt)42 b(on)1350 2969 y($endif)150 3128
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
+3288 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
+(fails.)150 3447 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
+(commands)630 3557 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
+(from)630 3666 y Fn(/etc/inputrc)p Fo(:)870 3801 y Fn($include)46
+b(/etc/inputrc)150 4000 y Fd(1.3.3)63 b(Sample)41 b(Init)g(File)150
+4147 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
+b(ariable)27 b(assignmen)m(t,)i(and)150 4257 y(conditional)j(syn)m
(tax.)p eop end
%%Page: 15 18
TeXDict begin 15 17 bop 150 -116 a Fo(Chapter)30 b(1:)41
@@ -6638,304 +6649,305 @@ 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
(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
+(mo)m(v)m(e)i(the)f(cursor.)150 683 y Fn(overwrite-mode)26
+b(\(\))630 792 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 902 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 1012 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 1121
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
+1258 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
+1368 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
+1478 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 1615
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
+1819 y Fd(1.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
+1994 y Fn(kill-line)28 b(\(C-k\))630 2104 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
+2213 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
+2378 y Fn(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
+2487 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(a)630 2597 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
+630 2707 y(curren)m(t)30 b(line.)150 2871 y Fn(unix-line-discard)c
+(\(C-u\))630 2981 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
+3146 y Fn(kill-whole-line)c(\(\))630 3255 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
+3365 y(this)30 b(is)h(un)m(b)s(ound.)150 3530 y Fn(kill-word)d(\(M-d\))
+630 3639 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 3749 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 3914 y Fn(backward-kill-word)25 b(\(M-DEL\))630
+4023 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(.)150 4188 y Fn(unix-word-rubout)d(\(C-w\))630
+4298 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 4407 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
+(kill-ring.)150 4572 y Fn(unix-filename-rubout)25 b(\(\))630
+4682 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
+4791 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 4956 y Fn
+(delete-horizontal-space)24 b(\(\))630 5066 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 5230
+y Fn(kill-region)d(\(\))630 5340 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.)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
+(copy-region-as-kill)25 b(\(\))630 408 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 518 y(By)31 b(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)
+150 689 y Fn(copy-backward-word)25 b(\(\))630 799 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
+908 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
+1079 y Fn(copy-forward-word)26 b(\(\))630 1189 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
+1298 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
+1469 y Fn(yank)f(\(C-y\))630 1579 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 1749 y Fn(yank-pop)d(\(M-y\))630 1859
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
+1969 y(command)30 b(is)h Fn(yank)e Fo(or)h Fn(yank-pop)p
+Fo(.)150 2179 y Fd(1.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 2357 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 2467 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 2576 y Fg(M--)j Fo(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)150 2747 y Fn(universal-argument)25 b(\(\))630
+2857 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 2966 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)
+3076 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
+3185 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)
+3295 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
+3404 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
+3514 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
+3624 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
+3733 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 3944 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(Y)-10 b(ou)150 4122 y Fn(complete)28 b(\(TAB\))630
+4231 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
+4341 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
+4512 y Fn(possible-completions)25 b(\(M-?\))630 4621
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
+4731 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 4840 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
+b(ariable)38 b Fn(COLUMNS)p Fo(,)630 4950 y(or)30 b(the)h(screen)f
+(width,)g(in)g(that)h(order.)150 5121 y Fn(insert-completions)25
+b(\(M-*\))630 5230 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 5340 y(b)m(y)g Fn(possible-completions)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
-(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(Command)29 b(Line)i(Editing)2107 b(23)150 299 y Fn(menu-complete)27
+b(\(\))630 408 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 518 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
+628 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
+737 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
+847 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
+Fe(n)630 956 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
+(used)g(to)630 1066 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
+(ound)e(to)630 1176 y Fn(TAB)p Fo(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 1331 y Fn(menu-complete-backward)24
+b(\(\))630 1441 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
+(p)s(ossible)630 1550 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
+1705 y Fn(delete-char-or-list)25 b(\(\))630 1815 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
+(eginning)e(or)h(end)f(of)h(the)630 1925 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
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 2034
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
+(ound)e(b)m(y)i(default.)150 2229 y Fd(1.4.7)63 b(Keyb)s(oard)41
+b(Macros)150 2399 y Fn(start-kbd-macro)26 b(\(C-x)j(\(\))630
+2509 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
+2664 y Fn(end-kbd-macro)d(\(C-x)i(\)\))630 2774 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 2883
+y(de\014nition.)150 3039 y Fn(call-last-kbd-macro)c(\(C-x)k(e\))630
+3148 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
+3258 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 3413 y Fn(print-last-kbd-macro)25 b(\(\))630
+3523 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)
+Fe(inputrc)35 b Fo(\014le.)150 3718 y Fd(1.4.8)63 b(Some)41
+b(Miscellaneous)i(Commands)150 3888 y Fn(re-read-init-file)26
+b(\(C-x)j(C-r\))630 3997 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
+(bindings)d(or)i(v)-5 b(ariable)630 4107 y(assignmen)m(ts)31
+b(found)e(there.)150 4262 y Fn(abort)g(\(C-g\))630 4372
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
+4481 y(setting)j(of)g Fn(bell-style)p Fo(\).)150 4637
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
+Fn(,)g(...)o(\))630 4746 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)
+(b)s(ound)e(to)630 4856 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
+(unde\014ned)e(if)630 4965 y Fe(x)37 b Fo(is)30 b(already)h(lo)m(w)m
+(er)h(case.)150 5121 y Fn(prefix-meta)27 b(\(ESC\))630
+5230 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 5340 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(.)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(Command)29 b(Line)i(Editing)2107 b(24)150 299 y Fn(undo)29
+b(\(C-_)g(or)h(C-x)g(C-u\))630 408 y Fo(Incremen)m(tal)h(undo,)f
+(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
+584 y Fn(revert-line)27 b(\(M-r\))630 693 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
+803 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
+150 978 y Fn(tilde-expand)d(\(M-~\))630 1088 y Fo(P)m(erform)j(tilde)h
+(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 1263
+y Fn(set-mark)d(\(C-@\))630 1373 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 1482 y(to)f(that)g(p)s(osition.)
+150 1658 y Fn(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+1767 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 1877 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 2052
+y Fn(character-search)26 b(\(C-]\))630 2162 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 2271 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
+(ccurrences.)150 2447 y Fn(character-search-backwar)o(d)24
+b(\(M-C-]\))630 2556 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
+g(that)630 2666 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
+2841 y Fn(skip-csi-sequence)d(\(\))630 2951 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
+(as)g(those)h(de\014ned)630 3061 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
+(trol)g(Sequence)630 3170 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
+Fo(e[)p Fn(")p Fo(,)g(k)m(eys)f(pro-)630 3280 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
+(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630 3389 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
+(editing)h(bu\013er.)44 b(This)31 b(is)630 3499 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
+3674 y Fn(insert-comment)26 b(\(M-#\))630 3784 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
+b(is)g(in-)630 3893 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
+(supplied,)630 4003 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
+(line)630 4113 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
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 4222
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
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 4332
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
+(newline)f(had)g(b)s(een)f(t)m(yp)s(ed.)150 4507 y Fn(dump-functions)d
+(\(\))630 4617 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
+4726 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
+4836 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.)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
+(default.)150 5011 y Fn(dump-variables)26 b(\(\))630
+5121 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
+(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(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 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
+(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-macros)27
+b(\(\))630 408 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
+518 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
+628 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
+d(b)m(y)630 737 y(default.)150 897 y Fn(emacs-editing-mode)e(\(C-e\))
+630 1006 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
+1166 y Fn(vi-editing-mode)26 b(\(M-C-j\))630 1275 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
-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
+Fn(vi)f Fo(editing)h(mo)s(de.)150 1435 y Fn(execute-named-command)25
+b(\(M-x\))630 1544 y Fo(Read)j(a)g(bindable)f(readline)h(command)g
+(name)g(from)f(the)h(input)f(and)g(execute)j(the)e(func-)630
+1654 y(tion)e(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 1763 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
+1873 y(that)31 b(argumen)m(t)g(to)g(the)f(function)h(it)f(executes.)150
+2114 y Fm(1.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2273
+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 2383 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 2492 y(the)e Fh(posix)e
+Fo(standard.)275 2627 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 2736
+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 2846 y Fo(mo)s(de\).)k(The)30 b(Readline)h(default)f(is)g
+Fn(emacs)f Fo(mo)s(de.)275 2980 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 3090 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 3200 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 3309 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
b(A)81 b(GNU)54 b(F)-13 b(ree)53 b(Do)t(cumen)l(tation)e(License)1359
diff --git a/doc/version.texi b/doc/version.texi
index d310273..9c820a9 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,11 +1,11 @@
@ignore
-Copyright (C) 1988-2022 Free Software Foundation, Inc.
+Copyright (C) 1988-2024 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 19 January 2024
+@set UPDATED-MONTH January 2024
-@set LASTCHANGE Mon Sep 19 11:15:16 EDT 2022
+@set LASTCHANGE Fri Jan 19 11:01:44 EST 2024
diff --git a/emacs_keymap.c b/emacs_keymap.c
index 02597da..cf2adcc 100644
--- a/emacs_keymap.c
+++ b/emacs_keymap.c
@@ -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 */
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 291c6b7..20a9896 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -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)
@@ -164,6 +171,7 @@ distclean maintainer-clean: clean
$(RM) Makefile
fileman.o: fileman.c
+manexamp.o: manexamp.c
rltest.o: rltest.c
rltest2.o: rltest2.c
rl.o: rl.c
@@ -179,6 +187,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
diff --git a/examples/autoconf/BASH_CHECK_LIB_TERMCAP b/examples/autoconf/BASH_CHECK_LIB_TERMCAP
index 0a09883..7047d72 100644
--- a/examples/autoconf/BASH_CHECK_LIB_TERMCAP
+++ b/examples/autoconf/BASH_CHECK_LIB_TERMCAP
@@ -31,11 +31,14 @@ 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
])
diff --git a/examples/excallback.c b/examples/excallback.c
index 923c923..04ecb14 100644
--- a/examples/excallback.c
+++ b/examples/excallback.c
@@ -102,7 +102,7 @@ cc_t old_vtime;
struct termios term;
int
-main()
+main(int c, char **v)
{
fd_set fds;
diff --git a/examples/fileman.c b/examples/fileman.c
index 2a8b097..c26bccf 100644
--- a/examples/fileman.c
+++ b/examples/fileman.c
@@ -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.
@@ -61,24 +61,24 @@
# 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);
+}
diff --git a/examples/hist_erasedups.c b/examples/hist_erasedups.c
index f820eba..717bb7e 100644
--- a/examples/hist_erasedups.c
+++ b/examples/hist_erasedups.c
@@ -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.
@@ -41,16 +41,14 @@
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;
diff --git a/examples/hist_purgecmd.c b/examples/hist_purgecmd.c
index 7992d81..3adb699 100644
--- a/examples/hist_purgecmd.c
+++ b/examples/hist_purgecmd.c
@@ -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.
@@ -46,16 +46,14 @@
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;
diff --git a/examples/histexamp.c b/examples/histexamp.c
index 309d769..2e946ac 100644
--- a/examples/histexamp.c
+++ b/examples/histexamp.c
@@ -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);
diff --git a/examples/manexamp.c b/examples/manexamp.c
index 351c628..c8e11d5 100644
--- a/examples/manexamp.c
+++ b/examples/manexamp.c
@@ -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.
@@ -18,9 +18,35 @@
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,10 +86,11 @@ 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;
@@ -92,7 +119,7 @@ invert_case_line (count, key)
}
if (start == end)
- return;
+ return 0;
/* Tell readline that we are modifying the line, so save the undo
information. */
@@ -108,4 +135,5 @@ invert_case_line (count, key)
/* Move point to on top of the last character changed. */
rl_point = end - direction;
+ return 0;
}
diff --git a/examples/rl-timeout.c b/examples/rl-timeout.c
index b8a24ba..81f00f5 100644
--- a/examples/rl-timeout.c
+++ b/examples/rl-timeout.c
@@ -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;
diff --git a/examples/rl.c b/examples/rl.c
index 39e5b8e..dd8f88d 100644
--- a/examples/rl.c
+++ b/examples/rl.c
@@ -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;
diff --git a/examples/rlcat.c b/examples/rlcat.c
index f1b0362..419a197 100644
--- a/examples/rlcat.c
+++ b/examples/rlcat.c
@@ -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;
diff --git a/examples/rlevent.c b/examples/rlevent.c
index 1b7f4eb..57e4b4b 100644
--- a/examples/rlevent.c
+++ b/examples/rlevent.c
@@ -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;
diff --git a/examples/rlptytest.c b/examples/rlptytest.c
index d170f62..021a868 100644
--- a/examples/rlptytest.c
+++ b/examples/rlptytest.c
@@ -42,8 +42,7 @@ static int masterfd = -1;
static int slavefd;
void
-sigint (s)
- int s;
+sigint (int s)
{
tty_reset (STDIN_FILENO);
close (masterfd);
@@ -53,14 +52,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 +76,7 @@ user_input()
}
static int
-readline_input()
+readline_input(void)
{
const int MAX = 1024;
char *buf = (char *)malloc(MAX+1);
@@ -124,7 +122,7 @@ rlctx_send_user_command(char *line)
}
static void
-custom_deprep_term_function ()
+custom_deprep_term_function (void)
{
}
@@ -226,9 +224,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;
@@ -316,7 +315,7 @@ int tty_reset(int fd)
}
int
-main()
+main(int c, char **v)
{
int val;
diff --git a/examples/rltest.c b/examples/rltest.c
index 8b7c00c..feab90f 100644
--- a/examples/rltest.c
+++ b/examples/rltest.c
@@ -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/funmap.c b/funmap.c
index 8b1cb40..548cfb5 100644
--- a/funmap.c
+++ b/funmap.c
@@ -40,16 +40,12 @@
#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,7 @@ 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 },
{ "fetch-history", rl_fetch_history },
{ "forward-backward-delete-char", rl_rubout_or_delete },
{ "forward-byte", rl_forward_byte },
@@ -251,7 +248,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 ();
diff --git a/histexpand.c b/histexpand.c
index 8ab6809..8a28cbd 100644
--- a/histexpand.c
+++ b/histexpand.c
@@ -1,6 +1,6 @@
/* histexpand.c -- history expansion. */
-/* Copyright (C) 1989-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1989-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.
@@ -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 *);
@@ -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;
@@ -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
@@ -881,7 +881,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 +896,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 +904,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 +950,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 +966,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 +984,8 @@ history_expand (char *hstring, char **output)
squote = 0;
if (string[i])
i++;
+ if (i >= l)
+ i = l;
}
for ( ; string[i]; i++)
@@ -1053,6 +1056,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 +1071,7 @@ history_expand (char *hstring, char **output)
}
}
-
+
if (string[i] != history_expansion_char)
{
xfree (result);
@@ -1113,7 +1121,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 +1311,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 +1426,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 +1483,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 +1570,8 @@ get_word:
(delimiter != '"' || member (string[i], slashify_in_quotes)))
{
i++;
+ if (string[i] == 0)
+ break;
continue;
}
@@ -1590,6 +1600,8 @@ get_word:
if (nestdelim == 0 && delimiter == 0 && member (string[i], "<>$!@?+*") && string[i+1] == '(') /*)*/
{
i += 2;
+ if (string[i] == 0)
+ break; /* could just return i here */
delimopen = '(';
delimiter = ')';
nestdelim = 1;
@@ -1627,7 +1639,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 +1649,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 +1709,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;
diff --git a/histfile.c b/histfile.c
index 3bfec55..e4d0b37 100644
--- a/histfile.c
+++ b/histfile.c
@@ -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 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] = '/';
@@ -190,7 +189,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)
@@ -218,7 +216,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;
@@ -284,7 +281,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;
@@ -526,10 +526,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 +582,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 +599,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 +644,24 @@ history_truncate_file (const char *fname, int lines)
goto truncate_exit;
}
+truncate_write:
tempname = history_tempfile (filename);
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 +698,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, j, e;
+
+ fp = fdopen (fd, overwrite ? "w" : "a");
+ if (fp == 0)
+ return -1;
+
+ for (j = 0, 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,7 +739,7 @@ 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;
@@ -718,8 +777,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 ();
@@ -739,6 +798,8 @@ history_do_write (const char *filename, int nelements, int overwrite)
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)
@@ -751,6 +812,8 @@ mmap_error:
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)
@@ -789,6 +852,7 @@ mmap_error:
if (close (file) < 0 && rv == 0)
rv = errno;
+write_success:
if (rv == 0 && histname && tempname)
rv = histfile_restore (tempname, histname);
diff --git a/histlib.h b/histlib.h
index 29fc4d2..da8e653 100644
--- 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.
@@ -34,6 +34,11 @@
: ((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
@@ -81,9 +84,11 @@ extern char *strchr ();
/* histsearch.c */
extern int _hs_history_patsearch (const char *, int, int);
+extern int _hs_history_search (const char *, 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 */
diff --git a/history.c b/history.c
index 81d4c16..aade5e3 100644
--- 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-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.
@@ -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)
@@ -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;
}
}
@@ -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)
+{
+ register 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,
diff --git a/history.h b/history.h
index 5208f9a..0f275a8 100644
--- 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,11 +36,7 @@ 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
@@ -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
diff --git a/histsearch.c b/histsearch.c
index b62c06b..b43ead1 100644
--- a/histsearch.c
+++ b/histsearch.c
@@ -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,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.
@@ -47,6 +47,8 @@
#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;
@@ -57,7 +59,10 @@ static int history_search_internal (const char *, int, int);
If DIRECTION < 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 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
@@ -66,10 +71,12 @@ static int history_search_internal (const char *, int, int);
static int
history_search_internal (const char *string, int direction, 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;
@@ -80,6 +87,7 @@ history_search_internal (const char *string, int direction, int flags)
#else
patsearch = 0;
#endif
+ igncase = (flags & CASEFOLD_SEARCH);
/* Take care of trivial cases first. */
if (string == 0 || *string == '\0')
@@ -91,6 +99,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 +114,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 +126,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);
@@ -140,55 +159,80 @@ history_search_internal (const char *string, int direction, int flags)
/* Do substring search. */
if (reverse)
{
- 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 ();
@@ -266,6 +310,13 @@ history_search_prefix (const char *string, int direction)
return (history_search_internal (string, direction, ANCHORED_SEARCH));
}
+/* At some point, make this public for users of the history library. */
+int
+_hs_history_search (const char *string, int direction, int flags)
+{
+ return (history_search_internal (string, direction, 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. */
diff --git a/input.c b/input.c
index f68fcac..9807453 100644
--- 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-2022 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.
@@ -138,19 +138,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 +249,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 +317,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
@@ -651,7 +663,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 +846,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;
diff --git a/isearch.c b/isearch.c
index c2d4d23..9ddf9ce 100644
--- a/isearch.c
+++ b/isearch.c
@@ -6,7 +6,7 @@
/* */
/* **************************************************************** */
-/* 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.
@@ -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;
@@ -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;
@@ -428,7 +430,11 @@ add_character:
{
f = cxt->keymap[c].function;
if (f == rl_do_lowercase_version)
- f = cxt->keymap[_rl_to_lower (c)].function;
+ {
+ f = cxt->keymap[_rl_to_lower (c)].function;
+ if (f == rl_do_lowercase_version)
+ f = rl_insert;
+ }
}
if (f == rl_reverse_search_history)
@@ -445,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
@@ -463,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);
}
@@ -477,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)
@@ -524,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);
}
@@ -536,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);
}
}
@@ -546,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);
}
@@ -698,6 +718,27 @@ 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)
@@ -713,13 +754,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
@@ -741,7 +782,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;
@@ -749,7 +810,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;
@@ -782,8 +843,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;
}
@@ -885,6 +946,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 4cf933b..972c7d9 100644
--- 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-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.
@@ -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
@@ -756,8 +756,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 +774,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 +846,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 +865,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
diff --git a/m4/codeset.m4 b/m4/codeset.m4
index 280f556..eb73260 100644
--- a/m4/codeset.m4
+++ b/m4/codeset.m4
@@ -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,
diff --git a/macro.c b/macro.c
index 231a24b..9ac258d 100644
--- 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;
diff --git a/mbutil.c b/mbutil.c
index 47e9100..33588cc 100644
--- 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-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.
@@ -148,7 +148,7 @@ _rl_utf8_mblen (const char *s, size_t n)
}
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 +216,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 +230,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 +244,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 +263,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 +294,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 +362,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 +400,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 +423,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 +463,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 +477,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 +506,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 +520,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 +528,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 4bca9c5..96c82b5 100644
--- 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 */
}
@@ -339,64 +344,83 @@ 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? */
+ rl_undo_list = 0;
}
return 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 +578,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 +597,48 @@ 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;
+ rl_maybe_replace_line ();
- /* 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 ();
+ r = _rl_next_history_internal (count);
- /* If the current line has changed, save the changes. */
- rl_maybe_replace_line ();
+ 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 +656,41 @@ 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;
+ rl_maybe_save_line ();
+
+ /* If the current line has changed, save the changes. */
+ rl_maybe_replace_line ();
+
+ 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 +741,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 +810,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/parens.c b/parens.c
index 57ce704..7f1e93f 100644
--- 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)
@@ -46,10 +47,6 @@
# 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"
diff --git a/parse-colors.c b/parse-colors.c
index 05ec9bc..2b58eb9 100644
--- a/parse-colors.c
+++ b/parse-colors.c
@@ -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 ();
+}
diff --git a/patchlevel b/patchlevel
index 810c277..d8c9df7 100644
--- a/patchlevel
+++ b/patchlevel
@@ -1,3 +1,3 @@
# Do not edit -- exists only for use by patch
-10
+0
diff --git a/posixselect.h b/posixselect.h
index da6a1ac..9d54e18 100644
--- a/posixselect.h
+++ b/posixselect.h
@@ -21,13 +21,13 @@
#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)
diff --git a/posixtime.h b/posixtime.h
index e70ebec..a731b00 100644
--- a/posixtime.h
+++ b/posixtime.h
@@ -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-2022 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)
diff --git a/readline.c b/readline.c
index 9d42a8d..9790909 100644
--- a/readline.c
+++ b/readline.c
@@ -1,7 +1,7 @@
/* readline.c -- a general facility for reading lines of input
with emacs style editing and completion. */
-/* Copyright (C) 1987-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.
@@ -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
@@ -566,6 +572,7 @@ readline_internal_charloop (void)
{
static int lastc, eof_found;
int c, code, lk, r;
+ static procenv_t olevel;
lastc = EOF;
@@ -576,6 +583,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 +596,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 +714,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
}
@@ -899,8 +911,17 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
{
/* Special case rl_do_lowercase_version (). */
if (func == rl_do_lowercase_version)
- /* Should we do anything special if key == ANYOTHERKEY? */
- return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
+ {
+ /* Should we do anything special if key == ANYOTHERKEY? */
+ newkey = _rl_to_lower ((unsigned char)key);
+ if (newkey != key)
+ return (_rl_dispatch (newkey, map));
+ else
+ {
+ rl_ding (); /* gentle failure */
+ return 0;
+ }
+ }
rl_executing_keymap = map;
rl_executing_key = key;
@@ -1109,7 +1130,11 @@ _rl_subseq_result (int r, Keymap map, int key, int got_subseq)
type = m[ANYOTHERKEY].type;
func = m[ANYOTHERKEY].function;
if (type == ISFUNC && func == rl_do_lowercase_version)
- r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map);
+ {
+ int newkey = _rl_to_lower ((unsigned char)key);
+ /* check that there is actually a lowercase version to avoid infinite recursion */
+ r = (newkey != key) ? _rl_dispatch (newkey, map) : 1;
+ }
else if (type == ISFUNC)
{
/* If we shadowed a function, whatever it is, we somehow need a
@@ -1322,9 +1347,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
@@ -1562,7 +1586,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
diff --git a/readline.h b/readline.h
index cac269f..22b9ca9 100644
--- a/readline.h
+++ b/readline.h
@@ -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. */
@@ -209,6 +209,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 +343,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 +408,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 +441,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 +628,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 +773,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 +810,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 +914,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 +964,7 @@ struct readline_state {
char *prompt;
/* global state */
- int rlstate;
+ int rlstate; /* XXX -- needs to be unsigned long */
int done;
Keymap kmap;
diff --git a/rlconf.h b/rlconf.h
index b6d6a2f..e0fd735 100644
--- 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_ */
diff --git a/rldefs.h b/rldefs.h
index 98577a6..ec3c64a 100644
--- 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
@@ -63,17 +63,7 @@
# 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 *);
diff --git a/rlmbutil.h b/rlmbutil.h
index d906057..fe6f4dc 100644
--- a/rlmbutil.h
+++ b/rlmbutil.h
@@ -1,6 +1,6 @@
/* rlmbutil.h -- utility functions for multibyte characters. */
-/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
+/* Copyright (C) 2001-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.
@@ -104,23 +104,26 @@
#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 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))
@@ -169,11 +172,16 @@ _rl_wcwidth (WCHAR_T 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 +192,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)
diff --git a/rlprivate.h b/rlprivate.h
index d87d07a..61d04a4 100644
--- a/rlprivate.h
+++ b/rlprivate.h
@@ -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-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.
@@ -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,22 @@ 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__)
+# 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 +393,13 @@ 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 void _rl_set_insert_mode (int, int);
extern void _rl_revert_previous_lines (void);
@@ -391,6 +435,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 +447,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 +488,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 +515,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 +572,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 +587,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 +628,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;
@@ -615,6 +673,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;
diff --git a/rlstdc.h b/rlstdc.h
index 2aaa30b..0e5c4f4 100644
--- 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.
@@ -42,16 +42,4 @@
# 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 a4863ac..a4ad94c 100644
--- a/rltty.c
+++ b/rltty.c
@@ -1,7 +1,7 @@
/* rltty.c -- functions to prepare and restore the terminal for readline's
use. */
-/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1992-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.
@@ -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;
@@ -275,15 +277,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 +517,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 +730,7 @@ rl_tty_set_echoing (int u)
_rl_echoing_p = u;
return o;
}
-
+
/* **************************************************************** */
/* */
/* Bogus Flow Control */
diff --git a/rltypedefs.h b/rltypedefs.h
index 1636549..61b8131 100644
--- a/rltypedefs.h
+++ b/rltypedefs.h
@@ -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);
diff --git a/search.c b/search.c
index eea2301..a22c43d 100644
--- a/search.c
+++ b/search.c
@@ -1,6 +1,6 @@
/* search.c - code for non-incremental searching in emacs and vi modes. */
-/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1992-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.
@@ -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,7 +67,7 @@ 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 int noninc_search_from_pos (char *, int, int, int, int *);
@@ -78,21 +80,57 @@ 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);
+void
+_rl_free_saved_search_line (void)
+{
+ if (_rl_saved_line_for_search)
+ _rl_free_saved_line (_rl_saved_line_for_search);
+ _rl_saved_line_for_search = (HIST_ENTRY *)NULL;
+}
+
+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;
+}
+
+/* We're going to replace the undo list with the one created by inserting
+ the matching line we found, so we want to free rl_undo_list if it's not
+ from a history entry. We assume the undo list does not come from a
+ history entry if we are at the end of the history, entering a new line.
+
+ The call to rl_maybe_replace_line() has already ensured that any undo
+ list pointing to a history entry has already been saved back to the
+ history and set rl_undo_list to NULL. */
+
+static void
+dispose_saved_search_line (void)
+{
+ UNDO_LIST *xlist;
+
+ if (_hs_at_end_of_history () == 0)
+ _rl_unsave_saved_search_line ();
+ else if (_rl_saved_line_for_search)
+ {
+ xlist = _rl_saved_line_for_search ? (UNDO_LIST *)_rl_saved_line_for_search->data : 0;
+ if (xlist)
+ _rl_free_undo_list (xlist);
+ _rl_saved_line_for_search->data = 0;
+ _rl_free_saved_search_line ();
+ }
+}
+
/* 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)
{
- UNDO_LIST *xlist;
-
- 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 ();
-
/* 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_undo_list = 0; /* XXX */
_rl_replace_text (entry->line, 0, rl_end);
_rl_fix_point (1);
#if defined (VI_MODE)
@@ -103,15 +141,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 +164,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, sflags);
else
- ret = history_search (string, dir);
+ {
+ if (_rl_search_case_fold)
+ sflags |= CASEFOLD_SEARCH;
+ ret = _hs_history_search (s, dir, sflags);
+ }
RL_UNSETSTATE(RL_STATE_SEARCH);
if (ncp)
@@ -181,7 +212,7 @@ noninc_dosearch (char *string, int dir, int flags)
if (pos == -1)
{
/* Search failed, current history position unchanged. */
- rl_maybe_unsave_line ();
+ _rl_unsave_saved_search_line ();
rl_clear_message ();
rl_point = 0;
rl_ding ();
@@ -190,6 +221,10 @@ noninc_dosearch (char *string, int dir, int flags)
noninc_history_pos = pos;
+ /* We're committed to making the line we found the current contents of
+ rl_line_buffer. We can dispose of _rl_saved_line_for_search. */
+ dispose_saved_search_line ();
+
oldpos = where_history ();
history_set_pos (noninc_history_pos);
entry = current_history (); /* will never be NULL after successful search */
@@ -201,7 +236,7 @@ noninc_dosearch (char *string, int dir, int flags)
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 +271,10 @@ _rl_nsearch_init (int dir, int pchar)
cxt->direction = dir;
cxt->history_pos = cxt->save_line;
- rl_maybe_save_line ();
+ /* If the current line has changed, put it back into the history if necessary. */
+ rl_maybe_replace_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 +286,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 +311,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 +353,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;
@@ -376,8 +437,11 @@ _rl_nsearch_dosearch (_rl_search_cxt *cxt)
{
if (noninc_search_string == 0)
{
+ _rl_free_saved_search_line ();
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,15 +453,22 @@ _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.) */
+ so we need to clear rl_line_buffer here. If we don't want that,
+ change the #if 1 to an #if 0 below. We clear the undo list
+ generated by reading the search string. (If the search fails, the
+ old undo list will be restored by _rl_unsave_line.) */
+
rl_free_undo_list ();
+#if 1
+ rl_line_buffer[rl_point = rl_end = 0] = '\0';
+#endif
}
- rl_restore_prompt ();
+ if (cxt->sflags & SF_FREEPMT)
+ rl_restore_prompt ();
+ cxt->sflags &= ~SF_FREEPMT;
return (noninc_dosearch (noninc_search_string, cxt->direction, cxt->sflags&SF_PATTERN));
}
@@ -530,11 +601,12 @@ 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 ();
+ /* If the current line has changed, put it back into the history if necessary. */
+ rl_maybe_replace_line ();
+
+ _rl_saved_line_for_search = _rl_alloc_saved_line ();
temp = (HIST_ENTRY *)NULL;
/* Search COUNT times through the history for a line matching
@@ -566,8 +638,7 @@ rl_history_search_internal (int count, int dir)
/* If we didn't find anything at all, return. */
if (temp == 0)
{
- /* XXX - check had_saved_line here? */
- rl_maybe_unsave_line ();
+ _rl_unsave_saved_search_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,12 +651,16 @@ 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_point = _rl_history_search_len; /* _rl_unsave_line changes it */
rl_mark = rl_end;
#endif
return 1;
}
+ /* We're committed to making the line we found the current contents of
+ rl_line_buffer. We can dispose of _rl_saved_line_for_search. */
+ dispose_saved_search_line ();
+
/* Copy the line we found into the current line buffer. */
make_history_line_current (temp);
@@ -619,7 +694,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 +705,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 36c9148..7c0f955 100644
--- a/shell.c
+++ b/shell.c
@@ -67,10 +67,6 @@
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
diff --git a/signals.c b/signals.c
index 9df365e..706035e 100644
--- 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-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.
@@ -267,6 +267,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 ();
@@ -582,6 +585,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 +607,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 +641,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)
diff --git a/support/config.guess b/support/config.guess
index 7f76b62..f6d217a 100644
--- a/support/config.guess
+++ b/support/config.guess
@@ -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-01-01'
# 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.
@@ -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
;;
@@ -904,7 +910,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 +972,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 +1068,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 +1192,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 +1232,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 +1373,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 +1419,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 +1595,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?
diff --git a/support/config.rpath b/support/config.rpath
index fc5913d..3893ddd 100644..100755
--- a/support/config.rpath
+++ b/support/config.rpath
@@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
-# 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
#
@@ -371,7 +371,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 +547,7 @@ case "$host_os" in
freebsd[23].*)
library_names_spec='$libname$shrext$versuffix'
;;
- freebsd* | dragonfly*)
+ freebsd* | dragonfly* | midnightbsd*)
library_names_spec='$libname$shrext'
;;
gnu*)
diff --git a/support/config.sub b/support/config.sub
index 9b62e37..2c6a07a 100644
--- a/support/config.sub
+++ b/support/config.sub
@@ -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
-timestamp='2021-12-25'
+timestamp='2024-01-01'
# 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
@@ -130,7 +130,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
;;
*-*-*-*)
@@ -145,7 +145,8 @@ case $1 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*)
+ | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
+ | windows-* )
basic_machine=$field1
basic_os=$maybe_os
;;
@@ -943,7 +944,7 @@ $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)
@@ -1075,7 +1076,7 @@ case $cpu-$vendor in
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
;;
- pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
cpu=i686
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1180,7 +1181,7 @@ case $cpu-$vendor in
case $cpu in
1750a | 580 \
| a29k \
- | aarch64 | aarch64_be \
+ | aarch64 | aarch64_be | aarch64c | arm64ec \
| abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
@@ -1199,50 +1200,29 @@ case $cpu-$vendor in
| d10v | d30v | dlx | dsp16xx \
| e2k | elxsi | epiphany \
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | javascript \
| h8300 | h8500 \
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
| k1om \
+ | kvx \
| le32 | le64 \
| lm32 \
- | loongarch32 | loongarch64 | loongarchx32 \
+ | loongarch32 | loongarch64 \
| 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 \
+ | mips* \
| mmix \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
+ | nanomips* \
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
@@ -1274,6 +1254,7 @@ case $cpu-$vendor in
| ubicom32 \
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \
+ | vc4 \
| visium \
| w65 \
| wasm32 | wasm64 \
@@ -1285,7 +1266,7 @@ case $cpu-$vendor in
;;
*)
- 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 +1287,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
@@ -1341,6 +1323,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
@@ -1506,10 +1492,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 +1520,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 +1538,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,19 +1588,24 @@ case $cpu-$vendor in
os=sunos3
;;
m68*-cisco)
- os=aout
+ os=
+ obj=aout
;;
mep-*)
- os=elf
+ os=
+ obj=elf
;;
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.
os=sysv3
@@ -1607,7 +1614,8 @@ case $cpu-$vendor in
os=sunos4.1.1
;;
pru-*)
- os=elf
+ os=
+ obj=elf
;;
*-be)
os=beos
@@ -1688,10 +1696,12 @@ case $cpu-$vendor in
os=uxpv
;;
*-rom68k)
- os=coff
+ os=
+ obj=coff
;;
*-*bug)
- os=coff
+ os=
+ obj=coff
;;
*-apple)
os=macos
@@ -1709,10 +1719,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,6 +1731,9 @@ 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.
@@ -1728,7 +1742,7 @@ case $os in
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
| hiux* | abug | nacl* | netware* | windows* \
- | os9* | macos* | osx* | ios* \
+ | os9* | macos* | osx* | ios* | tvos* | watchos* \
| mpw* | magic* | mmixware* | mon960* | lnews* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* | twizzler* \
@@ -1737,11 +1751,11 @@ case $os in
| 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* \
+ | bosx* | nextstep* | cxux* | oabi* \
+ | ptx* | ecoff* | winnt* | domain* | vsta* \
| udi* | lites* | ieee* | go32* | aux* | hcos* \
| chorusrdb* | cegcc* | glidix* | serenity* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | cygwin* | msys* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | mint* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
| interix* | uwin* | mks* | rhapsody* | darwin* \
@@ -1754,49 +1768,116 @@ case $os in
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
- | fiwix* )
+ | fiwix* | mlibc* | cos* | mbr* | ironclad* )
;;
# 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*- )
+ ;;
+ uclinux-uclibc*- )
+ ;;
+ 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*- | kopensolaris*-gnu*-)
+ ;;
+ vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+ ;;
+ nto-qnx*-)
+ ;;
+ os2-emx-)
;;
- *-eabi* | *-gnueabi*)
+ *-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
@@ -1879,7 +1960,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
index 0cac004..0cac004 100644..100755
--- a/support/install.sh
+++ b/support/install.sh
diff --git a/support/mkdirs b/support/mkdirs
index 46f656e..46f656e 100644..100755
--- a/support/mkdirs
+++ b/support/mkdirs
diff --git a/support/mkinstalldirs b/support/mkinstalldirs
index d2d5f21..d2d5f21 100644..100755
--- a/support/mkinstalldirs
+++ b/support/mkinstalldirs
diff --git a/support/shlib-install b/support/shlib-install
index 661355d..661355d 100644..100755
--- a/support/shlib-install
+++ b/support/shlib-install
diff --git a/support/shobj-conf b/support/shobj-conf
index cd7634d..c3df351 100644
--- a/support/shobj-conf
+++ b/support/shobj-conf
@@ -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'
diff --git a/support/wcwidth.c b/support/wcwidth.c
index 0f5ec99..f234f3c 100644
--- a/support/wcwidth.c
+++ b/support/wcwidth.c
@@ -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 859e6ee..467ea60 100644
--- 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 */
diff --git a/terminal.c b/terminal.c
index 9997161..7003d2a 100644
--- a/terminal.c
+++ b/terminal.c
@@ -1,6 +1,6 @@
/* terminal.c -- controlling the terminal with termcap. */
-/* Copyright (C) 1996-2022 Free Software Foundation, Inc.
+/* Copyright (C) 1996-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.
@@ -69,7 +69,7 @@
#include "rlshell.h"
#include "xmalloc.h"
-#if defined (__MINGW32__)
+#if defined (_WIN32)
# include <windows.h>
# include <wincon.h>
@@ -113,6 +113,7 @@ char PC, *BC, *UP;
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 +186,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 +221,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 +239,7 @@ _emx_get_screensize (int *swp, int *shp)
}
#endif
-#if defined (__MINGW32__)
+#if defined (_WIN32)
static void
_win_get_screensize (int *swp, int *shp)
{
@@ -272,7 +282,7 @@ _rl_get_screen_size (int tty, int ignore_env)
#if defined (__EMX__)
_emx_get_screensize (&wc, &wr);
-#elif defined (__MINGW32__)
+#elif defined (_WIN32) && !defined (__CYGWIN__)
_win_get_screensize (&wc, &wr);
#endif
@@ -415,14 +425,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 +481,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 +552,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 +567,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 +630,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 +643,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 +706,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 30fdaa1..c5281ef 100644
--- 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.
@@ -85,7 +85,8 @@ int _rl_optimize_typeahead = 1; /* rl_insert tries to read typeahead */
int
rl_insert_text (const char *string)
{
- register int i, l;
+ register int i;
+ size_t l;
l = (string && *string) ? strlen (string) : 0;
if (l == 0)
@@ -704,7 +705,11 @@ static mbstate_t ps = {0};
/* Insert the character C at the current location, moving point forward.
If C introduces a multibyte sequence, we read the whole sequence and
- then insert the multibyte char into the line buffer. */
+ then insert the multibyte char into the line buffer.
+ If C == 0, we immediately insert any pending partial multibyte character,
+ assuming that we have read a character that doesn't map to self-insert.
+ This doesn't completely handle characters that are part of a multibyte
+ character but map to editing functions. */
int
_rl_insert_char (int count, int c)
{
@@ -718,11 +723,28 @@ _rl_insert_char (int count, int c)
static int stored_count = 0;
#endif
+#if !defined (HANDLE_MULTIBYTE)
if (count <= 0)
return 0;
+#else
+ if (count < 0)
+ return 0;
+ if (count == 0)
+ {
+ if (pending_bytes_length == 0)
+ return 0;
+ if (stored_count <= 0)
+ stored_count = count;
+ else
+ count = stored_count;
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX == 1 || rl_byte_oriented)
+ memcpy (incoming, pending_bytes, pending_bytes_length);
+ incoming[pending_bytes_length] = '\0';
+ incoming_length = pending_bytes_length;
+ pending_bytes_length = 0;
+ memset (&ps, 0, sizeof (mbstate_t));
+ }
+ else if (MB_CUR_MAX == 1 || rl_byte_oriented)
{
incoming[0] = c;
incoming[1] = '\0';
@@ -730,6 +752,9 @@ _rl_insert_char (int count, int c)
}
else if (_rl_utf8locale && (c & 0x80) == 0)
{
+ if (pending_bytes_length)
+ _rl_insert_char (0, 0);
+
incoming[0] = c;
incoming[1] = '\0';
incoming_length = 1;
@@ -764,7 +789,8 @@ _rl_insert_char (int count, int c)
incoming[1] = '\0';
incoming_length = 1;
pending_bytes_length--;
- memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
+ if (pending_bytes_length)
+ memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
/* Clear the state of the byte sequence, because in this case the
effect of mbstate is undefined. */
memset (&ps, 0, sizeof (mbstate_t));
@@ -827,7 +853,11 @@ _rl_insert_char (int count, int c)
rl_insert_text (string);
xfree (string);
+#if defined (HANDLE_MULTIBYTE)
+ return (pending_bytes_length != 0);
+#else
return 0;
+#endif
}
if (count > TEXT_COUNT_MAX)
@@ -860,6 +890,8 @@ _rl_insert_char (int count, int c)
xfree (string);
incoming_length = 0;
stored_count = 0;
+
+ return (pending_bytes_length != 0);
#else /* !HANDLE_MULTIBYTE */
char str[TEXT_COUNT_MAX+1];
@@ -873,9 +905,9 @@ _rl_insert_char (int count, int c)
rl_insert_text (str);
count -= decreaser;
}
-#endif /* !HANDLE_MULTIBYTE */
return 0;
+#endif /* !HANDLE_MULTIBYTE */
}
if (MB_CUR_MAX == 1 || rl_byte_oriented)
@@ -903,9 +935,11 @@ _rl_insert_char (int count, int c)
rl_insert_text (incoming);
stored_count = 0;
}
-#endif
-
+
+ return (pending_bytes_length != 0);
+#else
return 0;
+#endif
}
/* Overwrite the character at point (or next COUNT characters) with C.
@@ -983,6 +1017,11 @@ rl_insert (int count, int c)
break;
}
+ /* If we didn't insert n and there are pending bytes, we need to insert
+ them if _rl_insert_char didn't do that on its own. */
+ if (r == 1 && rl_insert_mode == RL_IM_INSERT)
+ r = _rl_insert_char (0, 0); /* flush partial multibyte char */
+
if (n != (unsigned short)-2) /* -2 = sentinel value for having inserted N */
{
/* setting rl_pending_input inhibits setting rl_last_func so we do it
@@ -992,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;
}
@@ -1054,6 +1092,8 @@ _rl_insert_next_callback (_rl_callback_generic_arg *data)
int
rl_quoted_insert (int count, int key)
{
+ int r;
+
/* Let's see...should the callback interface futz with signal handling? */
#if defined (HANDLE_SIGNALS)
if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
@@ -1072,15 +1112,17 @@ rl_quoted_insert (int count, int key)
/* A negative count means to quote the next -COUNT characters. */
if (count < 0)
{
- int r;
-
do
r = _rl_insert_next (1);
while (r == 0 && ++count < 0);
- return r;
}
+ else
+ r = _rl_insert_next (count);
- return _rl_insert_next (count);
+ if (r == 1)
+ _rl_insert_char (0, 0); /* insert partial multibyte character */
+
+ return r;
}
/* Insert a tab character. */
@@ -1229,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
@@ -1885,3 +1928,453 @@ 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_maybe_replace_line ();
+ _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')
+ return 1;
+ if (func = rl_named_function (command))
+ {
+ 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;
+ }
+
+ free (command);
+ return r;
+}
diff --git a/tilde.c b/tilde.c
index d678a31..734b208 100644
--- 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 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 e4c457d..492894c 100644
--- 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 2e986db..2a24703 100644
--- a/util.c
+++ b/util.c
@@ -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>
@@ -229,26 +229,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 +247,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 +261,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 +272,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,9 +281,10 @@ _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)
{
@@ -417,6 +370,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 +459,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 +512,6 @@ _rl_settracefp (FILE *fp)
{
_rl_tracefp = fp;
}
-#endif
#endif /* DEBUG */
diff --git a/vi_mode.c b/vi_mode.c
index 3a033ba..762a214 100644
--- a/vi_mode.c
+++ b/vi_mode.c
@@ -1,7 +1,7 @@
/* vi_mode.c -- A vi emulation mode for Bash.
Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */
-/* Copyright (C) 1987-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.
@@ -76,6 +76,10 @@
#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;
diff --git a/xmalloc.c b/xmalloc.c
index 5d01d75..35e46ea 100644
--- 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);
diff --git a/xmalloc.h b/xmalloc.h
index 0fb9df9..c819804 100644
--- 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.
@@ -29,13 +29,7 @@
#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);