Highlight history searches correctly#9066
Merged
Merged
Conversation
krobelus
reviewed
Jul 12, 2022
| const wcstring &search_string() const { return search_.original_term(); } | ||
|
|
||
| /// \return the range of the original search string in the new command line. | ||
| maybe_t<std::pair<size_t, size_t>> search_range_if_active() const { |
Contributor
There was a problem hiding this comment.
Excellent fix and changes, thanks!
I just have one minor quibble: instead of std::pair we should use source_range_t.
(Else if we really wanted std::pair, we should include <utility> for include-what-you-use-correctness).
Contributor
Author
There was a problem hiding this comment.
Of course. I have switched to source_range_t instead.
Previously, the search text is used to find out which part of the updated command line should be highlighted during a history search. This approach will cause the incorrect part to be highlighted when the line contains multiple instances of the search text. To address this, we have to find out exactly where to highlight, i.e. the offset of the current token in the command line (0 if not a token search) plus the offset of the search text in the match.
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Description
Previously, the search text is used to find out which part of the updated command line should be highlighted during a history search. This approach will cause the incorrect part to be highlighted when the line contains multiple instances of the search text.
For example, if we execute:
echo hohohoAnd type this in the command line:
echo hoThen do a token search on
ho, we get an unexpected highlight:That is, the
hoinechois highlighted instead ofhothat is the current token.To address this, we have to find out exactly where to highlight, i.e. the offset of the current token in the command line (0 if not a token search) plus the offset of the search text in the match.
TODOs: