summaryrefslogtreecommitdiffstats
path: root/src/git_interactive.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git_interactive.rs')
-rw-r--r--src/git_interactive.rs59
1 files changed, 8 insertions, 51 deletions
diff --git a/src/git_interactive.rs b/src/git_interactive.rs
index 54b2acb..d440fe0 100644
--- a/src/git_interactive.rs
+++ b/src/git_interactive.rs
@@ -75,6 +75,10 @@ impl GitInteractive {
self.selected_line_index = selected_line_index;
}
+ pub(crate) fn set_visual_index(&mut self, visual_index: usize) {
+ self.visual_index_start = Some(visual_index);
+ }
+
pub(crate) fn start_visual_mode(&mut self) {
self.visual_index_start = Some(self.selected_line_index);
}
@@ -83,55 +87,8 @@ impl GitInteractive {
self.visual_index_start = None;
}
- pub(crate) fn swap_range_up(&mut self) {
- let end_index = self.visual_index_start.unwrap_or(self.selected_line_index);
- let start_index = self.selected_line_index;
-
- if end_index == 1 || start_index == 1 {
- return;
- }
-
- let range = if end_index <= start_index {
- end_index..=start_index
- }
- else {
- start_index..=end_index
- };
-
- for index in range {
- self.lines.swap(index - 1, index - 2);
- }
-
- if let Some(visual_index_start) = self.visual_index_start {
- self.visual_index_start = Some(visual_index_start - 1);
- }
- self.selected_line_index -= 1;
- }
-
- pub(crate) fn swap_range_down(&mut self) {
- let end_index = self.visual_index_start.unwrap_or(self.selected_line_index);
- let start_index = self.selected_line_index;
-
- if end_index == self.lines.len() || start_index == self.lines.len() {
- return;
- }
-
- let range = if end_index <= start_index {
- end_index..=start_index
- }
- else {
- start_index..=end_index
- };
-
- for index in range.rev() {
- self.lines.swap(index - 1, index);
- }
-
- if let Some(visual_index_start) = self.visual_index_start {
- self.visual_index_start = Some(visual_index_start + 1);
- }
-
- self.selected_line_index += 1;
+ pub(crate) fn swap_lines(&mut self, a: usize, b: usize) {
+ self.lines.swap(a, b);
}
pub(crate) fn edit_selected_line(&mut self, content: &str) {
@@ -177,8 +134,8 @@ impl GitInteractive {
self.selected_line_index
}
- pub(crate) fn get_visual_start_index(&self) -> usize {
- self.visual_index_start.unwrap_or(self.selected_line_index)
+ pub(crate) const fn get_visual_start_index(&self) -> Option<usize> {
+ self.visual_index_start
}
pub(crate) fn get_filepath(&self) -> &str {