Imported from ../bash-2.04.tar.gz.
This commit is contained in:
parent
b72432fdcc
commit
bb70624e96
387 changed files with 28522 additions and 9334 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# Generated automatically from Makefile.in by configure.
|
||||
# Derived by hand from the generated readline-src/doc/Makefile
|
||||
# This makefile for Readline library documentation is in -*- text -*- mode.
|
||||
# Emacs likes it that way.
|
||||
top_srcdir = .
|
||||
topdir = .
|
||||
srcdir = .
|
||||
VPATH = .
|
||||
|
||||
|
|
@ -9,25 +9,32 @@ prefix = /usr/local
|
|||
infodir = ${prefix}/info
|
||||
|
||||
mandir = ${prefix}/man
|
||||
man3dir = $(mandir)/man3
|
||||
manpfx = man
|
||||
|
||||
man1ext = 1
|
||||
man1dir = $(mandir)/$(manpfx)$(man1ext)
|
||||
man3ext = 3
|
||||
man3dir = $(mandir)/$(manpfx)$(man3ext)
|
||||
|
||||
SHELL = /bin/sh
|
||||
RM = rm -f
|
||||
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
|
||||
BUILD_DIR = .
|
||||
TEXINPUTDIR = $(srcdir)
|
||||
|
||||
MAKEINFO = makeinfo
|
||||
MAKEINFO = LANGUAGE= makeinfo
|
||||
TEXI2DVI = $(srcdir)/texi2dvi
|
||||
TEXI2HTML = $(srcdir)/texi2html
|
||||
QUIETPS = #set this to -q to shut up dvips
|
||||
DVIPS = dvips -D 300 $(QUIETPS) -o $@ # tricky
|
||||
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
PSDPI = 300 # I don't have any 600-dpi printers
|
||||
DVIPS = dvips -D ${PSDPI} $(QUIETPS) -o $@ # tricky
|
||||
|
||||
RLSRC = $(srcdir)/rlman.texinfo $(srcdir)/rluser.texinfo \
|
||||
$(srcdir)/rltech.texinfo $(srcdir)/manvers.texinfo
|
||||
$(srcdir)/rltech.texinfo $(srcdir)/manvers.texinfo \
|
||||
$(srcdir)/rluserman.texinfo
|
||||
HISTSRC = $(srcdir)/hist.texinfo $(srcdir)/hsuser.texinfo \
|
||||
$(srcdir)/hstech.texinfo $(srcdir)/manvers.texinfo
|
||||
|
||||
|
|
@ -37,25 +44,19 @@ NROFF = groff -Tascii
|
|||
# This should be a program that converts troff to postscript
|
||||
GROFF = groff
|
||||
|
||||
DVIOBJ = readline.dvi history.dvi
|
||||
INFOOBJ = readline.info history.info
|
||||
PSOBJ = readline.ps history.ps
|
||||
HTMLOBJ = readline.html history.html
|
||||
HTMLTOC = readline_toc.html history_toc.html
|
||||
TEXTOBJ = readline.0
|
||||
DVIOBJ = readline.dvi history.dvi rluserman.dvi
|
||||
INFOOBJ = readline.info history.info rluserman.info
|
||||
PSOBJ = readline.ps history.ps rluserman.ps
|
||||
HTMLOBJ = readline.html history.html rluserman.html
|
||||
|
||||
INTERMEDIATE_OBJ = rlman.dvi hist.dvi
|
||||
INTERMEDIATE_OBJ = rlman.dvi hist.dvi rluserman.dvi
|
||||
|
||||
CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) $(HTMLTOC) $(TEXTOBJ)
|
||||
CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ)
|
||||
|
||||
.SUFFIXES: .0 .3 .ps .txt .dvi
|
||||
.SUFFIXES: .ps .txt .dvi
|
||||
|
||||
.3.0:
|
||||
$(RM) $@
|
||||
-${NROFF} -man $< > $@
|
||||
|
||||
all: info dvi html ps #text
|
||||
nodvi: info html #text
|
||||
all: info dvi html ps
|
||||
nodvi: info html
|
||||
|
||||
readline.dvi: $(RLSRC)
|
||||
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texinfo
|
||||
|
|
@ -64,6 +65,12 @@ readline.dvi: $(RLSRC)
|
|||
readline.info: $(RLSRC)
|
||||
$(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rlman.texinfo
|
||||
|
||||
rluserman.dvi: $(RLSRC)
|
||||
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rluserman.texinfo
|
||||
|
||||
rluserman.info: $(RLSRC)
|
||||
$(MAKEINFO) --no-split -I $(TEXINPUTDIR) -o $@ $(srcdir)/rluserman.texinfo
|
||||
|
||||
history.dvi: ${HISTSRC}
|
||||
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/hist.texinfo
|
||||
mv hist.dvi history.dvi
|
||||
|
|
@ -75,6 +82,10 @@ readline.ps: readline.dvi
|
|||
$(RM) $@
|
||||
$(DVIPS) readline.dvi
|
||||
|
||||
rluserman.ps: rluserman.dvi
|
||||
$(RM) $@
|
||||
$(DVIPS) rluserman.dvi
|
||||
|
||||
history.ps: history.dvi
|
||||
$(RM) $@
|
||||
$(DVIPS) history.dvi
|
||||
|
|
@ -84,6 +95,9 @@ readline.html: ${RLSRC}
|
|||
sed -e 's:rlman.html:readline.html:' rlman.html > readline.html
|
||||
$(RM) rlman.html
|
||||
|
||||
rluserman.html: ${RLSRC}
|
||||
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/rluserman.texinfo
|
||||
|
||||
history.html: ${HISTSRC}
|
||||
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/hist.texinfo
|
||||
sed -e 's:hist.html:history.html:' hist.html > history.html
|
||||
|
|
@ -93,9 +107,6 @@ info: $(INFOOBJ)
|
|||
dvi: $(DVIOBJ)
|
||||
ps: $(PSOBJ)
|
||||
html: $(HTMLOBJ)
|
||||
text: $(TEXTOBJ)
|
||||
|
||||
readline.0: readline.3
|
||||
|
||||
clean:
|
||||
$(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
|
||||
|
|
@ -113,27 +124,7 @@ maintainer-clean: clean
|
|||
$(RM) $(INTERMEDIATE_OBJ)
|
||||
$(RM) Makefile
|
||||
|
||||
installdirs: $(top_srcdir)/support/mkdirs
|
||||
-$(SHELL) $(top_srcdir)/support/mkdirs $(infodir) $(man3dir)
|
||||
|
||||
install: installdirs
|
||||
if test -f readline.info; then \
|
||||
${INSTALL_DATA} readline.info $(infodir)/readline.info; \
|
||||
else \
|
||||
${INSTALL_DATA} $(srcdir)/readline.info $(infodir)/readline.info; \
|
||||
fi
|
||||
if test -f history.info; then \
|
||||
${INSTALL_DATA} history.info $(infodir)/history.info; \
|
||||
else \
|
||||
${INSTALL_DATA} $(srcdir)/history.info $(infodir)/history.info; \
|
||||
fi
|
||||
if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
|
||||
install-info --dir-file=$(infodir)/dir $(infodir)/readline.info ; \
|
||||
install-info --dir-file=$(infodir)/dir $(infodir)/history.info ; \
|
||||
else true; fi
|
||||
-${INSTALL_DATA} $(srcdir)/readline.3 $(man3dir)/readline.3
|
||||
install:
|
||||
@echo "This documentation should not be installed."
|
||||
|
||||
uninstall:
|
||||
$(RM) $(infodir)/readline.info
|
||||
$(RM) $(infodir)/history.info
|
||||
$(RM) $(man3dir)/readline.3
|
||||
|
|
|
|||
|
|
@ -55,8 +55,8 @@ provides a consistent user interface for recalling lines of previously
|
|||
typed input.
|
||||
|
||||
Published by the Free Software Foundation @*
|
||||
675 Massachusetts Avenue, @*
|
||||
Cambridge, MA 02139 USA
|
||||
59 Temple Place, Suite 330, @*
|
||||
Boston, MA 02111 USA
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
|
|
|
|||
|
|
@ -66,6 +66,13 @@ If the programmer desires, he can use the Readline library, which
|
|||
includes some history manipulation by default, and has the added
|
||||
advantage of command line editing.
|
||||
|
||||
Before declaring any functions using any functionality the History
|
||||
library provides in other code, an application writer should include
|
||||
the file @code{<readline/history.h>} in any file that uses the
|
||||
History library's features. It supplies extern declarations for all
|
||||
of the library's public functions and variables, and declares all of
|
||||
the public data structures.
|
||||
|
||||
@node History Storage
|
||||
@section History Storage
|
||||
|
||||
|
|
@ -334,7 +341,7 @@ if expansions did take place;
|
|||
@item -1
|
||||
if there was an error in expansion;
|
||||
@item 2
|
||||
if the returned line should only be displayed, but not executed,
|
||||
if the returned line should be displayed, but not executed,
|
||||
as with the @code{:p} modifier (@pxref{Modifiers}).
|
||||
@end table
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
@ignore
|
||||
This file documents the user interface to the GNU History library.
|
||||
|
||||
Copyright (C) 1988, 1991, 1996 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988-1999 Free Software Foundation, Inc.
|
||||
Authored by Brian Fox and Chet Ramey.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of this manual
|
||||
|
|
@ -26,11 +26,16 @@ into another language, under the above conditions for modified versions.
|
|||
@node Using History Interactively
|
||||
@chapter Using History Interactively
|
||||
|
||||
@ifclear BashFeatures
|
||||
@defcodeindex bt
|
||||
@end ifclear
|
||||
|
||||
@ifset BashFeatures
|
||||
This chapter describes how to use the GNU History Library interactively,
|
||||
from a user's standpoint. It should be considered a user's guide. For
|
||||
information on using the GNU History Library in other programs,
|
||||
see the GNU Readline Library Manual.
|
||||
This chapter describes how to use the @sc{gnu} History Library
|
||||
interactively, from a user's standpoint.
|
||||
It should be considered a user's guide.
|
||||
For information on using the @sc{gnu} History Library in other programs,
|
||||
see the @sc{gnu} Readline Library Manual.
|
||||
@end ifset
|
||||
@ifclear BashFeatures
|
||||
This chapter describes how to use the GNU History Library interactively,
|
||||
|
|
@ -63,20 +68,25 @@ information on using the GNU History Library in your own programs,
|
|||
When the @samp{-o history} option to the @code{set} builtin
|
||||
is enabled (@pxref{The Set Builtin}),
|
||||
the shell provides access to the @var{command history},
|
||||
the list of commands previously typed. The text of the last
|
||||
@code{HISTSIZE}
|
||||
commands (default 500) is saved in a history list. The shell
|
||||
stores each command in the history list prior to parameter and
|
||||
variable expansion
|
||||
the list of commands previously typed.
|
||||
The value of the @code{HISTSIZE} shell variable is used as the
|
||||
number of commands to save in a history list.
|
||||
The text of the last @code{$HISTSIZE}
|
||||
commands (default 500) is saved.
|
||||
The shell stores each command in the history list prior to
|
||||
parameter and variable expansion
|
||||
but after history expansion is performed, subject to the
|
||||
values of the shell variables
|
||||
@code{HISTIGNORE} and @code{HISTCONTROL}.
|
||||
|
||||
When the shell starts up, the history is initialized from the
|
||||
file named by the @code{HISTFILE} variable (default @file{~/.bash_history}).
|
||||
@code{HISTFILE} is truncated, if necessary, to contain no more than
|
||||
the number of lines specified by the value of the @code{HISTFILESIZE}
|
||||
variable. When an interactive shell exits, the last
|
||||
@code{HISTSIZE} lines are copied from the history list to @code{HISTFILE}.
|
||||
The file named by the value of @code{HISTFILE} is truncated, if
|
||||
necessary, to contain no more than the number of lines specified by
|
||||
the value of the @code{HISTFILESIZE} variable.
|
||||
When an interactive shell exits, the last
|
||||
@code{$HISTSIZE} lines are copied from the history list to the file
|
||||
named by @code{$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.
|
||||
|
|
@ -88,11 +98,11 @@ lines. If @code{HISTFILESIZE} is not set, no truncation is performed.
|
|||
|
||||
The builtin command @code{fc} may be used to list or edit and re-execute
|
||||
a portion of the history list.
|
||||
The @code{history} builtin can be used to display or modify the history
|
||||
The @code{history} builtin may be used to display or modify the history
|
||||
list and manipulate the history file.
|
||||
When using the command-line editing, search commands
|
||||
When using command-line editing, search commands
|
||||
are available in each editing mode that provide access to the
|
||||
history list.
|
||||
history list (@pxref{Commands For History}).
|
||||
|
||||
The shell allows control over which commands are saved on the history
|
||||
list. The @code{HISTCONTROL} and @code{HISTIGNORE}
|
||||
|
|
@ -105,13 +115,14 @@ semicolons where necessary to preserve syntactic correctness.
|
|||
The @code{lithist}
|
||||
shell option causes the shell to save the command with embedded newlines
|
||||
instead of semicolons.
|
||||
The @code{shopt} builtin is used to set these options.
|
||||
@xref{Bash Builtins}, for a description of @code{shopt}.
|
||||
|
||||
@node Bash History Builtins
|
||||
@section Bash History Builtins
|
||||
@cindex history builtins
|
||||
|
||||
Bash provides two builtin commands that allow you to manipulate the
|
||||
Bash provides two builtin commands which manipulate the
|
||||
history list and history file.
|
||||
|
||||
@table @code
|
||||
|
|
@ -151,23 +162,27 @@ and typing @samp{r} re-executes the last command (@pxref{Aliases}).
|
|||
@item history
|
||||
@btindex history
|
||||
@example
|
||||
history [-c] [@var{n}]
|
||||
history [@var{n}]
|
||||
history -c
|
||||
history -d @var{offset}
|
||||
history [-anrw] [@var{filename}]
|
||||
history -ps @var{arg}
|
||||
@end example
|
||||
|
||||
Display the history list with line numbers. Lines prefixed with
|
||||
with a @samp{*} have been modified. An argument of @var{n} says
|
||||
to list only the last @var{n} lines. Options, if supplied, have
|
||||
the following meanings:
|
||||
With no options, display the history list with line numbers.
|
||||
Lines prefixed with with a @samp{*} have been modified.
|
||||
An argument of @var{n} lists only the last @var{n} lines.
|
||||
Options, if supplied, have the following meanings:
|
||||
|
||||
@table @code
|
||||
@item -w
|
||||
Write out the current history to the history file.
|
||||
@item -c
|
||||
Clear the history list. This may be combined
|
||||
with the other options to replace the history list completely.
|
||||
|
||||
@item -r
|
||||
Read the current history file and append its contents to
|
||||
the history list.
|
||||
@item -d @var{offset}
|
||||
Delete the history entry at position @var{offset}.
|
||||
@var{offset} should be specified as it appears when the history is
|
||||
displayed.
|
||||
|
||||
@item -a
|
||||
Append the new
|
||||
|
|
@ -179,20 +194,24 @@ Append the history lines not already read from the history file
|
|||
to the current history list. These are lines appended to the history
|
||||
file since the beginning of the current Bash session.
|
||||
|
||||
@item -c
|
||||
Clear the history list. This may be combined
|
||||
with the other options to replace the history list completely.
|
||||
@item -r
|
||||
Read the current history file and append its contents to
|
||||
the history list.
|
||||
|
||||
@item -w
|
||||
Write out the current history to the history file.
|
||||
|
||||
@item -p
|
||||
Perform history substitution on the @var{arg}s and display the result
|
||||
on the standard output, without storing the results in the history list.
|
||||
|
||||
@item -s
|
||||
The @var{arg}s are added to the end of
|
||||
the history list as a single entry.
|
||||
|
||||
@item -p
|
||||
Perform history substitution on the @var{arg}s and display the result
|
||||
on the standard output, without storing the results in the history list.
|
||||
@end table
|
||||
|
||||
When the @samp{-w}, @samp{-r}, @samp{-a}, or @samp{-n} option is
|
||||
When any of the @samp{-w}, @samp{-r}, @samp{-a}, or @samp{-n} options is
|
||||
used, if @var{filename}
|
||||
is given, then it is used as the history file. If not, then
|
||||
the value of the @code{HISTFILE} variable is used.
|
||||
|
|
@ -309,6 +328,26 @@ may be omitted if the word designator begins with a @samp{^}, @samp{$},
|
|||
of the line, with the first word being denoted by 0 (zero). Words are
|
||||
inserted into the current line separated by single spaces.
|
||||
|
||||
@need 0.75
|
||||
For example,
|
||||
|
||||
@table @code
|
||||
@item !!
|
||||
designates the preceding command. When you type this, the preceding
|
||||
command is repeated in toto.
|
||||
|
||||
@item !!:$
|
||||
designates the last argument of the preceding command. This may be
|
||||
shortened to @code{!$}.
|
||||
|
||||
@item !fi:2
|
||||
designates the second argument of the most recent command starting with
|
||||
the letters @code{fi}.
|
||||
@end table
|
||||
|
||||
@need 0.75
|
||||
Here are the word designators:
|
||||
|
||||
@table @code
|
||||
|
||||
@item 0 (zero)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
@set EDITION 4.0
|
||||
@set VERSION 4.0
|
||||
@set UPDATED 31 December 1998
|
||||
@set UPDATE-MONTH December 1998
|
||||
@set EDITION 4.1
|
||||
@set VERSION 4.1
|
||||
@set UPDATED 2000 January 19
|
||||
@set UPDATE-MONTH January 2000
|
||||
|
||||
@set LASTCHANGE Thu Dec 31 10:17:05 EST 1998
|
||||
@set LASTCHANGE Wed Jan 19 12:16:30 EST 2000
|
||||
|
|
|
|||
|
|
@ -55,8 +55,8 @@ in the consistency of user interface across discrete programs that need
|
|||
to provide a command line interface.
|
||||
|
||||
Published by the Free Software Foundation @*
|
||||
675 Massachusetts Avenue, @*
|
||||
Cambridge, MA 02139 USA
|
||||
59 Temple Place, Suite 330, @*
|
||||
Boston, MA 02111 USA
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
|
|
|
|||
|
|
@ -167,6 +167,13 @@ programs. This section describes the various functions and variables
|
|||
defined within the Readline library which allow a user program to add
|
||||
customized functionality to Readline.
|
||||
|
||||
Before declaring any functions that customize Readline's behavior, or
|
||||
using any functionality Readline provides in other code, an
|
||||
application writer should include the file @code{<readline/readline.h>}
|
||||
in any file that uses Readline's features. Since some of the definitions
|
||||
in @code{readline.h} use the @code{stdio} library, the file
|
||||
@code{<stdio.h>} should be included before @code{readline.h}.
|
||||
|
||||
@menu
|
||||
* The Function Type:: C declarations to make code readable.
|
||||
* Function Writing:: Variables and calling conventions.
|
||||
|
|
@ -241,7 +248,9 @@ These variables are available to function writers.
|
|||
|
||||
@deftypevar {char *} rl_line_buffer
|
||||
This is the line gathered so far. You are welcome to modify the
|
||||
contents of the line, but see @ref{Allowing Undoing}.
|
||||
contents of the line, but see @ref{Allowing Undoing}. The
|
||||
function @code{rl_extend_line_buffer} is available to increase
|
||||
the memory allocated to @code{rl_line_buffer}.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar int rl_point
|
||||
|
|
@ -282,6 +291,16 @@ The prompt Readline uses. This is set from the argument to
|
|||
@code{readline ()}, and should not be assigned to directly.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar int rl_already_prompted
|
||||
If an application wishes to display the prompt itself, rather than have
|
||||
Readline do it the first time @code{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 @code{readline()} so
|
||||
the redisplay functions can update the display properly.
|
||||
The calling application is responsible for managing the value; Readline
|
||||
never sets it.
|
||||
@end deftypevar
|
||||
|
||||
@deftypevar {char *} rl_library_version
|
||||
The version number of this revision of the library.
|
||||
@end deftypevar
|
||||
|
|
@ -447,6 +466,13 @@ several internal keymaps: @code{emacs_standard_keymap},
|
|||
@code{emacs_standard_keymap} is the default, and the examples in
|
||||
this manual assume that.
|
||||
|
||||
Since @code{readline} installs a set of default key bindings the first
|
||||
time it is called, there is always the danger that a custom binding
|
||||
installed before the first call to @code{readline} will be overridden.
|
||||
An alternate mechanism is to install custom key bindings in an
|
||||
initialization function assigned to the @code{rl_startup_hook} variable
|
||||
(@pxref{Readline Variables}).
|
||||
|
||||
These functions manage key bindings.
|
||||
|
||||
@deftypefun int rl_bind_key (int key, Function *function)
|
||||
|
|
@ -534,6 +560,12 @@ the list is formatted in such a way that it can be made part of an
|
|||
Print the names of all bindable Readline functions to @code{rl_outstream}.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun {char **} rl_funmap_names ()
|
||||
Return a NULL terminated array of known function names. The array is
|
||||
sorted. The array itself is allocated, but not the strings inside. You
|
||||
should free () the array when you done, but not the pointrs.
|
||||
@end deftypefun
|
||||
|
||||
@node Allowing Undoing
|
||||
@subsection Allowing Undoing
|
||||
|
||||
|
|
@ -615,10 +647,19 @@ Readline thinks the screen display is correct.
|
|||
@end deftypefun
|
||||
|
||||
@deftypefun int rl_on_new_line ()
|
||||
Tell the update routines that we have moved onto a new (empty) line,
|
||||
Tell the update functions that we have moved onto a new (empty) line,
|
||||
usually after ouputting a newline.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun int rl_on_new_line_with_prompt ()
|
||||
Tell the update functions that we have moved onto a new line, with
|
||||
@var{rl_prompt} already displayed.
|
||||
This could be used by applications that want to output the prompt string
|
||||
themselves, but still need Readline to know the prompt string length for
|
||||
redisplay.
|
||||
It should be used after setting @var{rl_already_prompted}.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun int rl_reset_line_state ()
|
||||
Reset the display state to a clean state and redisplay the current line
|
||||
starting on a new line.
|
||||
|
|
@ -688,7 +729,7 @@ before Readline attempts to read characters from the terminal with
|
|||
@code{rl_read_key ()}.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun rl_extend_line_buffer (int len)
|
||||
@deftypefun int rl_extend_line_buffer (int len)
|
||||
Ensure that @code{rl_line_buffer} has enough space to hold @var{len}
|
||||
characters, possibly reallocating it if necessary.
|
||||
@end deftypefun
|
||||
|
|
@ -700,6 +741,8 @@ Initialize or re-initialize Readline's internal state.
|
|||
@deftypefun int rl_reset_terminal (char *terminal_name)
|
||||
Reinitialize Readline's idea of the terminal settings using
|
||||
@var{terminal_name} as the terminal type (e.g., @code{vt100}).
|
||||
If @var{terminal_name} is NULL, the value of the @code{TERM}
|
||||
environment variable is used.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun int alphabetic (int c)
|
||||
|
|
@ -1106,7 +1149,7 @@ for subsequent calls.
|
|||
|
||||
@deftypevar {Function *} rl_completion_entry_function
|
||||
A pointer to the generator function for @code{completion_matches ()}.
|
||||
@code{NULL} means to use @code{filename_entry_function ()}, the default
|
||||
@code{NULL} means to use @code{filename_completion_function ()}, the default
|
||||
filename completer.
|
||||
@end deftypevar
|
||||
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@
|
|||
This file documents the end user interface to the GNU command line
|
||||
editing features. It is to be an appendix to manuals for programs which
|
||||
use these features. There is a document entitled "readline.texinfo"
|
||||
which contains both end-user and programmer documentation for the GNU
|
||||
Readline Library.
|
||||
which contains both end-user and programmer documentation for the
|
||||
GNU Readline Library.
|
||||
|
||||
Copyright (C) 1988, 1991, 1993, 1996 Free Software Foundation, Inc.
|
||||
Copyright (C) 1988-1999 Free Software Foundation, Inc.
|
||||
|
||||
Authored by Brian Fox and Chet Ramey.
|
||||
|
||||
|
|
@ -36,11 +36,19 @@ into another language, under the above conditions for modified versions.
|
|||
@comment If you are including this manual as an appendix, then set the
|
||||
@comment variable readline-appendix.
|
||||
|
||||
@ifclear BashFeatures
|
||||
@defcodeindex bt
|
||||
@end ifclear
|
||||
|
||||
@node Command Line Editing
|
||||
@chapter Command Line Editing
|
||||
|
||||
This chapter describes the basic features of the @sc{GNU}
|
||||
This chapter describes the basic features of the @sc{gnu}
|
||||
command line editing interface.
|
||||
@ifset BashFeatures
|
||||
Command line editing is provided by the Readline library, which is
|
||||
used by several different programs, including Bash.
|
||||
@end ifset
|
||||
|
||||
@menu
|
||||
* Introduction and Notation:: Notation used in this text.
|
||||
|
|
@ -50,6 +58,12 @@ command line editing interface.
|
|||
available for binding
|
||||
* Readline vi Mode:: A short description of how to make Readline
|
||||
behave like the vi editor.
|
||||
@ifset BashFeatures
|
||||
* Programmable Completion:: How to specify the possible completions for
|
||||
a specific command.
|
||||
* Programmable Completion Builtins:: Builtin commands to specify how to
|
||||
complete arguments for a particular command.
|
||||
@end ifset
|
||||
@end menu
|
||||
|
||||
@node Introduction and Notation
|
||||
|
|
@ -63,9 +77,19 @@ produced when the @key{k} key is pressed while the Control key
|
|||
is depressed.
|
||||
|
||||
The text @key{M-k} is read as `Meta-K' and describes the character
|
||||
produced when the meta key (if you have one) is depressed, and the @key{k}
|
||||
key is pressed. If you do not have a meta key, the identical keystroke
|
||||
can be generated by typing @key{ESC} @i{first}, and then typing @key{k}.
|
||||
produced when the Meta key (if you have one) is depressed, and the @key{k}
|
||||
key is pressed.
|
||||
The Meta key is labeled @key{ALT} on many keyboards.
|
||||
On keyboards with two keys labeled @key{ALT} (usually to either side of
|
||||
the space bar), the @key{ALT} on the left side is generally set to
|
||||
work as a Meta key.
|
||||
The @key{ALT} key on the right may also be configured to work as a
|
||||
Meta key or may be configured as some other modifier, such as a
|
||||
Compose key for typing accented characters.
|
||||
|
||||
If you do not have a Meta or @key{ALT} key, or another key working as
|
||||
a Meta key, the identical keystroke can be generated by typing @key{ESC}
|
||||
@i{first}, and then typing @key{k}.
|
||||
Either process is known as @dfn{metafying} the @key{k} key.
|
||||
|
||||
The text @key{M-C-k} is read as `Meta-Control-k' and describes the
|
||||
|
|
@ -75,6 +99,10 @@ In addition, several keys have their own names. Specifically,
|
|||
@key{DEL}, @key{ESC}, @key{LFD}, @key{SPC}, @key{RET}, and @key{TAB} all
|
||||
stand for themselves when seen in this text, or in an init file
|
||||
(@pxref{Readline Init File}).
|
||||
If your keyboard lacks a @key{LFD} key, typing @key{C-j} will
|
||||
produce the desired character.
|
||||
The @key{RET} key may be labeled @key{Return} or @key{Enter} on
|
||||
some keyboards.
|
||||
|
||||
@node Readline Interaction
|
||||
@section Readline Interaction
|
||||
|
|
@ -110,8 +138,8 @@ character appears where the cursor was, and then the cursor moves one
|
|||
space to the right. If you mistype a character, you can use your
|
||||
erase character to back up and delete the mistyped character.
|
||||
|
||||
Sometimes you may miss typing a character that you wanted to type, and
|
||||
not notice your error until you have typed several other characters. In
|
||||
Sometimes you may mistype a character, and
|
||||
not notice the error until you have typed several other characters. In
|
||||
that case, you can type @key{C-b} to move the cursor to the left, and then
|
||||
correct your mistake. Afterwards, you can move the cursor to the right
|
||||
with @key{C-f}.
|
||||
|
|
@ -120,7 +148,7 @@ When you add text in the middle of a line, you will notice that characters
|
|||
to the right of the cursor are `pushed over' to make room for the text
|
||||
that you have inserted. Likewise, when you delete text behind the cursor,
|
||||
characters to the right of the cursor are `pulled back' to fill in the
|
||||
blank space created by the removal of the text. A list of the basic bare
|
||||
blank space created by the removal of the text. A list of the bare
|
||||
essentials for editing the text of an input line follows.
|
||||
|
||||
@table @asis
|
||||
|
|
@ -128,22 +156,28 @@ essentials for editing the text of an input line follows.
|
|||
Move back one character.
|
||||
@item @key{C-f}
|
||||
Move forward one character.
|
||||
@item @key{DEL}
|
||||
@item @key{DEL} or @key{Backspace}
|
||||
Delete the character to the left of the cursor.
|
||||
@item @key{C-d}
|
||||
Delete the character underneath the cursor.
|
||||
@item @w{Printing characters}
|
||||
Insert the character into the line at the cursor.
|
||||
@item @key{C-_}
|
||||
@item @key{C-_} or @key{C-x C-u}
|
||||
Undo the last editing command. You can undo all the way back to an
|
||||
empty line.
|
||||
@end table
|
||||
|
||||
@noindent
|
||||
(Depending on your configuration, the @key{Backspace} key be set to
|
||||
delete the character to the left of the cursor and the @key{DEL} key set
|
||||
to delete the character underneath the cursor, like @key{C-d}, rather
|
||||
than the character to the left of the cursor.)
|
||||
|
||||
@node Readline Movement Commands
|
||||
@subsection Readline Movement Commands
|
||||
|
||||
|
||||
The above table describes the most basic possible keystrokes that you need
|
||||
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 @key{C-b}, @key{C-f},
|
||||
@key{C-d}, and @key{DEL}. Here are some commands for moving more rapidly
|
||||
|
|
@ -175,6 +209,8 @@ operate on characters while meta keystrokes operate on words.
|
|||
@dfn{Killing} text means to delete the text from the line, but to save
|
||||
it away for later use, usually by @dfn{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.
|
||||
|
|
@ -194,12 +230,14 @@ Here is the list of commands for killing text.
|
|||
Kill the text from the current cursor position to the end of the line.
|
||||
|
||||
@item M-d
|
||||
Kill from the cursor to the end of the current word, or if between
|
||||
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 @key{M-f}.
|
||||
|
||||
@item M-DEL
|
||||
Kill from the cursor the start of the previous word, or if between
|
||||
Kill from the cursor the start of the previous word, or, if between
|
||||
words, to the start of the previous word.
|
||||
Word boundaries are the same as those used by @key{M-b}.
|
||||
|
||||
@item C-w
|
||||
Kill from the cursor to the previous whitespace. This is different than
|
||||
|
|
@ -231,7 +269,7 @@ start of the line, you might type @samp{M-- C-k}.
|
|||
|
||||
The general way to pass numeric arguments to a command is to type meta
|
||||
digits before the command. If the first `digit' typed is a minus
|
||||
sign (@key{-}), then the sign of the argument will be negative. Once
|
||||
sign (@samp{-}), then the sign of the argument will be negative. Once
|
||||
you have typed one meta digit to get the argument started, you can type
|
||||
the remainder of the digits, and then the command. For example, to give
|
||||
the @key{C-d} command an argument of 10, you could type @samp{M-1 0 C-d}.
|
||||
|
|
@ -252,15 +290,18 @@ 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.
|
||||
The characters present in the value of the @var{isearch-terminators} variable
|
||||
To search backward in the history for a particular string, type
|
||||
@key{C-r}. Typing @key{C-s} searches forward through the history.
|
||||
The characters present in the value of the @code{isearch-terminators} variable
|
||||
are used to terminate an incremental search.
|
||||
If that variable has not been assigned a value, the @key{ESC} and
|
||||
@key{C-J} characters will terminate an incremental search.
|
||||
@key{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 @key{C-s} or
|
||||
@key{C-r} as appropriate.
|
||||
|
||||
To find other matching entries in the history list, type @key{C-r} or
|
||||
@key{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
|
||||
|
|
@ -276,11 +317,11 @@ typed by the user or be part of the contents of the current line.
|
|||
@section Readline Init File
|
||||
@cindex initialization file, readline
|
||||
|
||||
Although the Readline library comes with a set of @code{emacs}-like
|
||||
Although the Readline library comes with a set of Emacs-like
|
||||
keybindings installed by default, it is possible to use a different set
|
||||
of keybindings.
|
||||
Any user can customize programs that use Readline by putting
|
||||
commands in an @dfn{inputrc} file in his home directory.
|
||||
commands in an @dfn{inputrc} file, conventionally in his home directory.
|
||||
The name of this
|
||||
@ifset BashFeatures
|
||||
file is taken from the value of the shell variable @code{INPUTRC}. If
|
||||
|
|
@ -326,6 +367,11 @@ change from the default Emacs-like key binding to use
|
|||
set editing-mode vi
|
||||
@end example
|
||||
|
||||
@ifset BashFeatures
|
||||
The @w{@code{bind -V}} command lists the current Readline variable names
|
||||
and values. @xref{Bash Builtins}.
|
||||
@end ifset
|
||||
|
||||
A great deal of run-time behavior is changeable with the following
|
||||
variables.
|
||||
|
||||
|
|
@ -363,7 +409,7 @@ them; otherwise, they are simply listed. The default limit is
|
|||
@vindex convert-meta
|
||||
If set to @samp{on}, Readline will convert characters with the
|
||||
eighth bit set to an ASCII key sequence by stripping the eighth
|
||||
bit and prepending an @key{ESC} character, converting them to a
|
||||
bit and prefixing an @key{ESC} character, converting them to a
|
||||
meta-prefixed key sequence. The default value is @samp{on}.
|
||||
|
||||
@item disable-completion
|
||||
|
|
@ -469,7 +515,7 @@ completions. The default is @samp{off}.
|
|||
|
||||
@item Key Bindings
|
||||
The syntax for controlling key bindings in the init file is
|
||||
simple. First you have to know the name of the command that you
|
||||
simple. First you need to find the name of the command that you
|
||||
want to change. The following sections contain tables of the command
|
||||
name, the default keybinding, if any, and a short description of what
|
||||
the command does.
|
||||
|
|
@ -480,6 +526,12 @@ command on a line in the init file. The name of the key
|
|||
can be expressed in different ways, depending on which is most
|
||||
comfortable for you.
|
||||
|
||||
@ifset BashFeatures
|
||||
The @w{@code{bind -p}} command displays Readline function names and
|
||||
bindings in a format that can put directly into an initialization file.
|
||||
@xref{Bash Builtins}.
|
||||
@end ifset
|
||||
|
||||
@table @asis
|
||||
@item @w{@var{keyname}: @var{function-name} or @var{macro}}
|
||||
@var{keyname} is the name of a key spelled out in English. For example:
|
||||
|
|
@ -497,7 +549,7 @@ expressed on the right hand side (that is, to insert the text
|
|||
@item @w{"@var{keyseq}": @var{function-name} or @var{macro}}
|
||||
@var{keyseq} differs from @var{keyname} above in that strings
|
||||
denoting an entire key sequence can be specified, by placing
|
||||
the key sequence in double quotes. Some GNU Emacs style key
|
||||
the key sequence in double quotes. Some @sc{gnu} Emacs style key
|
||||
escapes can be used, as in the following example, but the
|
||||
special character names are not recognized.
|
||||
|
||||
|
|
@ -515,7 +567,7 @@ the text @samp{Function Key 1}.
|
|||
|
||||
@end table
|
||||
|
||||
The following GNU Emacs style escape sequences are available when
|
||||
The following @sc{gnu} Emacs style escape sequences are available when
|
||||
specifying key sequences:
|
||||
|
||||
@table @code
|
||||
|
|
@ -528,12 +580,12 @@ an escape character
|
|||
@item @kbd{\\}
|
||||
backslash
|
||||
@item @kbd{\"}
|
||||
@key{"}
|
||||
@key{"}, a double quotation mark
|
||||
@item @kbd{\'}
|
||||
@key{'}
|
||||
@key{'}, a single quote or apostrophe
|
||||
@end table
|
||||
|
||||
In addition to the GNU Emacs style escape sequences, a second
|
||||
In addition to the @sc{gnu} Emacs style escape sequences, a second
|
||||
set of backslash escapes is available:
|
||||
|
||||
@table @code
|
||||
|
|
@ -554,10 +606,10 @@ horizontal tab
|
|||
@item \v
|
||||
vertical tab
|
||||
@item \@var{nnn}
|
||||
the character whose ASCII code is the octal value @var{nnn}
|
||||
the character whose @code{ASCII} code is the octal value @var{nnn}
|
||||
(one to three digits)
|
||||
@item \x@var{nnn}
|
||||
the character whose ASCII code is the hexadecimal value @var{nnn}
|
||||
the character whose @code{ASCII} code is the hexadecimal value @var{nnn}
|
||||
(one to three digits)
|
||||
@end table
|
||||
|
||||
|
|
@ -762,6 +814,17 @@ $endif
|
|||
|
||||
This section describes Readline commands that may be bound to key
|
||||
sequences.
|
||||
@ifset BashFeatures
|
||||
You can list your key bindings by executing
|
||||
@w{@code{bind -P}} or, for a more terse format, suitable for an
|
||||
@var{inputrc} file, @w{@code{bind -p}}. (@xref{Bash Builtins}.)
|
||||
@end ifset
|
||||
|
||||
Command names without an accompanying key sequence are unbound by default.
|
||||
In the following descriptions, @var{point} refers to the current cursor
|
||||
position, and @var{mark} refers to a cursor position saved by the
|
||||
@code{set-mark} command.
|
||||
The text between the point and mark is referred to as the @var{region}.
|
||||
|
||||
@node Commands For Moving
|
||||
@subsection Commands For Moving
|
||||
|
|
@ -783,7 +846,7 @@ Move forward to the end of the next word. Words are composed of
|
|||
letters and digits.
|
||||
|
||||
@item backward-word (M-b)
|
||||
Move back to the start of this, or the previous, word. Words are
|
||||
Move back to the start of the current or previous word. Words are
|
||||
composed of letters and digits.
|
||||
|
||||
@item clear-screen (C-l)
|
||||
|
|
@ -846,9 +909,9 @@ for a string supplied by the user.
|
|||
|
||||
@item history-search-forward ()
|
||||
Search forward through the history for the string of characters
|
||||
between the start of the current line and the current cursor
|
||||
position (the @var{point}). This is a non-incremental search. By
|
||||
default, this command is unbound.
|
||||
between the start of the current line and the point.
|
||||
This is a non-incremental search.
|
||||
By default, this command is unbound.
|
||||
|
||||
@item history-search-backward ()
|
||||
Search backward through the history for the string of characters
|
||||
|
|
@ -908,11 +971,11 @@ 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 don't work.
|
||||
Negative arguments have no effect.
|
||||
|
||||
@item transpose-words (M-t)
|
||||
Drag the word behind the cursor past the word in front of the cursor
|
||||
moving the cursor over that word as well.
|
||||
Drag the word before point past the word after point,
|
||||
moving point past that word as well.
|
||||
|
||||
@item upcase-word (M-u)
|
||||
Uppercase the current (or following) word. With a negative argument,
|
||||
|
|
@ -934,38 +997,36 @@ capitalize the previous word, but do not move the cursor.
|
|||
@ftable @code
|
||||
|
||||
@item kill-line (C-k)
|
||||
Kill the text from the current cursor position to the end of the line.
|
||||
Kill the text from point to the end of the line.
|
||||
|
||||
@item backward-kill-line (C-x Rubout)
|
||||
Kill backward to the beginning of the line.
|
||||
|
||||
@item unix-line-discard (C-u)
|
||||
Kill backward from the cursor to the beginning of the current line.
|
||||
The killed text is saved on the kill-ring.
|
||||
|
||||
@item kill-whole-line ()
|
||||
Kill all characters on the current line, no matter where the
|
||||
cursor is. By default, this is unbound.
|
||||
Kill all characters on the current line, no matter point is.
|
||||
By default, this is unbound.
|
||||
|
||||
@item kill-word (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 @code{forward-word}.
|
||||
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}.
|
||||
|
||||
@item backward-kill-word (M-DEL)
|
||||
Kill the word behind the cursor. Word boundaries are the same
|
||||
as @code{backward-word}.
|
||||
Kill the word behind point.
|
||||
Word boundaries are the same as @code{backward-word}.
|
||||
|
||||
@item unix-word-rubout (C-w)
|
||||
Kill the word behind the cursor, using white space as a word
|
||||
boundary. The killed text is saved on the kill-ring.
|
||||
Kill the word behind point, using white space as a word boundary.
|
||||
The killed text is saved on the kill-ring.
|
||||
|
||||
@item delete-horizontal-space ()
|
||||
Delete all spaces and tabs around point. By default, this is unbound.
|
||||
|
||||
@item kill-region ()
|
||||
Kill the text between the point and the @emph{mark} (saved
|
||||
cursor position). This text is referred to as the @var{region}.
|
||||
Kill the text in the current region.
|
||||
By default, this command is unbound.
|
||||
|
||||
@item copy-region-as-kill ()
|
||||
|
|
@ -1109,7 +1170,7 @@ the text against lines from the history list for possible
|
|||
completion matches.
|
||||
|
||||
@item complete-into-braces (M-@{)
|
||||
Perform filename completion and return the list of possible completions
|
||||
Perform filename completion and insert the list of possible completions
|
||||
enclosed within braces so the list is available to the shell
|
||||
(@pxref{Brace Expansion}).
|
||||
|
||||
|
|
@ -1138,7 +1199,7 @@ in the macro appear as if typed at the keyboard.
|
|||
@ftable @code
|
||||
|
||||
@item re-read-init-file (C-x C-r)
|
||||
Read in the contents of the inputrc file, and incorporate
|
||||
Read in the contents of the @var{inputrc} file, and incorporate
|
||||
any bindings or variable assignments found there.
|
||||
|
||||
@item abort (C-g)
|
||||
|
|
@ -1192,7 +1253,8 @@ The value of the @code{comment-begin}
|
|||
variable is inserted at the beginning of the current line,
|
||||
and the line is accepted as if a newline had been typed.
|
||||
@ifset BashFeatures
|
||||
This makes the current line a shell comment.
|
||||
The default value of @code{comment-begin} causes this command
|
||||
to make the current line a shell comment.
|
||||
@end ifset
|
||||
|
||||
@item dump-functions ()
|
||||
|
|
@ -1285,3 +1347,283 @@ switches you into `command' mode, where you can edit the text of the
|
|||
line with the standard @code{vi} movement keys, move to previous
|
||||
history lines with @samp{k} and subsequent lines with @samp{j}, and
|
||||
so forth.
|
||||
|
||||
@ifset BashFeatures
|
||||
@node Programmable Completion
|
||||
@section Programmable Completion
|
||||
@cindex programmable completion
|
||||
|
||||
When word completion is attempted for an argument to a command for
|
||||
which a completion specification (a @var{compspec}) has been defined
|
||||
using the @code{complete} builtin (@pxref{Programmable Completion Builtins}),
|
||||
the programmable completion facilities are invoked.
|
||||
|
||||
First, the command name is identified.
|
||||
If a compspec has been defined for that command, the
|
||||
compspec is used to generate the list of possible completions for the word.
|
||||
If the command word is a full pathname, a compspec for the full
|
||||
pathname is searched for first.
|
||||
If no compspec is found for the full pathname, an attempt is made to
|
||||
find a compspec for the portion following the final slash.
|
||||
|
||||
Once a compspec has been found, it is used to generate the list of
|
||||
matching words.
|
||||
If a compspec is not found, the default Bash completion
|
||||
described above (@pxref{Commands For Completion}) is performed.
|
||||
|
||||
First, the actions specified by the compspec are used.
|
||||
Only matches which are prefixed by the word being completed are
|
||||
returned.
|
||||
When the @samp{-f} or @samp{-d} option is used for filename or
|
||||
directory name completion, the shell variable @code{FIGNORE} is
|
||||
used to filter the matches.
|
||||
@xref{Bash Variables}, for a description of @code{FIGNORE}.
|
||||
|
||||
Any completions specified by a filename expansion pattern to the
|
||||
@samp{-G} option are generated next.
|
||||
The words generated by the pattern need not match the word being completed.
|
||||
The @code{GLOBIGNORE} shell variable is not used to filter the matches,
|
||||
but the @code{FIGNORE} shell variable is used.
|
||||
|
||||
Next, the string specified as the argument to the @samp{-W} option
|
||||
is considered.
|
||||
The string is first split using the characters in the @code{IFS}
|
||||
special variable as delimiters.
|
||||
Shell quoting is honored.
|
||||
Each word is then expanded using
|
||||
brace expansion, tilde expansion, parameter and variable expansion,
|
||||
command substitution, arithmetic expansion, and pathname expansion,
|
||||
as described above (@pxref{Shell Expansions}).
|
||||
The results are split using the rules described above
|
||||
(@pxref{Word Splitting}).
|
||||
The results of the expansion are prefix-matched against the word being
|
||||
completed, and the matching words become the possible completions.
|
||||
|
||||
After these matches have been generated, any shell function or command
|
||||
specified with the @samp{-F} and @samp{-C} options is invoked.
|
||||
When the command or function is invoked, the @code{COMP_LINE} and
|
||||
@code{COMP_POINT} variables are assigned values as described above
|
||||
(@pxref{Bash Variables}).
|
||||
If a shell function is being invoked, the @code{COMP_WORDS} and
|
||||
@code{COMP_CWORD} variables are also set.
|
||||
When the function or command is invoked, the first argument is the
|
||||
name of the command whose arguments are being completed, the
|
||||
second argument is the word being completed, and the third argument
|
||||
is the word preceding the word being completed on the current command line.
|
||||
No filtering of the generated completions against the word being completed
|
||||
is performed; the function or command has complete freedom in generating
|
||||
the matches.
|
||||
|
||||
Any function specified with @samp{-F} is invoked first.
|
||||
The function may use any of the shell facilities, including the
|
||||
@code{compgen} builtin described below
|
||||
(@pxref{Programmable Completion Builtins}), to generate the matches.
|
||||
It must put the possible completions in the @code{COMPREPLY} array
|
||||
variable.
|
||||
|
||||
Next, any command specified with the @samp{-C} option is invoked
|
||||
in an environment equivalent to command substitution.
|
||||
It should print a list of completions, one per line, to
|
||||
the standard output.
|
||||
Backslash may be used to escape a newline, if necessary.
|
||||
|
||||
After all of the possible completions are generated, any filter
|
||||
specified with the @samp{-X} option is applied to the list.
|
||||
The filter is a pattern as used for pathname expansion; a @samp{&}
|
||||
in the pattern is replaced with the text of the word being completed.
|
||||
A literal @samp{&} may be escaped with a backslash; the backslash
|
||||
is removed before attempting a match.
|
||||
Any completion that matches the pattern will be removed from the list.
|
||||
A leading @samp{!} negates the pattern; in this case any completion
|
||||
not matching the pattern will be removed.
|
||||
|
||||
Finally, any prefix and suffix specified with the @samp{-P} and @samp{-S}
|
||||
options are added to each member of the completion list, and the result is
|
||||
returned to the Readline completion code as the list of possible
|
||||
completions.
|
||||
|
||||
If a compspec is found, whatever it generates is returned to the completion
|
||||
code as the full set of possible completions.
|
||||
The default Bash completions are not attempted, and the Readline
|
||||
default of filename completion is disabled.
|
||||
|
||||
@node Programmable Completion Builtins
|
||||
@section Programmable Completion Builtins
|
||||
@cindex completion builtins
|
||||
|
||||
Two builtin commands are available to manipulate the programmable completion
|
||||
facilities.
|
||||
|
||||
@table @code
|
||||
@item compgen
|
||||
@btindex compgen
|
||||
@example
|
||||
@code{compgen [@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 @samp{-p} and @samp{-r}, and write
|
||||
the matches to the standard output.
|
||||
When using the @samp{-F} or @samp{-C} options, the various shell variables
|
||||
set by the programmable completion facilities, while available, will not
|
||||
have useful values.
|
||||
|
||||
The matches will be generated in the same way as if the programmable
|
||||
completion code had generated them directly from a completion specification
|
||||
with the same flags.
|
||||
If @var{word} is specified, only those completions matching @var{word}
|
||||
will be displayed.
|
||||
|
||||
The return value is true unless an invalid option is supplied, or no
|
||||
matches were generated.
|
||||
|
||||
@item complete
|
||||
@btindex complete
|
||||
@example
|
||||
@code{complete [-abcdefjkvu] [-A @var{action}] [-G @var{globpat}] [-W @var{wordlist}]
|
||||
[-P @var{prefix}] [-S @var{suffix}] [-X @var{filterpat}] [-F @var{function}]
|
||||
[-C @var{command}] @var{name} [@var{name} @dots{}]}
|
||||
@code{complete -pr [@var{name} @dots{}]}
|
||||
@end example
|
||||
|
||||
Specify how arguments to each @var{name} should be completed.
|
||||
If the @samp{-p} option is supplied, or if no options are supplied, existing
|
||||
completion specifications are printed in a way that allows them to be
|
||||
reused as input.
|
||||
The @samp{-r} option removes a completion specification for
|
||||
each @var{name}, or, if no @var{name}s are supplied, all
|
||||
completion specifications.
|
||||
|
||||
The process of applying these completion specifications when word completion
|
||||
is attempted is described above (@pxref{Programmable Completion}).
|
||||
|
||||
Other options, if specified, have the following meanings.
|
||||
The arguments to the @samp{-G}, @samp{-W}, and @samp{-X} options
|
||||
(and, if necessary, the @samp{-P} and @samp{-S} options)
|
||||
should be quoted to protect them from expansion before the
|
||||
@code{complete} builtin is invoked.
|
||||
|
||||
@table @code
|
||||
@item -A @var{action}
|
||||
The @var{action} may be one of the following to generate a list of possible
|
||||
completions:
|
||||
|
||||
@table @code
|
||||
@item alias
|
||||
Alias names. May also be specified as @samp{-a}.
|
||||
|
||||
@item arrayvar
|
||||
Array variable names.
|
||||
|
||||
@item binding
|
||||
Readline key binding names (@pxref{Bindable Readline Commands}).
|
||||
|
||||
@item builtin
|
||||
Names of shell builtin commands. May also be specified as @samp{-b}.
|
||||
|
||||
@item command
|
||||
Command names. May also be specified as @samp{-c}.
|
||||
|
||||
@item directory
|
||||
Directory names. May also be specified as @samp{-d}.
|
||||
|
||||
@item disabled
|
||||
Names of disabled shell builtins.
|
||||
|
||||
@item enabled
|
||||
Names of enabled shell builtins.
|
||||
|
||||
@item export
|
||||
Names of exported shell variables. May also be specified as @samp{-e}.
|
||||
|
||||
@item file
|
||||
File names. May also be specified as @samp{-f}.
|
||||
|
||||
@item function
|
||||
Names of shell functions.
|
||||
|
||||
@item helptopic
|
||||
Help topics as accepted by the @code{help} builtin (@pxref{Bash Builtins}).
|
||||
|
||||
@item hostname
|
||||
Hostnames, as taken from the file specified by the
|
||||
@code{HOSTFILE} shell variable (@pxref{Bash Variables}).
|
||||
|
||||
@item job
|
||||
Job names, if job control is active. May also be specified as @samp{-j}.
|
||||
|
||||
@item keyword
|
||||
Shell reserved words. May also be specified as @samp{-k}.
|
||||
|
||||
@item running
|
||||
Names of running jobs, if job control is active.
|
||||
|
||||
@item setopt
|
||||
Valid arguments for the @samp{-o} option to the @code{set} builtin
|
||||
(@pxref{The Set Builtin}).
|
||||
|
||||
@item shopt
|
||||
Shell option names as accepted by the @code{shopt} builtin
|
||||
(@pxref{Bash Builtins}).
|
||||
|
||||
@item signal
|
||||
Signal names.
|
||||
|
||||
@item stopped
|
||||
Names of stopped jobs, if job control is active.
|
||||
|
||||
@item user
|
||||
User names. May also be specified as @samp{-u}.
|
||||
|
||||
@item variable
|
||||
Names of all shell variables. May also be specified as @samp{-v}.
|
||||
@end table
|
||||
|
||||
@item -G @var{globpat}
|
||||
The filename expansion pattern @var{globpat} is expanded to generate
|
||||
the possible completions.
|
||||
|
||||
@item -W @var{wordlist}
|
||||
The @var{wordlist} is split using the characters in the
|
||||
@code{IFS} special variable as delimiters, and each resultant word
|
||||
is expanded.
|
||||
The possible completions are the members of the resultant list which
|
||||
match the word being completed.
|
||||
|
||||
@item -C @var{command}
|
||||
@var{command} is executed in a subshell environment, and its output is
|
||||
used as the possible completions.
|
||||
|
||||
@item -F @var{function}
|
||||
The shell function @var{function} is executed in the current shell
|
||||
environment.
|
||||
When it finishes, the possible completions are retrieved from the value
|
||||
of the @code{COMPREPLY} array variable.
|
||||
|
||||
@item -X @var{filterpat}
|
||||
@var{filterpat} is a pattern as used for filename expansion.
|
||||
It is applied to the list of possible completions generated by the
|
||||
preceding options and arguments, and each completion matching
|
||||
@var{filterpat} is removed from the list.
|
||||
A leading @samp{!} in @var{filterpat} negates the pattern; in this
|
||||
case, any completion not matching @var{filterpat} is removed.
|
||||
|
||||
@item -P @var{prefix}
|
||||
@var{prefix} is added at the beginning of each possible completion
|
||||
after all other options have been applied.
|
||||
|
||||
@item -S @var{suffix}
|
||||
@var{suffix} is appended to each possible completion
|
||||
after all other options have been applied.
|
||||
@end table
|
||||
|
||||
The return value is true unless an invalid option is supplied, an option
|
||||
other than @samp{-p} or @samp{-r} 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.
|
||||
|
||||
@end table
|
||||
@end ifset
|
||||
|
|
|
|||
94
lib/readline/doc/rluserman.texinfo
Normal file
94
lib/readline/doc/rluserman.texinfo
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
\input texinfo @c -*-texinfo-*-
|
||||
@comment %**start of header (This is for running Texinfo on a region.)
|
||||
@setfilename rluserman.info
|
||||
@settitle GNU Readline Library
|
||||
@comment %**end of header (This is for running Texinfo on a region.)
|
||||
@setchapternewpage odd
|
||||
|
||||
@include manvers.texinfo
|
||||
|
||||
@ifinfo
|
||||
@dircategory Libraries
|
||||
@direntry
|
||||
* Readline: (readline). The GNU readline library API
|
||||
@end direntry
|
||||
|
||||
This document describes the end user interface of the GNU Readline Library,
|
||||
a utility which aids in the consistency of user interface across discrete
|
||||
programs that need to provide a command line interface.
|
||||
|
||||
Copyright (C) 1988-1999 Free Software Foundation, Inc.
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
pare preserved on all copies.
|
||||
|
||||
@ignore
|
||||
Permission is granted to process this file through TeX and print the
|
||||
results, provided the printed document carries copying permission
|
||||
notice identical to this one except for the removal of this paragraph
|
||||
(this paragraph not being relevant to the printed manual).
|
||||
@end ignore
|
||||
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the entire
|
||||
resulting derived work is distributed under the terms of a permission
|
||||
notice identical to this one.
|
||||
|
||||
Permission is granted to copy and distribute translations of this manual
|
||||
into another language, under the above conditions for modified versions,
|
||||
except that this permission notice may be stated in a translation approved
|
||||
by the Free Software Foundation.
|
||||
@end ifinfo
|
||||
|
||||
@titlepage
|
||||
@title GNU Readline Library User Interface
|
||||
@subtitle Edition @value{EDITION}, for @code{Readline Library} Version @value{VERSION}.
|
||||
@subtitle @value{UPDATE-MONTH}
|
||||
@author Brian Fox, Free Software Foundation
|
||||
@author Chet Ramey, Case Western Reserve University
|
||||
|
||||
@page
|
||||
This document describes the end user interface of the GNU Readline Library,
|
||||
a utility which aids in the consistency of user interface across discrete
|
||||
programs that need to provide a command line interface.
|
||||
|
||||
Published by the Free Software Foundation @*
|
||||
59 Temple Place, Suite 330, @*
|
||||
Boston, MA 02111 USA
|
||||
|
||||
Permission is granted to make and distribute verbatim copies of
|
||||
this manual provided the copyright notice and this permission notice
|
||||
are preserved on all copies.
|
||||
|
||||
Permission is granted to copy and distribute modified versions of this
|
||||
manual under the conditions for verbatim copying, provided that the entire
|
||||
resulting derived work is distributed under the terms of a permission
|
||||
notice identical to this one.
|
||||
|
||||
Permission is granted to copy and distribute translations of this manual
|
||||
into another language, under the above conditions for modified versions,
|
||||
except that this permission notice may be stated in a translation approved
|
||||
by the Free Software Foundation.
|
||||
|
||||
@vskip 0pt plus 1filll
|
||||
Copyright @copyright{} 1988-1999 Free Software Foundation, Inc.
|
||||
@end titlepage
|
||||
|
||||
@ifinfo
|
||||
@node Top
|
||||
@top GNU Readline Library
|
||||
|
||||
This document describes the end user interface of the GNU Readline Library,
|
||||
a utility which aids in the consistency of user interface across discrete
|
||||
programs that need to provide a command line interface.
|
||||
|
||||
@menu
|
||||
* Command Line Editing:: GNU Readline User's Manual.
|
||||
@end menu
|
||||
@end ifinfo
|
||||
|
||||
@include rluser.texinfo
|
||||
|
||||
@contents
|
||||
@bye
|
||||
Loading…
Add table
Add a link
Reference in a new issue