summaryrefslogtreecommitdiff
path: root/fish/functions/fish_jj_prompt.fish
diff options
context:
space:
mode:
Diffstat (limited to 'fish/functions/fish_jj_prompt.fish')
-rw-r--r--fish/functions/fish_jj_prompt.fish39
1 files changed, 39 insertions, 0 deletions
diff --git a/fish/functions/fish_jj_prompt.fish b/fish/functions/fish_jj_prompt.fish
new file mode 100644
index 0000000..7ab024e
--- /dev/null
+++ b/fish/functions/fish_jj_prompt.fish
@@ -0,0 +1,39 @@
+function fish_jj_prompt --description 'Write out the jj prompt'
+ if not command -sq jj
+ return 1
+ end
+
+ if not jj root --quiet &>/dev/null
+ return 1
+ end
+
+ jj log --ignore-working-copy --no-graph --color always -r @ -T '
+ surround(
+ " (",
+ ")",
+ separate(
+ " ",
+ bookmarks.join(", "),
+ if(empty, "∅"),
+ coalesce(
+ surround(
+ "\"",
+ "\"",
+ if(
+ description.first_line().substr(0, 12).starts_with(description.first_line()),
+ description.first_line().substr(0, 12),
+ description.first_line().substr(0, 11) ++ "…"
+ )
+ ),
+ label("description placeholder", "?")
+ ),
+ "|",
+ change_id.shortest(),
+ commit_id.shortest(),
+ if(conflict, "X"),
+ if(divergent, "☇"),
+ if(hidden, "⬚"),
+ )
+ )
+ ' 2>/dev/null
+end