#compdef zinit #autoload # # Zinit ZSH completion function # Copyright (c) 2016-2020 Sebastian Gniazdowski # Copyright (c) 2016-2023 zdharma-continuum # Homepage: https://github.com/zdharma-continuum/zinit # License: MIT License # # FUNCTION: __zinit_commands [[[ __zinit_commands(){ local -a commands commands=( 'add-fpath:Add plugin folder to $FPATH' 'bindkeys:List of plugin defined key bindings' 'cclear:Clear completions list' 'cd:Go to a plugin or snippet direcorty' 'cdclear:Clear the compdef replay list' 'cdisable:Disable completions' 'cdreplay:Replay compdef list' 'cenable:Enable completions' 'changes:View plugins git log' 'compile:Compile plugin (or all plugins if --all passed)' 'compiled:List of compiled plugins' 'compinit:Refresh installed completions' 'completions:List status of all installed completions' 'create:Generate Zsh plugin boilerplate' 'creinstall:Install completions for plugin' 'csearch:Search for available completions from any plugin' 'cuninstall:Uninstall completions for plugin' 'debug:Functions for debugging Zinit' 'delete:Uninstall a plugin or snippet' 'edit:Edit a plugins or snippet with \$EDITOR' 'env-whitelist:Specify names (also patterns) of parameters to be left unchanged during an unload' 'glance:Look at plugins source' 'help:Usage information' 'load:Load plugin' 'man:Display Zinit'\''s manpage' 'module:Manage binary Zsh module shipped with Zinit' 'plugins:List status of all installed plugins' 'recall:Fetch saved ice modifiers and construct ' 'recently:Show plugins that changed recently' 'report:Show plugins report' 'run:Run a command inside plugins folder' 'self-update:Fetch the newest version of Zinit from GitHub using `git`(1) and recompile' 'snippet:Source a local or remote file' 'snippets:List status of all installed snippets' 'srv:Control a service, command' 'status:Git status for plugin' 'stress:Test plugin for compatibility with set of options' 'times:Display brief statistics for your Zinit installation' 'uncompile:Remove compiled plugin' 'uninstall:Uninstall a formula or cask' 'unload:Unload a plugin or snippet' 'update:Upgrade outdated plugins and snippets using the same options they were originally installed with' 'version:Print the version numbers of Zinit to standard output' 'zstatus:Overall Zinit status' ) _describe -t commands 'zinit commands' commands } # ]]] ### # Commands in the debug context ### _zinit_debug_commands=( 'clear:Clear report of debug tracing session' 'report:Show report of debug tracing session' 'revert:Revert changes detected during debug tracing session' 'start:Start debug tracing session' 'status:Show current state of debug mode' 'stop:Stop debug tracing session' ) # FUNCTION: __zinit_completion_caching_policy [[[ __zinit_completion_caching_policy(){ local -a tmp (( $#tmp )) || return 0 tmp=( $ZINIT[BIN_DIR]/*.git/index(om[1]N) ) [[ -z $tmp || $tmp -nt $1 ]] } # ]]] # FUNCTION: __zinit_installed [[[ __zinit_installed() { _alternative \ 'plugins:installed:__zinit_installed_plugins' \ 'snippets:installed:__zinit_installed_snippets' } # ]]] # FUNCTION: __zinit_installed_plugins [[[ __zinit_installed_plugins(){ # [[ -prefix '-' ]] && return 0 typeset -a list local expl list=( "${ZINIT[PLUGINS_DIR]}"/*(N:t) ) list=( "${list[@]//---//}" ) list=( "${list[@]:#_local/zinit}" ) list=( "${list[@]:#custom}" ) _wanted list expl 'plugins' compadd -a - list } # ]]] # FUNCTION: __zinit_installed_snippets [[[ __zinit_installed_snippets(){ # [[ -prefix '-' ]] && return 0 typeset -a snippets local expl snippets=( "${ZINIT[SNIPPETS_DIR]}"/**/._zinit(D/:h) ) snippets=( ${(Q)snippets[@]#${ZINIT[SNIPPETS_DIR]}/} ) # formulae=( ${(qq)formulae[@]/(#b)(http|https|ftp|ftps|scp)--/${match[1]}://} ) # formulae=( ${formulae[@]/--//} ) # _wanted snippets expl 'snippets' compadd -a - snippets } # ]]] # FUNCTION: __zinit_list_aliases [[[ __zinit_list_aliases(){ local -a aliases aliases=( ls list uninstall delete ) builtin print -- "$aliases" } # ]]] # FUNCTION: _zinit_add_fpath [[[ _zinit_add_fpath(){ _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' && ret=0 } # ]]] # FUNCTION: _zinit_bindkeys [[[ _zinit_bindkeys(){ _message 'Hit enter to list the defined key bindings replay' && ret=0 } # ]]] # FUNCTION: _zinit_cclear [[[ _zinit_cclear(){ _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-q --quiet)'{-q,--quiet}'[Turn off messages from the operation]' \ && ret=0 } # ]]] # FUNCTION: _zinit_cd [[[ _zinit_cd(){ _arguments - plugin '1::plugin:__zinit_installed_plugins' && ret=0 } # ]]] # FUNCTION: _zinit_cdclear [[[ _zinit_cdclear(){ _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-q --quiet)'{-q,--quiet}'[Turn off messages from the operation]' \ && ret=0 } # ]]] # FUNCTION: _zinit_cdisable [[[ _zinit_cdisable(){ _message 'Press enter to disable completions' && ret=0 } # ]]] # FUNCTION: _zinit_cdlist [[[ _zinit_cdlist(){ _message 'List of compdef replays' && ret=0 } # ]]] # FUNCTION: _zinit_cdreplay [[[ _zinit_cdreplay(){ _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-q --quiet)'{-q,--quiet}'[Turn off messages from the operation]' \ && ret=0 } # ]]] # FUNCTION: _zinit_cenable [[[ _zinit_cenable(){ _message 'Hit enter to enable completions' && ret=0 } # ]]] # FUNCTION: _zinit_changes [[[ _zinit_changes(){ _message 'View git log of a plugin' && ret=0 } # ]]] # FUNCTION: _zinit_compiled [[[ _zinit_compiled(){ _message 'Hit enter to get list of compiled plugins and snippets' } # ]]] # FUNCTION: _zinit_compinit [[[ _zinit_compinit(){ _message "Refresh completions" && ret=0 } # ]]] # FUNCTION: _zinit_completions [[[ _zinit_completions(){ _message "Display a list of completions" && ret=0 } # ]]] # FUNCTION: _zinit_create [[[ _zinit_compile(){ _arguments \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-q --quiet)'{-q,--quiet}'[Make some output more quiet]' \ + '(operation)' \ '(-a --all)'{-a,--all}'[Compile all plugins]' \ '*::installed:__zinit_installed' \ && ret=0 } # ]]] # FUNCTION: _zinit_create [[[ _zinit_create(){ _arguments \ '1:Plugin Name' && ret=0 } # ]]] # FUNCTION: _zinit_creinstall [[[ _zinit_creinstall(){ _arguments - plugin '1::plugin:__zinit_installed_plugins' && ret=0 } # ]]] # FUNCTION: _zinit_csearch [[[ _zinit_csearch(){ ret=0 } # ]]] # FUNCTION: _zinit_cunistall [[[ _zinit_cunistall(){ _arguments - installed '*::installed:__zinit_installed' && ret=0 } # ]]] # FUNCTION: _zinit_delete [[[ _zinit_delete(){ _arguments \ {-d,--debug}'[Enable xtrace]' \ {-h,--help}'[Show this help message]' \ {-q,--quiet}'[Make some output more quiet]' \ {-y,--yes}'[Automatically confirm any yes/no prompts]' \ + '(operation)' \ '*::installed:__zinit_installed' \ {-a,--all}'[Delete all plugins and snippets]' \ {-c,--clean}'[Delete only the currently-not loaded plugins and snippets]' \ && ret=0 } # ]]] _zinit_debug(){ _arguments \ '1: :_zinit_debug_cmds' } # ]]] # FUNCTION: _zinit_edit [[[ _zinit_edit(){ _arguments \ - installed '*::plugin:__zinit_installed_plugins' \ - snippet '*::snippet:__zinit_installed_snippets' && ret=0 } # ]]] # FUNCTION: _zinit_env_whitelist [[[ _zinit_env_whitelist(){ _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-v --verbose)'{-v,--verbose}'[Make some output more verbose]' \ && ret=0 } # ]]] # FUNCTION: _zinit_glance [[[ _zinit_glance(){ _arguments - installed '1:installed:__zinit_installed' && ret=0 } # ]]] # FUNCTION: _zinit_list [[[ _zinit_list(){ _message 'Hit enter to list the defined key bindings replay' && ret=0 } # ]]] # FUNCTION: _zinit_loaded [[[ _zinit_loaded(){ _message 'Hit enter to list the defined key bindings replay' && ret=0 } # ]]] # FUNCTION: _zinit_man [[[ _zinit_man(){ _message "Hit enter to view the Zinit man page" && ret=0 } # ]]] # FUNCTION: _zinit_module [[[ _zinit_module(){ _arguments \ - subcommand '*::subcommand:(build help info)' && ret=0 } # ]]] # FUNCTION: _zinit_recall [[[ _zinit_recall(){ _message 'Hit enter to list the defined key bindings replay' && ret=0 } # ]]] # FUNCTION: _zinit_recently [[[ _zinit_recently(){ ret=0 } # ]]] # FUNCTION: _zinit_report [[[ _zinit_report(){ _message 'Hit enter to list the defined key bindings replay' && ret=0 } # ]]] # FUNCTION: _zinit_run [[[ _zinit_run(){ _arguments \ - installed '1:installed:__zinit_installed' \ '2:command to run:' && ret=0 } # ]]] # FUNCTION: _zinit_self_update [[[ _zinit_self_update(){ _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-n --no-pager)'{-n,--no-pager}'[Disable the use of the pager]' \ '(-q --quiet)'{-q,--quiet}'[Turn off messages from the operation]' \ && ret=0 } # ]]] # FUNCTION: _zinit_snippet [[[ _zinit_snippet(){ _arguments -A \ '(-c --command)'{-c,--command}'[Load the snippet as a command (i.e., make executable and apend to $PATH])' \ '(-f --force)'{-f,--force}'[Force new download of the snippet file]' \ '(-h --help)'{-h,--help}'[Show this help message]' _arguments - snippet '*::snippet:__zinit_installed_snippets' && ret=0 } # ]]] # FUNCTION: _zinit_status [[[ _zinit_status(){ _message 'Display current status of Zinit' && ret=0 } # ]]] # FUNCTION: _zinit_stress [[[ _zinit_stress(){ _message 'Stress' && ret=0 } # ]]] # FUNCTION: _zinit_times [[[ _zinit_times(){ _arguments \ '--help[Show this help message]' \ + '(operation)' \ '(-a --all)'{-a,--all}'[show both load times and loading moments]' \ '(-m --moments)'{-m,--moments}'[Display loading moments]' \ '(-s --seconds)'{-s,--seconds}'[Load times displayed in seconds]' \ && ret=0 } # ]]] # FUNCTION: _zinit_uncompile [[[ _zinit_uncompile(){ _arguments \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-q --quiet)'{-q,--quiet}'[Make some output more quiet]' \ + '(operation)' \ '(-a --all)'{-a,--all}'[Uncompile all plugins]' \ '*::installed:__zinit_installed' \ && ret=0 } # ]]] # FUNCTION: _zinit_unload [[[ _zinit_unload(){ _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-q --quiet)'{-q,--quiet}'[Turn off messages from the operation]' \ - installed '*:installed:__zinit_installed' } # ]]] # FUNCTION: _zinit_update [[[ _zinit_update(){ _arguments \ '(-h --help)'{-h,--help}'[Show this help message]' \ '(-n --no-pager)'{-n,--no-pager}'[Disable the use of the pager]' \ '(-q --quiet)'{-q,--quiet}'[Turn off almost-all messages from the update operation FOR the objects which don'\''t have any new version available]' \ '(-r --reset)'{-r,--reset}'[Reset the repository before updating (or remove the files for single-file snippets and gh-r plugins)]' \ '(-s --snippets)'{-s,--snippets}'[Update only snippets (i.e.: skip updating plugins)]' \ '(-u --urge)'{-u,--urge}'[Cause all the hooks like: atpull'\'\'', cp'\'\'', etc. to execute even when there aren'\''t any new commits / any new version of the gh-r file / etc.… available for download↔ simulate a non-empty update]' \ '(-v --verbose)'{-v,--verbose}'[Turn on more messages from the operation]' \ - set1 \ '(-p --parallel)'{-p,--parallel}'[Turn on concurrent, multi-thread update (of all objects)]' \ '(-a --all)'{-a,--all}'[Update all plugins and snippets]' \ - set2 \ '1:installed:__zinit_installed' } # ]]] # FUNCTION: _zunit_load [[[ _zinit_load() { _message 'Hit enter to list the defined key bindings replay' && ret=0 } # ]]] # FUNCTION: _zinit [[[ _zinit(){ local curcontext="$curcontext" state state_descr line expl local tmp ret=1 _arguments -A \ '(-h --help)'{-h,--help}'[Show this help message]' _arguments -C \ "1: :->cmds" \ "*::arg:->args" case "$state" in cmds) __zinit_commands && return 0 ;; args) local cmd="${line[1]}" curcontext="${curcontext%:*}-${cmd}:${curcontext##*:}" local completion_func="_zinit_${cmd//-/_}" _call_function ret "${completion_func}" && return ret _message "a completion function is not defined for command or alias: ${cmd}" return 1 ;; esac } # ]]] (( $+functions[_zinit_debug_cmds] )) || _zinit_debug_cmds() { _describe -t commands 'commands' _zinit_debug_commands "$@" } _zinit "$@" #vim: filetype=zsh foldmarker=[[[,]]] foldmethod=marker shiftwidth=2 softtabstop=2 tabstop=2: