aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-server/src/plugins/mod.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2025-06-03 17:15:32 +0200
committerGitHub <noreply@github.com>2025-06-03 17:15:32 +0200
commita9f8bbcd197c8d14832fc1ab1fbe4d4111a2014d (patch)
tree6d354fdd36cf534d73e0cb81a7cacd3fedc1ebb9 /zellij-server/src/plugins/mod.rs
parentdocs(changelog): theme fixes (diff)
downloadsl0ppij-a9f8bbcd197c8d14832fc1ab1fbe4d4111a2014d.tar.gz
sl0ppij-a9f8bbcd197c8d14832fc1ab1fbe4d4111a2014d.tar.xz
sl0ppij-a9f8bbcd197c8d14832fc1ab1fbe4d4111a2014d.zip
feat(ux): improve multiple select (#4221)
* intercept/clear-intercept key APIs * allow opening a pinned unfocused floating pane * rework plugin * improve some apis * fix tests * tests for pane groups * more exact placement and tests * plugin command permission and cleanup * improve some multiselect ux * improve plugin ui * remove old status indicator * allow moving plugin out of the way * style(fmt): rustfmt * update plugins * remove old keybinding * cleanups * fix: only rename pane if needed * changelog and some cleanups * style(fmt): rustfmt
Diffstat (limited to 'zellij-server/src/plugins/mod.rs')
-rw-r--r--zellij-server/src/plugins/mod.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/zellij-server/src/plugins/mod.rs b/zellij-server/src/plugins/mod.rs
index d7cb07d2..ec13df38 100644
--- a/zellij-server/src/plugins/mod.rs
+++ b/zellij-server/src/plugins/mod.rs
@@ -25,8 +25,8 @@ use wasm_bridge::WasmBridge;
use async_std::{channel, future::timeout, task};
use zellij_utils::{
data::{
- ClientInfo, Event, EventType, InputMode, MessageToPlugin, PermissionStatus, PermissionType,
- PipeMessage, PipeSource, PluginCapabilities,
+ ClientInfo, Event, EventType, FloatingPaneCoordinates, InputMode, MessageToPlugin,
+ PermissionStatus, PermissionType, PipeMessage, PipeSource, PluginCapabilities,
},
errors::{prelude::*, ContextType, PluginContext},
input::{
@@ -55,6 +55,8 @@ pub enum PluginInstruction {
Size,
Option<PathBuf>, // cwd
bool, // skip cache
+ Option<bool>, // should focus plugin
+ Option<FloatingPaneCoordinates>,
),
LoadBackgroundPlugin(RunPluginOrAlias, ClientId),
Update(Vec<(Option<PluginId>, Option<ClientId>, Event)>), // Focused plugin / broadcast, client_id, event data
@@ -281,6 +283,8 @@ pub(crate) fn plugin_thread_main(
size,
cwd,
skip_cache,
+ should_focus_plugin,
+ floating_pane_coordinates,
) => {
run_plugin_or_alias.populate_run_plugin_if_needed(&plugin_aliases);
let cwd = run_plugin_or_alias.get_initial_cwd().or(cwd);
@@ -306,6 +310,8 @@ pub(crate) fn plugin_thread_main(
pane_id_to_replace,
cwd,
start_suppressed,
+ floating_pane_coordinates,
+ should_focus_plugin,
Some(client_id),
)));
},
@@ -378,6 +384,8 @@ pub(crate) fn plugin_thread_main(
None,
start_suppressed,
None,
+ None,
+ None,
),
));
},
@@ -1070,7 +1078,8 @@ fn load_background_plugin(
pane_id_to_replace,
cwd,
start_suppressed,
- // None,
+ None,
+ None,
Some(client_id),
)));
},