diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-23 02:30:25 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-05-23 02:30:25 +0300 |
| commit | 09d9ddde97d5def9107c9ad6a0939bf12703203e (patch) | |
| tree | 27a1a7aaf87d40412034ca79c78cd9ffdb052573 /src/app | |
| parent | 3de6ea799965a7d2aad0f7db2f23f54cd24cb039 (diff) | |
fix: preserve local keybindings in remote sessions
Diffstat (limited to 'src/app')
| -rw-r--r-- | src/app/input/modal.rs | 3 | ||||
| -rw-r--r-- | src/app/mod.rs | 14 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/app/input/modal.rs b/src/app/input/modal.rs index 1fae3800..acd481b8 100644 --- a/src/app/input/modal.rs +++ b/src/app/input/modal.rs @@ -675,8 +675,7 @@ mod tests { use super::*; fn config_env_lock() -> &'static std::sync::Mutex<()> { - static LOCK: std::sync::OnceLock<std::sync::Mutex<()>> = std::sync::OnceLock::new(); - LOCK.get_or_init(|| std::sync::Mutex::new(())) + crate::config::test_config_env_lock() } fn temp_config_path(name: &str) -> std::path::PathBuf { diff --git a/src/app/mod.rs b/src/app/mod.rs index 4bcbada7..16b98193 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -90,6 +90,7 @@ pub struct App { pub(crate) full_redraw_pending: bool, pub(crate) overlay_panes: HashMap<crate::layout::PaneId, OverlayPaneState>, pub(crate) local_terminal_notifications: bool, + pub(crate) config_reloaded_from_disk: bool, } pub(crate) enum LoopEvent { @@ -535,6 +536,7 @@ impl App { full_redraw_pending: false, overlay_panes: HashMap::new(), local_terminal_notifications: true, + config_reloaded_from_disk: false, } } @@ -880,10 +882,17 @@ impl App { self.apply_config_from_disk(true) } + pub(crate) fn take_config_reloaded_from_disk(&mut self) -> bool { + let reloaded = self.config_reloaded_from_disk; + self.config_reloaded_from_disk = false; + reloaded + } + pub(crate) fn apply_config_from_disk( &mut self, notify_success: bool, ) -> crate::config::ConfigReloadReport { + self.config_reloaded_from_disk = true; let previous_toast = self.state.toast.clone(); let report = match crate::config::load_live_config() { Ok(loaded) => self.apply_live_config( @@ -1237,7 +1246,7 @@ mod tests { use crate::terminal::TerminalRuntime; use crate::workspace::Workspace; use crossterm::event::{KeyCode, KeyEvent, KeyEventKind, KeyModifiers}; - use std::sync::{Mutex, OnceLock}; + use std::sync::Mutex; fn raw_key( code: KeyCode, @@ -1270,8 +1279,7 @@ mod tests { } fn config_env_lock() -> &'static Mutex<()> { - static LOCK: OnceLock<Mutex<()>> = OnceLock::new(); - LOCK.get_or_init(|| Mutex::new(())) + crate::config::test_config_env_lock() } fn temp_config_path(name: &str) -> std::path::PathBuf { |
