feat: add expandable diff excerpts with configurable context
This commit is contained in:
+12
-1
@@ -1064,6 +1064,7 @@ pub struct Editor {
|
||||
file_explorer_view: FileView,
|
||||
count: Option<usize>,
|
||||
diff: Option<DiffState>,
|
||||
diff_context_options: (usize, usize),
|
||||
next_diff_request: u64,
|
||||
outstanding_diff_request: Option<u64>,
|
||||
}
|
||||
@@ -1134,6 +1135,7 @@ impl Editor {
|
||||
file_explorer_view: FileView::Tree,
|
||||
count: None,
|
||||
diff: None,
|
||||
diff_context_options: (10, 15),
|
||||
next_diff_request: 0,
|
||||
outstanding_diff_request: None,
|
||||
};
|
||||
@@ -1240,6 +1242,13 @@ impl Editor {
|
||||
self.diff.as_ref()
|
||||
}
|
||||
|
||||
pub(crate) fn set_diff_context_options(&mut self, context_lines: usize, expand_lines: usize) {
|
||||
self.diff_context_options = (context_lines, expand_lines);
|
||||
if let Some(diff) = &mut self.diff {
|
||||
diff.set_context_options(context_lines, expand_lines);
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn take_diff_request(&mut self) -> Option<(u64, Operation)> {
|
||||
let operation = self.diff.as_mut()?.take_request()?;
|
||||
self.next_diff_request = self
|
||||
@@ -1275,7 +1284,9 @@ impl Editor {
|
||||
self.active.mode = Mode::Normal;
|
||||
}
|
||||
self.outstanding_diff_request = None;
|
||||
self.diff = Some(DiffState::new());
|
||||
let mut diff = DiffState::new();
|
||||
diff.set_context_options(self.diff_context_options.0, self.diff_context_options.1);
|
||||
self.diff = Some(diff);
|
||||
}
|
||||
|
||||
fn handle_diff(&mut self, input: Input) {
|
||||
|
||||
Reference in New Issue
Block a user