vim: Add motion support for toggle comments (#14919)

### Summary

This PR adds support for count and object motions to the toggle comments
action in Vim mode. The relevant issue is
[#14337](https://github.com/zed-industries/zed/issues/14337).

For example, `2 g c j` will toggle comments three lines downward. `g c g
g` will toggle comments from the current cursor position up to the start
of the file.

Notably missing from this PR are `g c b` (toggle comments for the
current block) as well as `g c p` (toggle comments for the current
paragraph). These seem to be non-standard.

The new module `normal/toggle_comments.rs` has been copied almost
verbatim from `normal/indent.rs`. Maybe that ought to be abstracted over
but I feel I lack the overview.

Release Notes:

- vim: Added support for count and object motion to the toggle comments
action ([#14337](https://github.com/zed-industries/zed/issues/14337)).
This commit is contained in:
Benjamin Westphal 2024-07-23 05:22:10 +02:00 committed by GitHub
parent eb210ca248
commit 1fae99a7c4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 96 additions and 2 deletions

View file

@ -71,6 +71,7 @@ pub enum Operator {
Register,
RecordRegister,
ReplayRegister,
ToggleComments,
}
#[derive(Default, Clone)]
@ -326,6 +327,7 @@ impl Operator {
Operator::Register => "\"",
Operator::RecordRegister => "q",
Operator::ReplayRegister => "@",
Operator::ToggleComments => "gc",
}
}
@ -351,7 +353,8 @@ impl Operator {
| Operator::Uppercase
| Operator::Object { .. }
| Operator::ChangeSurrounds { target: None }
| Operator::OppositeCase => false,
| Operator::OppositeCase
| Operator::ToggleComments => false,
}
}
}