Add a simple fish_jj_prompt

jj is often colocated with Git so the Git prompt also works, but
jj is always in a detached HEAD state, which is atypical for Git.
The jj prompt improves things by showing the revision ID which is
usually more useful than the commit ID.

This prompt is mostly adapted from the defaults for "jj log -r @".

Showing conflicting/empty commits seems useful.
Also perhaps bookmarks and tags, not sure.

The main problem with this prompt is that due to --ignore-working-copy,
the information may be stale.  That will be rectified after every jj
command, so hopefully this doesn't cause issues.
This commit is contained in:
Johannes Altmanninger
2024-11-19 09:43:29 +01:00
parent 837c32f150
commit 0debddc9e5
2 changed files with 16 additions and 1 deletions

View File

@@ -0,0 +1,14 @@
function fish_jj_prompt
jj log 2>/dev/null --no-graph --ignore-working-copy --color=always --revisions @ \
--template '
concat(
" ",
separate(" ",
format_short_change_id_with_hidden_and_divergent_info(self),
bookmarks,
tags,
if(conflict, label("conflict", "×")),
if(empty, label("empty", "(empty)"))
),
)'
end

View File

@@ -1,7 +1,8 @@
function fish_vcs_prompt --description "Print all vcs prompts"
# If a prompt succeeded, we assume that it's printed the correct info.
# This is so we don't try svn if git already worked.
fish_git_prompt $argv
fish_jj_prompt $argv
or fish_git_prompt $argv
or fish_hg_prompt $argv
or fish_fossil_prompt $argv
# The svn prompt is disabled by default because it's quite slow on common svn repositories.