Support menu-complete-backward command for upward navigation#677
Merged
ima1zumi merged 1 commit intoruby:masterfrom Apr 14, 2024
Merged
Conversation
ima1zumi
reviewed
Apr 13, 2024
Member
ima1zumi
left a comment
There was a problem hiding this comment.
The changes generally look good. 👍
Could you add @completion_occurs = false to reset_variables?
Fixes ruby#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 ruby#675 which encouraged me to contribute this work!
daa9853 to
28b5629
Compare
Contributor
Author
👏🏻
Done, thanks! |
matzbot
pushed a commit
to ruby/ruby
that referenced
this pull request
Apr 14, 2024
navigation (ruby/reline#677) Fixes ruby/reline#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! ruby/reline@2ccdb374a4
tenderlove
added a commit
to tenderlove/ruby
that referenced
this pull request
Apr 15, 2024
* master: (29 commits) Not all `nm`s support the `--help` option Emit a performance warning when redefining specially optimized methods YJIT: A64: Avoid intermediate register in `opt_and` and friends (ruby#10509) [ruby/reline] Remove not implemented method (ruby/reline#680) [ruby/reline] Fix vi_to_column which was broken (ruby/reline#679) Include more debug information in test_uplus_minus [Universal parser] DeVALUE of p->debug_lines and ast->body.script_lines Add more assertions in `test_uplus_minus` `super{}` doesn't use block fix incorrect warning. Update default gems list at fc36394 [ci skip] [ruby/optparse] bump up to 0.5.0 show warning for unused block Emit `warn` event for duplicated hash keys on ripper [ruby/reline] Refactored Default Key Bindings (ruby/reline#678) [ruby/reline] Refactor waiting_proc and waiting_operator_proc (ruby/reline#649) [pty] Fix missing `or` [pty] Fix `ptsname_r` fallback [ruby/irb] Allow defining custom commands in IRB (ruby/irb#886) [ruby/reline] Support `menu-complete-backward` command for upward navigation (ruby/reline#677) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #675
This commit extracts the upward navigation condition in
LineEditor#input_keyto a new private method, and adds a new alias. This change allows Reline to support upward navigation in when a user has configuredinputrcto map Shift-Tab tomenu-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 callsprocess_key. The extracted method no longer includes the editing mode check since this check is already made by#wrap_method_callby the time#completion_journey_up(or#menu_complete_backward) is called. Since upward navigation is happening in a method other than#input_keynow, thecompletion_occursvariable that used to be local to#input_keyis changed to an instance variable so that the new method can change its value. (I see many examples of mutating such instance variables inLineEditor, 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
KeyActortests. (They are a bit wordy, so I could try to DRY them up if it matters to y'all.)Many thanks to @ima1zumi for their very helpful comments on #675 which encouraged me to contribute this work!