mirror of
https://github.com/zellij-org/zellij.git
synced 2024-11-22 22:26:54 +03:00
add(comp): dynamic completions for fish (#1176)
And infrastructure to make it possible to add more dynamic completions for different shells in the future. eg: ``` zellij attach [completes-active-sessions] zellij kill-session [completes-active-sessions] ``` fixes: #1030
This commit is contained in:
parent
be022e212f
commit
e2ce261210
2
zellij-utils/assets/completions/README.md
Normal file
2
zellij-utils/assets/completions/README.md
Normal file
@ -0,0 +1,2 @@
|
||||
Extra completion files that get appended to the
|
||||
clap output, in order to support dynamic commands.
|
8
zellij-utils/assets/completions/comp.fish
Normal file
8
zellij-utils/assets/completions/comp.fish
Normal file
@ -0,0 +1,8 @@
|
||||
function __fish_complete_sessions
|
||||
zellij list-sessions 2>/dev/null
|
||||
end
|
||||
complete -c zellij -n "__fish_seen_subcommand_from attach" -f -a "(__fish_complete_sessions)" -d "Session"
|
||||
complete -c zellij -n "__fish_seen_subcommand_from a" -f -a "(__fish_complete_sessions)" -d "Session"
|
||||
complete -c zellij -n "__fish_seen_subcommand_from kill-session" -f -a "(__fish_complete_sessions)" -d "Session"
|
||||
complete -c zellij -n "__fish_seen_subcommand_from a" -f -a "(__fish_complete_sessions)" -d "Session"
|
||||
complete -c zellij -n "__fish_seen_subcommand_from setup --generate-completion" -f -a "bash elvish fish zsh powershell" -d "Shell"
|
@ -109,6 +109,12 @@ pub const NO_STATUS_LAYOUT: &[u8] = include_bytes!(concat!(
|
||||
"assets/layouts/disable-status-bar.yaml"
|
||||
));
|
||||
|
||||
pub const FISH_EXTRA_COMPLETION: &[u8] = include_bytes!(concat!(
|
||||
env!("CARGO_MANIFEST_DIR"),
|
||||
"/",
|
||||
"assets/completions/comp.fish"
|
||||
));
|
||||
|
||||
pub fn dump_default_config() -> std::io::Result<()> {
|
||||
dump_asset(DEFAULT_CONFIG)
|
||||
}
|
||||
@ -387,6 +393,17 @@ impl Setup {
|
||||
};
|
||||
let mut out = std::io::stdout();
|
||||
clap_complete::generate(shell, &mut CliArgs::into_app(), "zellij", &mut out);
|
||||
// add shell dependent extra completion
|
||||
match shell {
|
||||
Shell::Bash => {}
|
||||
Shell::Elvish => {}
|
||||
Shell::Fish => {
|
||||
let _ = out.write_all(&FISH_EXTRA_COMPLETION);
|
||||
}
|
||||
Shell::PowerShell => {}
|
||||
Shell::Zsh => {}
|
||||
_ => {}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user