diff options
-rw-r--r-- | Makefile.am | 10 | ||||
-rw-r--r-- | completion/_flatpak | 27 |
2 files changed, 34 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am index 5f99e152..7d6fddac 100644 --- a/Makefile.am +++ b/Makefile.am @@ -115,9 +115,13 @@ if PRIV_MODE_SETUID endif # !PRIV_MODE_SETUID endif # !WITH_SYSTEM_BWRAP -completiondir = $(datadir)/bash-completion/completions -completion_DATA = completion/flatpak -EXTRA_DIST += $(completion_DATA) +bashcompletiondir = $(datadir)/bash-completion/completions +bashcompletion_DATA = completion/flatpak +EXTRA_DIST += $(bashcompletion_DATA) + +zshcompletiondir = $(datadir)/zsh/site-functions +zshcompletion_DATA = completion/_flatpak +EXTRA_DIST += $(zshcompletion_DATA) profiledir = $(PROFILE_DIR) profile_DATA = flatpak.sh diff --git a/completion/_flatpak b/completion/_flatpak new file mode 100644 index 00000000..e2995a2c --- /dev/null +++ b/completion/_flatpak @@ -0,0 +1,27 @@ +#compdef flatpak + +emulate -L zsh + +local index +(( index = ${(c)#words[0,CURRENT]} + $#PREFIX + 1 )) + + +local resp=($(flatpak complete "$words" $index "$words[CURRENT]")) + +_description options opt_expl option +_description arguments arg_expl argument + +local match +for match in $resp; do + case $match in + __FLATPAK_FILE) _files;; + __FLATPAK_BUNDLE_FILE) _path_files -g '*.flatpak';; + __FLATPAK_BUNDLE_OR_REF_FILE) _path_files -g '*.flatpak(|ref)';; + __FLATPAK_DIR) _path_files -/;; + -*=) compadd $opt_expl[@] -S "" -- $match;; + -*) compadd $opt_expl[@] -- $match;; + *) compadd $arg_expl[@] $match;; + esac +done + +# vim: ft=zsh |