fix(resurrection): plugin alias resurrection (#3673)
* fix(resurrection): make sure plugin aliases are serialized properly * style(fmt): rustfmt
This commit is contained in:
parent
3e40d891b8
commit
d84cdec730
3 changed files with 35 additions and 5 deletions
|
|
@ -552,21 +552,33 @@ pub(crate) fn plugin_thread_main(
|
||||||
)?;
|
)?;
|
||||||
},
|
},
|
||||||
PluginInstruction::DumpLayout(mut session_layout_metadata, client_id) => {
|
PluginInstruction::DumpLayout(mut session_layout_metadata, client_id) => {
|
||||||
populate_session_layout_metadata(&mut session_layout_metadata, &wasm_bridge);
|
populate_session_layout_metadata(
|
||||||
|
&mut session_layout_metadata,
|
||||||
|
&wasm_bridge,
|
||||||
|
&plugin_aliases,
|
||||||
|
);
|
||||||
drop(bus.senders.send_to_pty(PtyInstruction::DumpLayout(
|
drop(bus.senders.send_to_pty(PtyInstruction::DumpLayout(
|
||||||
session_layout_metadata,
|
session_layout_metadata,
|
||||||
client_id,
|
client_id,
|
||||||
)));
|
)));
|
||||||
},
|
},
|
||||||
PluginInstruction::ListClientsMetadata(mut session_layout_metadata, client_id) => {
|
PluginInstruction::ListClientsMetadata(mut session_layout_metadata, client_id) => {
|
||||||
populate_session_layout_metadata(&mut session_layout_metadata, &wasm_bridge);
|
populate_session_layout_metadata(
|
||||||
|
&mut session_layout_metadata,
|
||||||
|
&wasm_bridge,
|
||||||
|
&plugin_aliases,
|
||||||
|
);
|
||||||
drop(bus.senders.send_to_pty(PtyInstruction::ListClientsMetadata(
|
drop(bus.senders.send_to_pty(PtyInstruction::ListClientsMetadata(
|
||||||
session_layout_metadata,
|
session_layout_metadata,
|
||||||
client_id,
|
client_id,
|
||||||
)));
|
)));
|
||||||
},
|
},
|
||||||
PluginInstruction::DumpLayoutToPlugin(mut session_layout_metadata, plugin_id) => {
|
PluginInstruction::DumpLayoutToPlugin(mut session_layout_metadata, plugin_id) => {
|
||||||
populate_session_layout_metadata(&mut session_layout_metadata, &wasm_bridge);
|
populate_session_layout_metadata(
|
||||||
|
&mut session_layout_metadata,
|
||||||
|
&wasm_bridge,
|
||||||
|
&plugin_aliases,
|
||||||
|
);
|
||||||
match session_serialization::serialize_session_layout(
|
match session_serialization::serialize_session_layout(
|
||||||
session_layout_metadata.into(),
|
session_layout_metadata.into(),
|
||||||
) {
|
) {
|
||||||
|
|
@ -592,7 +604,11 @@ pub(crate) fn plugin_thread_main(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
PluginInstruction::LogLayoutToHd(mut session_layout_metadata) => {
|
PluginInstruction::LogLayoutToHd(mut session_layout_metadata) => {
|
||||||
populate_session_layout_metadata(&mut session_layout_metadata, &wasm_bridge);
|
populate_session_layout_metadata(
|
||||||
|
&mut session_layout_metadata,
|
||||||
|
&wasm_bridge,
|
||||||
|
&plugin_aliases,
|
||||||
|
);
|
||||||
drop(
|
drop(
|
||||||
bus.senders
|
bus.senders
|
||||||
.send_to_pty(PtyInstruction::LogLayoutToHd(session_layout_metadata)),
|
.send_to_pty(PtyInstruction::LogLayoutToHd(session_layout_metadata)),
|
||||||
|
|
@ -871,6 +887,7 @@ pub(crate) fn plugin_thread_main(
|
||||||
fn populate_session_layout_metadata(
|
fn populate_session_layout_metadata(
|
||||||
session_layout_metadata: &mut SessionLayoutMetadata,
|
session_layout_metadata: &mut SessionLayoutMetadata,
|
||||||
wasm_bridge: &WasmBridge,
|
wasm_bridge: &WasmBridge,
|
||||||
|
plugin_aliases: &PluginAliases,
|
||||||
) {
|
) {
|
||||||
let plugin_ids = session_layout_metadata.all_plugin_ids();
|
let plugin_ids = session_layout_metadata.all_plugin_ids();
|
||||||
let mut plugin_ids_to_cmds: HashMap<u32, RunPlugin> = HashMap::new();
|
let mut plugin_ids_to_cmds: HashMap<u32, RunPlugin> = HashMap::new();
|
||||||
|
|
@ -884,6 +901,7 @@ fn populate_session_layout_metadata(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
session_layout_metadata.update_plugin_cmds(plugin_ids_to_cmds);
|
session_layout_metadata.update_plugin_cmds(plugin_ids_to_cmds);
|
||||||
|
session_layout_metadata.update_plugin_aliases_in_default_layout(plugin_aliases);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn pipe_to_all_plugins(
|
fn pipe_to_all_plugins(
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ use zellij_utils::pane_size::PaneGeom;
|
||||||
use zellij_utils::{
|
use zellij_utils::{
|
||||||
input::command::RunCommand,
|
input::command::RunCommand,
|
||||||
input::layout::{Layout, Run, RunPlugin, RunPluginOrAlias},
|
input::layout::{Layout, Run, RunPlugin, RunPluginOrAlias},
|
||||||
|
input::plugins::PluginAliases,
|
||||||
session_serialization::{
|
session_serialization::{
|
||||||
extract_command_and_args, extract_edit_and_line_number, extract_plugin_and_config,
|
extract_command_and_args, extract_edit_and_line_number, extract_plugin_and_config,
|
||||||
GlobalLayoutManifest, PaneLayoutManifest, TabLayoutManifest,
|
GlobalLayoutManifest, PaneLayoutManifest, TabLayoutManifest,
|
||||||
|
|
@ -278,6 +279,10 @@ impl SessionLayoutMetadata {
|
||||||
});
|
});
|
||||||
self.default_editor = Some(default_editor);
|
self.default_editor = Some(default_editor);
|
||||||
}
|
}
|
||||||
|
pub fn update_plugin_aliases_in_default_layout(&mut self, plugin_aliases: &PluginAliases) {
|
||||||
|
self.default_layout
|
||||||
|
.populate_plugin_aliases_in_layout(&plugin_aliases);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Into<GlobalLayoutManifest> for SessionLayoutMetadata {
|
impl Into<GlobalLayoutManifest> for SessionLayoutMetadata {
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,14 @@ pub fn extract_plugin_and_config(
|
||||||
Some(run_plugin.configuration.clone()),
|
Some(run_plugin.configuration.clone()),
|
||||||
),
|
),
|
||||||
RunPluginOrAlias::Alias(plugin_alias) => {
|
RunPluginOrAlias::Alias(plugin_alias) => {
|
||||||
let name = plugin_alias.name.clone();
|
// in this case, the aliases should already be populated by the RunPlugins they
|
||||||
|
// translate to - if they are not, the alias either does not exist or this is some
|
||||||
|
// sort of bug
|
||||||
|
let name = plugin_alias
|
||||||
|
.run_plugin
|
||||||
|
.as_ref()
|
||||||
|
.map(|run_plugin| run_plugin.location.display().to_string())
|
||||||
|
.unwrap_or_else(|| plugin_alias.name.clone());
|
||||||
let configuration = plugin_alias
|
let configuration = plugin_alias
|
||||||
.run_plugin
|
.run_plugin
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue