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) => {
|
||||
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(
|
||||
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(
|
||||
session_layout_metadata,
|
||||
client_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(
|
||||
session_layout_metadata.into(),
|
||||
) {
|
||||
|
|
@ -592,7 +604,11 @@ pub(crate) fn plugin_thread_main(
|
|||
}
|
||||
},
|
||||
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(
|
||||
bus.senders
|
||||
.send_to_pty(PtyInstruction::LogLayoutToHd(session_layout_metadata)),
|
||||
|
|
@ -871,6 +887,7 @@ pub(crate) fn plugin_thread_main(
|
|||
fn populate_session_layout_metadata(
|
||||
session_layout_metadata: &mut SessionLayoutMetadata,
|
||||
wasm_bridge: &WasmBridge,
|
||||
plugin_aliases: &PluginAliases,
|
||||
) {
|
||||
let plugin_ids = session_layout_metadata.all_plugin_ids();
|
||||
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_aliases_in_default_layout(plugin_aliases);
|
||||
}
|
||||
|
||||
fn pipe_to_all_plugins(
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ use zellij_utils::pane_size::PaneGeom;
|
|||
use zellij_utils::{
|
||||
input::command::RunCommand,
|
||||
input::layout::{Layout, Run, RunPlugin, RunPluginOrAlias},
|
||||
input::plugins::PluginAliases,
|
||||
session_serialization::{
|
||||
extract_command_and_args, extract_edit_and_line_number, extract_plugin_and_config,
|
||||
GlobalLayoutManifest, PaneLayoutManifest, TabLayoutManifest,
|
||||
|
|
@ -278,6 +279,10 @@ impl SessionLayoutMetadata {
|
|||
});
|
||||
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 {
|
||||
|
|
|
|||
|
|
@ -234,7 +234,14 @@ pub fn extract_plugin_and_config(
|
|||
Some(run_plugin.configuration.clone()),
|
||||
),
|
||||
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
|
||||
.run_plugin
|
||||
.as_ref()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue