* initial implementation with break panes to new tab * break pane group left/right * group embed/eject panes * stack pane group on resize * close pane group * style(fmt): rustfmt * fix tests * group drag and ungroup with the mouse * fix mouse hover for multiple clients * fix for multiple clients * multiple select plugin initial * use real data in plugin * adjust functionality * fix some ux issues * reflect group mouse group selections in plugin * group/ungroup panes in Zellij * highlight frames when marked by the plugin * refactor: render function in plugin * some ui responsiveness * some more responsiveness and adjust hover text * break out functionality * stack functionality * break panes left/right and close multiple panes * fix(tab): only relayout the relevant layout when non-focused pane is closed * status bar UI * embed and float panes * work * fix some ui/ux issues * refactor: move stuff around * some responsiveness and fix search result browsing bug * change plugin pane title * differentiate group from focused pane * add keyboard shortcut * add ui to compact bar * make boundary colors appear properly without pane frames * get plugins to also display their frame color * make hover shortcuts appear on command panes * fix: do not render search string component if it's empty * BeforeClose Event and unhighlight panes on exit * some UI/UX fixes * some fixes to the catppuccin-latte theme * remove ungroup shortcut * make some ui components opaque * fix more opaque elements * fix some issues with stacking pane order * keyboard shortcuts for grouping * config to opt out of advanced mouse actions * make selected + focused frame color distinct * group marking mode * refactor: multiple-select plugin * adjust stacking group behavior * adjust flashing periods * render common modifier in group controls * add to compact bar * adjust key hint wording * add key to presets and default config * some cleanups * some refactoring * fix tests * fix plugin system tests * tests: group/ungroup/hover * test: BeforeClose plugin event * new plugin assets * style(fmt): rustfmt * remove warnings * tests: give plugin more time to load
84 lines
3.4 KiB
Rust
84 lines
3.4 KiB
Rust
#[allow(clippy::derive_partial_eq_without_eq)]
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct InputModeMessage {
|
|
#[prost(enumeration="InputMode", tag="1")]
|
|
pub input_mode: i32,
|
|
}
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
|
|
#[repr(i32)]
|
|
pub enum InputMode {
|
|
/// / In `Normal` mode, input is always written to the terminal, except for the shortcuts leading
|
|
/// / to other modes
|
|
Normal = 0,
|
|
/// / In `Locked` mode, input is always written to the terminal and all shortcuts are disabled
|
|
/// / except the one leading back to normal mode
|
|
Locked = 1,
|
|
/// / `Resize` mode allows resizing the different existing panes.
|
|
Resize = 2,
|
|
/// / `Pane` mode allows creating and closing panes, as well as moving between them.
|
|
Pane = 3,
|
|
/// / `Tab` mode allows creating and closing tabs, as well as moving between them.
|
|
Tab = 4,
|
|
/// / `Scroll` mode allows scrolling up and down within a pane.
|
|
Scroll = 5,
|
|
/// / `EnterSearch` mode allows for typing in the needle for a search in the scroll buffer of a pane.
|
|
EnterSearch = 6,
|
|
/// / `Search` mode allows for searching a term in a pane (superset of `Scroll`).
|
|
Search = 7,
|
|
/// / `RenameTab` mode allows assigning a new name to a tab.
|
|
RenameTab = 8,
|
|
/// / `RenamePane` mode allows assigning a new name to a pane.
|
|
RenamePane = 9,
|
|
/// / `Session` mode allows detaching sessions
|
|
Session = 10,
|
|
/// / `Move` mode allows moving the different existing panes within a tab
|
|
Move = 11,
|
|
/// / `Prompt` mode allows interacting with active prompts.
|
|
Prompt = 12,
|
|
/// / `Tmux` mode allows for basic tmux keybindings functionality
|
|
Tmux = 13,
|
|
}
|
|
impl InputMode {
|
|
/// String value of the enum field names used in the ProtoBuf definition.
|
|
///
|
|
/// The values are not transformed in any way and thus are considered stable
|
|
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
|
|
pub fn as_str_name(&self) -> &'static str {
|
|
match self {
|
|
InputMode::Normal => "Normal",
|
|
InputMode::Locked => "Locked",
|
|
InputMode::Resize => "Resize",
|
|
InputMode::Pane => "Pane",
|
|
InputMode::Tab => "Tab",
|
|
InputMode::Scroll => "Scroll",
|
|
InputMode::EnterSearch => "EnterSearch",
|
|
InputMode::Search => "Search",
|
|
InputMode::RenameTab => "RenameTab",
|
|
InputMode::RenamePane => "RenamePane",
|
|
InputMode::Session => "Session",
|
|
InputMode::Move => "Move",
|
|
InputMode::Prompt => "Prompt",
|
|
InputMode::Tmux => "Tmux",
|
|
}
|
|
}
|
|
/// Creates an enum from field names used in the ProtoBuf definition.
|
|
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
|
|
match value {
|
|
"Normal" => Some(Self::Normal),
|
|
"Locked" => Some(Self::Locked),
|
|
"Resize" => Some(Self::Resize),
|
|
"Pane" => Some(Self::Pane),
|
|
"Tab" => Some(Self::Tab),
|
|
"Scroll" => Some(Self::Scroll),
|
|
"EnterSearch" => Some(Self::EnterSearch),
|
|
"Search" => Some(Self::Search),
|
|
"RenameTab" => Some(Self::RenameTab),
|
|
"RenamePane" => Some(Self::RenamePane),
|
|
"Session" => Some(Self::Session),
|
|
"Move" => Some(Self::Move),
|
|
"Prompt" => Some(Self::Prompt),
|
|
"Tmux" => Some(Self::Tmux),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|