Annotation of embedaddon/readline/CHANGES, revision 1.1.1.2
1.1.1.2 ! misho 1: This document details the changes between this version, readline-8.1, and
! 2: the previous version, readline-8.0.
! 3:
! 4: 1. Changes to Readline
! 5:
! 6: a. There are a number of fixes that were found as the result of fuzzing with
! 7: random input.
! 8:
! 9: b. Changed the revert-all-at-newline behavior to make sure to start at the end
! 10: of the history list when doing it, instead of the line where the user hit
! 11: return.
! 12:
! 13: c. When parsing `set' commands from the inputrc file or an application, readline
! 14: now allows trailing whitespace.
! 15:
! 16: d. Fixed a bug that left a file descriptor open to the history file if the
! 17: file size was 0.
! 18:
! 19: e. Fixed a problem with binding key sequences containing meta characters.
! 20:
! 21: f. Fixed a bug that caused the wrong line to be displayed if the user tried to
! 22: move back beyond the beginning of the history list, or forward past the end
! 23: of the history list.
! 24:
! 25: g. If readline catches SIGTSTP, it now sets a hook that allows the calling
! 26: application to handle it if it desires.
! 27:
! 28: h. Fixed a redisplay problem with a prompt string containing embedded newlines.
! 29:
! 30: i. Fixed a problem with completing filenames containing invalid multibyte
! 31: sequences when case-insensitive comparisons are enabled.
! 32:
! 33: j. Fixed a redisplay problem with prompt strings containing invisible multibyte
! 34: characters.
! 35:
! 36: k. Fixed a problem with multibyte characters mapped to editing commands that
! 37: modify the search string in incremental search.
! 38:
! 39: l. Fixed a bug with maintaining the key sequence while resolving a bound
! 40: command in the presence of ambiguous sequences (sequences with a common
! 41: prefix), in most cases while attempting to unbind it.
! 42:
! 43: m. Fixed several buffer overflows found as the result of fuzzing.
! 44:
! 45: n. Reworked backslash handling when translating key sequences for key binding
! 46: to be more uniform and consistent, which introduces a slight backwards
! 47: incompatibility.
! 48:
! 49: o. Fixed a bug with saving the history that resulted in errors not being
! 50: propagated to the calling application when the history file is not writable.
! 51:
! 52: p. Readline only calls chown(2) on a newly-written history file if it really
! 53: needs to, instead of having it be a no-op.
! 54:
! 55: q. Readline now behaves better when operate-and-get-next is used when the
! 56: history list is `full': when there are already $HISTSIZE entries.
! 57:
! 58: r. Fixed a bug that could cause vi redo (`.') of a replace command not to work
! 59: correctly in the C or POSIX locale.
! 60:
! 61: s. Fixed a bug with vi-mode digit arguments that caused the last command to be
! 62: set incorrectly. This prevents yank-last-arg from working as intended, for
! 63: example.
! 64:
! 65: t. Make sure that all undo groups are closed when leaving vi insertion mode.
! 66:
! 67: u. Make sure that the vi-mode `C' and `c' commands enter insert mode even if
! 68: the motion command doesn't have any effect.
! 69:
! 70: v. Fixed several potential memory leaks in the callback mode context handling.
! 71:
! 72: w. If readline is handling a SIGTTOU, make sure SIGTTOU is blocked while
! 73: executing the terminal cleanup code, since it's no longer run in a signal
! 74: handling context.
! 75:
! 76: x. Fixed a bug that could cause an application with an application-specific
! 77: redisplay function to crash if the line data structures had not been
! 78: initialized.
! 79:
! 80: y. Terminals that are named "dumb" or unknown do not enable bracketed paste
! 81: by default.
! 82:
! 83: z. Ensure that disabling bracketed paste turns off highlighting the incremental
! 84: search string when the search is successful.
! 85:
! 86: 2. New Features in Readline
! 87:
! 88: a. If a second consecutive completion attempt produces matches where the first
! 89: did not, treat it as a new completion attempt and insert a match as
! 90: appropriate.
! 91:
! 92: b. Bracketed paste mode works in more places: incremental search strings, vi
! 93: overstrike mode, character search, and reading numeric arguments.
! 94:
! 95: c. Readline automatically switches to horizontal scrolling if the terminal has
! 96: only one line.
! 97:
! 98: d. Unbinding all key sequences bound to a particular readline function now
! 99: descends into keymaps for multi-key sequences.
! 100:
! 101: e. rl-clear-display: new bindable command that clears the screen and, if
! 102: possible, the scrollback buffer (bound to emacs mode M-C-l by default).
! 103:
! 104: f. New active mark and face feature: when enabled, it will highlight the text
! 105: inserted by a bracketed paste (the `active region') and the text found by
! 106: incremental and non-incremental history searches. This is tied to bracketed
! 107: paste and can be disabled by turning off bracketed paste.
! 108:
! 109: g. Readline sets the mark in several additional commands.
! 110:
! 111: h. Bracketed paste mode is enabled by default. There is a configure-time
! 112: option (--enable-bracketed-paste-default) to set the default to on or off.
! 113:
! 114: i. Readline tries to take advantage of the more regular structure of UTF-8
! 115: characters to identify the beginning and end of characters when moving
! 116: through the line buffer.
! 117:
! 118: j. The bindable operate-and-get-next command (and its default bindings) are
! 119: now part of readline instead of a bash-specific addition.
! 120:
! 121: k. The signal cleanup code now blocks SIGINT while processing after a SIGINT.
! 122:
! 123: -------------------------------------------------------------------------------
! 124: This document details the changes between this version, readline-8.0, and the
! 125: previous version, readline-7.0.
! 126:
! 127: 1. Changes to Readline
! 128:
! 129: a. Added a guard to prevent nested macros from causing an infinite expansion
! 130: loop.
! 131:
! 132: b. Instead of allocating enough history list entries to hold the maximum list
! 133: size, cap the number allocated initially.
! 134:
! 135: c. Added a strategy to avoid allocating huge amounts of memory if a block of
! 136: history entries without timestamps occurs after a block with timestamps.
! 137:
! 138: d. Added support for keyboard timeouts when an ESC character is the last
! 139: character in a macro.
! 140:
! 141: e. There are several performance improvements when in a UTF-8 locale.
! 142:
! 143: f. Readline does a better job of preserving the original set of blocked
! 144: signals when using pselect() to wait for input.
! 145:
! 146: g. Fixed a bug that caused multibyte characters in macros to be mishandled.
! 147:
! 148: h. Fixed several bugs in the code that calculates line breaks when expanding
! 149: prompts that span several lines, contain multibyte characters, and contain
! 150: invisible character seqeuences.
! 151:
! 152: i. Fixed several bugs in cursor positioning when displaying lines with prompts
! 153: containing invisible characters and multibyte characters.
! 154:
! 155: j. When performing case-insensitive completion, Readline no longer sorts the
! 156: list of matches unless directed to do so.
! 157:
! 158: k. Fixed a problem with key sequences ending with a backslash.
! 159:
! 160: l. Fixed out-of-bounds and free memory read errors found via fuzzing.
! 161:
! 162: m. Fixed several cases where the mark was set to an invalid value.
! 163:
! 164: n. Fixed a problem with the case-changing operators in the case where the
! 165: lower and upper case versions of a character do not have the same number
! 166: of bytes.
! 167:
! 168: o. Handle incremental and non-incremental search character reads returning EOF.
! 169:
! 170: p. Handle the case where a failing readline command at the end of a multi-key
! 171: sequence could be misinterpreted.
! 172:
! 173: q. The history library now prints a meaningful error message if the history
! 174: file isn't a regular file.
! 175:
! 176: r. Fixed a problem with vi-mode redo (`.') on a command when trying to replace
! 177: a multibyte character.
! 178:
! 179: s. The key binding code now attempts to remove a keymap if a key unbinding
! 180: leaves it empty.
! 181:
! 182: t. Fixed a line-wrapping issue that caused problems for some terminal
! 183: emulators.
! 184:
! 185: u. If there is a key bound to the tty's VDISCARD special character, readline
! 186: disables VDISCARD while it is active.
! 187:
! 188: v. Fixed a problem with exiting bracketed paste mode on terminals that assume
! 189: the bracketed paste mode character sequence contains visible characters.
! 190:
! 191: w. Fixed a bug that could cause a key binding command to refer to an
! 192: uninitialized variable.
! 193:
! 194: x. Added more UTF-8-specific versions of multibyte functions, and optimized
! 195: existing functions if the current locale uses UTF-8 encoding.
! 196:
! 197: y. Fixed a problem with bracketed-paste inserting more than one character and
! 198: interacting with other readline functions.
! 199:
! 200: z. Fixed a bug that caused the history library to attempt to append a history
! 201: line to a non-existent history entry.
! 202:
! 203: aa. If using bracketed paste mode, output a newline after the \r that is the
! 204: last character of the mode disable string to avoid overwriting output.
! 205:
! 206: bb. Fixes to the vi-mode `b', `B', `w', `W', `e', and `E' commands to better
! 207: handle multibyte characters.
! 208:
! 209: cc. Fixed a redisplay problem that caused an extra newline to be generated on
! 210: accept-line when the line length is exactly the screenwidth.
! 211:
! 212: dd. Fixed a bug with adding multibyte characters to an incremental search
! 213: string.
! 214:
! 215: ee. Fixed a bug with redoing text insertions in vi mode.
! 216:
! 217: ff. Fixed a bug with pasting text into an incremental search string if bracketed
! 218: paste mode is enabled. ESC cannot be one of the incremental search
! 219: terminator characters for this to work.
! 220:
! 221: gg. Fixed a bug with anchored search patterns when performing searches in vi
! 222: mode.
! 223:
! 224: 2. New Features in Readline
! 225:
! 226: a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
! 227: Posix specifies (uses fnmatch(3) if available).
! 228:
! 229: b. There are new `next-screen-line' and `previous-screen-line' bindable
! 230: commands, which move the cursor to the same column in the next, or previous,
! 231: physical line, respectively.
! 232:
! 233: c. There are default key bindings for control-arrow-key key combinations.
! 234:
! 235: d. A negative argument (-N) to `quoted-insert' means to insert the next N
! 236: characters using quoted-insert.
! 237:
! 238: e. New public function: rl_check_signals(), which allows applications to
! 239: respond to signals that readline catches while waiting for input using
! 240: a custom read function.
! 241:
! 242: f. There is new support for conditionally testing the readline version in an
! 243: inputrc file, with a full set of arithmetic comparison operators available.
! 244:
! 245: g. There is a simple variable comparison facility available for use within an
! 246: inputrc file. Allowable operators are equality and inequality; string
! 247: variables may be compared to a value; boolean variables must be compared to
! 248: either `on' or `off'; variable names are separated from the operator by
! 249: whitespace.
! 250:
! 251: h. The history expansion library now understands command and process
! 252: substitution and extended globbing and allows them to appear anywhere in a
! 253: word.
! 254:
! 255: i. The history library has a new variable that allows applications to set the
! 256: initial quoting state, so quoting state can be inherited from a previous
! 257: line.
! 258:
! 259: j. Readline now allows application-defined keymap names; there is a new public
! 260: function, rl_set_keymap_name(), to do that.
! 261:
! 262: k. The "Insert" keypad key, if available, now puts readline into overwrite
! 263: mode.
! 264:
! 265: -------------------------------------------------------------------------------
! 266: This document details the changes between this version, readline-7.0, and the
! 267: previous version, readline-6.3.
! 268:
! 269: 1. Changes to Readline
! 270:
! 271: a. A bug that caused vi-mode `.' to be unable to redo `c', `d', and `y'
! 272: commands with modifiers was fixed.
! 273:
! 274: b. Fixed a bug that caused callback mode to dump core when reading a
! 275: multiple-key sequence (e.g., arrow keys).
! 276:
! 277: c. Fixed a bug that caused the redisplay code to erase some of the line when
! 278: using horizontal scrolling with incremental search.
! 279:
! 280: d. Readline's input handler now performs signal processing if read(2) is
! 281: interrupted by SIGALRM or SIGVTALRM.
! 282:
! 283: e. Fixed a problem with revert-all-at-newline freeing freed memory.
! 284:
! 285: f. Clarified the documentation for the history_quotes_inhibit_expansion
! 286: variable to note that it inhibits scanning for the history comment
! 287: character and that it only affects double-quoted strings.
! 288:
! 289: g. Fixed an off-by-one error in the prompt printed when performing searches.
! 290:
! 291: h. Use pselect(2), if available, to wait for input before calling read(2), so
! 292: a SIGWINCH can interrupt it, since it doesn't interrupt read(2).
! 293:
! 294: i. Some memory leaks caused by signals interrupting filename completion have
! 295: been fixed.
! 296:
! 297: j. Reading EOF twice on a non-empty line causes EOF to be returned, rather
! 298: than the partial line. This can cause partial lines to be executed on
! 299: SIGHUP, for example.
! 300:
! 301: k. Fixed a bug concerning deleting multibyte characters from the search
! 302: string while performing an incremental search.
! 303:
! 304: l. Fixed a bug with tilde expanding directory names in filename completion.
! 305:
! 306: m. Fixed a bug that did not allow binding sequences beginning with a `\'.
! 307:
! 308: n. Fixed a redisplay bug involving incorrect line wrapping when the prompt
! 309: contains a multibyte character in the last screen column.
! 310:
! 311: o. Fixed a bug that caused history expansion to disregard characters that are
! 312: documented to delimit a history event specifier without requiring `:'.
! 313:
! 314: p. Fixed a bug that could cause reading past the end of a string when reading
! 315: the value when binding the set of isearch terminators.
! 316:
! 317: q. Fixed a bug that caused readline commands that depend on knowing which
! 318: key invoked them to misbehave when dispatching key sequences that are
! 319: prefixes of other key bindings.
! 320:
! 321: r. Paren matching now works in vi insert mode.
! 322:
! 323: s. Colored completion prefixes are now displayed using a different color, less
! 324: likely to collide with files.
! 325:
! 326: t. Fixed a bug that caused vi-mode character search to misbehave when
! 327: running in callback mode.
! 328:
! 329: u. Fixed a bug that caused output to be delayed when input is coming from a
! 330: macro in vi-mode.
! 331:
! 332: v. Fixed a bug that caused the vi-mode `.' command to misbehave when redoing
! 333: a multi-key key sequence via a macro.
! 334:
! 335: w. Fixed a bug that caused problems with applications that supply their own
! 336: input function when performing completion.
! 337:
! 338: x. When read returns -1/EIO when attempting to read a key, return an error
! 339: instead of line termination back to the caller.
! 340:
! 341: y. Updated tty auditing feature based on patch from Red Hat.
! 342:
! 343: z. Fixed a bug that could cause the history library to crash on overflows
! 344: introduced by malicious editing of timestamps in the history file.
! 345:
! 346: aa. The history file writing functions only attempt to create and use a backup
! 347: history file if the history file exists and is a regular file.
! 348:
! 349: bb. Fixed an out-of-bounds read in readline's internal tilde expansion interface.
! 350:
! 351: cc. Fixed several redisplay bugs with prompt strings containing multibyte
! 352: and non-visible characters whose physical length is longer than the screen
! 353: width.
! 354:
! 355: dd. Fixed a redisplay bug with prompt strings containing invisible characters
! 356: whose physical length exceeds the screen width and using incremental search.
! 357:
! 358: ee. Readline prints more descriptive error messages when it encounters errors
! 359: while reading an inputrc file.
! 360:
! 361: ff. Fixed a bug in the character insertion code that attempts to optimize
! 362: typeahead when it reads a character that is not bound to self-insert and
! 363: resets the key sequence state.
! 364:
! 365: gg. When refreshing the line as the result of a key sequence, Readline attempts
! 366: to redraw only the last line of a multiline prompt.
! 367:
! 368: hh. Fixed an issue that caused completion of git commands to display
! 369: incorrectly when using colored-completion-prefix.
! 370:
! 371: ii. Fixed several redisplay bugs having to do with multibyte characters and
! 372: invisible characters in prompt strings.
! 373:
! 374: jj. Fixed a bug that caused mode strings to be displayed incorrectly if the
! 375: prompt was shorter than the mode string.
! 376:
! 377: 2. New Features in Readline
! 378:
! 379: a. The history truncation code now uses the same error recovery mechansim as
! 380: the history writing code, and restores the old version of the history file
! 381: on error. The error recovery mechanism handles symlinked history files.
! 382:
! 383: b. There is a new bindable variable, `enable-bracketed-paste', which enables
! 384: support for a terminal's bracketed paste mode.
! 385:
! 386: c. The editing mode indicators can now be strings and are user-settable
! 387: (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string'
! 388: variables). Mode strings can contain invisible character sequences.
! 389: Setting mode strings to null strings restores the defaults.
! 390:
! 391: d. Prompt expansion adds the mode string to the last line of a multi-line
! 392: prompt (one with embedded newlines).
! 393:
! 394: e. There is a new bindable variable, `colored-completion-prefix', which, if
! 395: set, causes the common prefix of a set of possible completions to be
! 396: displayed in color.
! 397:
! 398: f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs-
! 399: mode yank-pop.
! 400:
! 401: g. The redisplay code underwent several efficiency improvements for multibyte
! 402: locales.
! 403:
! 404: h. The insert-char function attempts to batch-insert all pending typeahead
! 405: that maps to self-insert, as long as it is coming from the terminal.
! 406:
! 407: i. rl_callback_sigcleanup: a new application function that can clean up and
! 408: unset any state set by readline's callback mode. Intended to be used
! 409: after a signal.
! 410:
! 411: j. If an incremental search string has its last character removed with DEL, the
! 412: resulting empty search string no longer matches the previous line.
! 413:
! 414: k. If readline reads a history file that begins with `#' (or the value of
! 415: the history comment character) and has enabled history timestamps, the history
! 416: entries are assumed to be delimited by timestamps. This allows multi-line
! 417: history entries.
! 418:
! 419: l. Readline now throws an error if it parses a key binding without a terminating
! 420: `:' or whitespace.
! 421:
! 422: m. The default binding for ^W in vi mode now uses word boundaries specified
! 423: by Posix (vi-unix-word-rubout is bindable command name).
! 424:
! 425: n. rl_clear_visible_line: new application-callable function; clears all
! 426: screen lines occupied by the current visible readline line.
! 427:
! 428: o. rl_tty_set_echoing: application-callable function that controls whether
! 429: or not readline thinks it is echoing terminal output.
! 430:
! 431: p. Handle >| and strings of digits preceding and following redirection
! 432: specifications as single tokens when tokenizing the line for history
! 433: expansion.
! 434:
! 435: q. Fixed a bug with displaying completions when the prefix display length
! 436: is greater than the length of the completions to be displayed.
! 437:
! 438: r. The :p history modifier now applies to the entire line, so any expansion
! 439: specifying :p causes the line to be printed instead of expanded.
! 440:
! 441: s. New application-callable function: rl_pending_signal(): returns the signal
! 442: number of any signal readline has caught but not yet handled.
! 443:
! 444: t. New application-settable variable: rl_persistent_signal_handlers: if set
! 445: to a non-zero value, readline will enable the readline-6.2 signal handler
! 446: behavior in callback mode: handlers are installed when
! 447: rl_callback_handler_install is called and removed removed when a complete
! 448: line has been read.
! 449:
! 450: -------------------------------------------------------------------------------
1.1 misho 451: This document details the changes between this version, readline-6.3, and the
452: previous version, readline-6.2.
453:
454: 1. Changes to Readline
455:
456: a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode
457: commands to work on the entire line.
458:
459: b. Fixed a bug that caused redisplay problems with prompts longer than 128
460: characters and history searches.
461:
462: c. Fixed a bug that caused readline to try and run code to modify its idea
463: of the screen size in a signal handler context upon receiving a SIGWINCH.
464:
465: d. Fixed a bug that caused the `meta' key to be enabled beyond the duration
466: of an individual call top readline().
467:
468: e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's
469: redisplay to mishandle zero-width combining characters.
470:
471: f. Fixed a bug that caused readline to `forget' part of a key sequence when
472: a multiple-key sequence caused it to break out of an incremental search.
473:
474: g. Fixed bugs that caused readline to execute code in a signal handler
475: context if interrupted while reading from the file system during completion.
476:
477: h. Fixed a bug that caused readline to `forget' part of a key sequence when
478: reading an unbound multi-character key sequence.
479:
480: i. Fixed a bug that caused Readline's signal handlers to be installed beyond
481: the bounds of a single call to readline().
482:
483: j. Fixed a bug that caused the `.' command to not redo the most recent `R'
484: command in vi mode.
485:
486: k. Fixed a bug that caused ignoring case in completion matches to result in
487: readline using the wrong match.
488:
489: l. Paren matching now works in vi insert mode.
490:
491: m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix
492: work together.
493:
494: n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone
495: in vi editing mode.
496:
497: o. Fixed a bug that caused the filename comparison code to not compare
498: multibyte characters correctly when using case-sensitive or case-mapping
499: comparisons.
500:
501: p. Fixed the input reading loop to call the input hook function only when there
502: is no terminal input available.
503:
504: q. Fixed a bug that caused binding a macro to a multi-character key sequence
505: where the sequence and macro value share a common prefix to not perform
506: the macro replacement.
507:
508: r. Fixed several redisplay errors with multibyte characters and prompts
509: containing invisible characters when using horizontal scrolling.
510:
511: s. Fixed a bug that caused redisplay errors when trying to overwrite
512: existing characters using multibyte characters.
513:
514: t. Fixed a bug in vi mode that caused the arrow keys to set the saved last
515: vi-mode command to the wrong value.
516:
517: u. Fixed a bug that caused double-quoted strings to be scanned incorrectly
518: when being used as the value of a readline variable assignment.
519:
520: v. Fixed a bug with vi mode that prevented `.' from repeating a command
521: entered on a previous line (command).
522:
523: w. Fixed a bug that could cause completion to core dump if it was interrupted
524: by a signal.
525:
526: x. Fixed a bug that could cause readline to crash and seg fault attempting to
527: expand an empty history entry.
528:
529: y. Fixed a bug that caused display problems with multi-line prompts containing
530: invisible characters on multiple lines.
531:
532: z. Fixed a bug that caused effects made by undoing changes to a history line to
533: be discarded.
534:
535: 2. New Features in Readline
536:
537: a. Readline is now more responsive to SIGHUP and other fatal signals when
538: reading input from the terminal or performing word completion but no
539: longer attempts to run any not-allowable functions from a signal handler
540: context.
541:
542: b. There are new bindable commands to search the history for the string of
543: characters between the beginning of the line and the point
544: (history-substring-search-forward, history-substring-search-backward)
545:
546: c. Readline allows quoted strings as the values of variables when setting
547: them with `set'. As a side effect, trailing spaces and tabs are ignored
548: when setting a string variable's value.
549:
550: d. The history library creates a backup of the history file when writing it
551: and restores the backup on a write error.
552:
553: e. New application-settable variable: rl_filename_stat_hook: a function called
554: with a filename before using it in a call to stat(2). Bash uses it to
555: expand shell variables so things like $HOME/Downloads have a slash
556: appended.
557:
558: f. New bindable function `print-last-kbd-macro', prints the most-recently-
559: defined keyboard macro in a reusable format.
560:
561: g. New user-settable variable `colored-stats', enables use of colored text
562: to denote file types when displaying possible completions (colored analog
563: of visible-stats).
564:
565: h. New user-settable variable `keyseq-timout', acts as an inter-character
566: timeout when reading input or incremental search strings.
567:
568: i. New application-callable function: rl_clear_history. Clears the history list
569: and frees all readline-associated private data.
570:
571: j. New user-settable variable, show-mode-in-prompt, adds a characters to the
572: beginning of the prompt indicating the current editing mode.
573:
574: k. New application-settable variable: rl_input_available_hook; function to be
575: called when readline needs to check whether there is data available on its
576: input source. The default hook checks rl_instream.
577:
578: l. Readline calls an application-set event hook (rl_signal_event_hook) after
579: it gets a signal while reading input (read returns -1/EINTR but readline
580: does not handle the signal immediately) to allow the application to handle
581: or otherwise note it. Not currently called for SIGHUP or SIGTERM.
582:
583: m. If the user-settable variable `history-size' is set to a value less than
584: 0, the history list size is unlimited.
585:
586: n. When creating shared libraries on Mac OS X, the pathname written into the
587: library (install_name) no longer includes the minor version number.
588:
589: -------------------------------------------------------------------------------
590: This document details the changes between this version, readline-6.2,
591: and the previous version, readline-6.1.
592:
593: 1. Changes to Readline
594:
595: a. Fixed a bug that caused the unconverted filename to be added to the list of
596: completions when the application specified filename conversion functions.
597:
598: b. Fixed a bug that caused the wrong filename to be passed to opendir when the
599: application has specified a filename dequoting function.
600:
601: c. Fixed a bug when repeating a character search in vi mode in the case where
602: there was no search to repeat.
603:
604: d. When show-all-if-ambiguous is set, the completion routines no longer insert
605: a common match prefix that is shorter than the text being completed.
606:
607: e. The full set of vi editing commands may now be used in callback mode.
608:
609: f. Fixed a bug that caused readline to not update its idea of the terminal
610: dimensions while running in `no-echo' mode.
611:
612: h. Fixed a bug that caused readline to dump core if an application called
613: rl_prep_terminal without setting rl_instream.
614:
615: i. Fixed a bug that caused meta-prefixed characters bound to incremental
616: search forward or backward to not be recognized if they were typed
617: subsequently.
618:
619: j. The incremental search code treats key sequences that map to the same
620: functions as (default) ^G, ^W, and ^Y as equivalent to those characters.
621:
622: k. Fixed a bug in menu-complete that caused it to misbehave with large
623: negative argument.
624:
625: l. Fixed a bug that caused vi-mode yank-last-arg to ring the bell when invoked
626: at the end of the line.
627:
628: m. Fixed a bug that made an explicit argument of 0 to yank-last-arg behave
629: as if it were a negative argument.
630:
631: n. Fixed a bug that caused directory names in words to be completed to not
632: be dequoted correctly.
633:
634: 2. New Features in Readline
635:
636: a. The history library does not try to write the history filename in the
637: current directory if $HOME is unset. This closes a potential security
638: problem if the application does not specify a history filename.
639:
640: b. New bindable variable `completion-display-width' to set the number of
641: columns used when displaying completions.
642:
643: c. New bindable variable `completion-case-map' to cause case-insensitive
644: completion to treat `-' and `_' as identical.
645:
646: d. There are new bindable vi-mode command names to avoid readline's case-
647: insensitive matching not allowing them to be bound separately.
648:
649: e. New bindable variable `menu-complete-display-prefix' causes the menu
650: completion code to display the common prefix of the possible completions
651: before cycling through the list, instead of after.
652:
653: -------------------------------------------------------------------------------
654: This document details the changes between this version, readline-6.1,
655: and the previous version, readline-6.0.
656:
657: 1. Changes to Readline
658:
659: a. The SIGWINCH signal handler now avoids calling the redisplay code if
660: one arrives while in the middle of redisplay.
661:
662: b. Changes to the timeout code to make sure that timeout values greater
663: than one second are handled better.
664:
665: c. Fixed a bug in the redisplay code that was triggered by a prompt
666: containing invisible characters exactly the width of the screen.
667:
668: d. Fixed a bug in the redisplay code encountered when running in horizontal
669: scroll mode.
670:
671: e. Fixed a bug that prevented menu completion from properly completing
672: filenames.
673:
674: f. Fixed a redisplay bug caused by a multibyte character causing a line to
675: wrap.
676:
677: g. Fixed a bug that caused key sequences of two characters to not be
678: recognized when a longer sequence identical in the first two characters
679: was bound.
680:
681: h. Fixed a bug that caused history expansion to be attempted on $'...'
682: single-quoted strings.
683:
684: i. Fixed a bug that caused incorrect redisplay when the prompt contained
685: multibyte characters in an `invisible' sequence bracketed by \[ and
686: \].
687:
688: j. Fixed a bug that caused history expansion to short-circuit after
689: encountering a multibyte character.
690:
691: k. Fixed a bug that caused applications using the callback interface to not
692: react to SIGINT (or other signals) until another character arrived.
693:
694: 2. New Features in Readline
695:
696: a. New bindable function: menu-complete-backward.
697:
698: b. In the vi insertion keymap, C-n is now bound to menu-complete by default,
699: and C-p to menu-complete-backward.
700:
701: c. When in vi command mode, repeatedly hitting ESC now does nothing, even
702: when ESC introduces a bound key sequence. This is closer to how
703: historical vi behaves.
704:
705: d. New bindable function: skip-csi-sequence. Can be used as a default to
706: consume key sequences generated by keys like Home and End without having
707: to bind all keys.
708:
709: e. New application-settable function: rl_filename_rewrite_hook. Can be used
710: to rewite or modify filenames read from the file system before they are
711: compared to the word to be completed.
712:
713: f. New bindable variable: skip-completed-text, active when completing in the
714: middle of a word. If enabled, it means that characters in the completion
715: that match characters in the remainder of the word are "skipped" rather
716: than inserted into the line.
717:
718: g. The pre-readline-6.0 version of menu completion is available as
719: "old-menu-complete" for users who do not like the readline-6.0 version.
720:
721: h. New bindable variable: echo-control-characters. If enabled, and the
722: tty ECHOCTL bit is set, controls the echoing of characters corresponding
723: to keyboard-generated signals.
724:
725: i. New bindable variable: enable-meta-key. Controls whether or not readline
726: sends the smm/rmm sequences if the terminal indicates it has a meta key
727: that enables eight-bit characters.
728:
729: -------------------------------------------------------------------------------
730: This document details the changes between this version, readline-6.0,
731: and the previous version, readline-5.2.
732:
733: 1. Changes to Readline
734:
735: a. Fixed a number of redisplay errors in environments supporting multibyte
736: characters.
737:
738: b. Fixed bugs in vi command mode that caused motion commands to inappropriately
739: set the mark.
740:
741: c. When using the arrow keys in vi insertion mode, readline allows movement
742: beyond the current end of the line (unlike command mode).
743:
744: d. Fixed bugs that caused readline to loop when the terminal has been taken
745: away and reads return -1/EIO.
746:
747: e. Fixed bugs in redisplay occurring when displaying prompts containing
748: invisible characters.
749:
750: f. Fixed a bug that caused the completion append character to not be reset to
751: the default after an application-specified completion function changed it.
752:
753: g. Fixed a problem that caused incorrect positioning of the cursor while in
754: emacs editing mode when moving forward at the end of a line while using
755: a locale supporting multibyte characters.
756:
757: h. Fixed an off-by-one error that caused readline to drop every 511th
758: character of buffered input.
759:
760: i. Fixed a bug that resulted in SIGTERM not being caught or cleaned up.
761:
762: j. Fixed redisplay bugs caused by multiline prompts with invisible characters
763: or no characters following the final newline.
764:
765: k. Fixed redisplay bug caused by prompts consisting solely of invisible
766: characters.
767:
768: l. Fixed a bug in the code that buffers characters received very quickly in
769: succession which caused characters to be dropped.
770:
771: m. Fixed a bug that caused readline to reference uninitialized data structures
772: if it received a SIGWINCH before completing initialzation.
773:
774: n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly
775: and therefore unrepeatable.
776:
777: o. Fixed a bug that caused readline to disable echoing when it was being used
778: with an output file descriptor that was not a terminal.
779:
780: p. Readline now blocks SIGINT while manipulating internal data structures
781: during redisplay.
782:
783: q. Fixed a bug in redisplay that caused readline to segfault when pasting a
784: very long line (over 130,000 characters).
785:
786: r. Fixed bugs in redisplay when using prompts with no visible printing
787: characters.
788:
789: s. Fixed a bug that caused redisplay errors when using prompts with invisible
790: characters and numeric arguments to a command in a multibyte locale.
791:
792: t. Fixed a bug that caused redisplay errors when using prompts with invisible
793: characters spanning more than two physical screen lines.
794:
795: 2. New Features in Readline
796:
797: a. A new variable, rl_sort_completion_matches; allows applications to inhibit
798: match list sorting (but beware: some things don't work right if
799: applications do this).
800:
801: b. A new variable, rl_completion_invoking_key; allows applications to discover
802: the key that invoked rl_complete or rl_menu_complete.
803:
804: c. The functions rl_block_sigint and rl_release_sigint are now public and
805: available to calling applications who want to protect critical sections
806: (like redisplay).
807:
808: d. The functions rl_save_state and rl_restore_state are now public and
809: available to calling applications; documented rest of readline's state
810: flag values.
811:
812: e. A new user-settable variable, `history-size', allows setting the maximum
813: number of entries in the history list.
814:
815: f. There is a new implementation of menu completion, with several improvements
816: over the old; the most notable improvement is a better `completions
817: browsing' mode.
818:
819: g. The menu completion code now uses the rl_menu_completion_entry_function
820: variable, allowing applications to provide their own menu completion
821: generators.
822:
823: h. There is support for replacing a prefix of a pathname with a `...' when
824: displaying possible completions. This is controllable by setting the
825: `completion-prefix-display-length' variable. Matches with a common prefix
826: longer than this value have the common prefix replaced with `...'.
827:
828: i. There is a new `revert-all-at-newline' variable. If enabled, readline will
829: undo all outstanding changes to all history lines when `accept-line' is
830: executed.
831:
832: -------------------------------------------------------------------------------
833: This document details the changes between this version, readline-5.2,
834: and the previous version, readline-5.1.
835:
836: 1. Changes to Readline
837:
838: a. Fixed a problem that caused segmentation faults when using readline in
839: callback mode and typing consecutive DEL characters on an empty line.
840:
841: b. Fixed several redisplay problems with multibyte characters, all having to
842: do with the different code paths and variable meanings between single-byte
843: and multibyte character redisplay.
844:
845: c. Fixed a problem with key sequence translation when presented with the
846: sequence \M-\C-x.
847:
848: d. Fixed a problem that prevented the `a' command in vi mode from being
849: undone and redone properly.
850:
851: e. Fixed a problem that prevented empty inserts in vi mode from being undone
852: properly.
853:
854: f. Fixed a problem that caused readline to initialize with an incorrect idea
855: of whether or not the terminal can autowrap.
856:
857: g. Fixed output of key bindings (like bash `bind -p') to honor the setting of
858: convert-meta and use \e where appropriate.
859:
860: h. Changed the default filename completion function to call the filename
861: dequoting function if the directory completion hook isn't set. This means
862: that any directory completion hooks need to dequote the directory name,
863: since application-specific hooks need to know how the word was quoted,
864: even if no other changes are made.
865:
866: i. Fixed a bug with creating the prompt for a non-interactive search string
867: when there are non-printing characters in the primary prompt.
868:
869: j. Fixed a bug that caused prompts with invisible characters to be redrawn
870: multiple times in a multibyte locale.
871:
872: k. Fixed a bug that could cause the key sequence scanning code to return the
873: wrong function.
874:
875: l. Fixed a problem with the callback interface that caused it to fail when
876: using multi-character keyboard macros.
877:
878: m. Fixed a bug that could cause a core dump when an edited history entry was
879: re-executed under certain conditions.
880:
881: n. Fixed a bug that caused readline to reference freed memory when attmpting
882: to display a portion of the prompt.
883:
884: o. Fixed a bug with prompt redisplay in a multi-byte locale to avoid redrawing
885: the prompt and input line multiple times.
886:
887: p. Fixed history expansion to not be confused by here-string redirection.
888:
889: q. Readline no longer treats read errors by converting them to newlines, as
890: it does with EOF. This caused partial lines to be returned from readline().
891:
892: r. Fixed a redisplay bug that occurred in multibyte-capable locales when the
893: prompt was one character longer than the screen width.
894:
895: 2. New Features in Readline
896:
897: a. Calling applications can now set the keyboard timeout to 0, allowing
898: poll-like behavior.
899:
900: b. The value of SYS_INPUTRC (configurable at compilation time) is now used as
901: the default last-ditch startup file.
902:
903: c. The history file reading functions now allow windows-like \r\n line
904: terminators.
905:
906: -------------------------------------------------------------------------------
907: This document details the changes between this version, readline-5.1,
908: and the previous version, readline-5.0.
909:
910: 1. Changes to Readline
911:
912: a. Fixed a bug that caused multiliine prompts to be wrapped and displayed
913: incorrectly.
914:
915: b. Fixed a bug that caused ^P/^N in emacs mode to fail to display the current
916: line correctly.
917:
918: c. Fixed a problem in computing the number of invisible characters on the first
919: line of a prompt whose length exceeds the screen width.
920:
921: d. Fixed vi-mode searching so that failure preserves the current line rather
922: than the last line in the history list.
923:
924: e. Fixed the vi-mode `~' command (change-case) to have the correct behavior at
925: end-of-line when manipulating multibyte characters.
926:
927: f. Fixed the vi-mode `r' command (change-char) to have the correct behavior at
928: end-of-line when manipulating multibyte characters.
929:
930: g. Fixed multiple bugs in the redisplay of multibyte characters: displaying
931: prompts longer than the screen width containing multibyte characters,
932:
933: h. Fix the calculation of the number of physical characters in the prompt
934: string when it contains multibyte characters.
935:
936: i. A non-zero value for the `rl_complete_suppress_append' variable now causes
937: no `/' to be appended to a directory name.
938:
939: j. Fixed forward-word and backward-word to work when words contained
940: multibyte characters.
941:
942: k. Fixed a bug in finding the delimiter of a `?' substring when performing
943: history expansion in a locale that supports multibyte characters.
944:
945: l. Fixed a memory leak caused by not freeing the timestamp in a history entry.
946:
947: m. Fixed a bug that caused "\M-x" style key bindings to not obey the setting
948: of the `convert-meta' variable.
949:
950: n. Fixed saving and restoring primary prompt when prompting for incremental
951: and non-incremental searches; search prompts now display multibyte
952: characters correctly.
953:
954: o. Fixed a bug that caused keys originally bound to self-insert but shadowed
955: by a multi-character key sequence to not be inserted.
956:
957: p. Fixed code so rl_prep_term_function and rl_deprep_term_function aren't
958: dereferenced if NULL (matching the documentation).
959:
960: q. Extensive changes to readline to add enough state so that commands
961: requiring additional characters (searches, multi-key sequences, numeric
962: arguments, commands requiring an additional specifier character like
963: vi-mode change-char, etc.) work without synchronously waiting for
964: additional input.
965:
966: r. Lots of changes so readline builds and runs on MinGW.
967:
968: s. Readline no longer tries to modify the terminal settings when running in
969: callback mode.
970:
971: t. The Readline display code no longer sets the location of the last invisible
972: character in the prompt if the \[\] sequence is empty.
973:
974: u. The `change-case' command now correctly changes the case of multibyte
975: characters.
976:
977: v. Changes to the shared library construction scripts to deal with Windows
978: DLL naming conventions for Cygwin.
979:
980: w. Fixed the redisplay code to avoid core dumps resulting from a poorly-timed
981: SIGWINCH.
982:
983: x. Fixed the non-incremental search code in vi mode to dispose of any current
984: undo list when copying a line from the history into the current editing
985: buffer.
986:
987: y. Fixed a bug that caused reversing the incremental search direction to
988: not work correctly.
989:
990: z. Fixed the vi-mode `U' command to only undo up to the first time insert mode
991: was entered, as Posix specifies.
992:
993: aa. Fixed a bug in the vi-mode `r' command that left the cursor in the wrong
994: place.
995:
996: bb. Fixed a redisplay bug caused by moving the cursor vertically to a line
997: with invisible characters in the prompt in a multibyte locale.
998:
999: cc. Fixed a bug that could cause the terminal special chars to be bound in the
1000: wrong keymap in vi mode.
1001:
1002: 2. New Features in Readline
1003:
1004: a. The key sequence sent by the keypad `delete' key is now automatically
1005: bound to delete-char.
1006:
1007: b. A negative argument to menu-complete now cycles backward through the
1008: completion list.
1009:
1010: c. A new bindable readline variable: bind-tty-special-chars. If non-zero,
1011: readline will bind the terminal special characters to their readline
1012: equivalents when it's called (on by default).
1013:
1014: d. New bindable command: vi-rubout. Saves deleted text for possible
1015: reinsertion, as with any vi-mode `text modification' command; `X' is bound
1016: to this in vi command mode.
1017:
1018: e. If the rl_completion_query_items is set to a value < 0, readline never
1019: asks the user whether or not to view the possible completions.
1020:
1021: f. The `C-w' binding in incremental search now understands multibyte
1022: characters.
1023:
1024: g. New application-callable auxiliary function, rl_variable_value, returns
1025: a string corresponding to a readline variable's value.
1026:
1027: h. When parsing inputrc files and variable binding commands, the parser
1028: strips trailing whitespace from values assigned to boolean variables
1029: before checking them.
1030:
1031: i. A new external application-controllable variable that allows the LINES
1032: and COLUMNS environment variables to set the window size regardless of
1033: what the kernel returns.
1034:
1035: -------------------------------------------------------------------------------
1036: This document details the changes between this version, readline-5.0,
1037: and the previous version, readline-4.3.
1038:
1039: 1. Changes to Readline
1040:
1041: a. Fixes to avoid core dumps because of null pointer references in the
1042: multibyte character code.
1043:
1044: b. Fix to avoid infinite recursion caused by certain key combinations.
1045:
1046: c. Fixed a bug that caused the vi-mode `last command' to be set incorrectly.
1047:
1048: d. Readline no longer tries to read ahead more than one line of input, even
1049: when more is available.
1050:
1051: e. Fixed the code that adjusts the point to not mishandle null wide
1052: characters.
1053:
1054: f. Fixed a bug in the history expansion `g' modifier that caused it to skip
1055: every other match.
1056:
1057: g. Fixed a bug that caused the prompt to overwrite previous output when the
1058: output doesn't contain a newline and the locale supports multibyte
1059: characters. This same change fixes the problem of readline redisplay
1060: slowing down dramatically as the line gets longer in multibyte locales.
1061:
1062: h. History traversal with arrow keys in vi insertion mode causes the cursor
1063: to be placed at the end of the new line, like in emacs mode.
1064:
1065: i. The locale initialization code does a better job of using the right
1066: precedence and defaulting when checking the appropriate environment
1067: variables.
1068:
1069: j. Fixed the history word tokenizer to handle <( and >( better when used as
1070: part of bash.
1071:
1072: k. The overwrite mode code received several bug fixes to improve undo.
1073:
1074: l. Many speedups to the multibyte character redisplay code.
1075:
1076: m. The callback character reading interface should not hang waiting to read
1077: keyboard input.
1078:
1079: n. Fixed a bug with redoing vi-mode `s' command.
1080:
1081: o. The code that initializes the terminal tracks changes made to the terminal
1082: special characters with stty(1) (or equivalent), so that these changes
1083: are reflected in the readline bindings. New application-callable function
1084: to make it work: rl_tty_unset_default_bindings().
1085:
1086: p. Fixed a bug that could cause garbage to be inserted in the buffer when
1087: changing character case in vi mode when using a multibyte locale.
1088:
1089: q. Fixed a bug in the redisplay code that caused problems on systems
1090: supporting multibyte characters when moving between history lines when the
1091: new line has more glyphs but fewer bytes.
1092:
1093: r. Undo and redo now work better after exiting vi insertion mode.
1094:
1095: s. Make sure system calls are restarted after a SIGWINCH is received using
1096: SA_RESTART.
1097:
1098: t. Improvements to the code that displays possible completions when using
1099: multibyte characters.
1100:
1101: u. Fixed a problem when parsing nested if statements in inputrc files.
1102:
1103: v. The completer now takes multibyte characters into account when looking for
1104: quoted substrings on which to perform completion.
1105:
1106: w. The history search functions now perform better bounds checking on the
1107: history list.
1108:
1109: x. Change to history expansion functions to treat `^' as equivalent to word
1110: one, as the documention states.
1111:
1112: y. Some changes to the display code to improve display and redisplay of
1113: multibyte characters.
1114:
1115: z. Changes to speed up the multibyte character redisplay code.
1116:
1117: aa. Fixed a bug in the vi-mode `E' command that caused it to skip over the
1118: last character of a word if invoked while point was on the word's
1119: next-to-last character.
1120:
1121: bb. Fixed a bug that could cause incorrect filename quoting when
1122: case-insensitive completion was enabled and the word being completed
1123: contained backslashes quoting word break characters.
1124:
1125: cc. Fixed a bug in redisplay triggered when the prompt string contains
1126: invisible characters.
1127:
1128: dd. Fixed some display (and other) bugs encountered in multibyte locales
1129: when a non-ascii character was the last character on a line.
1130:
1131: ee. Fixed some display bugs caused by multibyte characters in prompt strings.
1132:
1133: ff. Fixed a problem with history expansion caused by non-whitespace characters
1134: used as history word delimiters.
1135:
1136: gg. Fixed a problem that could cause readline to refer to freed memory when
1137: moving between history lines while doing searches.
1138:
1139: hh. Improvements to the code that expands and displays prompt strings
1140: containing multibyte characters.
1141:
1142: ii. Fixed a problem with vi-mode not correctly remembering the numeric argument
1143: to the last `c'hange command for later use with `.'.
1144:
1145: jj. Fixed a bug in vi-mode that caused multi-digit count arguments to work
1146: incorrectly.
1147:
1148: kk. Fixed a problem in vi-mode that caused the last text modification command
1149: to not be remembered across different command lines.
1150:
1151: ll. Fixed problems with changing characters and changing case at the end of
1152: the line.
1153:
1154: mm. Fixed a problem with readline saving the contents of the current line
1155: before beginning a non-interactive search.
1156:
1157: nn. Fixed a problem with EOF detection when using rl_event_hook.
1158:
1159: oo. Fixed a problem with the vi mode `p' and `P' commands ignoring numeric
1160: arguments.
1161:
1162: 2. New Features in Readline
1163:
1164: a. History expansion has a new `a' modifier equivalent to the `g' modifier
1165: for compatibility with the BSD csh.
1166:
1167: b. History expansion has a new `G' modifier equivalent to the BSD csh `g'
1168: modifier, which performs a substitution once per word.
1169:
1170: c. All non-incremental search operations may now undo the operation of
1171: replacing the current line with the history line.
1172:
1173: d. The text inserted by an `a' command in vi mode can be reinserted with
1174: `.'.
1175:
1176: e. New bindable variable, `show-all-if-unmodified'. If set, the readline
1177: completer will list possible completions immediately if there is more
1178: than one completion and partial completion cannot be performed.
1179:
1180: f. There is a new application-callable `free_history_entry()' function.
1181:
1182: g. History list entries now contain timestamp information; the history file
1183: functions know how to read and write timestamp information associated
1184: with each entry.
1185:
1186: h. Four new key binding functions have been added:
1187:
1188: rl_bind_key_if_unbound()
1189: rl_bind_key_if_unbound_in_map()
1190: rl_bind_keyseq_if_unbound()
1191: rl_bind_keyseq_if_unbound_in_map()
1192:
1193: i. New application variable, rl_completion_quote_character, set to any
1194: quote character readline finds before it calls the application completion
1195: function.
1196:
1197: j. New application variable, rl_completion_suppress_quote, settable by an
1198: application completion function. If set to non-zero, readline does not
1199: attempt to append a closing quote to a completed word.
1200:
1201: k. New application variable, rl_completion_found_quote, set to a non-zero
1202: value if readline determines that the word to be completed is quoted.
1203: Set before readline calls any application completion function.
1204:
1205: l. New function hook, rl_completion_word_break_hook, called when readline
1206: needs to break a line into words when completion is attempted. Allows
1207: the word break characters to vary based on position in the line.
1208:
1209: m. New bindable command: unix-filename-rubout. Does the same thing as
1210: unix-word-rubout, but adds `/' to the set of word delimiters.
1211:
1212: n. When listing completions, directories have a `/' appended if the
1213: `mark-directories' option has been enabled.
1214:
1215: -------------------------------------------------------------------------------
1216: This document details the changes between this version, readline-4.3,
1217: and the previous version, readline-4.2a.
1218:
1219: 1. Changes to Readline
1220:
1221: a. Fixed output of comment-begin character when listing variable values.
1222:
1223: b. Added some default key bindings for common escape sequences produced by
1224: HOME and END keys.
1225:
1226: c. Fixed the mark handling code to be more emacs-compatible.
1227:
1228: d. A bug was fixed in the code that prints possible completions to keep it
1229: from printing empty strings in certain circumstances.
1230:
1231: e. Change the key sequence printing code to print ESC as M\- if ESC is a
1232: meta-prefix character -- it's easier for users to understand than \e.
1233:
1234: f. Fixed unstifle_history() to return values that match the documentation.
1235:
1236: g. Fixed the event loop (rl_event_hook) to handle the case where the input
1237: file descriptor is invalidated.
1238:
1239: h. Fixed the prompt display code to work better when the application has a
1240: custom redisplay function.
1241:
1242: i. Changes to make reading and writing the history file a little faster, and
1243: to cope with huge history files without calling abort(3) from xmalloc.
1244:
1245: j. The vi-mode `S' and `s' commands are now undone correctly.
1246:
1247: k. Fixed a problem which caused the display to be messed up when the last
1248: line of a multi-line prompt (possibly containing invisible characters)
1249: was longer than the screen width.
1250:
1251: 2. New Features in Readline
1252:
1253: a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both
1254: be bound to readline functions. Now the arrow keys may be used in vi
1255: insert mode.
1256:
1257: b. When listing completions, and the number of lines displayed is more than
1258: the screen length, readline uses an internal pager to display the results.
1259: This is controlled by the `page-completions' variable (default on).
1260:
1261: c. New code to handle editing and displaying multibyte characters.
1262:
1263: d. The behavior introduced in bash-2.05a of deciding whether or not to
1264: append a slash to a completed name that is a symlink to a directory has
1265: been made optional, controlled by the `mark-symlinked-directories'
1266: variable (default is the 2.05a behavior).
1267:
1268: e. The `insert-comment' command now acts as a toggle if given a numeric
1269: argument: if the first characters on the line don't specify a
1270: comment, insert one; if they do, delete the comment text
1271:
1272: f. New application-settable completion variable:
1273: rl_completion_mark_symlink_dirs, allows an application's completion
1274: function to temporarily override the user's preference for appending
1275: slashes to names which are symlinks to directories.
1276:
1277: g. New function available to application completion functions:
1278: rl_completion_mode, to tell how the completion function was invoked
1279: and decide which argument to supply to rl_complete_internal (to list
1280: completions, etc.).
1281:
1282: h. Readline now has an overwrite mode, toggled by the `overwrite-mode'
1283: bindable command, which could be bound to `Insert'.
1284:
1285: i. New application-settable completion variable:
1286: rl_completion_suppress_append, inhibits appending of
1287: rl_completion_append_character to completed words.
1288:
1289: j. New key bindings when reading an incremental search string: ^W yanks
1290: the currently-matched word out of the current line into the search
1291: string; ^Y yanks the rest of the current line into the search string,
1292: DEL or ^H deletes characters from the search string.
1293:
1294: -------------------------------------------------------------------------------
1295: This document details the changes between this version, readline-4.2a,
1296: and the previous version, readline-4.2.
1297:
1298: 1. Changes to Readline
1299:
1300: a. More `const' and type casting fixes.
1301:
1302: b. Changed rl_message() to use vsnprintf(3) (if available) to fix buffer
1303: overflow problems.
1304:
1305: c. The completion code no longer appends a `/' or ` ' to a match when
1306: completing a symbolic link that resolves to a directory name, unless
1307: the match does not add anything to the word being completed. This
1308: means that a tab will complete the word up to the full name, but not
1309: add anything, and a subsequent tab will add a slash.
1310:
1311: d. Fixed a trivial typo that made the vi-mode `dT' command not work.
1312:
1313: e. Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert.
1314:
1315: f. Fixed the tty code so that ^V works more than once.
1316:
1317: g. Changed the use of __P((...)) for function prototypes to PARAMS((...))
1318: because the use of __P in typedefs conflicted g++ and glibc.
1319:
1320: h. The completion code now attempts to do a better job of preserving the
1321: case of the word the user typed if ignoring case in completions.
1322:
1323: i. Readline defaults to not echoing the input and lets the terminal
1324: initialization code enable echoing if there is a controlling terminal.
1325:
1326: j. The key binding code now processes only two hex digits after a `\x'
1327: escape sequence, and the documentation was changed to note that the
1328: octal and hex escape sequences result in an eight-bit value rather
1329: than strict ASCII.
1330:
1331: k. Fixed a few places where negative array subscripts could have occurred.
1332:
1333: l. Fixed the vi-mode code to use a better method to determine the bounds of
1334: the array used to hold the marks, and to avoid out-of-bounds references.
1335:
1336: m. Fixed the defines in chardefs.h to work better when chars are signed.
1337:
1338: n. Fixed configure.in to use the new names for bash autoconf macros.
1339:
1340: o. Readline no longer attempts to define its own versions of some ctype
1341: macros if they are implemented as functions in libc but not as macros in
1342: <ctype.h>.
1343:
1344: p. Fixed a problem where rl_backward could possibly set point to before
1345: the beginning of the line.
1346:
1347: q. Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause
1348: include file problems.
1349:
1350: 2. New Features in Readline
1351:
1352: a. Added extern declaration for rl_get_termcap to readline.h, making it a
1353: public function (it was always there, just not in readline.h).
1354:
1355: b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402,
1356: RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
1357:
1358: c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION.
1359:
1360: d. New bindable boolean readline variable: match-hidden-files. Controls
1361: completion of files beginning with a `.' (on Unix). Enabled by default.
1362:
1363: e. The history expansion code now allows any character to terminate a
1364: `:first-' modifier, like csh.
1365:
1366: f. The incremental search code remembers the last search string and uses
1367: it if ^R^R is typed without a search string.
1368:
1369: h. New bindable variable `history-preserve-point'. If set, the history
1370: code attempts to place the user at the same location on each history
1371: line retrived with previous-history or next-history.
1372:
1373: -------------------------------------------------------------------------------
1374: This document details the changes between this version, readline-4.2,
1375: and the previous version, readline-4.1.
1376:
1377: 1. Changes to Readline
1378:
1379: a. When setting the terminal attributes on systems using `struct termio',
1380: readline waits for output to drain before changing the attributes.
1381:
1382: b. A fix was made to the history word tokenization code to avoid attempts to
1383: dereference a null pointer.
1384:
1385: c. Readline now defaults rl_terminal_name to $TERM if the calling application
1386: has left it unset, and tries to initialize with the resultant value.
1387:
1388: d. Instead of calling (*rl_getc_function)() directly to get input in certain
1389: places, readline now calls rl_read_key() consistently.
1390:
1391: e. Fixed a bug in the completion code that allowed a backslash to quote a
1392: single quote inside a single-quoted string.
1393:
1394: f. rl_prompt is no longer assigned directly from the argument to readline(),
1395: but uses memory allocated by readline. This allows constant strings to
1396: be passed to readline without problems arising when the prompt processing
1397: code wants to modify the string.
1398:
1399: g. Fixed a bug that caused non-interactive history searches to return the
1400: wrong line when performing multiple searches backward for the same string.
1401:
1402: h. Many variables, function arguments, and function return values are now
1403: declared `const' where appropriate, to improve behavior when linking with
1404: C++ code.
1405:
1406: i. The control character detection code now works better on systems where
1407: `char' is unsigned by default.
1408:
1409: j. The vi-mode numeric argument is now capped at 999999, just like emacs mode.
1410:
1411: k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been
1412: replaced with a set of specific prototyped typedefs, though they are
1413: still in the readline header files for backwards compatibility.
1414:
1415: m. Nearly all of the (undocumented) internal global variables in the library
1416: now have an _rl_ prefix -- there were a number that did not, like
1417: screenheight, screenwidth, alphabetic, etc.
1418:
1419: n. The ding() convenience function has been renamed to rl_ding(), though the
1420: old function is still defined for backwards compatibility.
1421:
1422: o. The completion convenience functions filename_completion_function,
1423: username_completion_function, and completion_matches now have an rl_
1424: prefix, though the old names are still defined for backwards compatibility.
1425:
1426: p. The functions shared by readline and bash (linkage is satisfied from bash
1427: when compiling with bash, and internally otherwise) now have an sh_ prefix.
1428:
1429: q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so
1430: that the `soname' contains only the major version number rather than the
1431: major and minor numbers.
1432:
1433: r. Fixed a redisplay bug that occurred when the prompt spanned more than one
1434: physical line and contained invisible characters.
1435:
1436: s. Added a missing `includedir' variable to the Makefile.
1437:
1438: t. When installing the shared libraries, make sure symbolic links are relative.
1439:
1440: u. Added configure test so that it can set `${MAKE}' appropriately.
1441:
1442: v. Fixed a bug in rl_forward that could cause the point to be set to before
1443: the beginning of the line in vi mode.
1444:
1445: w. Fixed a bug in the callback read-char interface to make it work when a
1446: readline function pushes some input onto the input stream with
1447: rl_execute_next (like the incremental search functions).
1448:
1449: x. Fixed a file descriptor leak in the history file manipulation code that
1450: was tripped when attempting to truncate a non-regular file (like
1451: /dev/null).
1452:
1453: y. Changes to make all of the exported readline functions declared in
1454: readline.h have an rl_ prefix (rltty_set_default_bindings is now
1455: rl_tty_set_default_bindings, crlf is now rl_crlf, etc.)
1456:
1457: z. The formatted documentation included in the base readline distribution
1458: is no longer removed on a `make distclean'.
1459:
1460: aa. Some changes were made to avoid gcc warnings with -Wall.
1461:
1462: bb. rl_get_keymap_by_name now finds keymaps case-insensitively, so
1463: `set keymap EMACS' works.
1464:
1465: cc. The history file writing and truncation functions now return a useful
1466: status on error.
1467:
1468: dd. Fixed a bug that could cause applications to dereference a NULL pointer
1469: if a NULL second argument was passed to history_expand().
1470:
1471: ee. If a hook function assigned to rl_event_hook sets rl_done to a non-zero
1472: value, rl_read_key() now immediately returns '\n' (which is assumed to
1473: be bound to accept-line).
1474:
1475: 2. New Features in Readline
1476:
1477: a. The blink timeout for paren matching is now settable by applications,
1478: via the rl_set_paren_blink_timeout() function.
1479:
1480: b. _rl_executing_macro has been renamed to rl_executing_macro, which means
1481: it's now part of the public interface.
1482:
1483: c. Readline has a new variable, rl_readline_state, which is a bitmap that
1484: encapsulates the current state of the library; intended for use by
1485: callbacks and hook functions.
1486:
1487: d. rlfe has a new -l option to log input and output (-a appends to logfile),
1488: a new -n option to set the readline application name, and -v and -h
1489: options for version and help information.
1490:
1491: e. rlfe can now perform filename completion for the inferior process if the
1492: OS has a /proc/<PID>/cwd that can be read with readlink(2) to get the
1493: inferior's current working directory.
1494:
1495: f. A new file, rltypedefs.h, contains the new typedefs for function pointers
1496: and is installed by `make install'.
1497:
1498: g. New application-callable function rl_set_prompt(const char *prompt):
1499: expands its prompt string argument and sets rl_prompt to the result.
1500:
1501: h. New application-callable function rl_set_screen_size(int rows, int cols):
1502: public method for applications to set readline's idea of the screen
1503: dimensions.
1504:
1505: i. The history example program (examples/histexamp.c) is now built as one
1506: of the examples.
1507:
1508: j. The documentation has been updated to cover nearly all of the public
1509: functions and variables declared in readline.h.
1510:
1511: k. New function, rl_get_screen_size (int *rows, int *columns), returns
1512: readline's idea of the screen dimensions.
1513:
1514: l. The timeout in rl_gather_tyi (readline keyboard input polling function)
1515: is now settable via a function (rl_set_keyboard_input_timeout()).
1516:
1517: m. Renamed the max_input_history variable to history_max_entries; the old
1518: variable is maintained for backwards compatibility.
1519:
1520: n. The list of characters that separate words for the history tokenizer is
1521: now settable with a variable: history_word_delimiters. The default
1522: value is as before.
1523:
1524: o. There is a new history.3 manual page documenting the history library.
1525:
1526: -------------------------------------------------------------------------------
1527: This document details the changes between this version, readline-4.1,
1528: and the previous version, readline-4.0.
1529:
1530: 1. Changes to Readline
1531:
1532: a. Changed the HTML documents so that the table-of-contents is no longer
1533: a separate file.
1534:
1535: b. Changes to the shared object configuration for: Irix 5.x, Irix 6.x,
1536: OSF/1.
1537:
1538: c. The shared library major and minor versions are now constructed
1539: automatically by configure and substituted into the makefiles.
1540:
1541: d. It's now possible to install the shared libraries separately from the
1542: static libraries.
1543:
1544: e. The history library tries to truncate the history file only if it is a
1545: regular file.
1546:
1547: f. A bug that caused _rl_dispatch to address negative array indices on
1548: systems with signed chars was fixed.
1549:
1550: g. rl-yank-nth-arg now leaves the history position the same as when it was
1551: called.
1552:
1553: h. Changes to the completion code to handle MS-DOS drive-letter:pathname
1554: filenames.
1555:
1556: i. Completion is now case-insensitive by default on MS-DOS.
1557:
1558: j. Fixes to the history file manipulation code for MS-DOS.
1559:
1560: k. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
1561:
1562: l. Some fixes were made to the redisplay code for better operation on MS-DOS.
1563:
1564: m. The quoted-insert code will now insert tty special chars like ^C.
1565:
1566: n. A bug was fixed that caused the display code to reference memory before
1567: the start of the prompt string.
1568:
1569: o. More support for __EMX__ (OS/2).
1570:
1571: p. A bug was fixed in readline's signal handling that could cause infinite
1572: recursion in signal handlers.
1573:
1574: q. A bug was fixed that caused the point to be less than zero when rl_forward
1575: was given a very large numeric argument.
1576:
1577: r. The vi-mode code now gets characters via the application-settable value
1578: of rl_getc_function rather than calling rl_getc directly.
1579:
1580: s. The history file code now uses O_BINARY mode when reading and writing
1581: the history file on cygwin32.
1582:
1583: t. Fixed a bug in the redisplay code for lines with more than 256 line
1584: breaks.
1585:
1586: u. A bug was fixed which caused invisible character markers to not be
1587: stripped from the prompt string if the terminal was in no-echo mode.
1588:
1589: v. Readline no longer tries to get the variables it needs for redisplay
1590: from the termcap entry if the calling application has specified its
1591: own redisplay function. Readline treats the terminal as `dumb' in
1592: this case.
1593:
1594: w. Fixes to the SIGWINCH code so that a multiple-line prompt with escape
1595: sequences is redrawn correctly.
1596:
1597: x. Changes to the install and install-shared targets so that the libraries
1598: and header files are installed separately.
1599:
1600: 2. New Features in Readline
1601:
1602: a. A new Readline `user manual' is in doc/rluserman.texinfo.
1603:
1604: b. Parentheses matching is now always compiled into readline, and enabled
1605: or disabled when the value of the `blink-matching-paren' variable is
1606: changed.
1607:
1608: c. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
1609:
1610: d. MS-DOS systems now use ~/_history as the default history file.
1611:
1612: e. history-search-{forward,backward} now leave the point at the end of the
1613: line when the string to search for is empty, like
1614: {reverse,forward}-search-history.
1615:
1616: f. history-search-{forward,backward} now leave the last history line found
1617: in the readline buffer if the second or subsequent search fails.
1618:
1619: g. New function for use by applications: rl_on_new_line_with_prompt, used
1620: when an application displays the prompt itself before calling readline().
1621:
1622: h. New variable for use by applications: rl_already_prompted. An application
1623: that displays the prompt itself before calling readline() must set this to
1624: a non-zero value.
1625:
1626: i. A new variable, rl_gnu_readline_p, always 1. The intent is that an
1627: application can verify whether or not it is linked with the `real'
1628: readline library or some substitute.
1629:
1630: j. Per Bothner's `rlfe' (pronounced `Ralphie') readline front-end program
1631: is included in the examples subdirectory, though it is not built
1632: by default.
1633:
1634: -------------------------------------------------------------------------------
1635: This document details the changes between this version, readline-4.0,
1636: and the previous version, readline-2.2.
1637:
1638: 1. Changes to Readline
1639:
1640: a. The version number is now 4.0, to match the major and minor version
1641: numbers on the shared readline and history libraries. Future
1642: releases will maintain the identical numbering.
1643:
1644: b. Fixed a typo in the `make install' recipe that copied libreadline.a
1645: to libhistory.old right after installing it.
1646:
1647: c. The readline and history info files are now installed out of the source
1648: directory if they are not found in the build directory.
1649:
1650: d. The library no longer exports a function named `savestring' -- backwards
1651: compatibility be damned.
1652:
1653: e. There is no longer any #ifdef SHELL code in the source files.
1654:
1655: f. Some changes were made to the key binding code to fix memory leaks and
1656: better support Win32 systems.
1657:
1658: g. Fixed a silly typo in the paren matching code -- it's microseconds, not
1659: milliseconds.
1660:
1661: h. The readline library should be compilable by C++ compilers.
1662:
1663: i. The readline.h public header file now includes function prototypes for
1664: all readline functions, and some changes were made to fix errors in the
1665: source files uncovered by the use of prototypes.
1666:
1667: j. The maximum numeric argument is now clamped at 1000000.
1668:
1669: k. Fixes to rl_yank_last_arg to make it behave better.
1670:
1671: l. Fixed a bug in the display code that caused core dumps if the prompt
1672: string length exceeded 1024 characters.
1673:
1674: m. The menu completion code was fixed to properly insert a single completion
1675: if there is only one match.
1676:
1677: n. A bug was fixed that caused the display code to improperly display tabs
1678: after newlines.
1679:
1680: o. A fix was made to the completion code in which a typo caused the wrong
1681: value to be passed to the function that computed the longest common
1682: prefix of the list of matches.
1683:
1684: p. The completion code now checks the value of rl_filename_completion_desired,
1685: which is set by application-supplied completion functions to indicate
1686: that filename completion is being performed, to decide whether or not to
1687: call an application-supplied `ignore completions' function.
1688:
1689: q. Code was added to the history library to catch history substitutions
1690: using `&' without a previous history substitution or search having been
1691: performed.
1692:
1693:
1694: 2. New Features in Readline
1695:
1696: a. There is a new script, support/shobj-conf, to do system-specific shared
1697: object and library configuration. It generates variables for configure
1698: to substitute into makefiles. The README file provides a detailed
1699: explanation of the shared library creation process.
1700:
1701: b. Shared libraries and objects are now built in the `shlib' subdirectory.
1702: There is a shlib/Makefile.in to control the build process. `make shared'
1703: from the top-level directory is still the right way to build shared
1704: versions of the libraries.
1705:
1706: c. rlconf.h is now installed, so applications can find out which features
1707: have been compiled into the installed readline and history libraries.
1708:
1709: d. rlstdc.h is now an installed header file.
1710:
1711: e. Many changes to the signal handling:
1712: o Readline now catches SIGQUIT and cleans up the tty before returning;
1713: o A new variable, rl_catch_signals, is available to application writers
1714: to indicate to readline whether or not it should install its own
1715: signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
1716: SIGTTIN, and SIGTTOU;
1717: o A new variable, rl_catch_sigwinch, is available to application
1718: writers to indicate to readline whether or not it should install its
1719: own signal handler for SIGWINCH, which will chain to the calling
1720: applications's SIGWINCH handler, if one is installed;
1721: o There is a new function, rl_free_line_state, for application signal
1722: handlers to call to free up the state associated with the current
1723: line after receiving a signal;
1724: o There is a new function, rl_cleanup_after_signal, to clean up the
1725: display and terminal state after receiving a signal;
1726: o There is a new function, rl_reset_after_signal, to reinitialize the
1727: terminal and display state after an application signal handler
1728: returns and readline continues
1729:
1730: f. There is a new function, rl_resize_terminal, to reset readline's idea of
1731: the screen size after a SIGWINCH.
1732:
1733: g. New public functions: rl_save_prompt and rl_restore_prompt. These were
1734: previously private functions with a `_' prefix. These functions are
1735: used when an application wants to write a message to the `message area'
1736: with rl_message and have the prompt restored correctly when the message
1737: is erased.
1738:
1739: h. New function hook: rl_pre_input_hook, called just before readline starts
1740: reading input, after initialization.
1741:
1742: i. New function hook: rl_display_matches_hook, called when readline would
1743: display the list of completion matches. The new function
1744: rl_display_match_list is what readline uses internally, and is available
1745: for use by application functions called via this hook.
1746:
1747: j. New bindable function, delete-char-or-list, like tcsh.
1748:
1749: k. A new variable, rl_erase_empty_line, which, if set by an application using
1750: readline, will cause readline to erase, prompt and all, lines on which the
1751: only thing typed was a newline.
1752:
1753: l. There is a new script, support/shlib-install, to install and uninstall
1754: the shared readline and history libraries.
1755:
1756: m. A new bindable variable, `isearch-terminators', which is a string
1757: containing the set of characters that should terminate an incremental
1758: search without being executed as a command.
1759:
1760: n. A new bindable function, forward-backward-delete-char.
1761:
1762: -------------------------------------------------------------------------------
1763: This document details the changes between this version, readline-2.2,
1764: and the previous version, readline-2.1.
1765:
1766: 1. Changes to Readline
1767:
1768: a. Added a missing `extern' to a declaration in readline.h that kept
1769: readline from compiling cleanly on some systems.
1770:
1771: b. The history file is now opened with mode 0600 when it is written for
1772: better security.
1773:
1774: c. Changes were made to the SIGWINCH handling code so that prompt redisplay
1775: is done better.
1776:
1777: d. ^G now interrupts incremental searches correctly.
1778:
1779: e. A bug that caused a core dump when the set of characters to be quoted
1780: when completing words was empty was fixed.
1781:
1782: f. Fixed a problem in the readline test program rltest.c that caused a core
1783: dump.
1784:
1785: g. The code that handles parser directives in inputrc files now displays
1786: more error messages.
1787:
1788: h. The history expansion code was fixed so that the appearance of the
1789: history comment character at the beginning of a word inhibits history
1790: expansion for that word and the rest of the input line.
1791:
1792: i. The code that prints completion listings now behaves better if one or
1793: more of the filenames contains non-printable characters.
1794:
1795: j. The time delay when showing matching parentheses is now 0.5 seconds.
1796:
1797:
1798: 2. New Features in Readline
1799:
1800: a. There is now an option for `iterative' yank-last-arg handline, so a user
1801: can keep entering `M-.', yanking the last argument of successive history
1802: lines.
1803:
1804: b. New variable, `print-completions-horizontally', which causes completion
1805: matches to be displayed across the screen (like `ls -x') rather than up
1806: and down the screen (like `ls').
1807:
1808: c. New variable, `completion-ignore-case', which causes filename completion
1809: and matching to be performed case-insensitively.
1810:
1811: d. There is a new bindable command, `magic-space', which causes history
1812: expansion to be performed on the current readline buffer and a space to
1813: be inserted into the result.
1814:
1815: e. There is a new bindable command, `menu-complete', which enables tcsh-like
1816: menu completion (successive executions of menu-complete insert a single
1817: completion match, cycling through the list of possible completions).
1818:
1819: f. There is a new bindable command, `paste-from-clipboard', for use on Win32
1820: systems, to insert the text from the Win32 clipboard into the editing
1821: buffer.
1822:
1823: g. The key sequence translation code now understands printf-style backslash
1824: escape sequences, including \NNN octal escapes. These escape sequences
1825: may be used in key sequence definitions or macro values.
1826:
1827: h. An `$include' inputrc file parser directive has been added.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>