aboutsummaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-16 18:33:23 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-16 18:33:23 +0300
commit7b8f6990837ed2df63b533c7bbcd5bf6835efef7 (patch)
tree236232c2da60e011f3c2b1630f5a5e34fb7b022f /src/config
parent170d5674872fe030777ceb97e18b38a0e9ddbc2f (diff)
feat: add scrollback editor keybind
refs #122
Diffstat (limited to 'src/config')
-rw-r--r--src/config/keybinds.rs32
-rw-r--r--src/config/model.rs3
2 files changed, 27 insertions, 8 deletions
diff --git a/src/config/keybinds.rs b/src/config/keybinds.rs
index de4f03a9..9a1dc496 100644
--- a/src/config/keybinds.rs
+++ b/src/config/keybinds.rs
@@ -95,6 +95,8 @@ pub struct Keybinds {
pub close_tab_label: Option<String>,
pub rename_pane: Option<(KeyCode, KeyModifiers)>,
pub rename_pane_label: Option<String>,
+ pub edit_scrollback: Option<(KeyCode, KeyModifiers)>,
+ pub edit_scrollback_label: Option<String>,
pub focus_pane_left: Option<(KeyCode, KeyModifiers)>,
pub focus_pane_left_label: Option<String>,
pub focus_pane_down: Option<(KeyCode, KeyModifiers)>,
@@ -463,6 +465,12 @@ impl Config {
&mut diagnostics,
),
optional_binding(
+ navigate_scope(),
+ "keys.edit_scrollback",
+ &self.keys.edit_scrollback,
+ &mut diagnostics,
+ ),
+ optional_binding(
terminal_direct_scope(),
"keys.focus_pane_left",
&self.keys.focus_pane_left,
@@ -767,14 +775,16 @@ impl Config {
close_tab_label: optional_bindings[10].label.clone(),
rename_pane: optional_bindings[11].value,
rename_pane_label: optional_bindings[11].label.clone(),
- focus_pane_left: optional_bindings[12].value,
- focus_pane_left_label: optional_bindings[12].label.clone(),
- focus_pane_down: optional_bindings[13].value,
- focus_pane_down_label: optional_bindings[13].label.clone(),
- focus_pane_up: optional_bindings[14].value,
- focus_pane_up_label: optional_bindings[14].label.clone(),
- focus_pane_right: optional_bindings[15].value,
- focus_pane_right_label: optional_bindings[15].label.clone(),
+ edit_scrollback: optional_bindings[12].value,
+ edit_scrollback_label: optional_bindings[12].label.clone(),
+ focus_pane_left: optional_bindings[13].value,
+ focus_pane_left_label: optional_bindings[13].label.clone(),
+ focus_pane_down: optional_bindings[14].value,
+ focus_pane_down_label: optional_bindings[14].label.clone(),
+ focus_pane_up: optional_bindings[15].value,
+ focus_pane_up_label: optional_bindings[15].label.clone(),
+ focus_pane_right: optional_bindings[16].value,
+ focus_pane_right_label: optional_bindings[16].label.clone(),
split_vertical: bindings[4].value,
split_vertical_label: bindings[4].label.clone(),
split_horizontal: bindings[5].value,
@@ -1082,6 +1092,7 @@ mod tests {
assert_eq!(kb.split_vertical.0, KeyCode::Char('v'));
assert_eq!(kb.split_horizontal.0, KeyCode::Char('-'));
assert_eq!(kb.close_pane.0, KeyCode::Char('x'));
+ assert_eq!(kb.edit_scrollback, None);
assert_eq!(kb.fullscreen.0, KeyCode::Char('f'));
assert_eq!(kb.resize_mode.0, KeyCode::Char('r'));
assert_eq!(kb.toggle_sidebar.0, KeyCode::Char('b'));
@@ -1104,6 +1115,7 @@ resize_mode = "ctrl+r"
toggle_sidebar = "tab"
previous_agent = "alt+a"
next_agent = "alt+d"
+edit_scrollback = "e"
focus_pane_left = "alt+h"
focus_pane_right = "alt+right"
"#;
@@ -1140,6 +1152,10 @@ focus_pane_right = "alt+right"
);
assert_eq!(kb.next_agent, Some((KeyCode::Char('d'), KeyModifiers::ALT)));
assert_eq!(
+ kb.edit_scrollback,
+ Some((KeyCode::Char('e'), KeyModifiers::empty()))
+ );
+ assert_eq!(
kb.focus_pane_left,
Some((KeyCode::Char('h'), KeyModifiers::ALT))
);
diff --git a/src/config/model.rs b/src/config/model.rs
index ed8c4dd5..f389b18b 100644
--- a/src/config/model.rs
+++ b/src/config/model.rs
@@ -103,6 +103,8 @@ pub struct KeysConfig {
pub close_tab: String,
/// Rename the focused pane. Unset by default.
pub rename_pane: String,
+ /// Open the focused pane scrollback in $EDITOR. Unset by default.
+ pub edit_scrollback: String,
/// Focus the pane to the left in terminal mode. Unset by default.
pub focus_pane_left: String,
/// Focus the pane below in terminal mode. Unset by default.
@@ -198,6 +200,7 @@ impl Default for KeysConfig {
next_tab: "".into(),
close_tab: "".into(),
rename_pane: "".into(),
+ edit_scrollback: "".into(),
focus_pane_left: "".into(),
focus_pane_down: "".into(),
focus_pane_up: "".into(),