Skip to content

Commit

Permalink
Move ModeInfo::new() back to get_mode_info()
Browse files Browse the repository at this point in the history
  • Loading branch information
CosmicHorrorDev committed Jul 9, 2021
1 parent 4fcf558 commit eb6e49c
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 51 deletions.
5 changes: 3 additions & 2 deletions zellij-server/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use std::path::PathBuf;
use std::sync::{Arc, Mutex, RwLock};
use std::thread;
use wasmer::Store;
use zellij_tile::data::{Event, ModeInfo, Palette, PluginCapabilities};
use zellij_tile::data::{Event, Palette, PluginCapabilities};

use crate::{
os_input_output::ServerOsApi,
Expand All @@ -31,6 +31,7 @@ use zellij_utils::{
errors::{ContextType, ErrorInstruction, ServerContext},
input::{
command::{RunCommand, TerminalAction},
get_mode_info,
layout::Layout,
options::Options,
},
Expand Down Expand Up @@ -234,7 +235,7 @@ pub fn start_server(os_input: Box<dyn ServerOsApi>, socket_path: PathBuf) {
.unwrap();
let default_mode = options.default_mode.unwrap_or_default();
let mode_info =
ModeInfo::new(default_mode, attrs.palette, session_data.capabilities);
get_mode_info(default_mode, attrs.palette, session_data.capabilities);
session_data
.senders
.send_to_screen(ScreenInstruction::ChangeMode(mode_info.clone()))
Expand Down
7 changes: 4 additions & 3 deletions zellij-server/src/route.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::sync::{Arc, RwLock};

use zellij_utils::zellij_tile::data::{Event, ModeInfo};
use zellij_utils::zellij_tile::data::Event;

use crate::{
os_input_output::ServerOsApi, pty::PtyInstruction, screen::ScreenInstruction,
Expand All @@ -11,6 +11,7 @@ use zellij_utils::{
input::{
actions::{Action, Direction},
command::TerminalAction,
get_mode_info,
},
ipc::{ClientToServerMsg, ExitReason, ServerToClientMsg},
};
Expand Down Expand Up @@ -42,12 +43,12 @@ fn route_action(
.senders
.send_to_plugin(PluginInstruction::Update(
None,
Event::ModeUpdate(ModeInfo::new(mode, palette, session.capabilities)),
Event::ModeUpdate(get_mode_info(mode, palette, session.capabilities)),
))
.unwrap();
session
.senders
.send_to_screen(ScreenInstruction::ChangeMode(ModeInfo::new(
.send_to_screen(ScreenInstruction::ChangeMode(get_mode_info(
mode,
palette,
session.capabilities,
Expand Down
4 changes: 2 additions & 2 deletions zellij-server/src/screen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ use crate::{
use zellij_tile::data::{Event, InputMode, ModeInfo, Palette, PluginCapabilities, TabInfo};
use zellij_utils::{
errors::{ContextType, ScreenContext},
input::options::Options,
input::{get_mode_info, options::Options},
ipc::ClientAttributes,
pane_size::PositionAndSize,
};
Expand Down Expand Up @@ -434,7 +434,7 @@ pub(crate) fn screen_thread_main(
bus,
&client_attributes,
max_panes,
ModeInfo::new(
get_mode_info(
default_mode,
client_attributes.palette,
PluginCapabilities {
Expand Down
43 changes: 0 additions & 43 deletions zellij-tile/src/data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,49 +151,6 @@ pub struct ModeInfo {
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)]
pub struct TabInfo {
/* subset of fields to publish to plugins */
Expand Down
47 changes: 46 additions & 1 deletion zellij-utils/src/input/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,52 @@ pub mod options;
pub mod theme;

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> {
input_bytes.keys().flatten().map(cast_termion_key).collect()
Expand Down

0 comments on commit eb6e49c

Please sign in to comment.