mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 17:36:19 +04:00
Add reverse_selection_contents (#7329)
This commit is contained in:
parent
37fcd160db
commit
015c079acc
@ -406,6 +406,7 @@ pub fn doc(&self) -> &str {
|
|||||||
rotate_selections_backward, "Rotate selections backward",
|
rotate_selections_backward, "Rotate selections backward",
|
||||||
rotate_selection_contents_forward, "Rotate selection contents forward",
|
rotate_selection_contents_forward, "Rotate selection contents forward",
|
||||||
rotate_selection_contents_backward, "Rotate selections contents backward",
|
rotate_selection_contents_backward, "Rotate selections contents backward",
|
||||||
|
reverse_selection_contents, "Reverse selections contents",
|
||||||
expand_selection, "Expand selection to parent syntax node",
|
expand_selection, "Expand selection to parent syntax node",
|
||||||
shrink_selection, "Shrink selection to previously expanded syntax node",
|
shrink_selection, "Shrink selection to previously expanded syntax node",
|
||||||
select_next_sibling, "Select next sibling in syntax tree",
|
select_next_sibling, "Select next sibling in syntax tree",
|
||||||
@ -4482,7 +4483,13 @@ fn rotate_selections_backward(cx: &mut Context) {
|
|||||||
rotate_selections(cx, Direction::Backward)
|
rotate_selections(cx, Direction::Backward)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rotate_selection_contents(cx: &mut Context, direction: Direction) {
|
enum ReorderStrategy {
|
||||||
|
RotateForward,
|
||||||
|
RotateBackward,
|
||||||
|
Reverse,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn reorder_selection_contents(cx: &mut Context, strategy: ReorderStrategy) {
|
||||||
let count = cx.count;
|
let count = cx.count;
|
||||||
let (view, doc) = current!(cx.editor);
|
let (view, doc) = current!(cx.editor);
|
||||||
let text = doc.text().slice(..);
|
let text = doc.text().slice(..);
|
||||||
@ -4500,9 +4507,10 @@ fn rotate_selection_contents(cx: &mut Context, direction: Direction) {
|
|||||||
|
|
||||||
for chunk in fragments.chunks_mut(group) {
|
for chunk in fragments.chunks_mut(group) {
|
||||||
// TODO: also modify main index
|
// TODO: also modify main index
|
||||||
match direction {
|
match strategy {
|
||||||
Direction::Forward => chunk.rotate_right(1),
|
ReorderStrategy::RotateForward => chunk.rotate_right(1),
|
||||||
Direction::Backward => chunk.rotate_left(1),
|
ReorderStrategy::RotateBackward => chunk.rotate_left(1),
|
||||||
|
ReorderStrategy::Reverse => chunk.reverse(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4519,10 +4527,13 @@ fn rotate_selection_contents(cx: &mut Context, direction: Direction) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn rotate_selection_contents_forward(cx: &mut Context) {
|
fn rotate_selection_contents_forward(cx: &mut Context) {
|
||||||
rotate_selection_contents(cx, Direction::Forward)
|
reorder_selection_contents(cx, ReorderStrategy::RotateForward)
|
||||||
}
|
}
|
||||||
fn rotate_selection_contents_backward(cx: &mut Context) {
|
fn rotate_selection_contents_backward(cx: &mut Context) {
|
||||||
rotate_selection_contents(cx, Direction::Backward)
|
reorder_selection_contents(cx, ReorderStrategy::RotateBackward)
|
||||||
|
}
|
||||||
|
fn reverse_selection_contents(cx: &mut Context) {
|
||||||
|
reorder_selection_contents(cx, ReorderStrategy::Reverse)
|
||||||
}
|
}
|
||||||
|
|
||||||
// tree sitter node selection
|
// tree sitter node selection
|
||||||
|
Loading…
Reference in New Issue
Block a user