diff options
Diffstat (limited to 'Completion/Zsh')
-rw-r--r-- | Completion/Zsh/Command/_alias | 2 | ||||
-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 |
5 files changed, 27 insertions, 2 deletions
diff --git a/Completion/Zsh/Command/_alias b/Completion/Zsh/Command/_alias index ecc298c73..8feb14a07 100644 --- a/Completion/Zsh/Command/_alias +++ b/Completion/Zsh/Command/_alias @@ -5,6 +5,7 @@ local curcontext="$curcontext" state line suf _arguments -C -s -A "-*" -S \ '-+g[list or define global aliases]' \ '-+r[list or define regular aliases]' \ + '-+s[list or define suffix aliases]' \ '-+m[print aliases matching specified pattern]' \ '-L[print each alias in the form of calls to alias]' \ '*::alias definition:->defn' @@ -18,4 +19,3 @@ if [[ -n "$state" ]]; then _wanted alias expl 'alias definition' _aliases -S "$suf" fi fi - 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 |