Commit | Line | Data |
---|---|---|
b4f26d54 TT |
1 | This is a terse description of the new features added to readline-8.1 since |
2 | the release of readline-8.0. | |
3 | ||
4 | New Features in Readline | |
5 | ||
6 | a. If a second consecutive completion attempt produces matches where the first | |
7 | did not, treat it as a new completion attempt and insert a match as | |
8 | appropriate. | |
9 | ||
10 | b. Bracketed paste mode works in more places: incremental search strings, vi | |
11 | overstrike mode, character search, and reading numeric arguments. | |
12 | ||
13 | c. Readline automatically switches to horizontal scrolling if the terminal has | |
14 | only one line. | |
15 | ||
16 | d. Unbinding all key sequences bound to a particular readline function now | |
17 | descends into keymaps for multi-key sequences. | |
18 | ||
19 | e. rl-clear-display: new bindable command that clears the screen and, if | |
20 | possible, the scrollback buffer (bound to emacs mode M-C-l by default). | |
21 | ||
22 | f. New active mark and face feature: when enabled, it will highlight the text | |
23 | inserted by a bracketed paste (the `active region') and the text found by | |
24 | incremental and non-incremental history searches. This is tied to bracketed | |
25 | paste and can be disabled by turning off bracketed paste. | |
26 | ||
27 | g. Readline sets the mark in several additional commands. | |
28 | ||
29 | h. Bracketed paste mode is enabled by default. There is a configure-time | |
30 | option (--enable-bracketed-paste-default) to set the default to on or off. | |
31 | ||
32 | i. Readline tries to take advantage of the more regular structure of UTF-8 | |
33 | characters to identify the beginning and end of characters when moving | |
34 | through the line buffer. | |
35 | ||
36 | j. The bindable operate-and-get-next command (and its default bindings) are | |
37 | now part of readline instead of a bash-specific addition. | |
38 | ||
39 | k. The signal cleanup code now blocks SIGINT while processing after a SIGINT. | |
40 | ||
41 | ------------------------------------------------------------------------------- | |
cb41b9e7 TT |
42 | This is a terse description of the new features added to readline-8.0 since |
43 | the release of readline-7.0. | |
44 | ||
45 | New Features in Readline | |
46 | ||
47 | a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as | |
48 | Posix specifies (uses fnmatch(3) if available). | |
49 | ||
50 | b. There are new `next-screen-line' and `previous-screen-line' bindable | |
51 | commands, which move the cursor to the same column in the next, or previous, | |
52 | physical line, respectively. | |
53 | ||
54 | c. There are default key bindings for control-arrow-key key combinations. | |
55 | ||
56 | d. A negative argument (-N) to `quoted-insert' means to insert the next N | |
57 | characters using quoted-insert. | |
58 | ||
59 | e. New public function: rl_check_signals(), which allows applications to | |
60 | respond to signals that readline catches while waiting for input using | |
61 | a custom read function. | |
62 | ||
63 | f. There is new support for conditionally testing the readline version in an | |
64 | inputrc file, with a full set of arithmetic comparison operators available. | |
65 | ||
66 | g. There is a simple variable comparison facility available for use within an | |
67 | inputrc file. Allowable operators are equality and inequality; string | |
68 | variables may be compared to a value; boolean variables must be compared to | |
69 | either `on' or `off'; variable names are separated from the operator by | |
70 | whitespace. | |
71 | ||
72 | h. The history expansion library now understands command and process | |
73 | substitution and extended globbing and allows them to appear anywhere in a | |
74 | word. | |
75 | ||
76 | i. The history library has a new variable that allows applications to set the | |
77 | initial quoting state, so quoting state can be inherited from a previous | |
78 | line. | |
79 | ||
80 | j. Readline now allows application-defined keymap names; there is a new public | |
81 | function, rl_set_keymap_name(), to do that. | |
82 | ||
83 | k. The "Insert" keypad key, if available, now puts readline into overwrite | |
84 | mode. | |
85 | ||
86 | ------------------------------------------------------------------------------- | |
775e241e TT |
87 | This is a terse description of the new features added to readline-7.0 since |
88 | the release of readline-6.3. | |
b585a9fa | 89 | |
775e241e | 90 | New Features in Readline |
b585a9fa | 91 | |
775e241e TT |
92 | a. The history truncation code now uses the same error recovery mechansim as |
93 | the history writing code, and restores the old version of the history file | |
94 | on error. The error recovery mechanism handles symlinked history files. | |
b585a9fa | 95 | |
775e241e TT |
96 | b. There is a new bindable variable, `enable-bracketed-paste', which enables |
97 | support for a terminal's bracketed paste mode. | |
b585a9fa | 98 | |
775e241e TT |
99 | c. The editing mode indicators can now be strings and are user-settable |
100 | (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string' | |
101 | variables). Mode strings can contain invisible character sequences. | |
102 | Setting mode strings to null strings restores the defaults. | |
b585a9fa | 103 | |
775e241e TT |
104 | d. Prompt expansion adds the mode string to the last line of a multi-line |
105 | prompt (one with embedded newlines). | |
106 | ||
107 | e. There is a new bindable variable, `colored-completion-prefix', which, if | |
108 | set, causes the common prefix of a set of possible completions to be | |
109 | displayed in color. | |
110 | ||
111 | f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs- | |
112 | mode yank-pop. | |
113 | ||
114 | g. The redisplay code underwent several efficiency improvements for multibyte | |
115 | locales. | |
116 | ||
117 | h. The insert-char function attempts to batch-insert all pending typeahead | |
118 | that maps to self-insert, as long as it is coming from the terminal. | |
119 | ||
120 | i. rl_callback_sigcleanup: a new application function that can clean up and | |
121 | unset any state set by readline's callback mode. Intended to be used | |
122 | after a signal. | |
123 | ||
124 | j. If an incremental search string has its last character removed with DEL, the | |
125 | resulting empty search string no longer matches the previous line. | |
126 | ||
127 | k. If readline reads a history file that begins with `#' (or the value of | |
128 | the history comment character) and has enabled history timestamps, the history | |
129 | entries are assumed to be delimited by timestamps. This allows multi-line | |
130 | history entries. | |
131 | ||
132 | l. Readline now throws an error if it parses a key binding without a terminating | |
133 | `:' or whitespace. | |
134 | ||
cb41b9e7 TT |
135 | m. The default binding for ^W in vi mode now uses word boundaries specified |
136 | by Posix (vi-unix-word-rubout is bindable command name). | |
137 | ||
138 | n. rl_clear_visible_line: new application-callable function; clears all | |
139 | screen lines occupied by the current visible readline line. | |
140 | ||
141 | o. rl_tty_set_echoing: application-callable function that controls whether | |
142 | or not readline thinks it is echoing terminal output. | |
143 | ||
144 | p. Handle >| and strings of digits preceding and following redirection | |
145 | specifications as single tokens when tokenizing the line for history | |
146 | expansion. | |
147 | ||
148 | q. Fixed a bug with displaying completions when the prefix display length | |
149 | is greater than the length of the completions to be displayed. | |
150 | ||
151 | r. The :p history modifier now applies to the entire line, so any expansion | |
152 | specifying :p causes the line to be printed instead of expanded. | |
153 | ||
154 | s. New application-callable function: rl_pending_signal(): returns the signal | |
155 | number of any signal readline has caught but not yet handled. | |
156 | ||
157 | t. New application-settable variable: rl_persistent_signal_handlers: if set | |
158 | to a non-zero value, readline will enable the readline-6.2 signal handler | |
159 | behavior in callback mode: handlers are installed when | |
160 | rl_callback_handler_install is called and removed removed when a complete | |
161 | line has been read. | |
162 | ||
775e241e TT |
163 | ------------------------------------------------------------------------------- |
164 | This is a terse description of the new features added to readline-6.3 since | |
165 | the release of readline-6.2. | |
166 | ||
167 | New Features in Readline | |
168 | ||
169 | a. Readline is now more responsive to SIGHUP and other fatal signals when | |
170 | reading input from the terminal or performing word completion but no | |
171 | longer attempts to run any not-allowable functions from a signal handler | |
172 | context. | |
173 | ||
174 | b. There are new bindable commands to search the history for the string of | |
175 | characters between the beginning of the line and the point | |
176 | (history-substring-search-forward, history-substring-search-backward) | |
177 | ||
178 | c. Readline allows quoted strings as the values of variables when setting | |
179 | them with `set'. As a side effect, trailing spaces and tabs are ignored | |
180 | when setting a string variable's value. | |
181 | ||
182 | d. The history library creates a backup of the history file when writing it | |
183 | and restores the backup on a write error. | |
184 | ||
185 | e. New application-settable variable: rl_filename_stat_hook: a function called | |
186 | with a filename before using it in a call to stat(2). Bash uses it to | |
187 | expand shell variables so things like $HOME/Downloads have a slash | |
188 | appended. | |
189 | ||
190 | f. New bindable function `print-last-kbd-macro', prints the most-recently- | |
191 | defined keyboard macro in a reusable format. | |
192 | ||
193 | g. New user-settable variable `colored-stats', enables use of colored text | |
194 | to denote file types when displaying possible completions (colored analog | |
195 | of visible-stats). | |
196 | ||
197 | h. New user-settable variable `keyseq-timout', acts as an inter-character | |
198 | timeout when reading input or incremental search strings. | |
199 | ||
200 | i. New application-callable function: rl_clear_history. Clears the history list | |
201 | and frees all readline-associated private data. | |
202 | ||
203 | j. New user-settable variable, show-mode-in-prompt, adds a characters to the | |
204 | beginning of the prompt indicating the current editing mode. | |
205 | ||
206 | k. New application-settable variable: rl_input_available_hook; function to be | |
207 | called when readline detects there is data available on its input file | |
208 | descriptor. | |
209 | ||
210 | l. Readline calls an application-set event hook (rl_event_hook) after it gets | |
211 | a signal while reading input (read returns -1/EINTR but readline does not | |
212 | handle the signal immediately) to allow the application to handle or | |
213 | otherwise note it. | |
214 | ||
215 | m. If the user-settable variable `history-size' is set to a value less than | |
216 | 0, the history list size is unlimited. | |
217 | ||
218 | n. New application-settable variable: rl_signal_event_hook; function that is | |
219 | called when readline is reading terminal input and read(2) is interrupted | |
220 | by a signal. Currently not called for SIGHUP or SIGTERM. | |
221 | ||
b4f26d54 TT |
222 | ------------------------------------------------------------------------------- |
223 | This is a terse description of the new features added to readline-6.2 since | |
224 | the release of readline-6.1. | |
225 | ||
226 | a. The history library does not try to write the history filename in the | |
227 | current directory if $HOME is unset. This closes a potential security | |
228 | problem if the application does not specify a history filename. | |
229 | ||
230 | b. New bindable variable `completion-display-width' to set the number of | |
231 | columns used when displaying completions. | |
232 | ||
233 | c. New bindable variable `completion-case-map' to cause case-insensitive | |
234 | completion to treat `-' and `_' as identical. | |
235 | ||
236 | d. There are new bindable vi-mode command names to avoid readline's case- | |
237 | insensitive matching not allowing them to be bound separately. | |
238 | ||
239 | e. New bindable variable `menu-complete-display-prefix' causes the menu | |
240 | completion code to display the common prefix of the possible completions | |
241 | before cycling through the list, instead of after. | |
242 | ||
775e241e TT |
243 | ------------------------------------------------------------------------------- |
244 | This is a terse description of the new features added to readline-6.1 since | |
245 | the release of readline-6.0. | |
246 | ||
247 | New Features in Readline | |
248 | ||
249 | a. New bindable function: menu-complete-backward. | |
250 | ||
251 | b. In the vi insertion keymap, C-n is now bound to menu-complete by default, | |
252 | and C-p to menu-complete-backward. | |
253 | ||
254 | c. When in vi command mode, repeatedly hitting ESC now does nothing, even | |
255 | when ESC introduces a bound key sequence. This is closer to how | |
256 | historical vi behaves. | |
257 | ||
258 | d. New bindable function: skip-csi-sequence. Can be used as a default to | |
259 | consume key sequences generated by keys like Home and End without having | |
260 | to bind all keys. | |
261 | ||
262 | e. New application-settable function: rl_filename_rewrite_hook. Can be used | |
263 | to rewite or modify filenames read from the file system before they are | |
264 | compared to the word to be completed. | |
265 | ||
266 | f. New bindable variable: skip-completed-text, active when completing in the | |
267 | middle of a word. If enabled, it means that characters in the completion | |
268 | that match characters in the remainder of the word are "skipped" rather | |
269 | than inserted into the line. | |
270 | ||
271 | g. The pre-readline-6.0 version of menu completion is available as | |
272 | "old-menu-complete" for users who do not like the readline-6.0 version. | |
273 | ||
274 | h. New bindable variable: echo-control-characters. If enabled, and the | |
275 | tty ECHOCTL bit is set, controls the echoing of characters corresponding | |
276 | to keyboard-generated signals. | |
277 | ||
278 | i. New bindable variable: enable-meta-key. Controls whether or not readline | |
279 | sends the smm/rmm sequences if the terminal indicates it has a meta key | |
280 | that enables eight-bit characters. | |
281 | ||
282 | ------------------------------------------------------------------------------- | |
283 | This is a terse description of the new features added to readline-6.0 since | |
284 | the release of readline-5.2. | |
285 | ||
286 | New Features in Readline | |
287 | ||
288 | a. A new variable, rl_sort_completion_matches; allows applications to inhibit | |
289 | match list sorting (but beware: some things don't work right if | |
290 | applications do this). | |
291 | ||
292 | b. A new variable, rl_completion_invoking_key; allows applications to discover | |
293 | the key that invoked rl_complete or rl_menu_complete. | |
294 | ||
295 | c. The functions rl_block_sigint and rl_release_sigint are now public and | |
296 | available to calling applications who want to protect critical sections | |
297 | (like redisplay). | |
298 | ||
299 | d. The functions rl_save_state and rl_restore_state are now public and | |
300 | available to calling applications; documented rest of readline's state | |
301 | flag values. | |
302 | ||
303 | e. A new user-settable variable, `history-size', allows setting the maximum | |
304 | number of entries in the history list. | |
305 | ||
306 | f. There is a new implementation of menu completion, with several improvements | |
307 | over the old; the most notable improvement is a better `completions | |
308 | browsing' mode. | |
309 | ||
310 | g. The menu completion code now uses the rl_menu_completion_entry_function | |
311 | variable, allowing applications to provide their own menu completion | |
312 | generators. | |
313 | ||
314 | h. There is support for replacing a prefix of a pathname with a `...' when | |
315 | displaying possible completions. This is controllable by setting the | |
316 | `completion-prefix-display-length' variable. Matches with a common prefix | |
317 | longer than this value have the common prefix replaced with `...'. | |
318 | ||
319 | i. There is a new `revert-all-at-newline' variable. If enabled, readline will | |
320 | undo all outstanding changes to all history lines when `accept-line' is | |
321 | executed. | |
322 | ||
323 | ------------------------------------------------------------------------------- | |
324 | This is a terse description of the new features added to readline-5.2 since | |
325 | the release of readline-5.1. | |
326 | ||
327 | New Features in Readline | |
328 | ||
329 | a. Calling applications can now set the keyboard timeout to 0, allowing | |
330 | poll-like behavior. | |
331 | ||
332 | b. The value of SYS_INPUTRC (configurable at compilation time) is now used as | |
333 | the default last-ditch startup file. | |
334 | ||
335 | c. The history file reading functions now allow windows-like \r\n line | |
336 | terminators. | |
337 | ||
338 | ------------------------------------------------------------------------------- | |
339 | This is a terse description of the new features added to readline-5.1 since | |
340 | the release of readline-5.0. | |
341 | ||
342 | New Features in Readline | |
343 | ||
344 | a. The key sequence sent by the keypad `delete' key is now automatically | |
345 | bound to delete-char. | |
346 | ||
347 | b. A negative argument to menu-complete now cycles backward through the | |
348 | completion list. | |
349 | ||
350 | c. A new bindable readline variable: bind-tty-special-chars. If non-zero, | |
351 | readline will bind the terminal special characters to their readline | |
352 | equivalents when it's called (on by default). | |
353 | ||
354 | d. New bindable command: vi-rubout. Saves deleted text for possible | |
355 | reinsertion, as with any vi-mode `text modification' command; `X' is bound | |
356 | to this in vi command mode. | |
357 | ||
358 | e. If the rl_completion_query_items is set to a value < 0, readline never | |
359 | asks the user whether or not to view the possible completions. | |
360 | ||
361 | f. New application-callable auxiliary function, rl_variable_value, returns | |
362 | a string corresponding to a readline variable's value. | |
363 | ||
364 | g. When parsing inputrc files and variable binding commands, the parser | |
365 | strips trailing whitespace from values assigned to boolean variables | |
366 | before checking them. | |
367 | ||
368 | h. A new external application-controllable variable that allows the LINES | |
369 | and COLUMNS environment variables to set the window size regardless of | |
370 | what the kernel returns. | |
371 | ||
372 | ||
373 | ------------------------------------------------------------------------------- | |
374 | This is a terse description of the new features added to readline-5.0 since | |
375 | the release of readline-4.3. | |
376 | ||
377 | New Features in Readline | |
378 | ||
379 | a. History expansion has a new `a' modifier equivalent to the `g' modifier | |
380 | for compatibility with the BSD csh. | |
381 | ||
382 | b. History expansion has a new `G' modifier equivalent to the BSD csh `g' | |
383 | modifier, which performs a substitution once per word. | |
384 | ||
385 | c. All non-incremental search operations may now undo the operation of | |
386 | replacing the current line with the history line. | |
387 | ||
388 | d. The text inserted by an `a' command in vi mode can be reinserted with | |
389 | `.'. | |
390 | ||
391 | e. New bindable variable, `show-all-if-unmodified'. If set, the readline | |
392 | completer will list possible completions immediately if there is more | |
393 | than one completion and partial completion cannot be performed. | |
394 | ||
395 | f. There is a new application-callable `free_history_entry()' function. | |
396 | ||
397 | g. History list entries now contain timestamp information; the history file | |
398 | functions know how to read and write timestamp information associated | |
399 | with each entry. | |
400 | ||
401 | h. Four new key binding functions have been added: | |
402 | ||
403 | rl_bind_key_if_unbound() | |
404 | rl_bind_key_if_unbound_in_map() | |
405 | rl_bind_keyseq_if_unbound() | |
406 | rl_bind_keyseq_if_unbound_in_map() | |
407 | ||
408 | i. New application variable, rl_completion_quote_character, set to any | |
409 | quote character readline finds before it calls the application completion | |
410 | function. | |
411 | ||
412 | j. New application variable, rl_completion_suppress_quote, settable by an | |
413 | application completion function. If set to non-zero, readline does not | |
414 | attempt to append a closing quote to a completed word. | |
415 | ||
416 | k. New application variable, rl_completion_found_quote, set to a non-zero | |
417 | value if readline determines that the word to be completed is quoted. | |
418 | Set before readline calls any application completion function. | |
419 | ||
420 | l. New function hook, rl_completion_word_break_hook, called when readline | |
421 | needs to break a line into words when completion is attempted. Allows | |
422 | the word break characters to vary based on position in the line. | |
423 | ||
424 | m. New bindable command: unix-filename-rubout. Does the same thing as | |
425 | unix-word-rubout, but adds `/' to the set of word delimiters. | |
426 | ||
427 | n. When listing completions, directories have a `/' appended if the | |
428 | `mark-directories' option has been enabled. |