| | 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. |