aboutsummaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorBrooks J Rady <b.j.rady@gmail.com>2021-03-31 12:13:00 +0100
committerBrooks J Rady <b.j.rady@gmail.com>2021-03-31 12:13:00 +0100
commit138ba850ebf7df02526990f428207e0f8ec48ece (patch)
tree464abc4497e68e0a92ad83da4b2d6403dfd4d427 /src/common
parentfeat(plugin): refactored to a new and more general plugin API (diff)
downloadsl0ppij-138ba850ebf7df02526990f428207e0f8ec48ece.tar.gz
sl0ppij-138ba850ebf7df02526990f428207e0f8ec48ece.tar.xz
sl0ppij-138ba850ebf7df02526990f428207e0f8ec48ece.zip
fix(plugin): send mode updates to subscribed plugins on load
Diffstat (limited to 'src/common')
-rw-r--r--src/common/errors.rs4
-rw-r--r--src/common/input/handler.rs2
-rw-r--r--src/common/mod.rs8
-rw-r--r--src/common/screen.rs20
4 files changed, 17 insertions, 17 deletions
diff --git a/src/common/errors.rs b/src/common/errors.rs
index f5aeae85..56bf27f4 100644
--- a/src/common/errors.rs
+++ b/src/common/errors.rs
@@ -200,7 +200,7 @@ pub enum ScreenContext {
CloseTab,
GoToTab,
UpdateTabName,
- ChangeInputMode,
+ ChangeMode,
}
// FIXME: Just deriving EnumDiscriminants from strum will remove the need for any of this!!!
@@ -241,7 +241,7 @@ impl From<&ScreenInstruction> for ScreenContext {
ScreenInstruction::CloseTab => ScreenContext::CloseTab,
ScreenInstruction::GoToTab(_) => ScreenContext::GoToTab,
ScreenInstruction::UpdateTabName(_) => ScreenContext::UpdateTabName,
- ScreenInstruction::ChangeInputMode(_) => ScreenContext::ChangeInputMode,
+ ScreenInstruction::ChangeMode(_) => ScreenContext::ChangeMode,
}
}
}
diff --git a/src/common/input/handler.rs b/src/common/input/handler.rs
index 33f4e5dc..7f73b449 100644
--- a/src/common/input/handler.rs
+++ b/src/common/input/handler.rs
@@ -130,7 +130,7 @@ impl InputHandler {
))
.unwrap();
self.send_screen_instructions
- .send(ScreenInstruction::ChangeInputMode(mode))
+ .send(ScreenInstruction::ChangeMode(get_mode_info(mode)))
.unwrap();
self.send_screen_instructions
.send(ScreenInstruction::Render)
diff --git a/src/common/mod.rs b/src/common/mod.rs
index e895fcc0..a566d655 100644
--- a/src/common/mod.rs
+++ b/src/common/mod.rs
@@ -37,7 +37,7 @@ use wasm_vm::PluginEnv;
use wasm_vm::{wasi_stdout, wasi_write_string, zellij_imports, PluginInstruction};
use wasmer::{ChainableNamedResolver, Instance, Module, Store, Value};
use wasmer_wasi::{Pipe, WasiState};
-use zellij_tile::data::{EventType, InputMode};
+use zellij_tile::data::{EventType, ModeInfo};
#[derive(Serialize, Deserialize, Debug)]
pub enum ApiCommand {
@@ -256,7 +256,7 @@ pub fn start(mut os_input: Box<dyn OsApi>, opts: CliArgs) {
&full_screen_ws,
os_input,
max_panes,
- InputMode::Normal,
+ ModeInfo::default(),
);
loop {
let (event, mut err_ctx) = screen
@@ -389,8 +389,8 @@ pub fn start(mut os_input: Box<dyn OsApi>, opts: CliArgs) {
ScreenInstruction::UpdateTabName(c) => {
screen.update_active_tab_name(c);
}
- ScreenInstruction::ChangeInputMode(input_mode) => {
- screen.change_input_mode(input_mode);
+ ScreenInstruction::ChangeMode(mode_info) => {
+ screen.change_mode(mode_info);
}
ScreenInstruction::Quit => {
break;
diff --git a/src/common/screen.rs b/src/common/screen.rs
index 5208834a..178e8be9 100644
--- a/src/common/screen.rs
+++ b/src/common/screen.rs
@@ -13,7 +13,7 @@ use crate::tab::Tab;
use crate::{errors::ErrorContext, wasm_vm::PluginInstruction};
use crate::{layout::Layout, panes::PaneId};
-use zellij_tile::data::{Event, InputMode, TabInfo};
+use zellij_tile::data::{Event, ModeInfo, TabInfo};
/// Instructions that can be sent to the [`Screen`].
#[derive(Debug, Clone)]
@@ -50,7 +50,7 @@ pub enum ScreenInstruction {
CloseTab,
GoToTab(u32),
UpdateTabName(Vec<u8>),
- ChangeInputMode(InputMode),
+ ChangeMode(ModeInfo),
}
/// A [`Screen`] holds multiple [`Tab`]s, each one holding multiple [`panes`](crate::client::panes).
@@ -74,7 +74,7 @@ pub struct Screen {
active_tab_index: Option<usize>,
/// The [`OsApi`] this [`Screen`] uses.
os_api: Box<dyn OsApi>,
- input_mode: InputMode,
+ mode_info: ModeInfo,
}
impl Screen {
@@ -87,7 +87,7 @@ impl Screen {
full_screen_ws: &PositionAndSize,
os_api: Box<dyn OsApi>,
max_panes: Option<usize>,
- input_mode: InputMode,
+ mode_info: ModeInfo,
) -> Self {
Screen {
receiver: receive_screen_instructions,
@@ -99,7 +99,7 @@ impl Screen {
active_tab_index: None,
tabs: BTreeMap::new(),
os_api,
- input_mode,
+ mode_info,
}
}
@@ -119,7 +119,7 @@ impl Screen {
self.send_app_instructions.clone(),
self.max_panes,
Some(PaneId::Terminal(pane_id)),
- self.input_mode,
+ self.mode_info.clone(),
);
self.active_tab_index = Some(tab_index);
self.tabs.insert(tab_index, tab);
@@ -261,7 +261,7 @@ impl Screen {
self.send_app_instructions.clone(),
self.max_panes,
None,
- self.input_mode,
+ self.mode_info.clone(),
);
tab.apply_layout(layout, new_pids);
self.active_tab_index = Some(tab_index);
@@ -301,10 +301,10 @@ impl Screen {
}
self.update_tabs();
}
- pub fn change_input_mode(&mut self, input_mode: InputMode) {
- self.input_mode = input_mode;
+ pub fn change_mode(&mut self, mode_info: ModeInfo) {
+ self.mode_info = mode_info;
for tab in self.tabs.values_mut() {
- tab.input_mode = self.input_mode;
+ tab.mode_info = self.mode_info.clone();
}
}
}