| 2 | |
| 3 | |
| 4 | 1. Changes to Readline |
| 5 | |
| 6 | a. Added a guard to prevent nested macros from causing an infinite expansion |
| 7 | loop. |
| 8 | |
| 9 | b. Instead of allocating enough history list entries to hold the maximum list |
| 10 | size, cap the number allocated initially. |
| 11 | |
| 12 | c. Added a strategy to avoid allocating huge amounts of memory if a block of |
| 13 | history entries without timestamps occurs after a block with timestamps. |
| 14 | |
| 15 | d. Added support for keyboard timeouts when an ESC character is the last |
| 16 | character in a macro. |
| 17 | |
| 18 | e. There are several performance improvements when in a UTF-8 locale. |
| 19 | |
| 20 | f. Readline does a better job of preserving the original set of blocked |
| 21 | signals when using pselect() to wait for input. |
| 22 | |
| 23 | g. Fixed a bug that caused multibyte characters in macros to be mishandled. |
| 24 | |
| 25 | h. Fixed several bugs in the code that calculates line breaks when expanding |
| 26 | prompts that span several lines, contain multibyte characters, and contain |
| 27 | invisible character seqeuences. |
| 28 | |
| 29 | i. Fixed several bugs in cursor positioning when displaying lines with prompts |
| 30 | containing invisible characters and multibyte characters. |
| 31 | |
| 32 | j. When performing case-insensitive completion, Readline no longer sorts the |
| 33 | list of matches unless directed to do so. |
| 34 | |
| 35 | k. Fixed a problem with key sequences ending with a backslash. |
| 36 | |
| 37 | l. Fixed out-of-bounds and free memory read errors found via fuzzing. |
| 38 | |
| 39 | m. Fixed several cases where the mark was set to an invalid value. |
| 40 | |
| 41 | n. Fixed a problem with the case-changing operators in the case where the |
| 42 | lower and upper case versions of a character do not have the same number |
| 43 | of bytes. |
| 44 | |
| 45 | o. Handle incremental and non-incremental search character reads returning EOF. |
| 46 | |
| 47 | p. Handle the case where a failing readline command at the end of a multi-key |
| 48 | sequence could be misinterpreted. |
| 49 | |
| 50 | q. The history library now prints a meaningful error message if the history |
| 51 | file isn't a regular file. |
| 52 | |
| 53 | r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace |
| 54 | a multibyte character. |
| 55 | |
| 56 | s. The key binding code now attempts to remove a keymap if a key unbinding |
| 57 | leaves it empty. |
| 58 | |
| 59 | t. Fixed a line-wrapping issue that caused problems for some terminal |
| 60 | emulators. |
| 61 | |
| 62 | u. If there is a key bound to the tty's VDISCARD special character, readline |
| 63 | disables VDISCARD while it is active. |
| 64 | |
| 65 | v. Fixed a problem with exiting bracketed paste mode on terminals that assume |
| 66 | the bracketed paste mode character sequence contains visible characters. |
| 67 | |
| 68 | w. Fixed a bug that could cause a key binding command to refer to an |
| 69 | uninitialized variable. |
| 70 | |
| 71 | x. Added more UTF-8-specific versions of multibyte functions, and optimized |
| 72 | existing functions if the current locale uses UTF-8 encoding. |
| 73 | |
| 74 | y. Fixed a problem with bracketed-paste inserting more than one character and |
| 75 | interacting with other readline functions. |
| 76 | |
| 77 | z. Fixed a bug that caused the history library to attempt to append a history |
| 78 | line to a non-existent history entry. |
| 79 | |
| 80 | aa. If using bracketed paste mode, output a newline after the \r that is the |
| 81 | last character of the mode disable string to avoid overwriting output. |
| 82 | |
| 83 | bb. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better |
| 84 | handle multibyte characters. |
| 85 | |
| 86 | cc. Fixed a redisplay problem that caused an extra newline to be generated on |
| 87 | accept-line when the line length is exactly the screenwidth. |
| 88 | |
| 89 | dd. Fixed a bug with adding multibyte characters to an incremental search |
| 90 | string. |
| 91 | |
| 92 | ee. Fixed a bug with redoing text insertions in vi mode. |
| 93 | |
| 94 | ff. Fixed a bug with pasting text into an incremental search string if bracketed |
| 95 | paste mode is enabled. ESC cannot be one of the incremental search |
| 96 | terminator characters for this to work. |
| 97 | |
| 98 | gg. Fixed a bug with anchored search patterns when performing searches in vi |
| 99 | mode. |
| 100 | |
| 101 | 2. New Features in Readline |
| 102 | |
| 103 | a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as |
| 104 | Posix specifies (uses fnmatch(3) if available). |
| 105 | |
| 106 | b. There are new `next-screen-line' and `previous-screen-line' bindable |
| 107 | commands, which move the cursor to the same column in the next, or previous, |
| 108 | physical line, respectively. |
| 109 | |
| 110 | c. There are default key bindings for control-arrow-key key combinations. |
| 111 | |
| 112 | d. A negative argument (-N) to `quoted-insert' means to insert the next N |
| 113 | characters using quoted-insert. |
| 114 | |
| 115 | e. New public function: rl_check_signals(), which allows applications to |
| 116 | respond to signals that readline catches while waiting for input using |
| 117 | a custom read function. |
| 118 | |
| 119 | f. There is new support for conditionally testing the readline version in an |
| 120 | inputrc file, with a full set of arithmetic comparison operators available. |
| 121 | |
| 122 | g. There is a simple variable comparison facility available for use within an |
| 123 | inputrc file. Allowable operators are equality and inequality; string |
| 124 | variables may be compared to a value; boolean variables must be compared to |
| 125 | either `on' or `off'; variable names are separated from the operator by |
| 126 | whitespace. |
| 127 | |
| 128 | h. The history expansion library now understands command and process |
| 129 | substitution and extended globbing and allows them to appear anywhere in a |
| 130 | word. |
| 131 | |
| 132 | i. The history library has a new variable that allows applications to set the |
| 133 | initial quoting state, so quoting state can be inherited from a previous |
| 134 | line. |
| 135 | |
| 136 | j. Readline now allows application-defined keymap names; there is a new public |
| 137 | function, rl_set_keymap_name(), to do that. |
| 138 | |
| 139 | k. The "Insert" keypad key, if available, now puts readline into overwrite |
| 140 | mode. |