zellij/zellij-utils/assets/prost/api.input_mode.rs
Aram Drevekenin 27c8986939
feat: multiple Select and Bulk Pane Actions (#4169)
* 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
2025-04-29 20:52:17 +02:00

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,
}
}
}