Skip to content

Instantly share code, notes, and snippets.

@justgage

justgage/README.md

Forked from jasonm23/README.md
Last active Sep 28, 2020
Embed
What would you like to do?
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