diff options
| author | Aram Drevekenin <aram@poor.dev> | 2024-06-14 17:11:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-14 17:11:02 +0200 |
| commit | 1f0ae94f01647eab66cabbd11434ecae1fac8da3 (patch) | |
| tree | b568f9ffc2064f4bdfd9c02c0aa5e581a3d1e750 /zellij-utils/src/plugin_api | |
| parent | docs(readme): add name origin section (#3391) (diff) | |
| download | sl0ppij-1f0ae94f01647eab66cabbd11434ecae1fac8da3.tar.gz sl0ppij-1f0ae94f01647eab66cabbd11434ecae1fac8da3.tar.xz sl0ppij-1f0ae94f01647eab66cabbd11434ecae1fac8da3.zip | |
feat(plugins): rebind keys at runtime (#3422)
* refactor(server): interpret keys on server so they can be rebound
* feat(plugins): allow rebinding keys at runtime
* various cleanups
* add tests
* style(fmt): rustfmt
* fix(tests): address (some) e2e test flakiness
* style(fmt): rustfmt
Diffstat (limited to 'zellij-utils/src/plugin_api')
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.proto | 2 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.rs | 10 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_permission.proto | 1 | ||||
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_permission.rs | 2 |
4 files changed, 15 insertions, 0 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.proto b/zellij-utils/src/plugin_api/plugin_command.proto index 718e8b4c..14ab3045 100644 --- a/zellij-utils/src/plugin_api/plugin_command.proto +++ b/zellij-utils/src/plugin_api/plugin_command.proto @@ -98,6 +98,7 @@ enum CommandName { DumpSessionLayout = 84; CloseSelf = 85; NewTabsWithLayoutInfo = 86; + RebindKeys = 87; } message PluginCommand { @@ -155,6 +156,7 @@ message PluginCommand { KillSessionsPayload kill_sessions_payload = 60; string scan_host_folder_payload = 61; NewTabsWithLayoutInfoPayload new_tabs_with_layout_info_payload = 62; + string rebind_keys_payload = 63; } } diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs index 771b6151..aeafc1d4 100644 --- a/zellij-utils/src/plugin_api/plugin_command.rs +++ b/zellij-utils/src/plugin_api/plugin_command.rs @@ -888,6 +888,12 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand { }, _ => Err("Mismatched payload for NewTabsWithLayoutInfo"), }, + Some(CommandName::RebindKeys) => match protobuf_plugin_command.payload { + Some(Payload::RebindKeysPayload(rebind_keys_payload)) => { + Ok(PluginCommand::RebindKeys(rebind_keys_payload)) + }, + _ => Err("Mismatched payload for RebindKeys"), + }, None => Err("Unrecognized plugin command"), } } @@ -1420,6 +1426,10 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand { )), }) }, + PluginCommand::RebindKeys(rebind_keys_payload) => Ok(ProtobufPluginCommand { + name: CommandName::RebindKeys as i32, + payload: Some(Payload::RebindKeysPayload(rebind_keys_payload)), + }), } } } diff --git a/zellij-utils/src/plugin_api/plugin_permission.proto b/zellij-utils/src/plugin_api/plugin_permission.proto index 761384c1..cc1fda6a 100644 --- a/zellij-utils/src/plugin_api/plugin_permission.proto +++ b/zellij-utils/src/plugin_api/plugin_permission.proto @@ -12,4 +12,5 @@ enum PermissionType { WebAccess = 6; ReadCliPipes = 7; MessageAndLaunchOtherPlugins = 8; + RebindKeys = 9; } diff --git a/zellij-utils/src/plugin_api/plugin_permission.rs b/zellij-utils/src/plugin_api/plugin_permission.rs index 4f258ac2..968de917 100644 --- a/zellij-utils/src/plugin_api/plugin_permission.rs +++ b/zellij-utils/src/plugin_api/plugin_permission.rs @@ -24,6 +24,7 @@ impl TryFrom<ProtobufPermissionType> for PermissionType { ProtobufPermissionType::MessageAndLaunchOtherPlugins => { Ok(PermissionType::MessageAndLaunchOtherPlugins) }, + ProtobufPermissionType::RebindKeys => Ok(PermissionType::RebindKeys), } } } @@ -49,6 +50,7 @@ impl TryFrom<PermissionType> for ProtobufPermissionType { PermissionType::MessageAndLaunchOtherPlugins => { Ok(ProtobufPermissionType::MessageAndLaunchOtherPlugins) }, + PermissionType::RebindKeys => Ok(ProtobufPermissionType::RebindKeys), } } } |
