Mercurial > hg-stable
annotate mercurial/templatekw.py @ 42424:0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
This redefines the {file_adds}, {file_dels}, {file_mods} template
keywords by getting the lists from the recently introduced context
methods instead of getting them from status compared to p1. As
mentioned before, these are better defined on merge commits. The total
number of files from the three lists now always add up to the number
of files in {files}.
I timed this command:
hg log -r 4.0::5.0 -T '{rev}\n {file_mods}\n {file_adds}\n {file_dels}\n'
It went from 7.6s to 5.6s with this patch. So it's actually faster
than before.
Note that the "files:" field in the bazaar test log output was using
"{file_mods}" (not "{files}" as one might think based on the label).
Differential Revision: https://phab.mercurial-scm.org/D6369
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 18 Apr 2019 13:35:02 -0700 |
parents | b47e9712000b |
children | dc5bd66a8270 |
rev | line source |
---|---|
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
1 # templatekw.py - common changeset template keywords |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
2 # |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
3 # Copyright 2005-2009 Matt Mackall <mpm@selenic.com> |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
4 # |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10264 | 6 # GNU General Public License version 2 or any later version. |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
7 |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
8 from __future__ import absolute_import |
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
9 |
31807
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31704
diff
changeset
|
10 from .i18n import _ |
32678
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32676
diff
changeset
|
11 from .node import ( |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32676
diff
changeset
|
12 hex, |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32676
diff
changeset
|
13 nullid, |
39812
94ca3579e84e
log: fill in pseudo rev and node as wdir() manifest identifiers
Yuya Nishihara <yuya@tcha.org>
parents:
39639
diff
changeset
|
14 wdirid, |
94ca3579e84e
log: fill in pseudo rev and node as wdir() manifest identifiers
Yuya Nishihara <yuya@tcha.org>
parents:
39639
diff
changeset
|
15 wdirrev, |
32678
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32676
diff
changeset
|
16 ) |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32676
diff
changeset
|
17 |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
18 from . import ( |
38589
1c93e0237a24
diffutil: move the module out of utils package
Yuya Nishihara <yuya@tcha.org>
parents:
38588
diff
changeset
|
19 diffutil, |
28239
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
20 encoding, |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
21 error, |
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
22 hbisect, |
35222
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
23 i18n, |
32897
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32678
diff
changeset
|
24 obsutil, |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
25 patch, |
32990
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32988
diff
changeset
|
26 pycompat, |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
27 registrar, |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
28 scmutil, |
36927
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36663
diff
changeset
|
29 templateutil, |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
30 util, |
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
31 ) |
37087
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
37077
diff
changeset
|
32 from .utils import ( |
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
37077
diff
changeset
|
33 stringutil, |
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
37077
diff
changeset
|
34 ) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
35 |
36927
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36663
diff
changeset
|
36 _hybrid = templateutil.hybrid |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36663
diff
changeset
|
37 hybriddict = templateutil.hybriddict |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36663
diff
changeset
|
38 hybridlist = templateutil.hybridlist |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36663
diff
changeset
|
39 compatdict = templateutil.compatdict |
32f9b7e3f056
templater: move hybrid class and functions to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36663
diff
changeset
|
40 compatlist = templateutil.compatlist |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
41 _showcompatlist = templateutil._showcompatlist |
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
42 |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
43 def getlatesttags(context, mapping, pattern=None): |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
44 '''return date, distance and name for the latest tag of rev''' |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
45 repo = context.resource(mapping, 'repo') |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
46 ctx = context.resource(mapping, 'ctx') |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
47 cache = context.resource(mapping, 'cache') |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
48 |
26482
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
49 cachename = 'latesttags' |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
50 if pattern is not None: |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
51 cachename += '-' + pattern |
37087
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
37077
diff
changeset
|
52 match = stringutil.stringmatcher(pattern)[2] |
26482
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
53 else: |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
54 match = util.always |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
55 |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
56 if cachename not in cache: |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
57 # Cache mapping from rev to a tuple with tag date, tag |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
58 # distance and tag name |
26482
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
59 cache[cachename] = {-1: (0, 0, ['null'])} |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
60 latesttags = cache[cachename] |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
61 |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
62 rev = ctx.rev() |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
63 todo = [rev] |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
64 while todo: |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
65 rev = todo.pop() |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
66 if rev in latesttags: |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
67 continue |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
68 ctx = repo[rev] |
20218
0c22257388d6
templatekw: allow tagtypes other than global in getlatesttags
Andrew Shadura <andrew@shadura.me>
parents:
20183
diff
changeset
|
69 tags = [t for t in ctx.tags() |
26482
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
70 if (repo.tagtype(t) and repo.tagtype(t) != 'local' |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
71 and match(t))] |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
72 if tags: |
25700
0fca47b206f6
templatekw: use a list of tags in getlatesttags() instead of joining them
Matt Harbison <matt_harbison@yahoo.com>
parents:
25663
diff
changeset
|
73 latesttags[rev] = ctx.date()[0], 0, [t for t in sorted(tags)] |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
74 continue |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
75 try: |
33670
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
76 ptags = [latesttags[p.rev()] for p in ctx.parents()] |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
77 if len(ptags) > 1: |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
78 if ptags[0][2] == ptags[1][2]: |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
79 # The tuples are laid out so the right one can be found by |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
80 # comparison in this case. |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
81 pdate, pdist, ptag = max(ptags) |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
82 else: |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
83 def key(x): |
41300
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
84 tag = x[2][0] |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
85 if ctx.rev() is None: |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
86 # only() doesn't support wdir |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
87 prevs = [c.rev() for c in ctx.parents()] |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
88 changes = repo.revs('only(%ld, %s)', prevs, tag) |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
89 changessincetag = len(changes) + 1 |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
90 else: |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
91 changes = repo.revs('only(%d, %s)', ctx.rev(), tag) |
66102f6fa10a
templatekw: fix crash on multiple latesttags resolution at wdir (issue6055)
Yuya Nishihara <yuya@tcha.org>
parents:
41130
diff
changeset
|
92 changessincetag = len(changes) |
33670
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
93 # Smallest number of changes since tag wins. Date is |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
94 # used as tiebreaker. |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
95 return [-changessincetag, x[0]] |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
96 pdate, pdist, ptag = max(ptags, key=key) |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
97 else: |
fb672eac2702
templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents:
33476
diff
changeset
|
98 pdate, pdist, ptag = ptags[0] |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
99 except KeyError: |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
100 # Cache miss - recurse |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
101 todo.append(rev) |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
102 todo.extend(p.rev() for p in ctx.parents()) |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
103 continue |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
104 latesttags[rev] = pdate, pdist + 1, ptag |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
105 return latesttags[rev] |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
106 |
35222
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
107 def getlogcolumns(): |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
108 """Return a dict of log column labels""" |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
109 _ = pycompat.identity # temporarily disable gettext |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
110 # i18n: column positioning for "hg log" |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
111 columns = _('bookmark: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
112 'branch: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
113 'changeset: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
114 'copies: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
115 'date: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
116 'extra: %s=%s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
117 'files+: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
118 'files-: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
119 'files: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
120 'instability: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
121 'manifest: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
122 'obsolete: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
123 'parent: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
124 'phase: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
125 'summary: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
126 'tag: %s\n' |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
127 'user: %s\n') |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
128 return dict(zip([s.split(':', 1)[0] for s in columns.splitlines()], |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
129 i18n._(columns).splitlines(True))) |
c7b45db8f317
log: translate column labels at once (issue5750)
Yuya Nishihara <yuya@tcha.org>
parents:
35164
diff
changeset
|
130 |
40524
2891ee3fcb86
templatekw: extract internal "{rev}:{node|formatnode}" template to constant
Yuya Nishihara <yuya@tcha.org>
parents:
39812
diff
changeset
|
131 # basic internal templates |
2891ee3fcb86
templatekw: extract internal "{rev}:{node|formatnode}" template to constant
Yuya Nishihara <yuya@tcha.org>
parents:
39812
diff
changeset
|
132 _changeidtmpl = '{rev}:{node|formatnode}' |
2891ee3fcb86
templatekw: extract internal "{rev}:{node|formatnode}" template to constant
Yuya Nishihara <yuya@tcha.org>
parents:
39812
diff
changeset
|
133 |
31181
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
134 # default templates internally used for rendering of lists |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
135 defaulttempl = { |
40524
2891ee3fcb86
templatekw: extract internal "{rev}:{node|formatnode}" template to constant
Yuya Nishihara <yuya@tcha.org>
parents:
39812
diff
changeset
|
136 'parent': _changeidtmpl + ' ', |
2891ee3fcb86
templatekw: extract internal "{rev}:{node|formatnode}" template to constant
Yuya Nishihara <yuya@tcha.org>
parents:
39812
diff
changeset
|
137 'manifest': _changeidtmpl, |
31181
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
138 'file_copy': '{name} ({source})', |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
139 'envvar': '{key}={value}', |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
140 'extra': '{key}={value|stringescape}' |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
141 } |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
142 # filecopy is preserved for compatibility reasons |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
143 defaulttempl['filecopy'] = defaulttempl['file_copy'] |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
144 |
36475
e8d37838f5df
templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
145 # keywords are callables (see registrar.templatekeyword for details) |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
146 keywords = {} |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
147 templatekeyword = registrar.templatekeyword(keywords) |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
148 |
36475
e8d37838f5df
templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
149 @templatekeyword('author', requires={'ctx'}) |
e8d37838f5df
templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
150 def showauthor(context, mapping): |
38986
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
151 """Alias for ``{user}``""" |
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
152 return showuser(context, mapping) |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
153 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
154 @templatekeyword('bisect', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
155 def showbisect(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
156 """String. The changeset bisection status.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
157 repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
158 ctx = context.resource(mapping, 'ctx') |
15155
f4a8d754cd0a
templates: add 'bisect' keyword to return a cset's bisect status
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
14437
diff
changeset
|
159 return hbisect.label(repo, ctx.node()) |
f4a8d754cd0a
templates: add 'bisect' keyword to return a cset's bisect status
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
14437
diff
changeset
|
160 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
161 @templatekeyword('branch', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
162 def showbranch(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
163 """String. The name of the branch on which the changeset was |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
164 committed. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
165 """ |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
166 ctx = context.resource(mapping, 'ctx') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
167 return ctx.branch() |
13156
d79fdff55627
template: add showbranch template for {branch}
Eric Eisner <ede@mit.edu>
parents:
13114
diff
changeset
|
168 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
169 @templatekeyword('branches', requires={'ctx'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
170 def showbranches(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
171 """List of strings. The name of the branch on which the |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
172 changeset was committed. Will be empty if the branch name was |
26437
4628b26f040e
templatekw: hide help of "branches" by DEPRECATED marker
Yuya Nishihara <yuya@tcha.org>
parents:
26436
diff
changeset
|
173 default. (DEPRECATED) |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
174 """ |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
175 ctx = context.resource(mapping, 'ctx') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
176 branch = ctx.branch() |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
177 if branch != 'default': |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
178 return compatlist(context, mapping, 'branch', [branch], |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
179 plural='branches') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
180 return compatlist(context, mapping, 'branch', [], plural='branches') |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
181 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
182 @templatekeyword('bookmarks', requires={'repo', 'ctx'}) |
36627
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
183 def showbookmarks(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
184 """List of strings. Any bookmarks associated with the |
25348
f26efa4f0eff
templatekw: introduce active subkeyword from bookmarks keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25013
diff
changeset
|
185 changeset. Also sets 'active', the name of the active bookmark. |
13592
ad2ee188f4a5
templates: document missing keywords or filters
Patrick Mezard <pmezard@gmail.com>
parents:
13585
diff
changeset
|
186 """ |
36627
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
187 repo = context.resource(mapping, 'repo') |
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
188 ctx = context.resource(mapping, 'ctx') |
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
189 bookmarks = ctx.bookmarks() |
25348
f26efa4f0eff
templatekw: introduce active subkeyword from bookmarks keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25013
diff
changeset
|
190 active = repo._activebookmark |
f26efa4f0eff
templatekw: introduce active subkeyword from bookmarks keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25013
diff
changeset
|
191 makemap = lambda v: {'bookmark': v, 'active': active, 'current': active} |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
192 f = _showcompatlist(context, mapping, 'bookmark', bookmarks) |
34335
dd28b1f55eb8
templatekw: just pass underlying value (or key) to joinfmt() function
Yuya Nishihara <yuya@tcha.org>
parents:
34334
diff
changeset
|
193 return _hybrid(f, bookmarks, makemap, pycompat.identity) |
13386
f78bc5ddbe4f
templater: add bookmarks to templates and default output
David Soria Parra <dsp@php.net>
parents:
13156
diff
changeset
|
194 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
195 @templatekeyword('children', requires={'ctx'}) |
36550
c3692364b344
templatekw: add compatlist() as a replacement for showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
36549
diff
changeset
|
196 def showchildren(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
197 """List of strings. The children of the changeset.""" |
36550
c3692364b344
templatekw: add compatlist() as a replacement for showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
36549
diff
changeset
|
198 ctx = context.resource(mapping, 'ctx') |
36431
d65642840c6f
templatekw: use ctx.rev() instead of casting context to int
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36280
diff
changeset
|
199 childrevs = ['%d:%s' % (cctx.rev(), cctx) for cctx in ctx.children()] |
36550
c3692364b344
templatekw: add compatlist() as a replacement for showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
36549
diff
changeset
|
200 return compatlist(context, mapping, 'children', childrevs, element='child') |
11655
6faf015e0ba0
templates: 'children' keyword
Jason Harris <jason@jasonfharris.com>
parents:
10394
diff
changeset
|
201 |
25013
277aba2c151a
templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25012
diff
changeset
|
202 # Deprecated, but kept alive for help generation a purpose. |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
203 @templatekeyword('currentbookmark', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
204 def showcurrentbookmark(context, mapping): |
34656
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
205 """String. The active bookmark, if it is associated with the changeset. |
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
206 (DEPRECATED)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
207 return showactivebookmark(context, mapping) |
25013
277aba2c151a
templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25012
diff
changeset
|
208 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
209 @templatekeyword('activebookmark', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
210 def showactivebookmark(context, mapping): |
34656
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
211 """String. The active bookmark, if it is associated with the changeset.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
212 repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
213 ctx = context.resource(mapping, 'ctx') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
214 active = repo._activebookmark |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
215 if active and active in ctx.bookmarks(): |
25387
390a10b7843b
templatekw: display active bookmark more consistently (issue4552) (BC)
Ryan McElroy <rmcelroy@fb.com>
parents:
25348
diff
changeset
|
216 return active |
21896
2b41ee1b5ea1
templatekw: add 'currentbookmark' keyword to show current bookmark easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20683
diff
changeset
|
217 return '' |
2b41ee1b5ea1
templatekw: add 'currentbookmark' keyword to show current bookmark easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20683
diff
changeset
|
218 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
219 @templatekeyword('date', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
220 def showdate(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
221 """Date information. The date when the changeset was committed.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
222 ctx = context.resource(mapping, 'ctx') |
38310
88e7105b5cd9
templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents:
38297
diff
changeset
|
223 # the default string format is '<float(unixtime)><tzoffset>' because |
88e7105b5cd9
templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents:
38297
diff
changeset
|
224 # python-hglib splits date at decimal separator. |
88e7105b5cd9
templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents:
38297
diff
changeset
|
225 return templateutil.date(ctx.date(), showfmt='%d.0%d') |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
226 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
227 @templatekeyword('desc', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
228 def showdescription(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
229 """String. The text of the changeset description.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
230 ctx = context.resource(mapping, 'ctx') |
28239
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
231 s = ctx.description() |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
232 if isinstance(s, encoding.localstr): |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
233 # try hard to preserve utf-8 bytes |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
234 return encoding.tolocal(encoding.fromlocal(s).strip()) |
37991
3ea3c96ada54
encoding: introduce tagging type for non-lossy non-ASCII string
Yuya Nishihara <yuya@tcha.org>
parents:
37952
diff
changeset
|
235 elif isinstance(s, encoding.safelocalstr): |
3ea3c96ada54
encoding: introduce tagging type for non-lossy non-ASCII string
Yuya Nishihara <yuya@tcha.org>
parents:
37952
diff
changeset
|
236 return encoding.safelocalstr(s.strip()) |
28239
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
237 else: |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
238 return s.strip() |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
239 |
38584
4bc96c755c17
templatekw: obtain ui directly from the template context
Yuya Nishihara <yuya@tcha.org>
parents:
38565
diff
changeset
|
240 @templatekeyword('diffstat', requires={'ui', 'ctx'}) |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
241 def showdiffstat(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
242 """String. Statistics of changes with the following format: |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
243 "modified files: +added/-removed lines" |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
244 """ |
38584
4bc96c755c17
templatekw: obtain ui directly from the template context
Yuya Nishihara <yuya@tcha.org>
parents:
38565
diff
changeset
|
245 ui = context.resource(mapping, 'ui') |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
246 ctx = context.resource(mapping, 'ctx') |
38588
b62000a28812
diffutil: remove diffopts() in favor of diffallopts()
Yuya Nishihara <yuya@tcha.org>
parents:
38584
diff
changeset
|
247 diffopts = diffutil.diffallopts(ui, {'noprefix': False}) |
38565
64f15e22f4f8
template: directly instantiate diff options for diffstat
Boris Feld <boris.feld@octobus.net>
parents:
38556
diff
changeset
|
248 diff = ctx.diff(opts=diffopts) |
38523
4455e5d4d59c
context: explicitly take diffopts in `context.diff` (API)
Boris Feld <boris.feld@octobus.net>
parents:
38315
diff
changeset
|
249 stats = patch.diffstatdata(util.iterlines(diff)) |
14437
cbe13e6bdc34
patch: restore the previous output of 'diff --stat'
Steven Brown <StevenGBrown@gmail.com>
parents:
14403
diff
changeset
|
250 maxname, maxtotal, adds, removes, binary = patch.diffstatsum(stats) |
36529
77f681f11003
py3: use '%d' to format diffstat sum
Yuya Nishihara <yuya@tcha.org>
parents:
36486
diff
changeset
|
251 return '%d: +%d/-%d' % (len(stats), adds, removes) |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
252 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
253 @templatekeyword('envvars', requires={'ui'}) |
36549
a7fbe11a5d59
templatekw: add compatdict() as a replacement for showdict()
Yuya Nishihara <yuya@tcha.org>
parents:
36548
diff
changeset
|
254 def showenvvars(context, mapping): |
30833
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
255 """A dictionary of environment variables. (EXPERIMENTAL)""" |
36549
a7fbe11a5d59
templatekw: add compatdict() as a replacement for showdict()
Yuya Nishihara <yuya@tcha.org>
parents:
36548
diff
changeset
|
256 ui = context.resource(mapping, 'ui') |
36472
e46b24582fa0
templatekw: minimize resource dependency of {envvars} and {termwidth}
Yuya Nishihara <yuya@tcha.org>
parents:
36471
diff
changeset
|
257 env = ui.exportableenviron() |
30833
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
258 env = util.sortdict((k, env[k]) for k in sorted(env)) |
36549
a7fbe11a5d59
templatekw: add compatdict() as a replacement for showdict()
Yuya Nishihara <yuya@tcha.org>
parents:
36548
diff
changeset
|
259 return compatdict(context, mapping, 'envvar', env, plural='envvars') |
30833
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
260 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
261 @templatekeyword('extras', requires={'ctx'}) |
36627
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
262 def showextras(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
263 """List of dicts with key, value entries of the 'extras' |
20015
ad27cdacc743
help: document about {extras} template keyword
Matthew Turk <matthewturk@gmail.com>
parents:
18970
diff
changeset
|
264 field of this changeset.""" |
36627
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
265 ctx = context.resource(mapping, 'ctx') |
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
266 extras = ctx.extra() |
24237
9ad02823dc5b
templatekw: convert list of key/value pairs to sortdict
Yuya Nishihara <yuya@tcha.org>
parents:
24157
diff
changeset
|
267 extras = util.sortdict((k, extras[k]) for k in sorted(extras)) |
24238
49cee6d8573d
templatekw: give name to lambda that constructs variables map of templater
Yuya Nishihara <yuya@tcha.org>
parents:
24237
diff
changeset
|
268 makemap = lambda k: {'key': k, 'value': extras[k]} |
49cee6d8573d
templatekw: give name to lambda that constructs variables map of templater
Yuya Nishihara <yuya@tcha.org>
parents:
24237
diff
changeset
|
269 c = [makemap(k) for k in extras] |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
270 f = _showcompatlist(context, mapping, 'extra', c, plural='extras') |
24239
31f9b1b16d1e
templatekw: keep raw list or dict in _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
24238
diff
changeset
|
271 return _hybrid(f, extras, makemap, |
37087
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
37077
diff
changeset
|
272 lambda k: '%s=%s' % (k, stringutil.escapestr(extras[k]))) |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
273 |
39615
a5da906306c9
templatekw: add option to include ignored/clean/unknown files in cache
Yuya Nishihara <yuya@tcha.org>
parents:
39614
diff
changeset
|
274 def _getfilestatus(context, mapping, listall=False): |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
275 ctx = context.resource(mapping, 'ctx') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
276 revcache = context.resource(mapping, 'revcache') |
39615
a5da906306c9
templatekw: add option to include ignored/clean/unknown files in cache
Yuya Nishihara <yuya@tcha.org>
parents:
39614
diff
changeset
|
277 if 'filestatus' not in revcache or revcache['filestatusall'] < listall: |
a5da906306c9
templatekw: add option to include ignored/clean/unknown files in cache
Yuya Nishihara <yuya@tcha.org>
parents:
39614
diff
changeset
|
278 stat = ctx.p1().status(ctx, listignored=listall, listclean=listall, |
a5da906306c9
templatekw: add option to include ignored/clean/unknown files in cache
Yuya Nishihara <yuya@tcha.org>
parents:
39614
diff
changeset
|
279 listunknown=listall) |
a5da906306c9
templatekw: add option to include ignored/clean/unknown files in cache
Yuya Nishihara <yuya@tcha.org>
parents:
39614
diff
changeset
|
280 revcache['filestatus'] = stat |
a5da906306c9
templatekw: add option to include ignored/clean/unknown files in cache
Yuya Nishihara <yuya@tcha.org>
parents:
39614
diff
changeset
|
281 revcache['filestatusall'] = listall |
39614
42209f55c599
templatekw: keep status tuple in cache dict and rename cache key accordingly
Yuya Nishihara <yuya@tcha.org>
parents:
39613
diff
changeset
|
282 return revcache['filestatus'] |
39613
164827563426
templatekw: extract function that computes and caches file status
Yuya Nishihara <yuya@tcha.org>
parents:
39603
diff
changeset
|
283 |
39616
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
284 def _getfilestatusmap(context, mapping, listall=False): |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
285 revcache = context.resource(mapping, 'revcache') |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
286 if 'filestatusmap' not in revcache or revcache['filestatusall'] < listall: |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
287 stat = _getfilestatus(context, mapping, listall=listall) |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
288 revcache['filestatusmap'] = statmap = {} |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
289 for char, files in zip(pycompat.iterbytestr('MAR!?IC'), stat): |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
290 statmap.update((f, char) for f in files) |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
291 return revcache['filestatusmap'] # {path: statchar} |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
292 |
36619
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
293 @templatekeyword('file_copies', |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
294 requires={'repo', 'ctx', 'cache', 'revcache'}) |
36619
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
295 def showfilecopies(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
296 """List of strings. Files copied in this changeset with |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
297 their sources. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
298 """ |
36619
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
299 repo = context.resource(mapping, 'repo') |
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
300 ctx = context.resource(mapping, 'ctx') |
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
301 cache = context.resource(mapping, 'cache') |
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
302 copies = context.resource(mapping, 'revcache').get('copies') |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
303 if copies is None: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
304 if 'getrenamed' not in cache: |
41790
e9b9ee9af4a9
templatekw: move getrenamedfn() to scmutil (API)
Martin von Zweigbergk <martinvonz@google.com>
parents:
41781
diff
changeset
|
305 cache['getrenamed'] = scmutil.getrenamedfn(repo) |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
306 copies = [] |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
307 getrenamed = cache['getrenamed'] |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
308 for fn in ctx.files(): |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
309 rename = getrenamed(fn, ctx.rev()) |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
310 if rename: |
38200
ec37df9042f9
templatekw: make getrenamed() return only filename, not nodeid
Martin von Zweigbergk <martinvonz@google.com>
parents:
38007
diff
changeset
|
311 copies.append((fn, rename)) |
39395
5b1d406b39f1
templatekw: alias {name} of file copies dict to {path}
Yuya Nishihara <yuya@tcha.org>
parents:
39394
diff
changeset
|
312 return templateutil.compatfilecopiesdict(context, mapping, 'file_copy', |
5b1d406b39f1
templatekw: alias {name} of file copies dict to {path}
Yuya Nishihara <yuya@tcha.org>
parents:
39394
diff
changeset
|
313 copies) |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
314 |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
315 # showfilecopiesswitch() displays file copies only if copy records are |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
316 # provided before calling the templater, usually with a --copies |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
317 # command line switch. |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
318 @templatekeyword('file_copies_switch', requires={'revcache'}) |
36619
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
319 def showfilecopiesswitch(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
320 """List of strings. Like "file_copies" but displayed |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
321 only if the --copied switch is set. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
322 """ |
36619
0083e373e5f5
templatekw: switch showdict template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36603
diff
changeset
|
323 copies = context.resource(mapping, 'revcache').get('copies') or [] |
39395
5b1d406b39f1
templatekw: alias {name} of file copies dict to {path}
Yuya Nishihara <yuya@tcha.org>
parents:
39394
diff
changeset
|
324 return templateutil.compatfilecopiesdict(context, mapping, 'file_copy', |
5b1d406b39f1
templatekw: alias {name} of file copies dict to {path}
Yuya Nishihara <yuya@tcha.org>
parents:
39394
diff
changeset
|
325 copies) |
10058
c829563b3118
cmdutil: extract file copies closure into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10057
diff
changeset
|
326 |
42393
b47e9712000b
templatekw: move showfileadds() close to showfile{mods,dels}()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41790
diff
changeset
|
327 @templatekeyword('file_adds', requires={'ctx', 'revcache'}) |
b47e9712000b
templatekw: move showfileadds() close to showfile{mods,dels}()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41790
diff
changeset
|
328 def showfileadds(context, mapping): |
b47e9712000b
templatekw: move showfileadds() close to showfile{mods,dels}()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41790
diff
changeset
|
329 """List of strings. Files added by this changeset.""" |
42424
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
330 ctx = context.resource(mapping, 'ctx') |
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
331 return templateutil.compatfileslist(context, mapping, 'file_add', |
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
332 ctx.filesadded()) |
42393
b47e9712000b
templatekw: move showfileadds() close to showfile{mods,dels}()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41790
diff
changeset
|
333 |
38815
87a581d1391c
templatekw: use ctx1.status(ctx2) instead of repo.status(ctx1, ctx2)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38589
diff
changeset
|
334 @templatekeyword('file_dels', requires={'ctx', 'revcache'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
335 def showfiledels(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
336 """List of strings. Files removed by this changeset.""" |
42424
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
337 ctx = context.resource(mapping, 'ctx') |
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
338 return templateutil.compatfileslist(context, mapping, 'file_del', |
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
339 ctx.filesremoved()) |
10056
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
340 |
38815
87a581d1391c
templatekw: use ctx1.status(ctx2) instead of repo.status(ctx1, ctx2)
Martin von Zweigbergk <martinvonz@google.com>
parents:
38589
diff
changeset
|
341 @templatekeyword('file_mods', requires={'ctx', 'revcache'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
342 def showfilemods(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
343 """List of strings. Files modified by this changeset.""" |
42424
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
344 ctx = context.resource(mapping, 'ctx') |
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
345 return templateutil.compatfileslist(context, mapping, 'file_mod', |
0c72eddb4be5
templatekw: make {file_*} compare to both merge parents (issue4292)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42393
diff
changeset
|
346 ctx.filesmodified()) |
10056
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
347 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
348 @templatekeyword('files', requires={'ctx'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
349 def showfiles(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
350 """List of strings. All files modified, added, or removed by this |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
351 changeset. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
352 """ |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
353 ctx = context.resource(mapping, 'ctx') |
39394
83f8f7b9fa60
templatekw: alias {file} of files list to {path}
Yuya Nishihara <yuya@tcha.org>
parents:
38986
diff
changeset
|
354 return templateutil.compatfileslist(context, mapping, 'file', ctx.files()) |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
355 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
356 @templatekeyword('graphnode', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
357 def showgraphnode(context, mapping): |
34656
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
358 """String. The character representing the changeset node in an ASCII |
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
359 revision graph.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
360 repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
361 ctx = context.resource(mapping, 'ctx') |
36542
6ad140dc4269
templatekw: extract non-templatekw function as getgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
36531
diff
changeset
|
362 return getgraphnode(repo, ctx) |
6ad140dc4269
templatekw: extract non-templatekw function as getgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
36531
diff
changeset
|
363 |
6ad140dc4269
templatekw: extract non-templatekw function as getgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
36531
diff
changeset
|
364 def getgraphnode(repo, ctx): |
37952
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
365 return getgraphnodecurrent(repo, ctx) or getgraphnodesymbol(ctx) |
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
366 |
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
367 def getgraphnodecurrent(repo, ctx): |
27215
5b8da5643a8a
templatekw: avoid slow creation of changectx objects in showgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
27214
diff
changeset
|
368 wpnodes = repo.dirstate.parents() |
5b8da5643a8a
templatekw: avoid slow creation of changectx objects in showgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
27214
diff
changeset
|
369 if wpnodes[1] == nullid: |
5b8da5643a8a
templatekw: avoid slow creation of changectx objects in showgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
27214
diff
changeset
|
370 wpnodes = wpnodes[:1] |
27214
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
371 if ctx.node() in wpnodes: |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
372 return '@' |
37952
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
373 else: |
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
374 return '' |
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
375 |
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
376 def getgraphnodesymbol(ctx): |
8808d5d401ee
templates: split getgraphnode() body into two functions
Anton Shestakov <av6@dwimlabs.net>
parents:
37707
diff
changeset
|
377 if ctx.obsolete(): |
27214
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
378 return 'x' |
35512
9b3f95d9783d
graphlog: add another graph node type, unstable, using character "*" (BC)
Anton Shestakov <av6@dwimlabs.net>
parents:
35222
diff
changeset
|
379 elif ctx.isunstable(): |
9b3f95d9783d
graphlog: add another graph node type, unstable, using character "*" (BC)
Anton Shestakov <av6@dwimlabs.net>
parents:
35222
diff
changeset
|
380 return '*' |
27214
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
381 elif ctx.closesbranch(): |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
382 return '_' |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
383 else: |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
384 return 'o' |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
385 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
386 @templatekeyword('graphwidth', requires=()) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
387 def showgraphwidth(context, mapping): |
33879
6f6c87888b22
log: add a "graphwidth" template variable
Danny Hooper <hooper@google.com>
parents:
33872
diff
changeset
|
388 """Integer. The width of the graph drawn by 'log --graph' or zero.""" |
36471
27cd83152d31
templatekw: simply override {graphwidth} function by mapping variable
Yuya Nishihara <yuya@tcha.org>
parents:
36431
diff
changeset
|
389 # just hosts documentation; should be overridden by template mapping |
27cd83152d31
templatekw: simply override {graphwidth} function by mapping variable
Yuya Nishihara <yuya@tcha.org>
parents:
36431
diff
changeset
|
390 return 0 |
33879
6f6c87888b22
log: add a "graphwidth" template variable
Danny Hooper <hooper@google.com>
parents:
33872
diff
changeset
|
391 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
392 @templatekeyword('index', requires=()) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
393 def showindex(context, mapping): |
31807
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31704
diff
changeset
|
394 """Integer. The current iteration of the loop. (0 indexed)""" |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31704
diff
changeset
|
395 # just hosts documentation; should be overridden by template mapping |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31704
diff
changeset
|
396 raise error.Abort(_("can't use index in this context")) |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31704
diff
changeset
|
397 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
398 @templatekeyword('latesttag', requires={'repo', 'ctx', 'cache'}) |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
399 def showlatesttag(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
400 """List of strings. The global tags on the most recent globally |
31850
f0d719e513fc
templatekw: clarify the result of {latesttag} when no tag exists
Matt Harbison <matt_harbison@yahoo.com>
parents:
31807
diff
changeset
|
401 tagged ancestor of this changeset. If no such tags exist, the list |
f0d719e513fc
templatekw: clarify the result of {latesttag} when no tag exists
Matt Harbison <matt_harbison@yahoo.com>
parents:
31807
diff
changeset
|
402 consists of the single string "null". |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
403 """ |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
404 return showlatesttags(context, mapping, None) |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
405 |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
406 def showlatesttags(context, mapping, pattern): |
26484
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
407 """helper method for the latesttag keyword and function""" |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
408 latesttags = getlatesttags(context, mapping, pattern) |
26484
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
409 |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
410 # latesttag[0] is an implementation detail for sorting csets on different |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
411 # branches in a stable manner- it is the date the tagged cset was created, |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
412 # not the date the tag was created. Therefore it isn't made visible here. |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
413 makemap = lambda v: { |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
414 'changes': _showchangessincetag, |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
415 'distance': latesttags[1], |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
416 'latesttag': v, # BC with {latesttag % '{latesttag}'} |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
417 'tag': v |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
418 } |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
419 |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
420 tags = latesttags[2] |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
421 f = _showcompatlist(context, mapping, 'latesttag', tags, separator=':') |
34335
dd28b1f55eb8
templatekw: just pass underlying value (or key) to joinfmt() function
Yuya Nishihara <yuya@tcha.org>
parents:
34334
diff
changeset
|
422 return _hybrid(f, tags, makemap, pycompat.identity) |
26484
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
423 |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
424 @templatekeyword('latesttagdistance', requires={'repo', 'ctx', 'cache'}) |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
425 def showlatesttagdistance(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
426 """Integer. Longest path to the latest tag.""" |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
427 return getlatesttags(context, mapping)[1] |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
428 |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
429 @templatekeyword('changessincelatesttag', requires={'repo', 'ctx', 'cache'}) |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
430 def showchangessincelatesttag(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
431 """Integer. All ancestors not in the latest tag.""" |
37077
2891079fb0c0
templater: factor out function to create mapping dict for nested evaluation
Yuya Nishihara <yuya@tcha.org>
parents:
37074
diff
changeset
|
432 tag = getlatesttags(context, mapping)[2][0] |
2891079fb0c0
templater: factor out function to create mapping dict for nested evaluation
Yuya Nishihara <yuya@tcha.org>
parents:
37074
diff
changeset
|
433 mapping = context.overlaymap(mapping, {'tag': tag}) |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
434 return _showchangessincetag(context, mapping) |
26483
e94f93043a4e
templatekw: factor out the changessincetag calculation to a private method
Matt Harbison <matt_harbison@yahoo.com>
parents:
26482
diff
changeset
|
435 |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
436 def _showchangessincetag(context, mapping): |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
437 repo = context.resource(mapping, 'repo') |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
438 ctx = context.resource(mapping, 'ctx') |
25724
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
439 offset = 0 |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
440 revs = [ctx.rev()] |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
441 tag = context.symbol(mapping, 'tag') |
25724
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
442 |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
443 # The only() revset doesn't currently support wdir() |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
444 if ctx.rev() is None: |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
445 offset = 1 |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
446 revs = [p.rev() for p in ctx.parents()] |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
447 |
26483
e94f93043a4e
templatekw: factor out the changessincetag calculation to a private method
Matt Harbison <matt_harbison@yahoo.com>
parents:
26482
diff
changeset
|
448 return len(repo.revs('only(%ld, %s)', revs, tag)) + offset |
25724
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
449 |
36625
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
450 # teach templater latesttags.changes is switched to (context, mapping) API |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
451 _showchangessincetag._requires = {'repo', 'ctx'} |
b5d39a09656a
templatekw: switch latesttags template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36624
diff
changeset
|
452 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
453 @templatekeyword('manifest', requires={'repo', 'ctx'}) |
36626
d57f383516f6
templatekw: switch manifest template keyword to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36625
diff
changeset
|
454 def showmanifest(context, mapping): |
d57f383516f6
templatekw: switch manifest template keyword to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36625
diff
changeset
|
455 repo = context.resource(mapping, 'repo') |
d57f383516f6
templatekw: switch manifest template keyword to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36625
diff
changeset
|
456 ctx = context.resource(mapping, 'ctx') |
24676
13c42a883e8b
templatekw: have {manifest} use ctx.manifestnode() for consistency
Yuya Nishihara <yuya@tcha.org>
parents:
24337
diff
changeset
|
457 mnode = ctx.manifestnode() |
25736
8854ca3fa675
templatekw: apply manifest template only if ctx.manifestnode() exists
Yuya Nishihara <yuya@tcha.org>
parents:
25727
diff
changeset
|
458 if mnode is None: |
39812
94ca3579e84e
log: fill in pseudo rev and node as wdir() manifest identifiers
Yuya Nishihara <yuya@tcha.org>
parents:
39639
diff
changeset
|
459 mnode = wdirid |
94ca3579e84e
log: fill in pseudo rev and node as wdir() manifest identifiers
Yuya Nishihara <yuya@tcha.org>
parents:
39639
diff
changeset
|
460 mrev = wdirrev |
94ca3579e84e
log: fill in pseudo rev and node as wdir() manifest identifiers
Yuya Nishihara <yuya@tcha.org>
parents:
39639
diff
changeset
|
461 else: |
94ca3579e84e
log: fill in pseudo rev and node as wdir() manifest identifiers
Yuya Nishihara <yuya@tcha.org>
parents:
39639
diff
changeset
|
462 mrev = repo.manifestlog.rev(mnode) |
34337
89aec1834a86
templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents:
34335
diff
changeset
|
463 mhex = hex(mnode) |
37077
2891079fb0c0
templater: factor out function to create mapping dict for nested evaluation
Yuya Nishihara <yuya@tcha.org>
parents:
37074
diff
changeset
|
464 mapping = context.overlaymap(mapping, {'rev': mrev, 'node': mhex}) |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
465 f = context.process('manifest', mapping) |
38295
0e0d03d09ecd
templater: rename mappable to hybriditem as it is the primary use case
Yuya Nishihara <yuya@tcha.org>
parents:
38200
diff
changeset
|
466 return templateutil.hybriditem(f, None, f, |
0e0d03d09ecd
templater: rename mappable to hybriditem as it is the primary use case
Yuya Nishihara <yuya@tcha.org>
parents:
38200
diff
changeset
|
467 lambda x: {'rev': mrev, 'node': mhex}) |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
468 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
469 @templatekeyword('obsfate', requires={'ui', 'repo', 'ctx'}) |
36623
59ee648870a7
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36622
diff
changeset
|
470 def showobsfate(context, mapping): |
34847
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
471 # this function returns a list containing pre-formatted obsfate strings. |
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
472 # |
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
473 # This function will be replaced by templates fragments when we will have |
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
474 # the verbosity templatekw available. |
36623
59ee648870a7
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36622
diff
changeset
|
475 succsandmarkers = showsuccsandmarkers(context, mapping) |
34847
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
476 |
36623
59ee648870a7
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36622
diff
changeset
|
477 ui = context.resource(mapping, 'ui') |
37328
11d51e518808
obsutil: make obsfateprinter() less dependent on templater
Yuya Nishihara <yuya@tcha.org>
parents:
37276
diff
changeset
|
478 repo = context.resource(mapping, 'repo') |
34847
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
479 values = [] |
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
480 |
37503
49a8c2cc7978
templatekw: fix return type of {succsandmarkers} (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
37328
diff
changeset
|
481 for x in succsandmarkers.tovalue(context, mapping): |
37328
11d51e518808
obsutil: make obsfateprinter() less dependent on templater
Yuya Nishihara <yuya@tcha.org>
parents:
37276
diff
changeset
|
482 v = obsutil.obsfateprinter(ui, repo, x['successors'], x['markers'], |
11d51e518808
obsutil: make obsfateprinter() less dependent on templater
Yuya Nishihara <yuya@tcha.org>
parents:
37276
diff
changeset
|
483 scmutil.formatchangeid) |
11d51e518808
obsutil: make obsfateprinter() less dependent on templater
Yuya Nishihara <yuya@tcha.org>
parents:
37276
diff
changeset
|
484 values.append(v) |
34847
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
485 |
36623
59ee648870a7
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36622
diff
changeset
|
486 return compatlist(context, mapping, "fate", values) |
34847
e27f1f04c2cf
templatekw: introduce obsfate keyword
Boris Feld <boris.feld@octobus.net>
parents:
34657
diff
changeset
|
487 |
36622
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
488 def shownames(context, mapping, namespace): |
27893
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
489 """helper method to generate a template keyword for a namespace""" |
36622
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
490 repo = context.resource(mapping, 'repo') |
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
491 ctx = context.resource(mapping, 'ctx') |
27893
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
492 ns = repo.names[namespace] |
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
493 names = ns.names(repo, ctx.node()) |
36622
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
494 return compatlist(context, mapping, ns.templatename, names, |
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
495 plural=namespace) |
27893
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
496 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
497 @templatekeyword('namespaces', requires={'repo', 'ctx'}) |
36622
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
498 def shownamespaces(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
499 """Dict of lists. Names attached to this changeset per |
27894
a94f7eef3199
templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
27893
diff
changeset
|
500 namespace.""" |
36622
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
501 repo = context.resource(mapping, 'repo') |
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
502 ctx = context.resource(mapping, 'ctx') |
33059
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
503 |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
504 namespaces = util.sortdict() |
34541
0a0a72c043ac
templatekw: allow accessing to nested namespace item by its template name
Yuya Nishihara <yuya@tcha.org>
parents:
34540
diff
changeset
|
505 def makensmapfn(ns): |
0a0a72c043ac
templatekw: allow accessing to nested namespace item by its template name
Yuya Nishihara <yuya@tcha.org>
parents:
34540
diff
changeset
|
506 # 'name' for iterating over namespaces, templatename for local reference |
0a0a72c043ac
templatekw: allow accessing to nested namespace item by its template name
Yuya Nishihara <yuya@tcha.org>
parents:
34540
diff
changeset
|
507 return lambda v: {'name': v, ns.templatename: v} |
33059
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
508 |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
509 for k, ns in repo.names.iteritems(): |
34541
0a0a72c043ac
templatekw: allow accessing to nested namespace item by its template name
Yuya Nishihara <yuya@tcha.org>
parents:
34540
diff
changeset
|
510 names = ns.names(repo, ctx.node()) |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
511 f = _showcompatlist(context, mapping, 'name', names) |
34541
0a0a72c043ac
templatekw: allow accessing to nested namespace item by its template name
Yuya Nishihara <yuya@tcha.org>
parents:
34540
diff
changeset
|
512 namespaces[k] = _hybrid(f, names, makensmapfn(ns), pycompat.identity) |
33059
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
513 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
514 f = _showcompatlist(context, mapping, 'namespace', list(namespaces)) |
33059
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
515 |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
516 def makemap(ns): |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
517 return { |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
518 'namespace': ns, |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
519 'names': namespaces[ns], |
34540
1c7c4445686f
templatekw: get rid of temporary dicts from shownamespaces()
Yuya Nishihara <yuya@tcha.org>
parents:
34539
diff
changeset
|
520 'builtin': repo.names[ns].builtin, |
1c7c4445686f
templatekw: get rid of temporary dicts from shownamespaces()
Yuya Nishihara <yuya@tcha.org>
parents:
34539
diff
changeset
|
521 'colorname': repo.names[ns].colorname, |
33059
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
522 } |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33033
diff
changeset
|
523 |
34335
dd28b1f55eb8
templatekw: just pass underlying value (or key) to joinfmt() function
Yuya Nishihara <yuya@tcha.org>
parents:
34334
diff
changeset
|
524 return _hybrid(f, namespaces, makemap, pycompat.identity) |
27894
a94f7eef3199
templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
27893
diff
changeset
|
525 |
41733
37b33c34bf4f
templatekw: add a {negrev} keyword
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41419
diff
changeset
|
526 @templatekeyword('negrev', requires={'repo', 'ctx'}) |
37b33c34bf4f
templatekw: add a {negrev} keyword
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41419
diff
changeset
|
527 def shownegrev(context, mapping): |
37b33c34bf4f
templatekw: add a {negrev} keyword
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41419
diff
changeset
|
528 """Integer. The repository-local changeset negative revision number, |
37b33c34bf4f
templatekw: add a {negrev} keyword
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41419
diff
changeset
|
529 which counts in the opposite direction.""" |
37b33c34bf4f
templatekw: add a {negrev} keyword
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41419
diff
changeset
|
530 ctx = context.resource(mapping, 'ctx') |
41737
36b62a522814
templatekw: make negrev return empty for wdir() and nullrev
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41733
diff
changeset
|
531 rev = ctx.rev() |
36b62a522814
templatekw: make negrev return empty for wdir() and nullrev
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41733
diff
changeset
|
532 if rev is None or rev < 0: # wdir() or nullrev? |
36b62a522814
templatekw: make negrev return empty for wdir() and nullrev
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41733
diff
changeset
|
533 return None |
41733
37b33c34bf4f
templatekw: add a {negrev} keyword
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41419
diff
changeset
|
534 repo = context.resource(mapping, 'repo') |
41737
36b62a522814
templatekw: make negrev return empty for wdir() and nullrev
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41733
diff
changeset
|
535 return rev - len(repo) |
41733
37b33c34bf4f
templatekw: add a {negrev} keyword
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
41419
diff
changeset
|
536 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
537 @templatekeyword('node', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
538 def shownode(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
539 """String. The changeset identification hash, as a 40 hexadecimal |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
540 digit string. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
541 """ |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
542 ctx = context.resource(mapping, 'ctx') |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
543 return ctx.hex() |
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
544 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
545 @templatekeyword('obsolete', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
546 def showobsolete(context, mapping): |
34657
bfb6fd93b637
help: hide template keywords of obsolescence as they are still experimental
Yuya Nishihara <yuya@tcha.org>
parents:
34656
diff
changeset
|
547 """String. Whether the changeset is obsolete. (EXPERIMENTAL)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
548 ctx = context.resource(mapping, 'ctx') |
31704
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31461
diff
changeset
|
549 if ctx.obsolete(): |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31461
diff
changeset
|
550 return 'obsolete' |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31461
diff
changeset
|
551 return '' |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31461
diff
changeset
|
552 |
39398
3cd977d5a16b
templatekw: add {path} keyword to host documentation
Yuya Nishihara <yuya@tcha.org>
parents:
39395
diff
changeset
|
553 @templatekeyword('path', requires={'fctx'}) |
3cd977d5a16b
templatekw: add {path} keyword to host documentation
Yuya Nishihara <yuya@tcha.org>
parents:
39395
diff
changeset
|
554 def showpath(context, mapping): |
3cd977d5a16b
templatekw: add {path} keyword to host documentation
Yuya Nishihara <yuya@tcha.org>
parents:
39395
diff
changeset
|
555 """String. Repository-absolute path of the current file. (EXPERIMENTAL)""" |
3cd977d5a16b
templatekw: add {path} keyword to host documentation
Yuya Nishihara <yuya@tcha.org>
parents:
39395
diff
changeset
|
556 fctx = context.resource(mapping, 'fctx') |
3cd977d5a16b
templatekw: add {path} keyword to host documentation
Yuya Nishihara <yuya@tcha.org>
parents:
39395
diff
changeset
|
557 return fctx.path() |
3cd977d5a16b
templatekw: add {path} keyword to host documentation
Yuya Nishihara <yuya@tcha.org>
parents:
39395
diff
changeset
|
558 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
559 @templatekeyword('peerurls', requires={'repo'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
560 def showpeerurls(context, mapping): |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
561 """A dictionary of repository locations defined in the [paths] section |
34539
f30e59703d98
templatekw: rename peerpaths to peerurls per naming convention (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34538
diff
changeset
|
562 of your configuration file.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
563 repo = context.resource(mapping, 'repo') |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
564 # see commands.paths() for naming of dictionary keys |
34538
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
565 paths = repo.ui.paths |
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
566 urls = util.sortdict((k, p.rawloc) for k, p in sorted(paths.iteritems())) |
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
567 def makemap(k): |
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
568 p = paths[k] |
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
569 d = {'name': k, 'url': p.rawloc} |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
570 d.update((o, v) for o, v in sorted(p.suboptions.iteritems())) |
34538
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
571 return d |
ac38e889b33a
templatekw: make experimental {peerpaths} return a single-level dict (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
34537
diff
changeset
|
572 return _hybrid(None, urls, makemap, lambda k: '%s=%s' % (k, urls[k])) |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
573 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
574 @templatekeyword("predecessors", requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
575 def showpredecessors(context, mapping): |
40477
70e3e3da24be
templatekw: fix documentation typos
Matt Harbison <matt_harbison@yahoo.com>
parents:
39812
diff
changeset
|
576 """Returns the list of the closest visible successors. (EXPERIMENTAL)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
577 repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
578 ctx = context.resource(mapping, 'ctx') |
32897
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32678
diff
changeset
|
579 predecessors = sorted(obsutil.closestpredecessors(repo, ctx.node())) |
38315
523f64466a05
py3: fix map() use in templatekw.showpredecessors()
Yuya Nishihara <yuya@tcha.org>
parents:
38310
diff
changeset
|
580 predecessors = pycompat.maplist(hex, predecessors) |
32897
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32678
diff
changeset
|
581 |
32928
498e9dcc5fa9
templatekw: populate all keywords depending on predecessor in map operation
Yuya Nishihara <yuya@tcha.org>
parents:
32927
diff
changeset
|
582 return _hybrid(None, predecessors, |
37106
be3f33f5e232
templater: switch 'revcache' based on new mapping items
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
583 lambda x: {'ctx': repo[x]}, |
34335
dd28b1f55eb8
templatekw: just pass underlying value (or key) to joinfmt() function
Yuya Nishihara <yuya@tcha.org>
parents:
34334
diff
changeset
|
584 lambda x: scmutil.formatchangeid(repo[x])) |
32897
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32678
diff
changeset
|
585 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
586 @templatekeyword('reporoot', requires={'repo'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
587 def showreporoot(context, mapping): |
36280
48a6b1a22ccf
templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
36148
diff
changeset
|
588 """String. The root directory of the current repository.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
589 repo = context.resource(mapping, 'repo') |
36280
48a6b1a22ccf
templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
36148
diff
changeset
|
590 return repo.root |
48a6b1a22ccf
templatekw: add {reporoot} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
36148
diff
changeset
|
591 |
39603
918944f53aac
templatekw: add {size} keyword as an example of fctx-based keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39398
diff
changeset
|
592 @templatekeyword('size', requires={'fctx'}) |
918944f53aac
templatekw: add {size} keyword as an example of fctx-based keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39398
diff
changeset
|
593 def showsize(context, mapping): |
918944f53aac
templatekw: add {size} keyword as an example of fctx-based keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39398
diff
changeset
|
594 """Integer. Size of the current file in bytes. (EXPERIMENTAL)""" |
918944f53aac
templatekw: add {size} keyword as an example of fctx-based keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39398
diff
changeset
|
595 fctx = context.resource(mapping, 'fctx') |
918944f53aac
templatekw: add {size} keyword as an example of fctx-based keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39398
diff
changeset
|
596 return fctx.size() |
918944f53aac
templatekw: add {size} keyword as an example of fctx-based keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39398
diff
changeset
|
597 |
39616
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
598 # requires 'fctx' to denote {status} depends on (ctx, path) pair |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
599 @templatekeyword('status', requires={'ctx', 'fctx', 'revcache'}) |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
600 def showstatus(context, mapping): |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
601 """String. Status code of the current file. (EXPERIMENTAL)""" |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
602 path = templateutil.runsymbol(context, mapping, 'path') |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
603 path = templateutil.stringify(context, mapping, path) |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
604 if not path: |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
605 return |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
606 statmap = _getfilestatusmap(context, mapping) |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
607 if path not in statmap: |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
608 statmap = _getfilestatusmap(context, mapping, listall=True) |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
609 return statmap.get(path) |
87428152e820
templatekw: add experimental {status} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
39615
diff
changeset
|
610 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
611 @templatekeyword("successorssets", requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
612 def showsuccessorssets(context, mapping): |
34656
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
613 """Returns a string of sets of successors for a changectx. Format used |
40477
70e3e3da24be
templatekw: fix documentation typos
Matt Harbison <matt_harbison@yahoo.com>
parents:
39812
diff
changeset
|
614 is: [ctx1, ctx2], [ctx3] if ctx has been split into ctx1 and ctx2 |
34657
bfb6fd93b637
help: hide template keywords of obsolescence as they are still experimental
Yuya Nishihara <yuya@tcha.org>
parents:
34656
diff
changeset
|
615 while also diverged into ctx3. (EXPERIMENTAL)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
616 repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
617 ctx = context.resource(mapping, 'ctx') |
33276
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
618 if not ctx.obsolete(): |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
619 return '' |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
620 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
621 ssets = obsutil.successorssets(repo, ctx.node(), closest=True) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
622 ssets = [[hex(n) for n in ss] for ss in ssets] |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
623 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
624 data = [] |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
625 for ss in ssets: |
37106
be3f33f5e232
templater: switch 'revcache' based on new mapping items
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
626 h = _hybrid(None, ss, lambda x: {'ctx': repo[x]}, |
34335
dd28b1f55eb8
templatekw: just pass underlying value (or key) to joinfmt() function
Yuya Nishihara <yuya@tcha.org>
parents:
34334
diff
changeset
|
627 lambda x: scmutil.formatchangeid(repo[x])) |
33276
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
628 data.append(h) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
629 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
630 # Format the successorssets |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
631 def render(d): |
37276
45987e2b64f0
templatekw: do not directly call .gen
Yuya Nishihara <yuya@tcha.org>
parents:
37106
diff
changeset
|
632 return templateutil.stringify(context, mapping, d) |
33276
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
633 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
634 def gen(data): |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
635 yield "; ".join(render(d) for d in data) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
636 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
637 return _hybrid(gen(data), data, lambda x: {'successorset': x}, |
34335
dd28b1f55eb8
templatekw: just pass underlying value (or key) to joinfmt() function
Yuya Nishihara <yuya@tcha.org>
parents:
34334
diff
changeset
|
638 pycompat.identity) |
33276
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33060
diff
changeset
|
639 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
640 @templatekeyword("succsandmarkers", requires={'repo', 'ctx'}) |
36623
59ee648870a7
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36622
diff
changeset
|
641 def showsuccsandmarkers(context, mapping): |
34656
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
642 """Returns a list of dict for each final successor of ctx. The dict |
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
643 contains successors node id in "successors" keys and the list of |
eb7fffdc6e5b
help: fix formatting of template keywords
Yuya Nishihara <yuya@tcha.org>
parents:
34581
diff
changeset
|
644 obs-markers from ctx to the set of successors in "markers". |
33930
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
645 (EXPERIMENTAL) |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
646 """ |
36623
59ee648870a7
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36622
diff
changeset
|
647 repo = context.resource(mapping, 'repo') |
59ee648870a7
templatekw: switch obsfate-related template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36622
diff
changeset
|
648 ctx = context.resource(mapping, 'ctx') |
33930
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
649 |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
650 values = obsutil.successorsandmarkers(repo, ctx) |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
651 |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
652 if values is None: |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
653 values = [] |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
654 |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
655 # Format successors and markers to avoid exposing binary to templates |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
656 data = [] |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
657 for i in values: |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
658 # Format successors |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
659 successors = i['successors'] |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
660 |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
661 successors = [hex(n) for n in successors] |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
662 successors = _hybrid(None, successors, |
37106
be3f33f5e232
templater: switch 'revcache' based on new mapping items
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
663 lambda x: {'ctx': repo[x]}, |
34335
dd28b1f55eb8
templatekw: just pass underlying value (or key) to joinfmt() function
Yuya Nishihara <yuya@tcha.org>
parents:
34334
diff
changeset
|
664 lambda x: scmutil.formatchangeid(repo[x])) |
33930
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
665 |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
666 # Format markers |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
667 finalmarkers = [] |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
668 for m in i['markers']: |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
669 hexprec = hex(m[0]) |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
670 hexsucs = tuple(hex(n) for n in m[1]) |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
671 hexparents = None |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
672 if m[5] is not None: |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
673 hexparents = tuple(hex(n) for n in m[5]) |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
674 newmarker = (hexprec, hexsucs) + m[2:5] + (hexparents,) + m[6:] |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
675 finalmarkers.append(newmarker) |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
676 |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
677 data.append({'successors': successors, 'markers': finalmarkers}) |
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
678 |
37503
49a8c2cc7978
templatekw: fix return type of {succsandmarkers} (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
37328
diff
changeset
|
679 return templateutil.mappinglist(data) |
33930
e278d6d2d7d2
template: add minimal obsfate template function
Boris Feld <boris.feld@octobus.net>
parents:
33884
diff
changeset
|
680 |
40526
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
681 @templatekeyword('p1', requires={'ctx'}) |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
682 def showp1(context, mapping): |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
683 """Changeset. The changeset's first parent. ``{p1.rev}`` for the revision |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
684 number, and ``{p1.node}`` for the identification hash.""" |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
685 ctx = context.resource(mapping, 'ctx') |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
686 return templateutil.mappingdict({'ctx': ctx.p1()}, tmpl=_changeidtmpl) |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
687 |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
688 @templatekeyword('p2', requires={'ctx'}) |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
689 def showp2(context, mapping): |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
690 """Changeset. The changeset's second parent. ``{p2.rev}`` for the revision |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
691 number, and ``{p2.node}`` for the identification hash.""" |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
692 ctx = context.resource(mapping, 'ctx') |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
693 return templateutil.mappingdict({'ctx': ctx.p2()}, tmpl=_changeidtmpl) |
539efc88513b
templatekw: add p1/p2 keywords which switches the current ctx
Yuya Nishihara <yuya@tcha.org>
parents:
40524
diff
changeset
|
694 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
695 @templatekeyword('p1rev', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
696 def showp1rev(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
697 """Integer. The repository-local revision number of the changeset's |
40527
592feb3f88b1
templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
Yuya Nishihara <yuya@tcha.org>
parents:
40526
diff
changeset
|
698 first parent, or -1 if the changeset has no parents. (DEPRECATED)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
699 ctx = context.resource(mapping, 'ctx') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
700 return ctx.p1().rev() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
701 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
702 @templatekeyword('p2rev', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
703 def showp2rev(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
704 """Integer. The repository-local revision number of the changeset's |
40527
592feb3f88b1
templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
Yuya Nishihara <yuya@tcha.org>
parents:
40526
diff
changeset
|
705 second parent, or -1 if the changeset has no second parent. (DEPRECATED)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
706 ctx = context.resource(mapping, 'ctx') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
707 return ctx.p2().rev() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
708 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
709 @templatekeyword('p1node', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
710 def showp1node(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
711 """String. The identification hash of the changeset's first parent, |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
712 as a 40 digit hexadecimal string. If the changeset has no parents, all |
40527
592feb3f88b1
templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
Yuya Nishihara <yuya@tcha.org>
parents:
40526
diff
changeset
|
713 digits are 0. (DEPRECATED)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
714 ctx = context.resource(mapping, 'ctx') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
715 return ctx.p1().hex() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
716 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
717 @templatekeyword('p2node', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
718 def showp2node(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
719 """String. The identification hash of the changeset's second |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
720 parent, as a 40 digit hexadecimal string. If the changeset has no second |
40527
592feb3f88b1
templatekw: deprecate p1rev/p2rev/p1node/p2node in favor of p1/p2
Yuya Nishihara <yuya@tcha.org>
parents:
40526
diff
changeset
|
721 parent, all digits are 0. (DEPRECATED)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
722 ctx = context.resource(mapping, 'ctx') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
723 return ctx.p2().hex() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
724 |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
725 @templatekeyword('parents', requires={'repo', 'ctx'}) |
36627
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
726 def showparents(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
727 """List of strings. The parents of the changeset in "rev:node" |
26434
0a823de8d7b7
templatekw: reorder stub of showparents() function
Yuya Nishihara <yuya@tcha.org>
parents:
26234
diff
changeset
|
728 format. If the changeset has only one "natural" parent (the predecessor |
0a823de8d7b7
templatekw: reorder stub of showparents() function
Yuya Nishihara <yuya@tcha.org>
parents:
26234
diff
changeset
|
729 revision) nothing is shown.""" |
36627
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
730 repo = context.resource(mapping, 'repo') |
c3f9d0c303e8
templatekw: switch remainder of _showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36626
diff
changeset
|
731 ctx = context.resource(mapping, 'ctx') |
28270
650c9f69a744
templatekw: switch ctx of list expression to rev of {parents} (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
28239
diff
changeset
|
732 pctxs = scmutil.meaningfulparents(repo, ctx) |
34581
ee0d74083a22
templater: store revisions as ints so min/max won't compare them as strings
Yuya Nishihara <yuya@tcha.org>
parents:
34541
diff
changeset
|
733 prevs = [p.rev() for p in pctxs] |
26435
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
734 parents = [[('rev', p.rev()), |
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
735 ('node', p.hex()), |
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
736 ('phase', p.phasestr())] |
28270
650c9f69a744
templatekw: switch ctx of list expression to rev of {parents} (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
28239
diff
changeset
|
737 for p in pctxs] |
37072
724f2e21d870
templatekw: stop using _showlist() which is about to be deprecated
Yuya Nishihara <yuya@tcha.org>
parents:
37071
diff
changeset
|
738 f = _showcompatlist(context, mapping, 'parent', parents) |
37106
be3f33f5e232
templater: switch 'revcache' based on new mapping items
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
739 return _hybrid(f, prevs, lambda x: {'ctx': repo[x]}, |
34581
ee0d74083a22
templater: store revisions as ints so min/max won't compare them as strings
Yuya Nishihara <yuya@tcha.org>
parents:
34541
diff
changeset
|
740 lambda x: scmutil.formatchangeid(repo[x]), keytype=int) |
26434
0a823de8d7b7
templatekw: reorder stub of showparents() function
Yuya Nishihara <yuya@tcha.org>
parents:
26234
diff
changeset
|
741 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
742 @templatekeyword('phase', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
743 def showphase(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
744 """String. The changeset phase name.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
745 ctx = context.resource(mapping, 'ctx') |
15823
a1f818a2b50d
phases: ``{phase}`` template keyword display the phase name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15422
diff
changeset
|
746 return ctx.phasestr() |
a1f818a2b50d
phases: ``{phase}`` template keyword display the phase name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15422
diff
changeset
|
747 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
748 @templatekeyword('phaseidx', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
749 def showphaseidx(context, mapping): |
35034
29e6513856ee
help: hide phaseidx template keyword
Yuya Nishihara <yuya@tcha.org>
parents:
34847
diff
changeset
|
750 """Integer. The changeset phase index. (ADVANCED)""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
751 ctx = context.resource(mapping, 'ctx') |
15422
042e11c4e416
phases: add a phase template keyword
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15155
diff
changeset
|
752 return ctx.phase() |
042e11c4e416
phases: add a phase template keyword
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15155
diff
changeset
|
753 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
754 @templatekeyword('rev', requires={'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
755 def showrev(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
756 """Integer. The repository-local changeset revision number.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
757 ctx = context.resource(mapping, 'ctx') |
32676
4bec8cce6a09
scmutil: pass ctx object to intrev()
Yuya Nishihara <yuya@tcha.org>
parents:
32038
diff
changeset
|
758 return scmutil.intrev(ctx) |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
759 |
36624
2da414105809
templatekw: switch revset() to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36623
diff
changeset
|
760 def showrevslist(context, mapping, name, revs): |
26234
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
761 """helper to generate a list of revisions in which a mapped template will |
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
762 be evaluated""" |
36624
2da414105809
templatekw: switch revset() to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36623
diff
changeset
|
763 repo = context.resource(mapping, 'repo') |
40568
d11e2c5b287e
templater: compute revset lazily
Yuya Nishihara <yuya@tcha.org>
parents:
40527
diff
changeset
|
764 # revs may be a smartset; don't compute it until f() has to be evaluated |
d11e2c5b287e
templater: compute revset lazily
Yuya Nishihara <yuya@tcha.org>
parents:
40527
diff
changeset
|
765 def f(): |
d11e2c5b287e
templater: compute revset lazily
Yuya Nishihara <yuya@tcha.org>
parents:
40527
diff
changeset
|
766 srevs = ['%d' % r for r in revs] |
d11e2c5b287e
templater: compute revset lazily
Yuya Nishihara <yuya@tcha.org>
parents:
40527
diff
changeset
|
767 return _showcompatlist(context, mapping, name, srevs) |
26234
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
768 return _hybrid(f, revs, |
37106
be3f33f5e232
templater: switch 'revcache' based on new mapping items
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
769 lambda x: {name: x, 'ctx': repo[x]}, |
34581
ee0d74083a22
templater: store revisions as ints so min/max won't compare them as strings
Yuya Nishihara <yuya@tcha.org>
parents:
34541
diff
changeset
|
770 pycompat.identity, keytype=int) |
26234
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
771 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
772 @templatekeyword('subrepos', requires={'ctx'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
773 def showsubrepos(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
774 """List of strings. Updated subrepositories in the changeset.""" |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
775 ctx = context.resource(mapping, 'ctx') |
21897
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
776 substate = ctx.substate |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
777 if not substate: |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
778 return compatlist(context, mapping, 'subrepo', []) |
41419
0bd56c291359
cleanup: use p1() and p2() instead of parents()[0] and parents()[1]
Martin von Zweigbergk <martinvonz@google.com>
parents:
41300
diff
changeset
|
779 psubstate = ctx.p1().substate or {} |
21897
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
780 subrepos = [] |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
781 for sub in substate: |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
782 if sub not in psubstate or substate[sub] != psubstate[sub]: |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
783 subrepos.append(sub) # modified or newly added in ctx |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
784 for sub in psubstate: |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
785 if sub not in substate: |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
786 subrepos.append(sub) # removed in ctx |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
787 return compatlist(context, mapping, 'subrepo', sorted(subrepos)) |
21897
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
788 |
23977
0870bb93573c
templatekw: re-add showtags() to list tags keyword up in online help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23737
diff
changeset
|
789 # don't remove "showtags" definition, even though namespaces will put |
0870bb93573c
templatekw: re-add showtags() to list tags keyword up in online help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23737
diff
changeset
|
790 # a helper function for "tags" keyword into "keywords" map automatically, |
0870bb93573c
templatekw: re-add showtags() to list tags keyword up in online help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23737
diff
changeset
|
791 # because online help text is built without namespaces initialization |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
792 @templatekeyword('tags', requires={'repo', 'ctx'}) |
36622
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
793 def showtags(context, mapping): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
794 """List of strings. Any tags associated with the changeset.""" |
36622
900e5ee44307
templatekw: switch namespace template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36620
diff
changeset
|
795 return shownames(context, mapping, 'tags') |
23977
0870bb93573c
templatekw: re-add showtags() to list tags keyword up in online help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23737
diff
changeset
|
796 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
797 @templatekeyword('termwidth', requires={'ui'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
798 def showtermwidth(context, mapping): |
30088
d1f5f158768e
template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com>
parents:
29683
diff
changeset
|
799 """Integer. The width of the current terminal.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
800 ui = context.resource(mapping, 'ui') |
36472
e46b24582fa0
templatekw: minimize resource dependency of {envvars} and {termwidth}
Yuya Nishihara <yuya@tcha.org>
parents:
36471
diff
changeset
|
801 return ui.termwidth() |
30088
d1f5f158768e
template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com>
parents:
29683
diff
changeset
|
802 |
38986
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
803 @templatekeyword('user', requires={'ctx'}) |
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
804 def showuser(context, mapping): |
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
805 """String. The unmodified author of the changeset.""" |
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
806 ctx = context.resource(mapping, 'ctx') |
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
807 return ctx.user() |
390287321b4b
templatekw: copy {author} to {user} and document {author} as an alias
Yuya Nishihara <yuya@tcha.org>
parents:
38815
diff
changeset
|
808 |
37071
aa97e06a1912
templater: use template context to render old-style list template
Yuya Nishihara <yuya@tcha.org>
parents:
37022
diff
changeset
|
809 @templatekeyword('instabilities', requires={'ctx'}) |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
810 def showinstabilities(context, mapping): |
33735
511d6ae462f3
template: rename troubles templatekw into instabilities
Boris Feld <boris.feld@octobus.net>
parents:
33476
diff
changeset
|
811 """List of strings. Evolution instabilities affecting the changeset. |
30712
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30385
diff
changeset
|
812 (EXPERIMENTAL) |
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30385
diff
changeset
|
813 """ |
36620
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
814 ctx = context.resource(mapping, 'ctx') |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
815 return compatlist(context, mapping, 'instability', ctx.instabilities(), |
121a20e5da56
templatekw: switch most of showlist template keywords to new API (issue5779)
Yuya Nishihara <yuya@tcha.org>
parents:
36619
diff
changeset
|
816 plural='instabilities') |
30712
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30385
diff
changeset
|
817 |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
818 @templatekeyword('verbosity', requires={'ui'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
819 def showverbosity(context, mapping): |
35036
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
820 """String. The current output verbosity in 'debug', 'quiet', 'verbose', |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
821 or ''.""" |
36543
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36542
diff
changeset
|
822 ui = context.resource(mapping, 'ui') |
35928
c8e2d6ed1f9e
cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents:
35512
diff
changeset
|
823 # see logcmdutil.changesettemplater for priority of these flags |
35036
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
824 if ui.debugflag: |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
825 return 'debug' |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
826 elif ui.quiet: |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
827 return 'quiet' |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
828 elif ui.verbose: |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
829 return 'verbose' |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
830 return '' |
625d5ebce066
templatekw: add verbosity keyword to select template by -q/-v/--debug flag
Yuya Nishihara <yuya@tcha.org>
parents:
35035
diff
changeset
|
831 |
37685
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
832 @templatekeyword('whyunstable', requires={'repo', 'ctx'}) |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
833 def showwhyunstable(context, mapping): |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
834 """List of dicts explaining all instabilities of a changeset. |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
835 (EXPERIMENTAL) |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
836 """ |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
837 repo = context.resource(mapping, 'repo') |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
838 ctx = context.resource(mapping, 'ctx') |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
839 |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
840 def formatnode(ctx): |
37707
24fee31fda05
templates: adjust white space amount in the output of {whyunstable}
Anton Shestakov <av6@dwimlabs.net>
parents:
37686
diff
changeset
|
841 return '%s (%s)' % (scmutil.formatchangeid(ctx), ctx.phasestr()) |
37685
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
842 |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
843 entries = obsutil.whyunstable(repo, ctx) |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
844 |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
845 for entry in entries: |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
846 if entry.get('divergentnodes'): |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
847 dnodes = entry['divergentnodes'] |
37686
b1b1b0626f59
templates: make divergentnodes in whyunstable keyword be a hybrid list
Anton Shestakov <av6@dwimlabs.net>
parents:
37685
diff
changeset
|
848 dnhybrid = _hybrid(None, [dnode.hex() for dnode in dnodes], |
b1b1b0626f59
templates: make divergentnodes in whyunstable keyword be a hybrid list
Anton Shestakov <av6@dwimlabs.net>
parents:
37685
diff
changeset
|
849 lambda x: {'ctx': repo[x]}, |
b1b1b0626f59
templates: make divergentnodes in whyunstable keyword be a hybrid list
Anton Shestakov <av6@dwimlabs.net>
parents:
37685
diff
changeset
|
850 lambda x: formatnode(repo[x])) |
b1b1b0626f59
templates: make divergentnodes in whyunstable keyword be a hybrid list
Anton Shestakov <av6@dwimlabs.net>
parents:
37685
diff
changeset
|
851 entry['divergentnodes'] = dnhybrid |
37685
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
852 |
37707
24fee31fda05
templates: adjust white space amount in the output of {whyunstable}
Anton Shestakov <av6@dwimlabs.net>
parents:
37686
diff
changeset
|
853 tmpl = ('{instability}:{if(divergentnodes, " ")}{divergentnodes} ' |
24fee31fda05
templates: adjust white space amount in the output of {whyunstable}
Anton Shestakov <av6@dwimlabs.net>
parents:
37686
diff
changeset
|
854 '{reason} {node|short}') |
37685
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
855 return templateutil.mappinglist(entries, tmpl=tmpl, sep='\n') |
76cd5816268e
templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
37503
diff
changeset
|
856 |
35035
e2fc6cec0eff
templatekw: move loadkeyword() to bottom
Yuya Nishihara <yuya@tcha.org>
parents:
35034
diff
changeset
|
857 def loadkeyword(ui, extname, registrarobj): |
e2fc6cec0eff
templatekw: move loadkeyword() to bottom
Yuya Nishihara <yuya@tcha.org>
parents:
35034
diff
changeset
|
858 """Load template keyword from specified registrarobj |
e2fc6cec0eff
templatekw: move loadkeyword() to bottom
Yuya Nishihara <yuya@tcha.org>
parents:
35034
diff
changeset
|
859 """ |
e2fc6cec0eff
templatekw: move loadkeyword() to bottom
Yuya Nishihara <yuya@tcha.org>
parents:
35034
diff
changeset
|
860 for name, func in registrarobj._table.iteritems(): |
e2fc6cec0eff
templatekw: move loadkeyword() to bottom
Yuya Nishihara <yuya@tcha.org>
parents:
35034
diff
changeset
|
861 keywords[name] = func |
e2fc6cec0eff
templatekw: move loadkeyword() to bottom
Yuya Nishihara <yuya@tcha.org>
parents:
35034
diff
changeset
|
862 |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
863 # tell hggettext to extract docstrings from these functions: |
26436
a2291c9c85a1
templatekw: remove dockeywords hack
Yuya Nishihara <yuya@tcha.org>
parents:
26435
diff
changeset
|
864 i18nfunctions = keywords.values() |