diff options
| author | Kunal Mohan <kunalmohan99@gmail.com> | 2021-03-20 01:55:13 +0530 |
|---|---|---|
| committer | Kunal Mohan <kunalmohan99@gmail.com> | 2021-05-04 20:47:51 +0530 |
| commit | fd1debaa79da2f03c37c7a92a0e5c0eef490feff (patch) | |
| tree | 7e898267d56497a7123bf5505f72cdde2d6c18e1 /src | |
| parent | Introduce ServerContext (diff) | |
| download | sl0ppij-fd1debaa79da2f03c37c7a92a0e5c0eef490feff.tar.gz sl0ppij-fd1debaa79da2f03c37c7a92a0e5c0eef490feff.tar.xz sl0ppij-fd1debaa79da2f03c37c7a92a0e5c0eef490feff.zip | |
Fix after rebase
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/tab.rs | 14 | ||||
| -rw-r--r-- | src/common/errors.rs | 2 | ||||
| -rw-r--r-- | src/common/mod.rs | 6 | ||||
| -rw-r--r-- | src/common/screen.rs | 2 | ||||
| -rw-r--r-- | src/common/wasm_vm.rs | 1 | ||||
| -rw-r--r-- | src/tests/fakes.rs | 2 | ||||
| -rw-r--r-- | src/tests/integration/basic.rs | 37 | ||||
| -rw-r--r-- | src/tests/integration/compatibility.rs | 41 |
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(), |
