Move ModeInfo::new() back to get_mode_info()
This commit is contained in:
parent
4fcf558156
commit
eb6e49c260
5 changed files with 55 additions and 51 deletions
|
|
@ -15,7 +15,7 @@ use std::path::PathBuf;
|
||||||
use std::sync::{Arc, Mutex, RwLock};
|
use std::sync::{Arc, Mutex, RwLock};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
use wasmer::Store;
|
use wasmer::Store;
|
||||||
use zellij_tile::data::{Event, ModeInfo, Palette, PluginCapabilities};
|
use zellij_tile::data::{Event, Palette, PluginCapabilities};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
os_input_output::ServerOsApi,
|
os_input_output::ServerOsApi,
|
||||||
|
|
@ -31,6 +31,7 @@ use zellij_utils::{
|
||||||
errors::{ContextType, ErrorInstruction, ServerContext},
|
errors::{ContextType, ErrorInstruction, ServerContext},
|
||||||
input::{
|
input::{
|
||||||
command::{RunCommand, TerminalAction},
|
command::{RunCommand, TerminalAction},
|
||||||
|
get_mode_info,
|
||||||
layout::Layout,
|
layout::Layout,
|
||||||
options::Options,
|
options::Options,
|
||||||
},
|
},
|
||||||
|
|
@ -234,7 +235,7 @@ pub fn start_server(os_input: Box<dyn ServerOsApi>, socket_path: PathBuf) {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let default_mode = options.default_mode.unwrap_or_default();
|
let default_mode = options.default_mode.unwrap_or_default();
|
||||||
let mode_info =
|
let mode_info =
|
||||||
ModeInfo::new(default_mode, attrs.palette, session_data.capabilities);
|
get_mode_info(default_mode, attrs.palette, session_data.capabilities);
|
||||||
session_data
|
session_data
|
||||||
.senders
|
.senders
|
||||||
.send_to_screen(ScreenInstruction::ChangeMode(mode_info.clone()))
|
.send_to_screen(ScreenInstruction::ChangeMode(mode_info.clone()))
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
use zellij_utils::zellij_tile::data::{Event, ModeInfo};
|
use zellij_utils::zellij_tile::data::Event;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
os_input_output::ServerOsApi, pty::PtyInstruction, screen::ScreenInstruction,
|
os_input_output::ServerOsApi, pty::PtyInstruction, screen::ScreenInstruction,
|
||||||
|
|
@ -11,6 +11,7 @@ use zellij_utils::{
|
||||||
input::{
|
input::{
|
||||||
actions::{Action, Direction},
|
actions::{Action, Direction},
|
||||||
command::TerminalAction,
|
command::TerminalAction,
|
||||||
|
get_mode_info,
|
||||||
},
|
},
|
||||||
ipc::{ClientToServerMsg, ExitReason, ServerToClientMsg},
|
ipc::{ClientToServerMsg, ExitReason, ServerToClientMsg},
|
||||||
};
|
};
|
||||||
|
|
@ -42,12 +43,12 @@ fn route_action(
|
||||||
.senders
|
.senders
|
||||||
.send_to_plugin(PluginInstruction::Update(
|
.send_to_plugin(PluginInstruction::Update(
|
||||||
None,
|
None,
|
||||||
Event::ModeUpdate(ModeInfo::new(mode, palette, session.capabilities)),
|
Event::ModeUpdate(get_mode_info(mode, palette, session.capabilities)),
|
||||||
))
|
))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
session
|
session
|
||||||
.senders
|
.senders
|
||||||
.send_to_screen(ScreenInstruction::ChangeMode(ModeInfo::new(
|
.send_to_screen(ScreenInstruction::ChangeMode(get_mode_info(
|
||||||
mode,
|
mode,
|
||||||
palette,
|
palette,
|
||||||
session.capabilities,
|
session.capabilities,
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ use crate::{
|
||||||
use zellij_tile::data::{Event, InputMode, ModeInfo, Palette, PluginCapabilities, TabInfo};
|
use zellij_tile::data::{Event, InputMode, ModeInfo, Palette, PluginCapabilities, TabInfo};
|
||||||
use zellij_utils::{
|
use zellij_utils::{
|
||||||
errors::{ContextType, ScreenContext},
|
errors::{ContextType, ScreenContext},
|
||||||
input::options::Options,
|
input::{get_mode_info, options::Options},
|
||||||
ipc::ClientAttributes,
|
ipc::ClientAttributes,
|
||||||
pane_size::PositionAndSize,
|
pane_size::PositionAndSize,
|
||||||
};
|
};
|
||||||
|
|
@ -434,7 +434,7 @@ pub(crate) fn screen_thread_main(
|
||||||
bus,
|
bus,
|
||||||
&client_attributes,
|
&client_attributes,
|
||||||
max_panes,
|
max_panes,
|
||||||
ModeInfo::new(
|
get_mode_info(
|
||||||
default_mode,
|
default_mode,
|
||||||
client_attributes.palette,
|
client_attributes.palette,
|
||||||
PluginCapabilities {
|
PluginCapabilities {
|
||||||
|
|
|
||||||
|
|
@ -151,49 +151,6 @@ pub struct ModeInfo {
|
||||||
pub session_name: Option<String>,
|
pub session_name: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ModeInfo {
|
|
||||||
/// Creates a [`ModeInfo`] struct indicating the current [`InputMode`] and its keybinds
|
|
||||||
/// (as pairs of [`String`]s).
|
|
||||||
pub fn new(mode: InputMode, palette: Palette, capabilities: PluginCapabilities) -> Self {
|
|
||||||
let keybinds = match mode {
|
|
||||||
InputMode::Normal | InputMode::Locked => Vec::new(),
|
|
||||||
InputMode::Resize => vec![("←↓↑→".to_string(), "Resize".to_string())],
|
|
||||||
InputMode::Pane => vec![
|
|
||||||
("←↓↑→".to_string(), "Move focus".to_string()),
|
|
||||||
("p".to_string(), "Next".to_string()),
|
|
||||||
("n".to_string(), "New".to_string()),
|
|
||||||
("d".to_string(), "Down split".to_string()),
|
|
||||||
("r".to_string(), "Right split".to_string()),
|
|
||||||
("x".to_string(), "Close".to_string()),
|
|
||||||
("f".to_string(), "Fullscreen".to_string()),
|
|
||||||
],
|
|
||||||
InputMode::Tab => vec![
|
|
||||||
("←↓↑→".to_string(), "Move focus".to_string()),
|
|
||||||
("n".to_string(), "New".to_string()),
|
|
||||||
("x".to_string(), "Close".to_string()),
|
|
||||||
("r".to_string(), "Rename".to_string()),
|
|
||||||
("s".to_string(), "Sync".to_string()),
|
|
||||||
],
|
|
||||||
InputMode::Scroll => vec![
|
|
||||||
("↓↑".to_string(), "Scroll".to_string()),
|
|
||||||
("PgUp/PgDn".to_string(), "Scroll Page".to_string()),
|
|
||||||
],
|
|
||||||
InputMode::RenameTab => vec![("Enter".to_string(), "when done".to_string())],
|
|
||||||
InputMode::Session => vec![("d".to_string(), "Detach".to_string())],
|
|
||||||
};
|
|
||||||
|
|
||||||
let session_name = std::env::var("ZELLIJ_SESSION_NAME").ok();
|
|
||||||
|
|
||||||
Self {
|
|
||||||
mode,
|
|
||||||
keybinds,
|
|
||||||
palette,
|
|
||||||
capabilities,
|
|
||||||
session_name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
|
#[derive(Debug, Default, Clone, PartialEq, Eq, Hash, Deserialize, Serialize)]
|
||||||
pub struct TabInfo {
|
pub struct TabInfo {
|
||||||
/* subset of fields to publish to plugins */
|
/* subset of fields to publish to plugins */
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,52 @@ pub mod options;
|
||||||
pub mod theme;
|
pub mod theme;
|
||||||
|
|
||||||
use termion::input::TermRead;
|
use termion::input::TermRead;
|
||||||
use zellij_tile::data::Key;
|
use zellij_tile::data::{InputMode, Key, ModeInfo, Palette, PluginCapabilities};
|
||||||
|
|
||||||
|
/// Creates a [`ModeInfo`] struct indicating the current [`InputMode`] and its keybinds
|
||||||
|
/// (as pairs of [`String`]s).
|
||||||
|
pub fn get_mode_info(
|
||||||
|
mode: InputMode,
|
||||||
|
palette: Palette,
|
||||||
|
capabilities: PluginCapabilities,
|
||||||
|
) -> ModeInfo {
|
||||||
|
let keybinds = match mode {
|
||||||
|
InputMode::Normal | InputMode::Locked => Vec::new(),
|
||||||
|
InputMode::Resize => vec![("←↓↑→".to_string(), "Resize".to_string())],
|
||||||
|
InputMode::Pane => vec![
|
||||||
|
("←↓↑→".to_string(), "Move focus".to_string()),
|
||||||
|
("p".to_string(), "Next".to_string()),
|
||||||
|
("n".to_string(), "New".to_string()),
|
||||||
|
("d".to_string(), "Down split".to_string()),
|
||||||
|
("r".to_string(), "Right split".to_string()),
|
||||||
|
("x".to_string(), "Close".to_string()),
|
||||||
|
("f".to_string(), "Fullscreen".to_string()),
|
||||||
|
],
|
||||||
|
InputMode::Tab => vec![
|
||||||
|
("←↓↑→".to_string(), "Move focus".to_string()),
|
||||||
|
("n".to_string(), "New".to_string()),
|
||||||
|
("x".to_string(), "Close".to_string()),
|
||||||
|
("r".to_string(), "Rename".to_string()),
|
||||||
|
("s".to_string(), "Sync".to_string()),
|
||||||
|
],
|
||||||
|
InputMode::Scroll => vec![
|
||||||
|
("↓↑".to_string(), "Scroll".to_string()),
|
||||||
|
("PgUp/PgDn".to_string(), "Scroll Page".to_string()),
|
||||||
|
],
|
||||||
|
InputMode::RenameTab => vec![("Enter".to_string(), "when done".to_string())],
|
||||||
|
InputMode::Session => vec![("d".to_string(), "Detach".to_string())],
|
||||||
|
};
|
||||||
|
|
||||||
|
let session_name = std::env::var("ZELLIJ_SESSION_NAME").ok();
|
||||||
|
|
||||||
|
ModeInfo {
|
||||||
|
mode,
|
||||||
|
keybinds,
|
||||||
|
palette,
|
||||||
|
capabilities,
|
||||||
|
session_name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn parse_keys(input_bytes: &[u8]) -> Vec<Key> {
|
pub fn parse_keys(input_bytes: &[u8]) -> Vec<Key> {
|
||||||
input_bytes.keys().flatten().map(cast_termion_key).collect()
|
input_bytes.keys().flatten().map(cast_termion_key).collect()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue