summaryrefslogtreecommitdiff
path: root/doc/readline.info-1
diff options
context:
space:
mode:
Diffstat (limited to 'doc/readline.info-1')
-rw-r--r--doc/readline.info-11322
1 files changed, 0 insertions, 1322 deletions
diff --git a/doc/readline.info-1 b/doc/readline.info-1
deleted file mode 100644
index 78bbd05..0000000
--- a/doc/readline.info-1
+++ /dev/null
@@ -1,1322 +0,0 @@
-This is Info file readline.info, produced by Makeinfo-1.55 from the
-input file rlman.texinfo.
-
- This document describes 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, 1991 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: readline.info, Node: Top, Next: Command Line Editing, Prev: (DIR), Up: (DIR)
-
-GNU Readline Library
-********************
-
- This document describes the GNU Readline Library, a utility which
-aids in the consistency of user interface across discrete programs that
-need to provide a command line interface.
-
-* Menu:
-
-* Command Line Editing:: GNU Readline User's Manual.
-* Programming with GNU Readline:: GNU Readline Programmer's Manual.
-* Concept Index:: Index of concepts described in this manual.
-* Function and Variable Index:: Index of externally visible functions
- and variables.
-
-
-File: readline.info, Node: Command Line Editing, Next: Programming with GNU Readline, Prev: Top, Up: Top
-
-Command Line Editing
-********************
-
- This chapter describes the basic features of the GNU command line
-editing interface.
-
-* Menu:
-
-* Introduction and Notation:: Notation used in this text.
-* Readline Interaction:: The minimum set of commands for editing a line.
-* Readline Init File:: Customizing Readline from a user's view.
-* Bindable Readline Commands:: A description of most of the Readline commands
- available for binding
-* Readline vi Mode:: A short description of how to make Readline
- behave like the vi editor.
-
-
-File: readline.info, Node: Introduction and Notation, Next: Readline Interaction, Up: Command Line Editing
-
-Introduction to Line Editing
-============================
-
- The following paragraphs describe the notation used to represent
-keystrokes.
-
- The text C-k is read as `Control-K' and describes the character
-produced when the Control key is depressed and the k key is struck.
-
- 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 struck. If you do not have a meta key, the identical keystroke
-can be generated by typing ESC first, and then typing k. Either
-process is known as "metafying" the k key.
-
- The text M-C-k is read as `Meta-Control-k' and describes the
-character produced by "metafying" C-k.
-
- In addition, several keys have their own names. Specifically, DEL,
-ESC, LFD, SPC, RET, and TAB all stand for themselves when seen in this
-text, or in an init file (*note Readline Init File::., for more info).
-
-
-File: readline.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing
-
-Readline Interaction
-====================
-
- Often during an interactive session you type in a long line of text,
-only to notice that the first word on the line is misspelled. The
-Readline library gives you a set of commands for manipulating the text
-as you type it in, allowing you to just fix your typo, and not forcing
-you to retype the majority of the line. Using these editing commands,
-you move the cursor to the place that needs correction, and delete or
-insert the text of the corrections. Then, when you are satisfied with
-the line, you simply press RETURN. You do not have to be at the end of
-the line to press RETURN; the entire line is accepted regardless of the
-location of the cursor within the line.
-
-* Menu:
-
-* Readline Bare Essentials:: The least you need to know about Readline.
-* Readline Movement Commands:: Moving about the input line.
-* Readline Killing Commands:: How to delete text, and how to get it back!
-* Readline Arguments:: Giving numeric arguments to commands.
-
-
-File: readline.info, Node: Readline Bare Essentials, Next: Readline Movement Commands, Up: Readline Interaction
-
-Readline Bare Essentials
-------------------------
-
- In order to enter characters into the line, simply type them. The
-typed character appears where the cursor was, and then the cursor moves
-one space to the right. If you mistype a character, you can use your
-erase character to back up and delete the mistyped character.
-
- Sometimes you may miss typing a character that you wanted to type,
-and not notice your error until you have typed several other
-characters. In that case, you can type C-b to move the cursor to the
-left, and then correct your mistake. Afterwards, you can move the
-cursor to the right with C-f.
-
- When you add text in the middle of a line, you will notice that
-characters to the right of the cursor are `pushed over' to make room
-for the text that you have inserted. Likewise, when you delete text
-behind the cursor, characters to the right of the cursor are `pulled
-back' to fill in the blank space created by the removal of the text. A
-list of the basic bare essentials for editing the text of an input line
-follows.
-
-C-b
- Move back one character.
-
-C-f
- Move forward one character.
-
-DEL
- Delete the character to the left of the cursor.
-
-C-d
- Delete the character underneath the cursor.
-
-Printing characters
- Insert the character into the line at the cursor.
-
-C-_
- Undo the last thing that you did. You can undo all the way back
- to an empty line.
-
-
-File: readline.info, Node: Readline Movement Commands, Next: Readline Killing Commands, Prev: Readline Bare Essentials, Up: Readline Interaction
-
-Readline Movement Commands
---------------------------
-
- The above table describes the most basic possible keystrokes that
-you need in order to do editing of the input line. For your
-convenience, many other commands have been added in addition to C-b,
-C-f, C-d, and DEL. Here are some commands for moving more rapidly
-about the line.
-
-C-a
- Move to the start of the line.
-
-C-e
- Move to the end of the line.
-
-M-f
- Move forward a word.
-
-M-b
- Move backward a word.
-
-C-l
- Clear the screen, reprinting the current line at the top.
-
- Notice how C-f moves forward a character, while M-f moves forward a
-word. It is a loose convention that control keystrokes operate on
-characters while meta keystrokes operate on words.
-
-
-File: readline.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction
-
-Readline Killing Commands
--------------------------
-
- "Killing" text means to delete the text from the line, but to save
-it away for later use, usually by "yanking" (re-inserting) it back into
-the line. If the description for a command says that it `kills' text,
-then you can be sure that you can get the text back in a different (or
-the same) place later.
-
- When you use a kill command, the text is saved in a "kill-ring".
-Any number of consecutive kills save all of the killed text together, so
-that when you yank it back, you get it all. The kill ring is not line
-specific; the text that you killed on a previously typed line is
-available to be yanked back later, when you are typing another line.
-
- Here is the list of commands for killing text.
-
-C-k
- Kill the text from the current cursor position to the end of the
- line.
-
-M-d
- Kill from the cursor to the end of the current word, or if between
- words, to the end of the next word.
-
-M-DEL
- Kill from the cursor the start of the previous word, or if between
- words, to the start of the previous word.
-
-C-w
- Kill from the cursor to the previous whitespace. This is
- different than M-DEL because the word boundaries differ.
-
- And, here is how to "yank" the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-
-C-y
- Yank the most recently killed text back into the buffer at the
- cursor.
-
-M-y
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is C-y or M-y.
-
-
-File: readline.info, Node: Readline Arguments, Prev: Readline Killing Commands, Up: Readline Interaction
-
-Readline Arguments
-------------------
-
- You can pass numeric arguments to Readline commands. Sometimes the
-argument acts as a repeat count, other times it is the sign of the
-argument that is significant. If you pass a negative argument to a
-command which normally acts in a forward direction, that command will
-act in a backward direction. For example, to kill text back to the
-start of the line, you might type M- C-k.
-
- The general way to pass numeric arguments to a command is to type
-meta digits before the command. If the first `digit' you type is a
-minus sign (-), then the sign of the argument will be negative. Once
-you have typed one meta digit to get the argument started, you can type
-the remainder of the digits, and then the command. For example, to give
-the C-d command an argument of 10, you could type M-1 0 C-d.
-
-
-File: readline.info, Node: Readline Init File, Next: Bindable Readline Commands, Prev: Readline Interaction, Up: Command Line Editing
-
-Readline Init File
-==================
-
- Although the Readline library comes with a set of Emacs-like
-keybindings installed by default, it is possible that you would like to
-use a different set of keybindings. You can customize programs that
-use Readline by putting commands in an "init" file in your home
-directory. The name of this file is taken from the value of the
-environment variable `INPUTRC'. If that variable is unset, the default
-is `~/.inputrc'.
-
- When a program which uses the Readline library starts up, the init
-file is read, and the key bindings are set.
-
- In addition, the `C-x C-r' command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-* Menu:
-
-* Readline Init Syntax:: Syntax for the commands in the inputrc file.
-* Conditional Init Constructs:: Conditional key bindings in the inputrc file.
-
-
-File: readline.info, Node: Readline Init Syntax, Next: Conditional Init Constructs, Up: Readline Init File
-
-Readline Init Syntax
---------------------
-
- There are only a few basic constructs allowed in the Readline init
-file. Blank lines are ignored. Lines beginning with a # are comments.
-Lines beginning with a $ indicate conditional constructs (*note
-Conditional Init Constructs::.). Other lines denote variable settings
-and key bindings.
-
-Variable Settings
- You can change the state of a few variables in Readline by using
- the `set' command within the init file. Here is how you would
- specify that you wish to use `vi' line editing commands:
-
- set editing-mode vi
-
- Right now, there are only a few variables which can be set; so
- few, in fact, that we just list them here:
-
- `editing-mode'
- The `editing-mode' variable controls which editing mode you
- are using. 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'.
-
- `horizontal-scroll-mode'
- This variable can be set to either `On' or `Off'. Setting it
- to `On' means that the text of the lines that you edit will
- scroll horizontally on a single screen line when they are
- longer than the width of the screen, instead of wrapping onto
- a new screen line. By default, this variable is set to `Off'.
-
- `mark-modified-lines'
- This variable, when set to `On', says to display an asterisk
- (`*') at the start of history lines which have been modified.
- This variable is `off' by default.
-
- `bell-style'
- Controls what happens when Readline wants to ring the
- terminal bell. If set to `none', Readline never rings the
- bell. If set to `visible', Readline uses a visible bell if
- one is available. If set to `audible' (the default),
- Readline attempts to ring the terminal's bell.
-
- `comment-begin'
- The string to insert at the beginning of the line when the
- `vi-comment' command is executed. The default value is `"#"'.
-
- `meta-flag'
- If set to `on', Readline will enable eight-bit input (it will
- not strip the eighth bit from the characters it reads),
- regardless of what the terminal claims it can support. The
- default value is `off'.
-
- `convert-meta'
- If set to `on', Readline will convert characters with the
- eigth bit set to an ASCII key sequence by stripping the eigth
- bit and prepending an ESC character, converting them to a
- meta-prefixed key sequence. The default value is `on'.
-
- `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'.
-
- `completion-query-items'
- The number of possible completions that determines when the
- user is asked whether he wants to see the list of
- possibilities. If the number of possible completions is
- greater than this value, Readline will ask the user whether
- or not he wishes to view them; otherwise, they are simply
- listed. The default limit is `100'.
-
- `keymap'
- Sets Readline's idea of the current keymap for key binding
- commands. Acceptable `keymap' names are `emacs',
- `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move',
- `vi-command', and `vi-insert'. `vi' is equivalent to
- `vi-command'; `emacs' is equivalent to `emacs-standard'. The
- default value is `emacs'. The value of the `editing-mode'
- variable also affects the default keymap.
-
- `show-all-if-ambiguous'
- This alters the default behavior of the completion functions.
- If set to `on', words which have more than one possible
- completion cause the matches to be listed immediately instead
- of ringing the bell. The default value is `off'.
-
- `expand-tilde'
- If set to `on', tilde expansion is performed when Readline
- attempts word completion. The default is `off'.
-
-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
- want to change. The following pages contain tables of the command
- name, the default keybinding, and a short description of what the
- command does.
-
- Once you know the name of the command, simply place the name of
- the key you wish to bind the command to, a colon, and then the
- name of the 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.
-
- KEYNAME: FUNCTION-NAME or MACRO
- KEYNAME is the name of a key spelled out in English. For
- example:
- Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: ">&output"
-
- In the above example, `C-u' is bound to the function
- `universal-argument', 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).
-
- "KEYSEQ": FUNCTION-NAME or MACRO
- KEYSEQ differs from KEYNAME above in that strings denoting an
- entire key sequence can be specified, by placing the key
- sequence in double quotes. Some GNU Emacs style key escapes
- can be used, as in the following example, but the special
- character names are not recognized.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In the above example, `C-u' is 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 escape sequences are available when specifying
- key sequences:
-
- ``\C-''
- control prefix
-
- ``\M-''
- meta prefix
-
- ``\e''
- an escape character
-
- ``\\''
- backslash
-
- ``\"''
- "
-
- ``\'''
- '
-
- When entering the text of a macro, single or double quotes
- should be used to indicate a macro definition. Unquoted text
- is assumed to be a function name. Backslash will quote any
- character in the macro text, including " and '. For example,
- the following binding will make `C-x \' insert a single \
- into the line:
- "\C-x\\": "\\"
-
-
-File: readline.info, Node: Conditional Init Constructs, Prev: Readline Init Syntax, Up: Readline Init File
-
-Conditional Init Constructs
----------------------------
-
- Readline implements a facility similar in spirit to the conditional
-compilation features of the C preprocessor which allows key bindings
-and variable settings to be performed as the result of tests. There
-are three parser directives used.
-
-`$if'
- The `$if' construct allows bindings to be made based on the
- editing mode, the terminal being used, or the application using
- Readline. The text of the test extends to the end of the line; no
- characters are required to isolate it.
-
- `mode'
- The `mode=' form of the `$if' directive is used to test
- whether Readline is in `emacs' or `vi' mode. This may be
- used in conjunction with the `set keymap' command, for
- instance, to set bindings in the `emacs-standard' and
- `emacs-ctlx' keymaps only if Readline is starting out in
- `emacs' mode.
-
- `term'
- The `term=' form may be used to include terminal-specific key
- bindings, perhaps to bind the key sequences output by the
- terminal's function keys. The word on the right side of the
- `=' is tested against the full name of the terminal and the
- portion of the terminal name before the first `-'. This
- allows SUN to match both SUN and SUN-CMD, for instance.
-
- `application'
- The APPLICATION construct is used to include
- application-specific settings. Each program using the
- Readline library sets the APPLICATION NAME, and you can test
- for it. This could be used to bind key sequences to
- functions useful for a specific program. For instance, the
- following command adds a key sequence that quotes the current
- or previous word in Bash:
- $if bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $endif
-
-`$endif'
- This command, as you saw in the previous example, terminates an
- `$if' command.
-
-`$else'
- Commands in this branch of the `$if' directive are executed if the
- test fails.
-
-
-File: readline.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Prev: Readline Init File, Up: Command Line Editing
-
-Bindable Readline Commands
-==========================
-
-* Menu:
-
-* Commands For Moving:: Moving about the line.
-* Commands For History:: Getting at previous lines.
-* Commands For Text:: Commands for changing text.
-* Commands For Killing:: Commands for killing and yanking.
-* Numeric Arguments:: Specifying numeric arguments, repeat counts.
-* Commands For Completion:: Getting Readline to do the typing for you.
-* Keyboard Macros:: Saving and re-executing typed characters
-* Miscellaneous Commands:: Other miscellaneous commands.
-
-
-File: readline.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands
-
-Commands For Moving
--------------------
-
-`beginning-of-line (C-a)'
- Move to the start of the current line.
-
-`end-of-line (C-e)'
- Move to the end of the line.
-
-`forward-char (C-f)'
- Move forward a character.
-
-`backward-char (C-b)'
- Move back a character.
-
-`forward-word (M-f)'
- Move forward to the end of the next word. Words are composed of
- letters and digits.
-
-`backward-word (M-b)'
- Move back to the start of this, or the previous, word. Words are
- composed of letters and digits.
-
-`clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
- line at the top of the screen.
-
-`redraw-current-line ()'
- Refresh the current line. By default, this is unbound.
-
-
-File: readline.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands
-
-Commands For Manipulating The History
--------------------------------------
-
-`accept-line (Newline, Return)'
- Accept the line regardless of where the cursor is. If this line is
- non-empty, add it to the history list. If this line was a history
- line, then restore the history line to its original state.
-
-`previous-history (C-p)'
- Move `up' through the history list.
-
-`next-history (C-n)'
- Move `down' through the history list.
-
-`beginning-of-history (M-<)'
- Move to the first line in the history.
-
-`end-of-history (M->)'
- Move to the end of the input history, i.e., the line you are
- entering.
-
-`reverse-search-history (C-r)'
- Search backward starting at the current line and moving `up'
- through the history as necessary. This is an incremental search.
-
-`forward-search-history (C-s)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary. This is an incremental
- search.
-
-`non-incremental-reverse-search-history (M-p)'
- Search backward starting at the current line and moving `up'
- through the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`non-incremental-forward-search-history (M-n)'
- Search forward starting at the current line and moving `down'
- through the the history as necessary using a non-incremental search
- for a string supplied by the user.
-
-`history-search-forward ()'
- Search forward through the history for the string of characters
- between the start of the current line and the current point. This
- is a non-incremental search. By default, this command is unbound.
-
-`history-search-backward ()'
- Search backward through the history for the string of characters
- between the start of the current line and the current point. This
- is a non-incremental search. By default, this command is unbound.
-
-`yank-nth-arg (M-C-y)'
- Insert the first argument to the previous command (usually the
- second word on the previous line). With an argument N, insert the
- Nth word from the previous command (the words in the previous
- command begin with word 0). A negative argument inserts the Nth
- word from the end of the previous command.
-
-`yank-last-arg (M-., M-_)'
- Insert last argument to the previous command (the last word on the
- previous line). With an argument, behave exactly like
- `yank-nth-arg'.
-
-
-File: readline.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
-
-Commands For Changing Text
---------------------------
-
-`delete-char (C-d)'
- Delete the character under the cursor. If the cursor is at the
- beginning of the line, there are no characters in the line, and
- the last character typed was not C-d, then return EOF.
-
-`backward-delete-char (Rubout)'
- Delete the character behind the cursor. A numeric arg says to kill
- the characters instead of deleting them.
-
-`quoted-insert (C-q, C-v)'
- Add the next character that you type to the line verbatim. This is
- how to insert key sequences like C-q, for example.
-
-`tab-insert (M-TAB)'
- Insert a tab character.
-
-`self-insert (a, b, A, 1, !, ...)'
- Insert yourself.
-
-`transpose-chars (C-t)'
- Drag the character before the cursor forward over the character at
- the cursor, moving the cursor forward as well. If the insertion
- point is at the end of the line, then this transposes the last two
- characters of the line. Negative argumentss don't work.
-
-`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.
-
-`upcase-word (M-u)'
- Uppercase the current (or following) word. With a negative
- argument, do the previous word, but do not move the cursor.
-
-`downcase-word (M-l)'
- Lowercase the current (or following) word. With a negative
- argument, do the previous word, but do not move the cursor.
-
-`capitalize-word (M-c)'
- Capitalize the current (or following) word. With a negative
- argument, do the previous word, but do not move the cursor.
-
-
-File: readline.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands
-
-Killing And Yanking
--------------------
-
-`kill-line (C-k)'
- Kill the text from the current cursor position to the end of the
- line.
-
-`backward-kill-line (C-x Rubout)'
- Kill backward to the beginning of the line.
-
-`unix-line-discard (C-u)'
- Kill backward from the cursor to the beginning of the current line.
- Save the killed text on the kill-ring.
-
-`kill-whole-line ()'
- Kill all characters on the current line, no matter where the
- cursor is. By default, this is unbound.
-
-`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 `forward-word'.
-
-`backward-kill-word (M-DEL)'
- Kill the word behind the cursor. Word boundaries are the same as
- `backward-word'.
-
-`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.
-
-`delete-horizontal-space ()'
- Delete all spaces and tabs around point. By default, this is
- unbound.
-
-`yank (C-y)'
- Yank the top of the kill ring into the buffer at the current
- cursor position.
-
-`yank-pop (M-y)'
- Rotate the kill-ring, and yank the new top. You can only do this
- if the prior command is yank or yank-pop.
-
-
-File: readline.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands
-
-Specifying Numeric Arguments
-----------------------------
-
-`digit-argument (M-0, M-1, ... M--)'
- Add this digit to the argument already accumulating, or start a new
- argument. M- starts a negative argument.
-
-`universal-argument ()'
- Each time this is executed, the argument count is multiplied by
- four. The argument count is initially one, so executing this
- function the first time makes the argument count four. By
- default, this is not bound to a key.
-
-
-File: readline.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands
-
-Letting Readline Type For You
------------------------------
-
-`complete (TAB)'
- Attempt to do completion on the text before the cursor. This is
- application-specific. Generally, if you are typing a filename
- argument, you can do filename completion; if you are typing a
- command, you can do command completion, if you are typing in a
- symbol to GDB, you can do symbol name completion, if you are
- typing in a variable to Bash, you can do variable name completion,
- and so on.
-
-`possible-completions (M-?)'
- List the possible completions of the text before the cursor.
-
-`insert-completions ()'
- Insert all completions of the text before point that would have
- been generated by `possible-completions'. By default, this is not
- bound to a key.
-
-
-File: readline.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands
-
-Keyboard Macros
----------------
-
-`start-kbd-macro (C-x ()'
- Begin saving the characters typed into the current keyboard macro.
-
-`end-kbd-macro (C-x ))'
- Stop saving the characters typed into the current keyboard macro
- and save the definition.
-
-`call-last-kbd-macro (C-x e)'
- Re-execute the last keyboard macro defined, by making the
- characters in the macro appear as if typed at the keyboard.
-
-
-File: readline.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands
-
-Some Miscellaneous Commands
----------------------------
-
-`re-read-init-file (C-x C-r)'
- Read in the contents of your init file, and incorporate any
- bindings or variable assignments found there.
-
-`abort (C-g)'
- Abort the current editing command and ring the terminal's bell
- (subject to the setting of `bell-style').
-
-`do-uppercase-version (M-a, M-b, ...)'
- Run the command that is bound to the corresoponding uppercase
- character.
-
-`prefix-meta (ESC)'
- Make the next character that you type be metafied. This is for
- people without a meta key. Typing `ESC f' is equivalent to typing
- `M-f'.
-
-`undo (C-_, C-x C-u)'
- Incremental undo, separately remembered for each line.
-
-`revert-line (M-r)'
- Undo all changes made to this line. This is like typing the `undo'
- command enough times to get back to the beginning.
-
-`tilde-expand (M-~)'
- Perform tilde expansion on the current word.
-
-`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.
-
-
-File: readline.info, Node: Readline vi Mode, Prev: Bindable Readline Commands, Up: Command Line Editing
-
-Readline vi Mode
-================
-
- While the Readline library does not have a full set of `vi' editing
-functions, it does contain enough to allow simple editing of the line.
-The Readline `vi' mode behaves as specified in the Posix 1003.2
-standard.
-
- In order to switch interactively between `Emacs' and `Vi' editing
-modes, use the command M-C-j (toggle-editing-mode). The Readline
-default is `emacs' mode.
-
- When you enter a line in `vi' mode, you are already placed in
-`insertion' mode, as if you had typed an `i'. Pressing ESC switches
-you into `command' mode, where you can edit the text of the line with
-the standard `vi' movement keys, move to previous history lines with
-`k', and following lines with `j', and so forth.
-
- This document describes the GNU Readline Library, a utility for
-aiding in the consitency of user interface across discrete programs
-that need to provide a command line interface.
-
- Copyright (C) 1988, 1994 Free Software Foundation, Inc.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice pare
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the Foundation.
-
-
-File: readline.info, Node: Programming with GNU Readline, Next: Concept Index, Prev: Command Line Editing, Up: Top
-
-Programming with GNU Readline
-*****************************
-
- This chapter describes the interface between the GNU Readline
-Library and other programs. If you are a programmer, and you wish to
-include the features found in GNU Readline such as completion, line
-editing, and interactive history manipulation in your own programs,
-this section is for you.
-
-* Menu:
-
-* Basic Behavior:: Using the default behavior of Readline.
-* Custom Functions:: Adding your own functions to Readline.
-* Readline Convenience Functions:: Functions which Readline supplies to
- aid in writing your own
-* Custom Completers:: Supplanting or supplementing Readline's
- completion functions.
-
-
-File: readline.info, Node: Basic Behavior, Next: Custom Functions, Up: Programming with GNU Readline
-
-Basic Behavior
-==============
-
- Many programs provide a command line interface, such as `mail',
-`ftp', and `sh'. For such programs, the default behaviour of Readline
-is sufficient. This section describes how to use Readline in the
-simplest way possible, perhaps to replace calls in your code to
-`gets()' or `fgets ()'.
-
- The function `readline ()' prints a prompt and then reads and returns
-a single line of text from the user. The line `readline' returns is
-allocated with `malloc ()'; you should `free ()' the line when you are
-done with it. The declaration for `readline' in ANSI C is
-
- `char *readline (char *PROMPT);'
-
-So, one might say
- `char *line = readline ("Enter a line: ");'
-
-in order to read a line of text from the user. The line returned has
-the final newline removed, so only the text remains.
-
- If `readline' encounters an `EOF' while reading the line, and the
-line is empty at that point, then `(char *)NULL' is returned.
-Otherwise, the line is ended just as if a newline had been typed.
-
- If you want the user to be able to get at the line later, (with C-p
-for example), you must call `add_history ()' to save the line away in a
-"history" list of such lines.
-
- `add_history (line)';
-
-For full details on the GNU History Library, see the associated manual.
-
- It is preferable to avoid saving empty lines on the history list,
-since users rarely have a burning need to reuse a blank line. Here is
-a function which usefully replaces the standard `gets ()' library
-function, and has the advantage of no static buffer to overflow:
-
- /* A static variable for holding the line. */
- static char *line_read = (char *)NULL;
-
- /* Read a string, and return a pointer to it. Returns NULL on EOF. */
- char *
- rl_gets ()
- {
- /* If the buffer has already been allocated, return the memory
- to the free pool. */
- if (line_read)
- {
- free (line_read);
- line_read = (char *)NULL;
- }
-
- /* Get a line from the user. */
- line_read = readline ("");
-
- /* If the line has any text in it, save it on the history. */
- if (line_read && *line_read)
- add_history (line_read);
-
- return (line_read);
- }
-
- This function gives the user the default behaviour of TAB
-completion: completion on file names. If you do not want Readline to
-complete on filenames, you can change the binding of the TAB key with
-`rl_bind_key ()'.
-
- `int rl_bind_key (int KEY, int (*FUNCTION)());'
-
- `rl_bind_key ()' takes two arguments: KEY is the character that you
-want to bind, and FUNCTION is the address of the function to call when
-KEY is pressed. Binding TAB to `rl_insert ()' makes TAB insert itself.
-`rl_bind_key ()' returns non-zero if KEY is not a valid ASCII character
-code (between 0 and 255).
-
- Thus, to disable the default TAB behavior, the following suffices:
- `rl_bind_key ('\t', rl_insert);'
-
- This code should be executed once at the start of your program; you
-might write a function called `initialize_readline ()' which performs
-this and other desired initializations, such as installing custom
-completers (*note Custom Completers::.).
-
-
-File: readline.info, Node: Custom Functions, Next: Readline Convenience Functions, Prev: Basic Behavior, Up: Programming with GNU Readline
-
-Custom Functions
-================
-
- Readline provides many functions for manipulating the text of the
-line, but it isn't possible to anticipate the needs of all programs.
-This section describes the various functions and variables defined
-within the Readline library which allow a user program to add
-customized functionality to Readline.
-
-* Menu:
-
-* The Function Type:: C declarations to make code readable.
-* Function Writing:: Variables and calling conventions.
-
-
-File: readline.info, Node: The Function Type, Next: Function Writing, Up: Custom Functions
-
-The Function Type
------------------
-
- For readabilty, we declare a new type of object, called "Function".
-A `Function' is a C function which returns an `int'. The type
-declaration for `Function' is:
-
-`typedef int Function ();'
-
- The reason for declaring this new type is to make it easier to write
-code describing pointers to C functions. Let us say we had a variable
-called FUNC which was a pointer to a function. Instead of the classic
-C declaration
-
- `int (*)()func;'
-
-we may write
-
- `Function *func;'
-
-Similarly, there are
-
- typedef void VFunction ();
- typedef char *CPFunction (); and
- typedef char **CPPFunction ();
-
-for functions returning no value, `pointer to char', and `pointer to
-pointer to char', respectively.
-
-
-File: readline.info, Node: Function Writing, Prev: The Function Type, Up: Custom Functions
-
-Writing a New Function
-----------------------
-
- In order to write new functions for Readline, you need to know the
-calling conventions for keyboard-invoked functions, and the names of the
-variables that describe the current state of the line read so far.
-
- The calling sequence for a command `foo' looks like
-
- `foo (int count, int key)'
-
-where COUNT is the numeric argument (or 1 if defaulted) and KEY is the
-key that invoked this function.
-
- It is completely up to the function as to what should be done with
-the numeric argument. Some functions use it as a repeat count, some as
-a flag, and others to choose alternate behavior (refreshing the current
-line as opposed to refreshing the screen, for example). Some choose to
-ignore it. In general, if a function uses the numeric argument as a
-repeat count, it should be able to do something useful with both
-negative and positive arguments. At the very least, it should be aware
-that it can be passed a negative argument.
-
- - 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::.
-
- - Variable: int rl_point
- The offset of the current cursor position in `rl_line_buffer' (the
- *point*).
-
- - Variable: int rl_end
- The number of characters present in `rl_line_buffer'. When
- `rl_point' is at the end of the line, `rl_point' and `rl_end' are
- equal.
-
- - Variable: int rl_mark
- The mark (saved position) in the current line. If set, the mark
- and point define a *region*.
-
- - Variable: int rl_done
- Setting this to a non-zero value causes Readline to return the
- current line immediately.
-
- - Variable: int rl_pending_input
- Setting this to a value makes it the next keystroke read. This is
- a way to stuff a single character into the input stream.
-
- - Variable: char * rl_prompt
- The prompt Readline uses. This is set from the argument to
- `readline ()', and should not be assigned to directly.
-
- - Variable: char * rl_terminal_name
- The terminal type, used for initialization.
-
- - Variable: char * rl_readline_name
- This variable is set to a unique name by each application using
- Readline. The value allows conditional parsing of the inputrc file
- (*note Conditional Init Constructs::.).
-
- - Variable: FILE * rl_instream
- The stdio stream from which Readline reads input.
-
- - Variable: FILE * rl_outstream
- The stdio stream to which Readline performs output.
-
- - Variable: Function * rl_startup_hook
- If non-zero, this is the address of a function to call just before
- `readline' prints the first prompt.
-
-
-File: readline.info, Node: Readline Convenience Functions, Next: Custom Completers, Prev: Custom Functions, Up: Programming with GNU Readline
-
-Readline Convenience Functions
-==============================
-
-* Menu:
-
-* Function Naming:: How to give a function you write a name.
-* Keymaps:: Making keymaps.
-* Binding Keys:: Changing Keymaps.
-* Associating Function Names and Bindings:: Translate function names to
- key sequences.
-* Allowing Undoing:: How to make your functions undoable.
-* Redisplay:: Functions to control line display.
-* Modifying Text:: Functions to modify `rl_line_buffer'.
-* Utility Functions:: Generally useful functions and hooks.
-
-
-File: readline.info, Node: Function Naming, Next: Keymaps, Up: Readline Convenience Functions
-
-Naming a Function
------------------
-
- The user can dynamically change the bindings of keys while using
-Readline. This is done by representing the function with a descriptive
-name. The user is able to type the descriptive name when referring to
-the function. Thus, in an init file, one might find
-
- Meta-Rubout: backward-kill-word
-
- This binds the keystroke Meta-Rubout to the function *descriptively*
-named `backward-kill-word'. You, as the programmer, should bind the
-functions you write to descriptive names as well. Readline provides a
-function for doing that:
-
- - Function: int rl_add_defun (char *name, Function *function, int key)
- Add NAME to the list of named functions. Make FUNCTION be the
- function that gets called. If KEY is not -1, then bind it to
- FUNCTION using `rl_bind_key ()'.
-
- Using this function alone is sufficient for most applications. It is
-the recommended way to add a few functions to the default functions that
-Readline has built in. If you need to do something other than adding a
-function to Readline, you may need to use the underlying functions
-described below.
-
-
-File: readline.info, Node: Keymaps, Next: Binding Keys, Prev: Function Naming, Up: Readline Convenience Functions
-
-Selecting a Keymap
-------------------
-
- Key bindings take place on a "keymap". The keymap is the
-association between the keys that the user types and the functions that
-get run. You can make your own keymaps, copy existing keymaps, and tell
-Readline which keymap to use.
-
- - Function: Keymap rl_make_bare_keymap ()
- Returns a new, empty keymap. The space for the keymap is
- allocated with `malloc ()'; you should `free ()' it when you are
- done.
-
- - Function: Keymap rl_copy_keymap (Keymap map)
- Return a new keymap which is a copy of MAP.
-
- - Function: Keymap rl_make_keymap ()
- Return a new keymap with the printing characters bound to
- rl_insert, the lowercase Meta characters bound to run their
- equivalents, and the Meta digits bound to produce numeric
- arguments.
-
- - Function: void rl_discard_keymap (Keymap keymap)
- Free the storage associated with KEYMAP.
-
- Readline has several internal keymaps. These functions allow you to
-change which keymap is active.
-
- - Function: Keymap rl_get_keymap ()
- Returns the currently active keymap.
-
- - Function: void rl_set_keymap (Keymap keymap)
- Makes KEYMAP the currently active keymap.
-
- - Function: Keymap rl_get_keymap_by_name (char *name)
- Return the keymap matching NAME. NAME is one which would be
- supplied in a `set keymap' inputrc line (*note Readline Init
- File::.).
-
-
-File: readline.info, Node: Binding Keys, Next: Associating Function Names and Bindings, Prev: Keymaps, Up: Readline Convenience Functions
-
-Binding Keys
-------------
-
- You associate keys with functions through the keymap. Readline has
-several internal keymaps: `emacs_standard_keymap', `emacs_meta_keymap',
-`emacs_ctlx_keymap', `vi_movement_keymap', and `vi_insertion_keymap'.
-`emacs_standard_keymap' is the default, and the examples in this manual
-assume that.
-
- These functions manage key bindings.
-
- - Function: int rl_bind_key (int key, Function *function)
- Binds KEY to FUNCTION in the currently active keymap. Returns
- non-zero in the case of an invalid KEY.
-
- - Function: int rl_bind_key_in_map (int key, Function *function,
- Keymap map)
- Bind KEY to FUNCTION in MAP. Returns non-zero in the case of an
- invalid KEY.
-
- - Function: int rl_unbind_key (int key)
- Bind KEY to the null function in the currently active keymap.
- Returns non-zero in case of error.
-
- - Function: int rl_unbind_key_in_map (int key, Keymap map)
- Bind KEY to the null function in MAP. Returns non-zero in case of
- error.
-
- - Function: int rl_generic_bind (int type, char *keyseq, char *data,
- Keymap map)
- Bind the key sequence represented by the string KEYSEQ to the
- arbitrary pointer DATA. TYPE says what kind of data is pointed to
- by DATA; this can be a function (`ISFUNC'), a macro (`ISMACR'), or
- a keymap (`ISKMAP'). This makes new keymaps as necessary. The
- initial keymap in which to do bindings is MAP.
-
- - Function: int rl_parse_and_bind (char *line)
- Parse LINE as if it had been read from the `inputrc' file and
- perform any key bindings and variable assignments found (*note
- Readline Init File::.).
-
-
-File: readline.info, Node: Associating Function Names and Bindings, Next: Allowing Undoing, Prev: Binding Keys, Up: Readline Convenience Functions
-
-Associating Function Names and Bindings
----------------------------------------
-
- These functions allow you to find out what keys invoke named
-functions and the functions invoked by a particular key sequence.
-
- - Function: Function * rl_named_function (char *name)
- Return the function with name NAME.
-
- - Function: Function * rl_function_of_keyseq (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 it (one of `ISFUNC', `ISKMAP', or
- `ISMACR').
-
- - Function: char ** rl_invoking_keyseqs (Function *function)
- Return an array of strings representing the key sequences used to
- invoke FUNCTION in the current keymap.
-
- - Function: char ** rl_invoking_keyseqs_in_map (Function *function,
- Keymap map)
- Return an array of strings representing the key sequences used to
- invoke FUNCTION in the keymap MAP.
-
-
-File: readline.info, Node: Allowing Undoing, Next: Redisplay, Prev: Associating Function Names and Bindings, Up: Readline Convenience Functions
-
-Allowing Undoing
-----------------
-
- Supporting the undo command is a painless thing, and makes your
-functions much more useful. It is certainly easy to try something if
-you know you can undo it. I could use an undo function for the stock
-market.
-
- If your function simply inserts text once, or deletes text once, and
-uses `rl_insert_text ()' or `rl_delete_text ()' to do it, then undoing
-is already done for you automatically.
-
- If you do multiple insertions or multiple deletions, or any
-combination of these operations, you should group them together into
-one operation. This is done with `rl_begin_undo_group ()' and
-`rl_end_undo_group ()'.
-
- The types of events that can be undone are:
-
- enum undo_code { UNDO_DELETE, UNDO_INSERT, UNDO_BEGIN, UNDO_END };
-
- Notice that `UNDO_DELETE' means to insert some text, and
-`UNDO_INSERT' means to delete some text. That is, the undo code tells
-undo 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 ()
- Begins saving undo information in a group construct. The undo
- information usually comes from calls to `rl_insert_text ()' and
- `rl_delete_text ()', but could be the result of calls to
- `rl_add_undo ()'.
-
- - Function: int rl_end_undo_group ()
- Closes the current undo group started with `rl_begin_undo_group
- ()'. There should be one call to `rl_end_undo_group ()' for each
- call to `rl_begin_undo_group ()'.
-
- - Function: void rl_add_undo (enum undo_code what, int start, int end,
- char *text)
- Remember how to undo an event (according to WHAT). The affected
- text runs from START to END, and encompasses TEXT.
-
- - Function: void free_undo_list ()
- Free the existing undo list.
-
- - Function: int rl_do_undo ()
- Undo the first thing on the undo list. Returns `0' if there was
- nothing to undo, non-zero if something was undone.
-
- Finally, if you neither insert nor delete text, but directly modify
-the existing text (e.g., change its case), call `rl_modifying ()' once,
-just before you modify the text. You must supply the indices of the
-text range that you are going to modify.
-
- - Function: int rl_modifying (int start, int end)
- Tell Readline to save the text between START and END as a single
- undo unit. It is assumed that you will subsequently modify that
- text.
-
-
-File: readline.info, Node: Redisplay, Next: Modifying Text, Prev: Allowing Undoing, Up: Readline Convenience Functions
-
-Redisplay
----------
-
- - Function: int rl_redisplay ()
- Change what's displayed on the screen to reflect the current
- contents of `rl_line_buffer'.
-
- - Function: int rl_forced_update_display ()
- Force the line to be updated and redisplayed, whether or not
- Readline thinks the screen display is correct.
-
- - Function: int rl_on_new_line ()
- Tell the update routines that we have moved onto a new (empty)
- line, usually after ouputting a newline.
-
- - Function: int rl_reset_line_state ()
- Reset the display state to a clean state and redisplay the current
- line starting on a new line.
-
- - Function: int rl_message (va_alist)
- The arguments are a string as would be supplied to `printf'. The
- resulting string is displayed in the "echo area". The echo area
- is also used to display numeric arguments and search strings.
-
- - Function: int rl_clear_message ()
- Clear the message in the echo area.
-