##// END OF EJS Templates
log: add a "graphwidth" template variable...
log: add a "graphwidth" template variable Wrapping text in templates for 'hg log --graph' can't be done very well, because the template doesn't know how wide the graph drawing is. The edge drawing function needs to know the number of lines in the template output, so we need to also determine how wide that drawing would be before we call the edgefn or evaluate the template. This patch makes edgefn compute the graph width and pass it into the template so that we can do something like this: COLUMNS=10 hg log --graph --template "{fill(desc, termwidth - graphwidth)}" @ a a a a | a a a a | a a a a o a a a |\ a a a | | a a a | | a a a Using extensions to do this would be relatively complicated due to a lack of hooks in this area of the code. In the future it may make sense to have a more generic "textwidth" that tells you how many columns you can expect to fill without causing the terminal to wrap your output. I'm not sure there are other situations to motivate this yet, or if it is entirely feasible. Differential Revision: https://phab.mercurial-scm.org/D360

File last commit:

r33778:db6b666c default
r33860:6f6c8788 default
Show More
map-cmdline.default
82 lines | 3.2 KiB | text/plain | TextLexer
Jordi Gutiérrez Hermoso
log: rewrite default template to use labels (issue2866)...
r22766 # Base templates. Due to name clashes with existing keywords, we have
# to replace some keywords with 'lkeyword', for 'labelled keyword'
Denis Laxalde
templates: display evolution "troubles" in command line style
r30713 changeset = '{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{ltroubles}{summary}\n'
Yuya Nishihara
templates: fix "log -q" output of default style...
r24304 changeset_quiet = '{lnode}'
Denis Laxalde
templates: display evolution "troubles" in command line style
r30713 changeset_verbose = '{cset}{branches}{bookmarks}{tags}{parents}{user}{ldate}{ltroubles}{lfiles}{lfile_copies_switch}{description}\n'
changeset_debug = '{fullcset}{branches}{bookmarks}{tags}{lphase}{parents}{manifest}{user}{ldate}{ltroubles}{lfile_mods}{lfile_adds}{lfile_dels}{lfile_copies_switch}{extras}{description}\n'
Jordi Gutiérrez Hermoso
log: rewrite default template to use labels (issue2866)...
r22766
# File templates
lfiles = '{if(files,
label("ui.note log.files",
"files: {files}\n"))}'
lfile_mods = '{if(file_mods,
label("ui.debug log.files",
"files: {file_mods}\n"))}'
lfile_adds = '{if(file_adds,
label("ui.debug log.files",
"files+: {file_adds}\n"))}'
lfile_dels = '{if(file_dels,
label("ui.debug log.files",
"files-: {file_dels}\n"))}'
lfile_copies_switch = '{if(file_copies_switch,
label("ui.note log.copies",
"copies: {file_copies_switch
% ' {name} ({source})'}\n"))}'
# General templates
Boris Feld
label: rename trouble.X into instability.X...
r33777 _instability_label = 'instability.{instability}'
_troubles_labels = '{if(instabilities, "changeset.unstable {instabilities%_instability_label}")}'
Denis Laxalde
templates: add "changeset.obsolete" label in command line style...
r31702 _obsolete_label = '{if(obsolete, "changeset.obsolete")}'
_cset_labels = '{separate(" ", "log.changeset", "changeset.{phase}", "{_obsolete_label}", "{_troubles_labels}")}'
Denis Laxalde
templates-default: factor out definition of changeset labels...
r30696 cset = '{label("{_cset_labels}",
Jordi Gutiérrez Hermoso
log: rewrite default template to use labels (issue2866)...
r22766 "changeset: {rev}:{node|short}")}\n'
lphase = '{label("log.phase",
"phase: {phase}")}\n'
Denis Laxalde
templates-default: factor out definition of changeset labels...
r30696 fullcset = '{label("{_cset_labels}",
Jordi Gutiérrez Hermoso
log: rewrite default template to use labels (issue2866)...
r22766 "changeset: {rev}:{node}")}\n'
parent = '{label("log.parent changeset.{phase}",
"parent: {rev}:{node|formatnode}")}\n'
Yuya Nishihara
templates: fix "log -q" output of default style...
r24304 lnode = '{label("log.node",
Jordi Gutiérrez Hermoso
log: rewrite default template to use labels (issue2866)...
r22766 "{rev}:{node|short}")}\n'
manifest = '{label("ui.debug log.manifest",
"manifest: {rev}:{node}")}\n'
branch = '{label("log.branch",
"branch: {branch}")}\n'
tag = '{label("log.tag",
"tag: {tag}")}\n'
bookmark = '{label("log.bookmark",
"bookmark: {bookmark}")}\n'
user = '{label("log.user",
"user: {author}")}\n'
Yuya Nishihara
templates-default: do not show description or summary if empty...
r24637 summary = '{if(desc|strip, "{label('log.summary',
'summary: {desc|firstline}')}\n")}'
Jordi Gutiérrez Hermoso
log: rewrite default template to use labels (issue2866)...
r22766
ldate = '{label("log.date",
"date: {date|date}")}\n'
Boris Feld
label: rename log.trouble into log.instability...
r33778 ltroubles = '{if(instabilities, "{label('log.instability',
Boris Feld
template: rename troubles templatekw into instabilities...
r33675 'instability: {join(instabilities, ", ")}')}\n")}'
Denis Laxalde
templates: display evolution "troubles" in command line style
r30713
Jordi Gutiérrez Hermoso
log: rewrite default template to use labels (issue2866)...
r22766 extra = '{label("ui.debug log.extra",
"extra: {key}={value|stringescape}")}\n'
Yuya Nishihara
templates-default: do not show description or summary if empty...
r24637 description = '{if(desc|strip, "{label('ui.note log.description',
'description:')}
{label('ui.note log.description',
'{desc|strip}')}\n\n")}'
Matt Mackall
templates: add a default template style for status...
r25514
status = '{status} {path}\n{if(copy, " {copy}\n")}'