Skip to content

Instantly share code, notes, and snippets.

@justgage
Forked from jasonm23/README.md
Last active January 30, 2023 20:50
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save justgage/1641a2d04a2e59169bac7902886d44c4 to your computer and use it in GitHub Desktop.
Save justgage/1641a2d04a2e59169bac7902886d44c4 to your computer and use it in GitHub Desktop.
Elixir mix oh-my-zsh completion plugin

Elixir Mix Oh-My-Zsh plugin

This will give you completion when you type mix <tab> inside your project. This was forked to make it work with current versions of Elixir as of Sep 10th 2020.

  • Download the zip file.

  • Copy the folder (and rename it to something sensible) to ~/.oh-my-zsh/custom/plugins/ and add _elixir_mix to your .zshrc plugins list:

plugins=(
  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=($(echo $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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment