Copy the folder ./elixir_mix/
to ~/.oh-my-zsh/custom/plugins/
and add _elixir_mix
to your .zshrc
plugins list. e.g.
Example:
plugins=(
autojump
git
elixir_mix
)
#compdef mix | |
#autoload | |
# Elixir mix zsh completion | |
mix_help=$(mix --help \ | |
| tr -s ' ' \ | |
| sed -e 's/ # /:/' \ | |
-e 's/^mix //' \ | |
-e 's/^mix:.*//' \ | |
-e 's/^iex.*//' ) | |
declare -a all_tasks | |
all_tasks=($(echo $mix_help | sed 's/:.*//')) | |
local -a _1st_arguments | |
IFS=$'\n' _1st_arguments=($(mix_help)) | |
_1st_arguments+=( | |
'--help:Describe available tasks' | |
'--version:Prints the Elixir version information' | |
) | |
__task_list () | |
{ | |
local expl | |
_wanted tasks expl 'help' compadd $all_tasks | |
} | |
local expl | |
local curcontext="$curcontext" state line | |
typeset -A opt_args | |
_arguments -C \ | |
':command:->command' \ | |
'*::options:->options' | |
case $state in | |
(command) | |
_describe -t commands "mix subcommand" _1st_arguments | |
return | |
;; | |
(options) | |
case $line[1] in | |
(help) | |
_arguments ':feature:__task_list' | |
;; | |
(test) | |
_files | |
;; | |
esac | |
;; | |
esac |
IFS=$'\n' _1st_arguments=($(mix_help))
should be
IFS=$'\n' _1st_arguments=($(echo $mix_help))
@jasonm23
Would it be possible that you create a pull request for https://github.com/zsh-users/zsh-completions too?
tyvm
@eagle-te feel free to use it, I haven't touched Elixir or Mix in 2 years so I think I'm not the right person to do this right now.
If you'd feel better if I attached and explicit Apache or MIT licence on this Gist I'm happy to do it.
Thanks,
no need to attach an extra licence.
I'll create a PR and credit you anyhow.
Cheers
This wasn't working for me so I fixed it in this gist: https://gist.github.com/justgage/1641a2d04a2e59169bac7902886d44c4
Added as a pull request on oh-my-zsh (replaces the hardcoded completion task list in the current mix oh-my-zsh plugin.)