feat: default diffs to branch changes

This commit is contained in:
Valdemar Lorenzen
2026-10-13 10:41:37 +02:00
parent fafec2a6b0
commit 6c254f9b0d
10 changed files with 562 additions and 33 deletions
+23 -1
View File
@@ -703,6 +703,12 @@ core_actions![
true
),
("core.diff", Action::Diff, &[Mode::Normal], true),
(
"core.diff.mode.toggle",
Action::DiffModeToggle,
&[Mode::Normal],
true,
),
(
"core.diff.view.toggle",
Action::DiffViewToggle,
@@ -1070,6 +1076,7 @@ fn default_bindings() -> HashMap<Mode, HashMap<Input, Binding>> {
}
for (key, action) in [
(Input::Ctrl('o'), JumpBack),
(Input::Ctrl('b'), DiffModeToggle),
(Input::Char('\t'), JumpForward),
(Input::Alt('h'), PaneFocusLeft),
(Input::Alt('j'), PaneFocusDown),
@@ -3144,6 +3151,7 @@ impl Editor {
| Action::FilePicker
| Action::FileExplorer
| Action::DiffClose
| Action::DiffModeToggle
| Action::DiffViewToggle
| Action::DiffOrientationToggle
| Action::WordWrapToggle
@@ -5905,6 +5913,7 @@ impl Editor {
| Action::BufferForceDelete
| Action::Diff
| Action::DiffClose
| Action::DiffModeToggle
| Action::DiffViewToggle
| Action::DiffOrientationToggle
| Action::WordWrapToggle
@@ -6713,7 +6722,7 @@ impl Editor {
}
if matches!(
entry.action,
Action::DiffViewToggle | Action::DiffOrientationToggle
Action::DiffModeToggle | Action::DiffViewToggle | Action::DiffOrientationToggle
) {
let name = entry.ex.expect("diff display action has an Ex command");
if !args.is_empty() {
@@ -6730,6 +6739,19 @@ impl Editor {
self.active.view.command_line.clear();
self.active.view.mode = Mode::Normal;
}
if entry.action == Action::DiffModeToggle {
let Some(diff) = self.diff.as_mut() else {
self.set_message("No comparison is open");
return None;
};
if let Err(error) = diff.toggle_comparison_mode() {
self.set_message(error);
return None;
}
self.release_diff_buffers();
self.diff_return_buffer = Some(self.active.id);
return None;
}
let Some(diff) = self.diff.as_mut().filter(|diff| diff.phase == Phase::View) else {
self.set_message("No comparison is open");
return None;