diff options
Diffstat (limited to 'Completion/Zsh/Type')
-rw-r--r-- | Completion/Zsh/Type/.distfiles | 1 | ||||
-rw-r--r-- | Completion/Zsh/Type/_aliases | 4 | ||||
-rw-r--r-- | Completion/Zsh/Type/_command_names | 1 | ||||
-rw-r--r-- | Completion/Zsh/Type/_suffix_alias_files | 21 |
4 files changed, 26 insertions, 1 deletions
diff --git a/Completion/Zsh/Type/.distfiles b/Completion/Zsh/Type/.distfiles index 652148b61..f8f7cc905 100644 --- a/Completion/Zsh/Type/.distfiles +++ b/Completion/Zsh/Type/.distfiles @@ -4,4 +4,5 @@ _aliases _file_descriptors _jobs_fg _options_unset _arrays _functions _limits _parameters _command_names _jobs _options _vars _directory_stack _jobs_bg _options_set +_suffix_alias_files ' diff --git a/Completion/Zsh/Type/_aliases b/Completion/Zsh/Type/_aliases index 30e091d98..6506ece13 100644 --- a/Completion/Zsh/Type/_aliases +++ b/Completion/Zsh/Type/_aliases @@ -4,14 +4,16 @@ local expl sel args opts zparseopts -E -D s:=sel -[[ -z $sel ]] && sel=rg +[[ -z $sel ]] && sel=rgs opts=( "$@" ) args=() [[ $sel = *r* ]] && args=( $args 'aliases:regular alias:compadd -k aliases' ) [[ $sel = *g* ]] && args=( $args 'global-aliases:global alias:compadd -k galiases' ) +[[ $sel = *s* ]] && args=( $args 'suffix-aliases:suffix alias:compadd -k saliases' ) [[ $sel = *R* ]] && args=( $args 'disabled-aliases:disabled regular alias:compadd -k dis_aliases' ) [[ $sel = *G* ]] && args=( $args 'disabled-global-aliases:disabled global alias:compadd -k dis_galiases' ) +[[ $sel = *S* ]] && args=( $args 'disabled-suffix-aliases:disabled suffix alias:compadd -k dis_saliases' ) _alternative -O opts $args diff --git a/Completion/Zsh/Type/_command_names b/Completion/Zsh/Type/_command_names index 613f1fe59..a8bf7b481 100644 --- a/Completion/Zsh/Type/_command_names +++ b/Completion/Zsh/Type/_command_names @@ -24,6 +24,7 @@ else 'builtins:builtin command:compadd -k builtins' 'functions:shell function:compadd -k functions' 'aliases:alias:compadd -k aliases' + 'suffix-aliases:suffix alias:_suffix_alias_files' 'reserved-words:reserved word:compadd -k reswords' 'jobs:: _jobs -t' 'parameters:: _parameters -g "^*readonly*" -qS= -r "\n\t\- =["' diff --git a/Completion/Zsh/Type/_suffix_alias_files b/Completion/Zsh/Type/_suffix_alias_files new file mode 100644 index 000000000..1c2c8ebb5 --- /dev/null +++ b/Completion/Zsh/Type/_suffix_alias_files @@ -0,0 +1,21 @@ +#autoload + +# Complete files for which a suffix alias exists. + +local expl pat + +(( ${#saliases} )) || return 1 + +if (( ${#saliases} == 1 )); then + pat="*.${(kq)saliases}" +else + local -a tmpa + # This is so we can quote the alias names against expansion + # without quoting the `|' which needs to be active in the pattern + # --- remember that an alias name can be pretty much anything. + tmpa=(${(kq)saliases}) + pat="*.(${(kj.|.)tmpa})" +fi + +# _wanted is called for us by _command_names +_path_files "$@" -g $pat |