diff options
author | Michael J. Giarlo <[email protected]> | 2024-04-14 02:13:06 -0700 |
---|---|---|
committer | git <[email protected]> | 2024-04-14 09:13:20 +0000 |
commit | 76b10f2ee1bbc962f2b7f178b7dddb30985d56f7 (patch) | |
tree | 1322c14c15bf6b33e16e92e9abdd2ac5bdeb58c1 /lib/irb/command/edit.rb | |
parent | 38b8bdb8eac2c0dc6a149ef9d13c02ef788ad5ef (diff) |
[ruby/reline] Support `menu-complete-backward` command for upward
navigation
(https://github.com/ruby/reline/pull/677)
Fixes https://github.com/ruby/reline/pull/675
This commit extracts the upward navigation condition in `LineEditor#input_key` to a new private method, and adds a new alias. This change allows Reline to support upward navigation in when a user has configured `inputrc` to map Shift-Tab to `menu-complete-backward`, a common setting in Bash (>= 4.x).
Instead of special-casing upward navigation in `LineEditor#input_key`, we now allow it to be processed by the branch that calls `process_key`. The extracted method no longer includes the editing mode check since this check is already made by `#wrap_method_call` by the time `#completion_journey_up` (or `#menu_complete_backward`) is called. Since upward navigation is happening in a method other than `#input_key` now, the `completion_occurs` variable that used to be local to `#input_key` is changed to an instance variable so that the new method can change its value. (I see many examples of mutating such instance variables in `LineEditor`, so I assumed this would be an uncontroversial change consistent with the coding practices already in place.)
Test coverage of this change has been added to the emacs and vi `KeyActor` tests.
Many thanks to @ima1zumi for their very helpful comments on #675 which encouraged me to contribute this work!
https://github.com/ruby/reline/commit/2ccdb374a4
Diffstat (limited to 'lib/irb/command/edit.rb')
0 files changed, 0 insertions, 0 deletions