Is your feature request related to a problem? Please describe.
Changing how jj log renders a workspace name (other@) requires copying all of format_short_commit_header, because the plain header inlines commit.working_copies():
https://github.com/jj-vcs/jj/blob/efe0cf178581/cli/src/config/templates.toml#L510-L523
while the redacted header, since #9470, formats each workspace with an alias:
commit.working_copies().map(|workspace| format_workspace_redacted(workspace)),
A colors rule cannot target one workspace, since the only label is working_copies. A template can:
jj git init t && cd t
jj workspace add ../t-other --name other
jj config set --repo colors.ws_other '{ fg = "#e06c75" }'
jj log --no-graph --revisions 'other@' --color=always \
--template 'self.working_copies().map(|workspace| if(workspace.name() == "other", label("ws_other", workspace), workspace)) ++ "\n"' | cat -v
^[[38;2;224;108;117mother@^[[39m
but getting it into jj log means overriding format_short_commit_header(commit) with a copy of the default that swaps that one call, which pins the copy to one jj version and discards any other customization of the header.
Describe the solution you'd like
'format_workspace(workspace)' = 'workspace'
'format_short_commit_header(commit)' = '''
separate(" ",
...
commit.working_copies().map(|workspace| format_workspace(workspace)),
...
Output is unchanged for anyone who keeps the default.
Describe alternatives you've considered
- Copying the header, as above.
- A per-workspace label,
label("workspace_name " ++ workspace.name(), ...), so colors."working_copies other" works without a template. A name with a space would break the label syntax.
Additional context
jj 0.44.0 on macOS. main (efe0cf1) has the same header.
Is your feature request related to a problem? Please describe.
Changing how
jj logrenders a workspace name (other@) requires copying all offormat_short_commit_header, because the plain header inlinescommit.working_copies():https://github.com/jj-vcs/jj/blob/efe0cf178581/cli/src/config/templates.toml#L510-L523
commit.working_copies(),while the redacted header, since #9470, formats each workspace with an alias:
commit.working_copies().map(|workspace| format_workspace_redacted(workspace)),A
colorsrule cannot target one workspace, since the only label isworking_copies. A template can:but getting it into
jj logmeans overridingformat_short_commit_header(commit)with a copy of the default that swaps that one call, which pins the copy to one jj version and discards any other customization of the header.Describe the solution you'd like
Output is unchanged for anyone who keeps the default.
Describe alternatives you've considered
label("workspace_name " ++ workspace.name(), ...), socolors."working_copies other"works without a template. A name with a space would break the label syntax.Additional context
jj 0.44.0 on macOS.
main(efe0cf1) has the same header.