diff options
Diffstat (limited to 'src/app/state.rs')
| -rw-r--r-- | src/app/state.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/app/state.rs b/src/app/state.rs index dd1b167e..a25c7c5e 100644 --- a/src/app/state.rs +++ b/src/app/state.rs @@ -867,6 +867,34 @@ impl SettingsSection { } } +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) enum ExperimentSetting { + PaneHistory, + SwitchAsciiInputSourceInPrefix, +} + +impl ExperimentSetting { + pub(crate) const ALL: [Self; 2] = [Self::PaneHistory, Self::SwitchAsciiInputSourceInPrefix]; + + pub(crate) fn label(self) -> &'static str { + match self { + Self::PaneHistory => "pane screen history", + Self::SwitchAsciiInputSourceInPrefix => { + "switch to ascii input source in prefix (macOS)" + } + } + } + + pub(crate) fn enabled(self, state: &AppState) -> bool { + match self { + Self::PaneHistory => state.pane_history_persistence_enabled(), + Self::SwitchAsciiInputSourceInPrefix => { + state.switch_ascii_input_source_in_prefix_enabled() + } + } + } +} + /// All built-in theme names in display order. pub const THEME_NAMES: &[&str] = &[ "catppuccin", @@ -1268,6 +1296,11 @@ pub struct AppState { pub cjk_ime_agents: Vec<crate::detect::Agent>, /// DECSCUSR shape parameter (1–6) for the IME anchor cursor. pub cjk_ime_cursor_shape: u8, + /// While prefix mode is active, switch the macOS host input source to an + /// ASCII-capable layout so prefix commands register as ASCII even when a + /// CJK IME is active. macOS only; a no-op elsewhere. See + /// `[experimental] switch_ascii_input_source_in_prefix`. + pub switch_ascii_input_source_in_prefix: bool, pub kitty_graphics_enabled: bool, pub default_shell: String, pub shell_mode: crate::config::ShellModeConfig, @@ -1327,6 +1360,10 @@ impl AppState { self.pane_history_persistence } + pub fn switch_ascii_input_source_in_prefix_enabled(&self) -> bool { + self.switch_ascii_input_source_in_prefix + } + pub(crate) fn integration_updates_available(&self) -> bool { self.integration_recommendations .iter() @@ -1575,6 +1612,7 @@ impl AppState { cjk_ime_agent_filter_configured: false, cjk_ime_agents: Vec::new(), cjk_ime_cursor_shape: 2, // steady_block + switch_ascii_input_source_in_prefix: false, kitty_graphics_enabled: false, default_shell: String::new(), shell_mode: crate::config::ShellModeConfig::Auto, |
