summaryrefslogtreecommitdiff
path: root/fish/functions/fish_jj_prompt.fish
blob: 7ab024eb04ad74d0860d6a3f09a2bad8a19b8761 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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