aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-23 02:30:25 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-23 02:30:25 +0300
commit09d9ddde97d5def9107c9ad6a0939bf12703203e (patch)
tree27a1a7aaf87d40412034ca79c78cd9ffdb052573 /src/app
parent3de6ea799965a7d2aad0f7db2f23f54cd24cb039 (diff)
fix: preserve local keybindings in remote sessions
Diffstat (limited to 'src/app')
-rw-r--r--src/app/input/modal.rs3
-rw-r--r--src/app/mod.rs14
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 {