diff --git a/scripts/cheat.zsh b/scripts/cheat.zsh new file mode 100644 index 0000000..5bb71fb --- /dev/null +++ b/scripts/cheat.zsh @@ -0,0 +1,58 @@ +#compdef cheat + +local -a cheats +cheats=() + +_cheat_complete_cheatsheets() +{ + cheats=("${(f)$(cheat -l -t personal | tail -n +2 | cut -d' ' -f1)}") + _describe -t cheats 'cheats' cheats +} + +_cheat_complete_tags() +{ + taglist=("${(f)$(cheat -T)}") + _describe -t taglist 'taglist' taglist +} + +_cheat_complete_paths() +{ + pathlist=("${(f)$(cheat -d | cut -d':' -f1)}") + _describe -t pathlist 'pathlist' pathlist +} + +_cheat() { + + _arguments -C \ + '(--init)--init[Write a default config file to stdout]: :->none' \ + '(-c --colorize)'{-c,--colorize}'[Colorize output]: :->none' \ + '(-d --directories)'{-d,--directories}'[List cheatsheet directories]: :->none' \ + '(-e --edit)'{-e,--edit}'[Edit ]: :->full' \ + '(-l --list)'{-l,--list}'[List cheatsheets]: :->full' \ + '(-p --path)'{-p,--path}'[Return only sheets found on path ]: :->pathlist' \ + '(-r --regex)'{-r,--regex}'[Treat search as a regex]: :->none' \ + '(-s --search)'{-s,--search}'[Search cheatsheets for ]: :->none' \ + '(-t --tag)'{-t,--tag}'[Return only sheets matching ]: :->taglist' \ + '(-T --tags)'{-T,--tags}'[List all tags in use]: :->none' \ + '(-v --version)'{-v,--version}'[Print the version number]: :->none' \ + '(--rm)--rm[Remove (delete) ]: :->full' \ + + case $state in + (none) + ;; + (full) + _cheat_complete_cheatsheets + ;; + (taglist) + _cheat_complete_tags + ;; + (pathlist) + _cheat_complete_paths + ;; + (*) + _cheat_complete_cheatsheets + ;; + esac +} + +_cheat