vim: Better jump list support (#33495)
Closes #23527 Closes #30183 Closes some Discord chats Release Notes: - vim: Motions now push to the jump list using the same logic as vim (i.e. `G`/`g g`/`g d` always do, but `j`/`k` always don't). Most non-vim actions (including clicking with the mouse) continue to push to the jump list only when they move the cursor by 10 or more lines.
This commit is contained in:
parent
ba1c05abf2
commit
20a3e613b8
5 changed files with 147 additions and 19 deletions
|
@ -768,6 +768,73 @@ impl Motion {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn push_to_jump_list(&self) -> bool {
|
||||
use Motion::*;
|
||||
match self {
|
||||
CurrentLine
|
||||
| Down { .. }
|
||||
| EndOfLine { .. }
|
||||
| EndOfLineDownward
|
||||
| FindBackward { .. }
|
||||
| FindForward { .. }
|
||||
| FirstNonWhitespace { .. }
|
||||
| GoToColumn
|
||||
| Left
|
||||
| MiddleOfLine { .. }
|
||||
| NextLineStart
|
||||
| NextSubwordEnd { .. }
|
||||
| NextSubwordStart { .. }
|
||||
| NextWordEnd { .. }
|
||||
| NextWordStart { .. }
|
||||
| PreviousLineStart
|
||||
| PreviousSubwordEnd { .. }
|
||||
| PreviousSubwordStart { .. }
|
||||
| PreviousWordEnd { .. }
|
||||
| PreviousWordStart { .. }
|
||||
| RepeatFind { .. }
|
||||
| RepeatFindReversed { .. }
|
||||
| Right
|
||||
| StartOfLine { .. }
|
||||
| StartOfLineDownward
|
||||
| Up { .. }
|
||||
| WrappingLeft
|
||||
| WrappingRight => false,
|
||||
EndOfDocument
|
||||
| EndOfParagraph
|
||||
| GoToPercentage
|
||||
| Jump { .. }
|
||||
| Matching
|
||||
| NextComment
|
||||
| NextGreaterIndent
|
||||
| NextLesserIndent
|
||||
| NextMethodEnd
|
||||
| NextMethodStart
|
||||
| NextSameIndent
|
||||
| NextSectionEnd
|
||||
| NextSectionStart
|
||||
| PreviousComment
|
||||
| PreviousGreaterIndent
|
||||
| PreviousLesserIndent
|
||||
| PreviousMethodEnd
|
||||
| PreviousMethodStart
|
||||
| PreviousSameIndent
|
||||
| PreviousSectionEnd
|
||||
| PreviousSectionStart
|
||||
| SentenceBackward
|
||||
| SentenceForward
|
||||
| Sneak { .. }
|
||||
| SneakBackward { .. }
|
||||
| StartOfDocument
|
||||
| StartOfParagraph
|
||||
| UnmatchedBackward { .. }
|
||||
| UnmatchedForward { .. }
|
||||
| WindowBottom
|
||||
| WindowMiddle
|
||||
| WindowTop
|
||||
| ZedSearchResult { .. } => true,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn infallible(&self) -> bool {
|
||||
use Motion::*;
|
||||
match self {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue