diff options
| author | nasso <11479594+nasso@users.noreply.github.com> | 2025-03-03 17:15:43 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-03 17:15:43 +0100 |
| commit | 30e516a3aa47d90b5f507d5ddacb1b9b69567975 (patch) | |
| tree | d053c303123faa354fd190a2141a45f9ef4e35a6 /plugins/jj/jj.plugin.zsh | |
| parent | 6e7ac0544e71c7b777746cb50f70de68c6495b86 (diff) | |
| download | zsh-30e516a3aa47d90b5f507d5ddacb1b9b69567975.tar.gz zsh-30e516a3aa47d90b5f507d5ddacb1b9b69567975.tar.bz2 zsh-30e516a3aa47d90b5f507d5ddacb1b9b69567975.zip | |
feat(jj): add jujutsu plugin (#12292)
Diffstat (limited to 'plugins/jj/jj.plugin.zsh')
| -rw-r--r-- | plugins/jj/jj.plugin.zsh | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/plugins/jj/jj.plugin.zsh b/plugins/jj/jj.plugin.zsh new file mode 100644 index 000000000..9f683923d --- /dev/null +++ b/plugins/jj/jj.plugin.zsh @@ -0,0 +1,53 @@ +# if jj is not found, don't do the rest of the script +if (( ! $+commands[jj] )); then + return +fi + +# If the completion file doesn't exist yet, we need to autoload it and +# bind it to `jj`. Otherwise, compinit will have already done that. +if [[ ! -f "$ZSH_CACHE_DIR/completions/_jj" ]]; then + typeset -g -A _comps + autoload -Uz _jj + _comps[jj]=_jj +fi + +jj util completion zsh >| "$ZSH_CACHE_DIR/completions/_jj" &| + +function __jj_prompt_jj() { + local -a flags + flags=("--no-pager") + if zstyle -t ':omz:plugins:jj' ignore-working-copy; then + flags+=("--ignore-working-copy") + fi + command jj $flags "$@" +} + +# convenience functions for themes +function jj_prompt_template_raw() { + __jj_prompt_jj log --no-graph -r @ -T "$@" 2> /dev/null +} + +function jj_prompt_template() { + local out + out=$(jj_prompt_template_raw "$@") || return 1 + echo "${out:gs/%/%%}" +} + +# Aliases (sorted alphabetically) +alias jjc='jj commit' +alias jjcmsg='jj commit --message' +alias jjd='jj diff' +alias jjdmsg='jj desc --message' +alias jjds='jj desc' +alias jje='jj edit' +alias jjgcl='jj git clone' +alias jjgf='jj git fetch' +alias jjgp='jj git push' +alias jjl='jj log' +alias jjla='jj log -r "all()"' +alias jjn='jj new' +alias jjrb='jj rebase' +alias jjrs='jj restore' +alias jjrt='cd "$(jj root || echo .)"' +alias jjsp='jj split' +alias jjsq='jj squash' |
