Add fish shell completion

This commit is contained in:
gasinvein
2020-03-31 18:16:52 +03:00
parent ca771eb024
commit 620aae77df
2 changed files with 51 additions and 0 deletions

View File

@@ -144,6 +144,10 @@ zshcompletiondir = $(datadir)/zsh/site-functions
zshcompletion_DATA = completion/_flatpak
EXTRA_DIST += $(zshcompletion_DATA)
fishcompletiondir = $(datadir)/fish/vendor_completions.d
fishcompletion_DATA = completion/flatpak.fish
EXTRA_DIST += $(fishcompletion_DATA)
profiledir = $(PROFILE_DIR)
profile_DATA = profile/flatpak.sh
EXTRA_DIST += $(profile_DATA)

47
completion/flatpak.fish Normal file
View File

@@ -0,0 +1,47 @@
function __fish_complete_flatpak
set current_cmd (commandline -p)
set current_position (commandline -C)
set current_token (commandline -ct)
echo "CMD \"$current_cmd\" POS \"$current_position\" TOK \"$current_token\"" >> /tmp/fish-flatpak-debug.txt
command flatpak complete "$current_cmd" "$current_position" "$current_token" | while read fp_sugg
echo "SUG \"$fp_sugg\"" >> /tmp/fish-flatpak-debug.txt
set sugg (string trim -- "$fp_sugg")
switch "$sugg"
case __FLATPAK_FILE
__fish_complete_path "$current_token"
case __FLATPAK_BUNDLE_FILE
__fish_complete_suffix "$current_token" '.flatpak'
case __FLATPAK_BUNDLE_OR_REF_FILE
__fish_complete_suffix "$current_token" '.flatpak'
__fish_complete_suffix "$current_token" '.flatpakref'
case __FLATPAK_DIR
__fish_complete_directories "$current_token"
case '*'
# completing a value for option
if string match -- "--*=" "$current_token"
echo "$current_token$sugg"
else
echo "$sugg"
end
end
end
return
end
function __fish_flatpak_complete_files
if __fish_seen_subcommand_from run build
set pos_args 0
for t in (commandline -co)
if string match --invert -- "-*" "$t"
set pos_args (math "$pos_args+1")
end
end
if test $pos_args -gt 2
return 0
end
end
return 1
end
complete -c flatpak -f -n "not __fish_flatpak_complete_files" -a '(__fish_complete_flatpak)'
complete -c flatpak -n "__fish_flatpak_complete_files" -a '(__fish_complete_flatpak)'