Fix . repeat for remapping surrounds/exchange actions (#26101)
Closes #ISSUE cc @thomasheartman Release Notes: - vim: Fixes `.` repeat for remapped surrounds/exchange actions
This commit is contained in:
parent
47f8f891c8
commit
ec4719146a
2 changed files with 40 additions and 19 deletions
|
@ -561,4 +561,41 @@ impl Operator {
|
|||
| Operator::ToggleComments => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn starts_dot_recording(&self) -> bool {
|
||||
match self {
|
||||
Operator::Change
|
||||
| Operator::Delete
|
||||
| Operator::Replace
|
||||
| Operator::Indent
|
||||
| Operator::Outdent
|
||||
| Operator::AutoIndent
|
||||
| Operator::Lowercase
|
||||
| Operator::Uppercase
|
||||
| Operator::OppositeCase
|
||||
| Operator::ToggleComments
|
||||
| Operator::ReplaceWithRegister
|
||||
| Operator::Rewrap
|
||||
| Operator::ShellCommand
|
||||
| Operator::AddSurrounds { target: None }
|
||||
| Operator::ChangeSurrounds { target: None }
|
||||
| Operator::DeleteSurrounds
|
||||
| Operator::Exchange => true,
|
||||
Operator::Yank
|
||||
| Operator::Object { .. }
|
||||
| Operator::FindForward { .. }
|
||||
| Operator::FindBackward { .. }
|
||||
| Operator::Sneak { .. }
|
||||
| Operator::SneakBackward { .. }
|
||||
| Operator::Mark
|
||||
| Operator::Digraph { .. }
|
||||
| Operator::Literal { .. }
|
||||
| Operator::AddSurrounds { .. }
|
||||
| Operator::ChangeSurrounds { .. }
|
||||
| Operator::Jump { .. }
|
||||
| Operator::Register
|
||||
| Operator::RecordRegister
|
||||
| Operator::ReplayRegister => false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -827,22 +827,9 @@ impl Vim {
|
|||
}
|
||||
|
||||
fn push_operator(&mut self, operator: Operator, window: &mut Window, cx: &mut Context<Self>) {
|
||||
if matches!(
|
||||
operator,
|
||||
Operator::Change
|
||||
| Operator::Delete
|
||||
| Operator::Replace
|
||||
| Operator::Indent
|
||||
| Operator::Outdent
|
||||
| Operator::AutoIndent
|
||||
| Operator::Lowercase
|
||||
| Operator::Uppercase
|
||||
| Operator::OppositeCase
|
||||
| Operator::ToggleComments
|
||||
| Operator::ReplaceWithRegister
|
||||
) {
|
||||
self.start_recording(cx)
|
||||
};
|
||||
if operator.starts_dot_recording() {
|
||||
self.start_recording(cx);
|
||||
}
|
||||
// Since these operations can only be entered with pre-operators,
|
||||
// we need to clear the previous operators when pushing,
|
||||
// so that the current stack is the most correct
|
||||
|
@ -853,9 +840,6 @@ impl Vim {
|
|||
| Operator::DeleteSurrounds
|
||||
) {
|
||||
self.operator_stack.clear();
|
||||
if let Operator::AddSurrounds { target: None } = operator {
|
||||
self.start_recording(cx);
|
||||
}
|
||||
};
|
||||
self.operator_stack.push(operator);
|
||||
self.sync_vim_settings(window, cx);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue