summaryrefslogtreecommitdiff
path: root/plugins/jj/jj.plugin.zsh
diff options
context:
space:
mode:
authornasso <11479594+nasso@users.noreply.github.com>2025-03-03 17:15:43 +0100
committerGitHub <noreply@github.com>2025-03-03 17:15:43 +0100
commit30e516a3aa47d90b5f507d5ddacb1b9b69567975 (patch)
treed053c303123faa354fd190a2141a45f9ef4e35a6 /plugins/jj/jj.plugin.zsh
parent6e7ac0544e71c7b777746cb50f70de68c6495b86 (diff)
downloadzsh-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.zsh53
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'