aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKunal Mohan <kunalmohan99@gmail.com>2021-03-20 01:55:13 +0530
committerKunal Mohan <kunalmohan99@gmail.com>2021-05-04 20:47:51 +0530
commitfd1debaa79da2f03c37c7a92a0e5c0eef490feff (patch)
tree7e898267d56497a7123bf5505f72cdde2d6c18e1 /src
parentIntroduce ServerContext (diff)
downloadsl0ppij-fd1debaa79da2f03c37c7a92a0e5c0eef490feff.tar.gz
sl0ppij-fd1debaa79da2f03c37c7a92a0e5c0eef490feff.tar.xz
sl0ppij-fd1debaa79da2f03c37c7a92a0e5c0eef490feff.zip
Fix after rebase
Diffstat (limited to 'src')
-rw-r--r--src/client/tab.rs14
-rw-r--r--src/common/errors.rs2
-rw-r--r--src/common/mod.rs6
-rw-r--r--src/common/screen.rs2
-rw-r--r--src/common/wasm_vm.rs1
-rw-r--r--src/tests/fakes.rs2
-rw-r--r--src/tests/integration/basic.rs37
-rw-r--r--src/tests/integration/compatibility.rs41
8 files changed, 44 insertions, 61 deletions
diff --git a/src/client/tab.rs b/src/client/tab.rs
index 8e07dfc3..60f51004 100644
--- a/src/client/tab.rs
+++ b/src/client/tab.rs
@@ -4,17 +4,13 @@
use crate::client::pane_resizer::PaneResizer;
use crate::common::{input::handler::parse_keys, AppInstruction, SenderWithContext};
use crate::layout::Layout;
-use crate::os_input_output::OsApi;
+use crate::os_input_output::{ClientOsApi, ServerOsApiInstruction};
use crate::panes::{PaneId, PositionAndSize, TerminalPane};
-use crate::pty_bus::{PtyInstruction, VteBytes};
-use crate::utils::shared::adjust_to_size;
-use crate::wasm_vm::PluginInstruction;
+use crate::pty_bus::{PtyInstruction, VteEvent};
+use crate::utils::shared::pad_to_size;
+use crate::wasm_vm::{PluginInputType, PluginInstruction};
use crate::{boundaries::Boundaries, panes::PluginPane};
-use crate::{layout::Layout, wasm_vm::PluginInstruction};
-use crate::{
- os_input_output::{ClientOsApi, ServerOsApiInstruction},
- utils::shared::pad_to_size,
-};
+use serde::{Deserialize, Serialize};
use std::os::unix::io::RawFd;
use std::time::Instant;
use std::{
diff --git a/src/common/errors.rs b/src/common/errors.rs
index e8e02e5a..234745ad 100644
--- a/src/common/errors.rs
+++ b/src/common/errors.rs
@@ -330,6 +330,7 @@ pub enum PluginContext {
Render,
Unload,
Exit,
+ Tabs,
}
impl From<&PluginInstruction> for PluginContext {
@@ -340,6 +341,7 @@ impl From<&PluginInstruction> for PluginContext {
PluginInstruction::Render(..) => PluginContext::Render,
PluginInstruction::Unload(_) => PluginContext::Unload,
PluginInstruction::Exit => PluginContext::Exit,
+ PluginInstruction::UpdateTabs(..) => PluginContext::Tabs,
}
}
}
diff --git a/src/common/mod.rs b/src/common/mod.rs
index e8883d4f..9554eb78 100644
--- a/src/common/mod.rs
+++ b/src/common/mod.rs
@@ -432,6 +432,12 @@ pub fn start(
screen.apply_layout(Layout::new(layout), new_pane_pids);
command_is_executing.done_opening_new_pane();
}
+ ScreenInstruction::GoToTab(tab_index) => {
+ screen.go_to_tab(tab_index as usize)
+ }
+ ScreenInstruction::UpdateTabName(c) => {
+ screen.update_active_tab_name(c);
+ }
ScreenInstruction::Exit => {
break;
}
diff --git a/src/common/screen.rs b/src/common/screen.rs
index ae1f4dd7..1bc372f6 100644
--- a/src/common/screen.rs
+++ b/src/common/screen.rs
@@ -4,6 +4,7 @@ use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
use std::os::unix::io::RawFd;
use std::path::PathBuf;
+use std::str;
use std::sync::mpsc::Receiver;
use super::{AppInstruction, SenderWithContext};
@@ -79,6 +80,7 @@ pub struct Screen {
active_tab_index: Option<usize>,
/// The [`OsApi`] this [`Screen`] uses.
os_api: Box<dyn ClientOsApi>,
+ tabname_buf: String,
}
impl Screen {
diff --git a/src/common/wasm_vm.rs b/src/common/wasm_vm.rs
index 31b1000c..d4580572 100644
--- a/src/common/wasm_vm.rs
+++ b/src/common/wasm_vm.rs
@@ -21,6 +21,7 @@ pub enum PluginInstruction {
Update(Option<u32>, Event), // Focused plugin / broadcast, event data
Render(Sender<String>, u32, usize, usize), // String buffer, plugin id, rows, cols
Unload(u32),
+ UpdateTabs(Vec<TabData>), // num tabs, active tab
Exit,
}
diff --git a/src/tests/fakes.rs b/src/tests/fakes.rs
index a59bfa4a..16b98101 100644
--- a/src/tests/fakes.rs
+++ b/src/tests/fakes.rs
@@ -13,7 +13,7 @@ use zellij_tile::data::Palette;
use crate::tests::utils::commands::{QUIT, SLEEP};
-const MIN_TIME_BETWEEN_SNAPSHOTS: Duration = Duration::from_millis(350);
+const MIN_TIME_BETWEEN_SNAPSHOTS: Duration = Duration::from_millis(400);
#[derive(Clone)]
pub enum IoEvent {
diff --git a/src/tests/integration/basic.rs b/src/tests/integration/basic.rs
index 75f96bda..406e6174 100644
--- a/src/tests/integration/basic.rs
+++ b/src/tests/integration/basic.rs
@@ -26,7 +26,7 @@ pub fn starts_with_one_terminal() {
..Default::default()
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -53,12 +53,7 @@ pub fn split_terminals_vertically() {
..Default::default()
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
- fake_input_output.add_terminal_input(&[
- &COMMAND_TOGGLE,
- &PANE_MODE,
- &SPLIT_RIGHT_IN_PANE_MODE,
- &QUIT,
- ]);
+ fake_input_output.add_terminal_input(&[&PANE_MODE, &SPLIT_RIGHT_IN_PANE_MODE, &QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -85,12 +80,7 @@ pub fn split_terminals_horizontally() {
..Default::default()
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
- fake_input_output.add_terminal_input(&[
- &COMMAND_TOGGLE,
- &PANE_MODE,
- &SPLIT_DOWN_IN_PANE_MODE,
- &QUIT,
- ]);
+ fake_input_output.add_terminal_input(&[&PANE_MODE, &SPLIT_DOWN_IN_PANE_MODE, &QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -151,12 +141,7 @@ pub fn cannot_split_terminals_vertically_when_active_terminal_is_too_small() {
..Default::default()
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
- fake_input_output.add_terminal_input(&[
- &COMMAND_TOGGLE,
- &PANE_MODE,
- &SPLIT_RIGHT_IN_PANE_MODE,
- &QUIT,
- ]);
+ fake_input_output.add_terminal_input(&[&PANE_MODE, &SPLIT_RIGHT_IN_PANE_MODE, &QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -183,12 +168,7 @@ pub fn cannot_split_terminals_horizontally_when_active_terminal_is_too_small() {
..Default::default()
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
- fake_input_output.add_terminal_input(&[
- &COMMAND_TOGGLE,
- &PANE_MODE,
- &SPLIT_DOWN_IN_PANE_MODE,
- &QUIT,
- ]);
+ fake_input_output.add_terminal_input(&[&PANE_MODE, &SPLIT_DOWN_IN_PANE_MODE, &QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -215,12 +195,7 @@ pub fn cannot_split_largest_terminal_when_there_is_no_room() {
..Default::default()
};
let mut fake_input_output = get_fake_os_input(&fake_win_size);
- fake_input_output.add_terminal_input(&[
- &COMMAND_TOGGLE,
- &PANE_MODE,
- &SPAWN_TERMINAL_IN_PANE_MODE,
- &QUIT,
- ]);
+ fake_input_output.add_terminal_input(&[&PANE_MODE, &SPAWN_TERMINAL_IN_PANE_MODE, &QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
diff --git a/src/tests/integration/compatibility.rs b/src/tests/integration/compatibility.rs
index 8e9630d4..861d5a05 100644
--- a/src/tests/integration/compatibility.rs
+++ b/src/tests/integration/compatibility.rs
@@ -41,7 +41,8 @@ pub fn run_bandwhich_from_fish_shell() {
};
let fixture_name = "fish_and_bandwhich";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -69,7 +70,7 @@ pub fn fish_tab_completion_options() {
};
let fixture_name = "fish_tab_completion_options";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -102,7 +103,7 @@ pub fn fish_select_tab_completion_options() {
};
let fixture_name = "fish_select_tab_completion_options";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -139,7 +140,7 @@ pub fn vim_scroll_region_down() {
};
let fixture_name = "vim_scroll_region_down";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]); // quit (ctrl-q)
+ fake_input_output.add_terminal_input(&[&QUIT]); // quit (ctrl-q)
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -173,7 +174,7 @@ pub fn vim_ctrl_d() {
};
let fixture_name = "vim_ctrl_d";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -206,7 +207,7 @@ pub fn vim_ctrl_u() {
};
let fixture_name = "vim_ctrl_u";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -234,7 +235,7 @@ pub fn htop() {
};
let fixture_name = "htop";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -262,7 +263,7 @@ pub fn htop_scrolling() {
};
let fixture_name = "htop_scrolling";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -290,7 +291,7 @@ pub fn htop_right_scrolling() {
};
let fixture_name = "htop_right_scrolling";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -326,7 +327,7 @@ pub fn vim_overwrite() {
};
let fixture_name = "vim_overwrite";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -357,7 +358,7 @@ pub fn clear_scroll_region() {
};
let fixture_name = "clear_scroll_region";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -385,7 +386,7 @@ pub fn display_tab_characters_properly() {
};
let fixture_name = "tab_characters";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -413,7 +414,7 @@ pub fn neovim_insert_mode() {
};
let fixture_name = "nvim_insert";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -443,7 +444,7 @@ pub fn bash_cursor_linewrap() {
};
let fixture_name = "bash_cursor_linewrap";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -473,7 +474,7 @@ pub fn fish_paste_multiline() {
};
let fixture_name = "fish_paste_multiline";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -501,7 +502,7 @@ pub fn git_log() {
};
let fixture_name = "git_log";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -531,7 +532,7 @@ pub fn git_diff_scrollup() {
};
let fixture_name = "git_diff_scrollup";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -559,7 +560,7 @@ pub fn emacs_longbuf() {
};
let fixture_name = "emacs_longbuf_tutorial";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -587,7 +588,7 @@ pub fn top_and_quit() {
};
let fixture_name = "top_and_quit";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),
@@ -621,7 +622,7 @@ pub fn exa_plus_omf_theme() {
};
let fixture_name = "exa_plus_omf_theme";
let mut fake_input_output = get_fake_os_input(&fake_win_size, fixture_name);
- fake_input_output.add_terminal_input(&[&COMMAND_TOGGLE, &QUIT]);
+ fake_input_output.add_terminal_input(&[&QUIT]);
start(
Box::new(fake_input_output.clone()),
CliArgs::default(),