Mercurial > hg
annotate mercurial/templatekw.py @ 33451:e44d54260c32
phases: track phase movements in 'advanceboundary'
Makes advanceboundary record the phase movement of affected revisions in
tr.changes['phases'].
The tracking is not usable yet because the 'retractboundary' function can also
affect phases.
We'll improve that in the coming changesets.
author | Boris Feld <boris.feld@octobus.net> |
---|---|
date | Tue, 11 Jul 2017 02:39:52 +0200 |
parents | 16ed67164002 |
children | c0d8de2724ce |
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:
31699
diff
changeset
|
10 from .i18n import _ |
32658
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
11 from .node import ( |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
12 hex, |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
13 nullid, |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
14 short, |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
15 ) |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
16 |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
17 from . import ( |
28239
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
18 encoding, |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
19 error, |
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
20 hbisect, |
32879
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
21 obsutil, |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
22 patch, |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
23 pycompat, |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
24 registrar, |
25984
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
25 scmutil, |
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
26 util, |
c57509e88922
templatekw: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25740
diff
changeset
|
27 ) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
28 |
31879
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
29 class _hybrid(object): |
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
30 """Wrapper for list or dict to support legacy template |
17631
0b241d7a8c62
templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents:
17358
diff
changeset
|
31 |
31879
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
32 This class allows us to handle both: |
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
33 - "{files}" (legacy command-line-specific list hack) and |
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
34 - "{files % '{file}\n'}" (hgweb-style with inlining and function support) |
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
35 and to access raw values: |
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
36 - "{ifcontains(file, files, ...)}", "{ifcontains(key, extras, ...)}" |
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
37 - "{get(extras, key)}" |
31882
ba5b74f780d5
templater: make _hybrid provide more list/dict-like methods
Yuya Nishihara <yuya@tcha.org>
parents:
31881
diff
changeset
|
38 - "{files|json}" |
31879
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
39 """ |
868ec199cad0
templater: rewrite doc of _hybrid class as docstring
Yuya Nishihara <yuya@tcha.org>
parents:
31850
diff
changeset
|
40 |
29669
bdc81970853d
templatekw: change joinfmt to a mandatory argument of _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
29624
diff
changeset
|
41 def __init__(self, gen, values, makemap, joinfmt): |
31923
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
42 if gen is not None: |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
43 self.gen = gen |
31881
31dad7a5b4ed
templater: hide private variable of _hybrid
Yuya Nishihara <yuya@tcha.org>
parents:
31880
diff
changeset
|
44 self._values = values |
24239
31f9b1b16d1e
templatekw: keep raw list or dict in _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
24238
diff
changeset
|
45 self._makemap = makemap |
29669
bdc81970853d
templatekw: change joinfmt to a mandatory argument of _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
29624
diff
changeset
|
46 self.joinfmt = joinfmt |
31923
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
47 @util.propertycache |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
48 def gen(self): |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
49 return self._defaultgen() |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
50 def _defaultgen(self): |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
51 """Generator to stringify this as {join(self, ' ')}""" |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
52 for i, d in enumerate(self.itermaps()): |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
53 if i > 0: |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
54 yield ' ' |
68c910fa9ee2
templatekw: add default implementation of _hybrid.gen
Yuya Nishihara <yuya@tcha.org>
parents:
31882
diff
changeset
|
55 yield self.joinfmt(d) |
27891
ac8c0ee5c3b8
templater: make _hybrid not callable to avoid conflicting semantics
Yuya Nishihara <yuya@tcha.org>
parents:
27215
diff
changeset
|
56 def itermaps(self): |
24239
31f9b1b16d1e
templatekw: keep raw list or dict in _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
24238
diff
changeset
|
57 makemap = self._makemap |
31881
31dad7a5b4ed
templater: hide private variable of _hybrid
Yuya Nishihara <yuya@tcha.org>
parents:
31880
diff
changeset
|
58 for x in self._values: |
24239
31f9b1b16d1e
templatekw: keep raw list or dict in _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
24238
diff
changeset
|
59 yield makemap(x) |
24240
bd504d90588d
templater: implement _hybrid.__contains__ so that ifcontains can accept dict
Yuya Nishihara <yuya@tcha.org>
parents:
24239
diff
changeset
|
60 def __contains__(self, x): |
31881
31dad7a5b4ed
templater: hide private variable of _hybrid
Yuya Nishihara <yuya@tcha.org>
parents:
31880
diff
changeset
|
61 return x in self._values |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
62 def __getitem__(self, key): |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
63 return self._values[key] |
22393
293930a1fa0a
templater: implement __len__ for _hybrid
Anton Shestakov <engored@ya.ru>
parents:
21897
diff
changeset
|
64 def __len__(self): |
31881
31dad7a5b4ed
templater: hide private variable of _hybrid
Yuya Nishihara <yuya@tcha.org>
parents:
31880
diff
changeset
|
65 return len(self._values) |
31882
ba5b74f780d5
templater: make _hybrid provide more list/dict-like methods
Yuya Nishihara <yuya@tcha.org>
parents:
31881
diff
changeset
|
66 def __iter__(self): |
ba5b74f780d5
templater: make _hybrid provide more list/dict-like methods
Yuya Nishihara <yuya@tcha.org>
parents:
31881
diff
changeset
|
67 return iter(self._values) |
24241
e7baf88c29c3
templatekw: forward _hybrid.get to raw values so that get(extras, key) works
Yuya Nishihara <yuya@tcha.org>
parents:
24240
diff
changeset
|
68 def __getattr__(self, name): |
31882
ba5b74f780d5
templater: make _hybrid provide more list/dict-like methods
Yuya Nishihara <yuya@tcha.org>
parents:
31881
diff
changeset
|
69 if name not in ('get', 'items', 'iteritems', 'iterkeys', 'itervalues', |
ba5b74f780d5
templater: make _hybrid provide more list/dict-like methods
Yuya Nishihara <yuya@tcha.org>
parents:
31881
diff
changeset
|
70 'keys', 'values'): |
24241
e7baf88c29c3
templatekw: forward _hybrid.get to raw values so that get(extras, key) works
Yuya Nishihara <yuya@tcha.org>
parents:
24240
diff
changeset
|
71 raise AttributeError(name) |
31881
31dad7a5b4ed
templater: hide private variable of _hybrid
Yuya Nishihara <yuya@tcha.org>
parents:
31880
diff
changeset
|
72 return getattr(self._values, name) |
17631
0b241d7a8c62
templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents:
17358
diff
changeset
|
73 |
31925
5b2241e84982
templatekw: add public function to wrap a dict by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31924
diff
changeset
|
74 def hybriddict(data, key='key', value='value', fmt='%s=%s', gen=None): |
5b2241e84982
templatekw: add public function to wrap a dict by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31924
diff
changeset
|
75 """Wrap data to support both dict-like and string-like operations""" |
5b2241e84982
templatekw: add public function to wrap a dict by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31924
diff
changeset
|
76 return _hybrid(gen, data, lambda k: {key: k, value: data[k]}, |
5b2241e84982
templatekw: add public function to wrap a dict by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31924
diff
changeset
|
77 lambda d: fmt % (d[key], d[value])) |
5b2241e84982
templatekw: add public function to wrap a dict by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31924
diff
changeset
|
78 |
31924
21f129354dd0
templatekw: add public function to wrap a list by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31923
diff
changeset
|
79 def hybridlist(data, name, fmt='%s', gen=None): |
21f129354dd0
templatekw: add public function to wrap a list by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31923
diff
changeset
|
80 """Wrap data to support both list-like and string-like operations""" |
21f129354dd0
templatekw: add public function to wrap a list by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31923
diff
changeset
|
81 return _hybrid(gen, data, lambda x: {name: x}, lambda d: fmt % d[name]) |
21f129354dd0
templatekw: add public function to wrap a list by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31923
diff
changeset
|
82 |
31880
a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
Yuya Nishihara <yuya@tcha.org>
parents:
31879
diff
changeset
|
83 def unwraphybrid(thing): |
a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
Yuya Nishihara <yuya@tcha.org>
parents:
31879
diff
changeset
|
84 """Return an object which can be stringified possibly by using a legacy |
a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
Yuya Nishihara <yuya@tcha.org>
parents:
31879
diff
changeset
|
85 template""" |
a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
Yuya Nishihara <yuya@tcha.org>
parents:
31879
diff
changeset
|
86 if not util.safehasattr(thing, 'gen'): |
a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
Yuya Nishihara <yuya@tcha.org>
parents:
31879
diff
changeset
|
87 return thing |
a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
Yuya Nishihara <yuya@tcha.org>
parents:
31879
diff
changeset
|
88 return thing.gen |
a0f2d83f8083
templater: remove __iter__() from _hybrid, resolve it explicitly
Yuya Nishihara <yuya@tcha.org>
parents:
31879
diff
changeset
|
89 |
32038
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
90 def showdict(name, data, mapping, plural=None, key='key', value='value', |
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
91 fmt='%s=%s', separator=' '): |
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
92 c = [{key: k, value: v} for k, v in data.iteritems()] |
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
93 f = _showlist(name, c, mapping, plural, separator) |
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
94 return hybriddict(data, key=key, value=value, fmt=fmt, gen=f) |
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
95 |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
96 def showlist(name, values, mapping, plural=None, element=None, separator=' '): |
17631
0b241d7a8c62
templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents:
17358
diff
changeset
|
97 if not element: |
0b241d7a8c62
templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents:
17358
diff
changeset
|
98 element = name |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
99 f = _showlist(name, values, mapping, plural, separator) |
31924
21f129354dd0
templatekw: add public function to wrap a list by _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
31923
diff
changeset
|
100 return hybridlist(values, name=element, gen=f) |
17631
0b241d7a8c62
templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents:
17358
diff
changeset
|
101 |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
102 def _showlist(name, values, mapping, plural=None, separator=' '): |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
103 '''expand set of values. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
104 name is name of key in template map. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
105 values is list of strings or dicts. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
106 plural is plural of name, if not simply name + 's'. |
25726
b44e483726d3
templatekw: allow the caller of showlist() to specify the join() separator
Matt Harbison <matt_harbison@yahoo.com>
parents:
25724
diff
changeset
|
107 separator is used to join values as a string |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
108 |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
109 expansion works like this, given name 'foo'. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
110 |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
111 if values is empty, expand 'no_foos'. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
112 |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
113 if 'foo' not in template map, return values as a string, |
25726
b44e483726d3
templatekw: allow the caller of showlist() to specify the join() separator
Matt Harbison <matt_harbison@yahoo.com>
parents:
25724
diff
changeset
|
114 joined by 'separator'. |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
115 |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
116 expand 'start_foos'. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
117 |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
118 for each value, expand 'foo'. if 'last_foo' in template |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
119 map, expand it instead of 'foo' for last key. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
120 |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
121 expand 'end_foos'. |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
122 ''' |
32035
f4ba33454b28
templatekw: rename 'args' to 'mapping' in showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
32034
diff
changeset
|
123 templ = mapping['templ'] |
33017
c31d45623304
py3: convert kwargs' keys' to str using pycompat.strkwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33015
diff
changeset
|
124 strmapping = pycompat.strkwargs(mapping) |
32034
579bbcb4322b
templatekw: eliminate unnecessary temporary variable 'names' from _showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
31925
diff
changeset
|
125 if not plural: |
579bbcb4322b
templatekw: eliminate unnecessary temporary variable 'names' from _showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
31925
diff
changeset
|
126 plural = name + 's' |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
127 if not values: |
32034
579bbcb4322b
templatekw: eliminate unnecessary temporary variable 'names' from _showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
31925
diff
changeset
|
128 noname = 'no_' + plural |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
129 if noname in templ: |
33017
c31d45623304
py3: convert kwargs' keys' to str using pycompat.strkwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33015
diff
changeset
|
130 yield templ(noname, **strmapping) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
131 return |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
132 if name not in templ: |
32970
11c0bb4ccc76
py3: replace str with bytes in isinstance()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32911
diff
changeset
|
133 if isinstance(values[0], bytes): |
25726
b44e483726d3
templatekw: allow the caller of showlist() to specify the join() separator
Matt Harbison <matt_harbison@yahoo.com>
parents:
25724
diff
changeset
|
134 yield separator.join(values) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
135 else: |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
136 for v in values: |
33017
c31d45623304
py3: convert kwargs' keys' to str using pycompat.strkwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33015
diff
changeset
|
137 yield dict(v, **strmapping) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
138 return |
32034
579bbcb4322b
templatekw: eliminate unnecessary temporary variable 'names' from _showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
31925
diff
changeset
|
139 startname = 'start_' + plural |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
140 if startname in templ: |
33017
c31d45623304
py3: convert kwargs' keys' to str using pycompat.strkwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33015
diff
changeset
|
141 yield templ(startname, **strmapping) |
32035
f4ba33454b28
templatekw: rename 'args' to 'mapping' in showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
32034
diff
changeset
|
142 vmapping = mapping.copy() |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
143 def one(v, tag=name): |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
144 try: |
32035
f4ba33454b28
templatekw: rename 'args' to 'mapping' in showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
32034
diff
changeset
|
145 vmapping.update(v) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
146 except (AttributeError, ValueError): |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
147 try: |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
148 for a, b in v: |
32035
f4ba33454b28
templatekw: rename 'args' to 'mapping' in showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
32034
diff
changeset
|
149 vmapping[a] = b |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
150 except ValueError: |
32035
f4ba33454b28
templatekw: rename 'args' to 'mapping' in showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
32034
diff
changeset
|
151 vmapping[name] = v |
33017
c31d45623304
py3: convert kwargs' keys' to str using pycompat.strkwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33015
diff
changeset
|
152 return templ(tag, **pycompat.strkwargs(vmapping)) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
153 lastname = 'last_' + name |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
154 if lastname in templ: |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
155 last = values.pop() |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
156 else: |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
157 last = None |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
158 for v in values: |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
159 yield one(v) |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
160 if last is not None: |
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
161 yield one(last, tag=lastname) |
32034
579bbcb4322b
templatekw: eliminate unnecessary temporary variable 'names' from _showlist()
Yuya Nishihara <yuya@tcha.org>
parents:
31925
diff
changeset
|
162 endname = 'end_' + plural |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
163 if endname in templ: |
33017
c31d45623304
py3: convert kwargs' keys' to str using pycompat.strkwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33015
diff
changeset
|
164 yield templ(endname, **strmapping) |
10053
5c5c6295533d
cmdutil: replace showlist() closure with a function
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
165 |
29624
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
166 def _formatrevnode(ctx): |
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
167 """Format changeset as '{rev}:{node|formatnode}', which is the default |
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
168 template provided by cmdutil.changeset_templater""" |
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
169 repo = ctx.repo() |
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
170 if repo.ui.debugflag: |
32658
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
171 hexfunc = hex |
29624
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
172 else: |
32658
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
173 hexfunc = short |
55ff67ffcead
scmutil: introduce binnode(ctx) as paired function with intrev(ctx)
Yuya Nishihara <yuya@tcha.org>
parents:
32656
diff
changeset
|
174 return '%d:%s' % (scmutil.intrev(ctx), hexfunc(scmutil.binnode(ctx))) |
29624
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
175 |
10056
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
176 def getfiles(repo, ctx, revcache): |
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
177 if 'files' not in revcache: |
25392
ed18f4acf435
templatekw: compare target context and its parent exactly (issue4690)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
24676
diff
changeset
|
178 revcache['files'] = repo.status(ctx.p1(), ctx)[:3] |
10056
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
179 return revcache['files'] |
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
180 |
26482
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
181 def getlatesttags(repo, ctx, cache, pattern=None): |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
182 '''return date, distance and name for the latest tag of rev''' |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
183 |
26482
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
184 cachename = 'latesttags' |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
185 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
|
186 cachename += '-' + pattern |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
187 match = util.stringmatcher(pattern)[2] |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
188 else: |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
189 match = util.always |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
190 |
d2e69584e330
templatekw: allow getlatesttags() to match a specific tag pattern
Matt Harbison <matt_harbison@yahoo.com>
parents:
26437
diff
changeset
|
191 if cachename not in cache: |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
192 # 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
|
193 # 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
|
194 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
|
195 latesttags = cache[cachename] |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
196 |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
197 rev = ctx.rev() |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
198 todo = [rev] |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
199 while todo: |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
200 rev = todo.pop() |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
201 if rev in latesttags: |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
202 continue |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
203 ctx = repo[rev] |
20218
0c22257388d6
templatekw: allow tagtypes other than global in getlatesttags
Andrew Shadura <andrew@shadura.me>
parents:
20183
diff
changeset
|
204 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
|
205 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
|
206 and match(t))] |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
207 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
|
208 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
|
209 continue |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
210 try: |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
211 # The tuples are laid out so the right one can be found by |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
212 # comparison. |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
213 pdate, pdist, ptag = max( |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
214 latesttags[p.rev()] for p in ctx.parents()) |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
215 except KeyError: |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
216 # Cache miss - recurse |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
217 todo.append(rev) |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
218 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
|
219 continue |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
220 latesttags[rev] = pdate, pdist + 1, ptag |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
221 return latesttags[rev] |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
222 |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
223 def getrenamedfn(repo, endrev=None): |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
224 rcache = {} |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
225 if endrev is None: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
226 endrev = len(repo) |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
227 |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
228 def getrenamed(fn, rev): |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
229 '''looks up all renames for a file (up to endrev) the first |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
230 time the file is given. It indexes on the changerev and only |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
231 parses the manifest if linkrev != changerev. |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
232 Returns rename info for fn at changerev rev.''' |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
233 if fn not in rcache: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
234 rcache[fn] = {} |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
235 fl = repo.file(fn) |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
236 for i in fl: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
237 lr = fl.linkrev(i) |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
238 renamed = fl.renamed(fl.node(i)) |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
239 rcache[fn][lr] = renamed |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
240 if lr >= endrev: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
241 break |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
242 if rev in rcache[fn]: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
243 return rcache[fn][rev] |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
244 |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
245 # If linkrev != rev (i.e. rev not found in rcache) fallback to |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
246 # filectx logic. |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
247 try: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
248 return repo[rev][fn].renamed() |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
249 except error.LookupError: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
250 return None |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
251 |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
252 return getrenamed |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
253 |
31171
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
254 # 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
|
255 defaulttempl = { |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
256 'parent': '{rev}:{node|formatnode} ', |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
257 'manifest': '{rev}:{node|formatnode}', |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
258 'file_copy': '{name} ({source})', |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
259 'envvar': '{key}={value}', |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
260 'extra': '{key}={value|stringescape}' |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
261 } |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
262 # filecopy is preserved for compatibility reasons |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
263 defaulttempl['filecopy'] = defaulttempl['file_copy'] |
1ec89cf0ea49
templatekw: move defaulttmpl constant from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
30833
diff
changeset
|
264 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
265 # keywords are callables like: |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
266 # fn(repo, ctx, templ, cache, revcache, **args) |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
267 # with: |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
268 # repo - current repository instance |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
269 # ctx - the changectx being displayed |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
270 # templ - the templater instance |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
271 # cache - a cache dictionary for the whole templater run |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
272 # revcache - a cache dictionary for the current revision |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
273 keywords = {} |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
274 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
275 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
|
276 |
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
277 @templatekeyword('author') |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
278 def showauthor(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
279 """String. The unmodified author of the changeset.""" |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
280 return ctx.user() |
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
281 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
282 @templatekeyword('bisect') |
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
|
283 def showbisect(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
284 """String. The changeset bisection status.""" |
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
|
285 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
|
286 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
287 @templatekeyword('branch') |
13156
d79fdff55627
template: add showbranch template for {branch}
Eric Eisner <ede@mit.edu>
parents:
13114
diff
changeset
|
288 def showbranch(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
289 """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
|
290 committed. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
291 """ |
32973
20ca19e6c74e
py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32972
diff
changeset
|
292 return args[r'ctx'].branch() |
13156
d79fdff55627
template: add showbranch template for {branch}
Eric Eisner <ede@mit.edu>
parents:
13114
diff
changeset
|
293 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
294 @templatekeyword('branches') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
295 def showbranches(**args): |
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. The name of the branch on which the |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
297 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
|
298 default. (DEPRECATED) |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
299 """ |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
300 args = pycompat.byteskwargs(args) |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
301 branch = args['ctx'].branch() |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
302 if branch != 'default': |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
303 return showlist('branch', [branch], args, plural='branches') |
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
304 return showlist('branch', [], args, plural='branches') |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
305 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
306 @templatekeyword('bookmarks') |
13386
f78bc5ddbe4f
templater: add bookmarks to templates and default output
David Soria Parra <dsp@php.net>
parents:
13156
diff
changeset
|
307 def showbookmarks(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
308 """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
|
309 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
|
310 """ |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
311 args = pycompat.byteskwargs(args) |
20520
5c65ee4193e1
template: add 'current' to scope during {bookmarks % ...}
Durham Goode <durham@fb.com>
parents:
20218
diff
changeset
|
312 repo = args['ctx']._repo |
13386
f78bc5ddbe4f
templater: add bookmarks to templates and default output
David Soria Parra <dsp@php.net>
parents:
13156
diff
changeset
|
313 bookmarks = args['ctx'].bookmarks() |
25348
f26efa4f0eff
templatekw: introduce active subkeyword from bookmarks keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25013
diff
changeset
|
314 active = repo._activebookmark |
f26efa4f0eff
templatekw: introduce active subkeyword from bookmarks keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25013
diff
changeset
|
315 makemap = lambda v: {'bookmark': v, 'active': active, 'current': active} |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
316 f = _showlist('bookmark', bookmarks, args) |
24239
31f9b1b16d1e
templatekw: keep raw list or dict in _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
24238
diff
changeset
|
317 return _hybrid(f, bookmarks, makemap, lambda x: x['bookmark']) |
13386
f78bc5ddbe4f
templater: add bookmarks to templates and default output
David Soria Parra <dsp@php.net>
parents:
13156
diff
changeset
|
318 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
319 @templatekeyword('children') |
11655
6faf015e0ba0
templates: 'children' keyword
Jason Harris <jason@jasonfharris.com>
parents:
10394
diff
changeset
|
320 def showchildren(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
321 """List of strings. The children of the changeset.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
322 args = pycompat.byteskwargs(args) |
11655
6faf015e0ba0
templates: 'children' keyword
Jason Harris <jason@jasonfharris.com>
parents:
10394
diff
changeset
|
323 ctx = args['ctx'] |
6faf015e0ba0
templates: 'children' keyword
Jason Harris <jason@jasonfharris.com>
parents:
10394
diff
changeset
|
324 childrevs = ['%d:%s' % (cctx, cctx) for cctx in ctx.children()] |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
325 return showlist('children', childrevs, args, element='child') |
11655
6faf015e0ba0
templates: 'children' keyword
Jason Harris <jason@jasonfharris.com>
parents:
10394
diff
changeset
|
326 |
25013
277aba2c151a
templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25012
diff
changeset
|
327 # Deprecated, but kept alive for help generation a purpose. |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
328 @templatekeyword('currentbookmark') |
21896
2b41ee1b5ea1
templatekw: add 'currentbookmark' keyword to show current bookmark easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20683
diff
changeset
|
329 def showcurrentbookmark(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
330 """String. The active bookmark, if it is |
25013
277aba2c151a
templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25012
diff
changeset
|
331 associated with the changeset (DEPRECATED)""" |
277aba2c151a
templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25012
diff
changeset
|
332 return showactivebookmark(**args) |
277aba2c151a
templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25012
diff
changeset
|
333 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
334 @templatekeyword('activebookmark') |
25013
277aba2c151a
templatekw: introduce activebookmark keyword
Ryan McElroy <rmcelroy@fb.com>
parents:
25012
diff
changeset
|
335 def showactivebookmark(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
336 """String. The active bookmark, if it is |
21896
2b41ee1b5ea1
templatekw: add 'currentbookmark' keyword to show current bookmark easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20683
diff
changeset
|
337 associated with the changeset""" |
32973
20ca19e6c74e
py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32972
diff
changeset
|
338 active = args[r'repo']._activebookmark |
20ca19e6c74e
py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32972
diff
changeset
|
339 if active and active in args[r'ctx'].bookmarks(): |
25387
390a10b7843b
templatekw: display active bookmark more consistently (issue4552) (BC)
Ryan McElroy <rmcelroy@fb.com>
parents:
25348
diff
changeset
|
340 return active |
21896
2b41ee1b5ea1
templatekw: add 'currentbookmark' keyword to show current bookmark easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20683
diff
changeset
|
341 return '' |
2b41ee1b5ea1
templatekw: add 'currentbookmark' keyword to show current bookmark easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20683
diff
changeset
|
342 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
343 @templatekeyword('date') |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
344 def showdate(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
345 """Date information. The date when the changeset was committed.""" |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
346 return ctx.date() |
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
347 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
348 @templatekeyword('desc') |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
349 def showdescription(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
350 """String. The text of the changeset description.""" |
28239
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
351 s = ctx.description() |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
352 if isinstance(s, encoding.localstr): |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
353 # 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
|
354 return encoding.tolocal(encoding.fromlocal(s).strip()) |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
355 else: |
7279e0132347
templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org>
parents:
28178
diff
changeset
|
356 return s.strip() |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
357 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
358 @templatekeyword('diffstat') |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
359 def showdiffstat(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
360 """String. Statistics of changes with the following format: |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
361 "modified files: +added/-removed lines" |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
362 """ |
30811
cf1e15f91c90
templatekw: force noprefix=False to insure diffstat consistency (issue4755)
Matthieu Laneuville <mlaneuville@protonmail.com>
parents:
30712
diff
changeset
|
363 stats = patch.diffstatdata(util.iterlines(ctx.diff(noprefix=False))) |
14437
cbe13e6bdc34
patch: restore the previous output of 'diff --stat'
Steven Brown <StevenGBrown@gmail.com>
parents:
14403
diff
changeset
|
364 maxname, maxtotal, adds, removes, binary = patch.diffstatsum(stats) |
14403
2c9f5897d4b7
templatekw: use diffstatsum in diffstat keyword
Matt Mackall <mpm@selenic.com>
parents:
14318
diff
changeset
|
365 return '%s: +%s/-%s' % (len(stats), adds, removes) |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
366 |
30833
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
367 @templatekeyword('envvars') |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
368 def showenvvars(repo, **args): |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
369 """A dictionary of environment variables. (EXPERIMENTAL)""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
370 args = pycompat.byteskwargs(args) |
30833
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
371 env = repo.ui.exportableenviron() |
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
372 env = util.sortdict((k, env[k]) for k in sorted(env)) |
32038
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
373 return showdict('envvar', env, args, plural='envvars') |
30833
bd5e9647f646
templater: add '{envvars}' to access environment variables
Matt Harbison <matt_harbison@yahoo.com>
parents:
30811
diff
changeset
|
374 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
375 @templatekeyword('extras') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
376 def showextras(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
377 """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
|
378 field of this changeset.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
379 args = pycompat.byteskwargs(args) |
20183
de7e6c489412
template: modify showextras to return a hybrid
Matthew Turk <matthewturk@gmail.com>
parents:
20079
diff
changeset
|
380 extras = args['ctx'].extra() |
24237
9ad02823dc5b
templatekw: convert list of key/value pairs to sortdict
Yuya Nishihara <yuya@tcha.org>
parents:
24157
diff
changeset
|
381 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
|
382 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
|
383 c = [makemap(k) for k in extras] |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
384 f = _showlist('extra', c, args, plural='extras') |
24239
31f9b1b16d1e
templatekw: keep raw list or dict in _hybrid object
Yuya Nishihara <yuya@tcha.org>
parents:
24238
diff
changeset
|
385 return _hybrid(f, extras, makemap, |
31452
52dabcc49968
templatekw: make join() escape values of extras (BC) (issue5504)
Yuya Nishihara <yuya@tcha.org>
parents:
31171
diff
changeset
|
386 lambda x: '%s=%s' % (x['key'], util.escapestr(x['value']))) |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
387 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
388 @templatekeyword('file_adds') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
389 def showfileadds(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
390 """List of strings. Files added by this changeset.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
391 args = pycompat.byteskwargs(args) |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
392 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache'] |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
393 return showlist('file_add', getfiles(repo, ctx, revcache)[1], args, |
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
394 element='file') |
10056
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
395 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
396 @templatekeyword('file_copies') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
397 def showfilecopies(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
398 """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
|
399 their sources. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
400 """ |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
401 args = pycompat.byteskwargs(args) |
10394
4612cded5176
fix coding style (reported by pylint)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10282
diff
changeset
|
402 cache, ctx = args['cache'], args['ctx'] |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
403 copies = args['revcache'].get('copies') |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
404 if copies is None: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
405 if 'getrenamed' not in cache: |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
406 cache['getrenamed'] = getrenamedfn(args['repo']) |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
407 copies = [] |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
408 getrenamed = cache['getrenamed'] |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
409 for fn in ctx.files(): |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
410 rename = getrenamed(fn, ctx.rev()) |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
411 if rename: |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
412 copies.append((fn, rename[0])) |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
413 |
24237
9ad02823dc5b
templatekw: convert list of key/value pairs to sortdict
Yuya Nishihara <yuya@tcha.org>
parents:
24157
diff
changeset
|
414 copies = util.sortdict(copies) |
32038
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
415 return showdict('file_copy', copies, args, plural='file_copies', |
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
416 key='name', value='source', fmt='%s (%s)') |
10060
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
417 |
f780b1098efc
templatekw: change {file_copies} behaviour, add {file_copies_switch}
Patrick Mezard <pmezard@gmail.com>
parents:
10058
diff
changeset
|
418 # 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
|
419 # 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
|
420 # command line switch. |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
421 @templatekeyword('file_copies_switch') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
422 def showfilecopiesswitch(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
423 """List of strings. Like "file_copies" but displayed |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
424 only if the --copied switch is set. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
425 """ |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
426 args = pycompat.byteskwargs(args) |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
427 copies = args['revcache'].get('copies') or [] |
24237
9ad02823dc5b
templatekw: convert list of key/value pairs to sortdict
Yuya Nishihara <yuya@tcha.org>
parents:
24157
diff
changeset
|
428 copies = util.sortdict(copies) |
32038
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
429 return showdict('file_copy', copies, args, plural='file_copies', |
3920b5970f95
templatekw: factor out showdict() helper
Yuya Nishihara <yuya@tcha.org>
parents:
32037
diff
changeset
|
430 key='name', value='source', fmt='%s (%s)') |
10058
c829563b3118
cmdutil: extract file copies closure into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10057
diff
changeset
|
431 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
432 @templatekeyword('file_dels') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
433 def showfiledels(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
434 """List of strings. Files removed by this changeset.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
435 args = pycompat.byteskwargs(args) |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
436 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache'] |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
437 return showlist('file_del', getfiles(repo, ctx, revcache)[2], args, |
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
438 element='file') |
10056
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
439 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
440 @templatekeyword('file_mods') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
441 def showfilemods(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
442 """List of strings. Files modified by this changeset.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
443 args = pycompat.byteskwargs(args) |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
444 repo, ctx, revcache = args['repo'], args['ctx'], args['revcache'] |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
445 return showlist('file_mod', getfiles(repo, ctx, revcache)[0], args, |
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
446 element='file') |
10056
1a114aca93fa
cmdutil: extract file changes closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10055
diff
changeset
|
447 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
448 @templatekeyword('files') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
449 def showfiles(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
450 """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
|
451 changeset. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
452 """ |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
453 args = pycompat.byteskwargs(args) |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
454 return showlist('file', args['ctx'].files(), args) |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
455 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
456 @templatekeyword('graphnode') |
27214
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
457 def showgraphnode(repo, ctx, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
458 """String. The character representing the changeset node in |
27214
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
459 an ASCII revision graph""" |
27215
5b8da5643a8a
templatekw: avoid slow creation of changectx objects in showgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
27214
diff
changeset
|
460 wpnodes = repo.dirstate.parents() |
5b8da5643a8a
templatekw: avoid slow creation of changectx objects in showgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
27214
diff
changeset
|
461 if wpnodes[1] == nullid: |
5b8da5643a8a
templatekw: avoid slow creation of changectx objects in showgraphnode()
Yuya Nishihara <yuya@tcha.org>
parents:
27214
diff
changeset
|
462 wpnodes = wpnodes[:1] |
27214
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
463 if ctx.node() in wpnodes: |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
464 return '@' |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
465 elif ctx.obsolete(): |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
466 return 'x' |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
467 elif ctx.closesbranch(): |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
468 return '_' |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
469 else: |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
470 return 'o' |
60af96494a76
graphlog: extract "graphnode" template keyword that represents node symbol
Yuya Nishihara <yuya@tcha.org>
parents:
26486
diff
changeset
|
471 |
31807
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31699
diff
changeset
|
472 @templatekeyword('index') |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31699
diff
changeset
|
473 def showindex(**args): |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31699
diff
changeset
|
474 """Integer. The current iteration of the loop. (0 indexed)""" |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31699
diff
changeset
|
475 # just hosts documentation; should be overridden by template mapping |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31699
diff
changeset
|
476 raise error.Abort(_("can't use index in this context")) |
e6eb86b154c5
templater: provide loop counter as "index" keyword
Yuya Nishihara <yuya@tcha.org>
parents:
31699
diff
changeset
|
477 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
478 @templatekeyword('latesttag') |
25727
b8245386ab40
templatekw: make {latesttag} a hybrid list
Matt Harbison <matt_harbison@yahoo.com>
parents:
25726
diff
changeset
|
479 def showlatesttag(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
480 """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
|
481 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
|
482 consists of the single string "null". |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
483 """ |
26486
8a732c322ca7
templatekw: add {changes}, {distance} and {tag} to the {latesttag} keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
26484
diff
changeset
|
484 return showlatesttags(None, **args) |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
485 |
26484
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
486 def showlatesttags(pattern, **args): |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
487 """helper method for the latesttag keyword and function""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
488 args = pycompat.byteskwargs(args) |
26484
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
489 repo, ctx = args['repo'], args['ctx'] |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
490 cache = args['cache'] |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
491 latesttags = getlatesttags(repo, ctx, cache, pattern) |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
492 |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
493 # 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
|
494 # 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
|
495 # 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
|
496 makemap = lambda v: { |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
497 'changes': _showchangessincetag, |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
498 'distance': latesttags[1], |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
499 'latesttag': v, # BC with {latesttag % '{latesttag}'} |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
500 'tag': v |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
501 } |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
502 |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
503 tags = latesttags[2] |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
504 f = _showlist('latesttag', tags, args, separator=':') |
26484
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
505 return _hybrid(f, tags, makemap, lambda x: x['latesttag']) |
93c80e7ed8c8
templatekw: introduce showlatesttags() to handle {latesttag} keywords
Matt Harbison <matt_harbison@yahoo.com>
parents:
26483
diff
changeset
|
506 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
507 @templatekeyword('latesttagdistance') |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
508 def showlatesttagdistance(repo, ctx, templ, cache, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
509 """Integer. Longest path to the latest tag.""" |
10057
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
510 return getlatesttags(repo, ctx, cache)[1] |
babc00a82c5e
cmdutil: extract latest tags closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10056
diff
changeset
|
511 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
512 @templatekeyword('changessincelatesttag') |
25724
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
513 def showchangessincelatesttag(repo, ctx, templ, cache, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
514 """Integer. All ancestors not in the latest tag.""" |
25724
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
515 latesttag = getlatesttags(repo, ctx, cache)[2][0] |
26483
e94f93043a4e
templatekw: factor out the changessincetag calculation to a private method
Matt Harbison <matt_harbison@yahoo.com>
parents:
26482
diff
changeset
|
516 |
e94f93043a4e
templatekw: factor out the changessincetag calculation to a private method
Matt Harbison <matt_harbison@yahoo.com>
parents:
26482
diff
changeset
|
517 return _showchangessincetag(repo, ctx, tag=latesttag, **args) |
e94f93043a4e
templatekw: factor out the changessincetag calculation to a private method
Matt Harbison <matt_harbison@yahoo.com>
parents:
26482
diff
changeset
|
518 |
e94f93043a4e
templatekw: factor out the changessincetag calculation to a private method
Matt Harbison <matt_harbison@yahoo.com>
parents:
26482
diff
changeset
|
519 def _showchangessincetag(repo, ctx, **args): |
25724
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
520 offset = 0 |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
521 revs = [ctx.rev()] |
32973
20ca19e6c74e
py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32972
diff
changeset
|
522 tag = args[r'tag'] |
25724
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
523 |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
524 # The only() revset doesn't currently support wdir() |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
525 if ctx.rev() is None: |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
526 offset = 1 |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
527 revs = [p.rev() for p in ctx.parents()] |
4474a750413f
templatekw: introduce the changessincelatesttag keyword
Matt Harbison <matt_harbison@yahoo.com>
parents:
25700
diff
changeset
|
528 |
26483
e94f93043a4e
templatekw: factor out the changessincetag calculation to a private method
Matt Harbison <matt_harbison@yahoo.com>
parents:
26482
diff
changeset
|
529 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
|
530 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
531 @templatekeyword('manifest') |
10260
fe699ca08a45
templatekw: fix extras, manifest and showlist args (issue1989)
Patrick Mezard <pmezard@gmail.com>
parents:
10060
diff
changeset
|
532 def showmanifest(**args): |
32973
20ca19e6c74e
py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32972
diff
changeset
|
533 repo, ctx, templ = args[r'repo'], args[r'ctx'], args[r'templ'] |
24676
13c42a883e8b
templatekw: have {manifest} use ctx.manifestnode() for consistency
Yuya Nishihara <yuya@tcha.org>
parents:
24337
diff
changeset
|
534 mnode = ctx.manifestnode() |
25736
8854ca3fa675
templatekw: apply manifest template only if ctx.manifestnode() exists
Yuya Nishihara <yuya@tcha.org>
parents:
25727
diff
changeset
|
535 if mnode is None: |
8854ca3fa675
templatekw: apply manifest template only if ctx.manifestnode() exists
Yuya Nishihara <yuya@tcha.org>
parents:
25727
diff
changeset
|
536 # just avoid crash, we might want to use the 'ff...' hash in future |
8854ca3fa675
templatekw: apply manifest template only if ctx.manifestnode() exists
Yuya Nishihara <yuya@tcha.org>
parents:
25727
diff
changeset
|
537 return |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
538 args = args.copy() |
32973
20ca19e6c74e
py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32972
diff
changeset
|
539 args.update({r'rev': repo.manifestlog._revlog.rev(mnode), |
20ca19e6c74e
py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32972
diff
changeset
|
540 r'node': hex(mnode)}) |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
541 return templ('manifest', **args) |
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
542 |
27893
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
543 def shownames(namespace, **args): |
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
544 """helper method to generate a template keyword for a namespace""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
545 args = pycompat.byteskwargs(args) |
27893
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
546 ctx = args['ctx'] |
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
547 repo = ctx.repo() |
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
548 ns = repo.names[namespace] |
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
549 names = ns.names(repo, ctx.node()) |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
550 return showlist(ns.templatename, names, args, plural=namespace) |
27893
b42b2e86ef02
templatekw: move shownames() helper to be sorted alphabetically
Yuya Nishihara <yuya@tcha.org>
parents:
27891
diff
changeset
|
551 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
552 @templatekeyword('namespaces') |
27894
a94f7eef3199
templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
27893
diff
changeset
|
553 def shownamespaces(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
554 """Dict of lists. Names attached to this changeset per |
27894
a94f7eef3199
templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
27893
diff
changeset
|
555 namespace.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
556 args = pycompat.byteskwargs(args) |
27894
a94f7eef3199
templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
27893
diff
changeset
|
557 ctx = args['ctx'] |
a94f7eef3199
templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
27893
diff
changeset
|
558 repo = ctx.repo() |
33047
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
559 |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
560 namespaces = util.sortdict() |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
561 colornames = {} |
33048
46fa46608ca5
namespaces: record and expose whether namespace is built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33047
diff
changeset
|
562 builtins = {} |
33047
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
563 |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
564 for k, ns in repo.names.iteritems(): |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
565 namespaces[k] = showlist('name', ns.names(repo, ctx.node()), args) |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
566 colornames[k] = ns.colorname |
33048
46fa46608ca5
namespaces: record and expose whether namespace is built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33047
diff
changeset
|
567 builtins[k] = ns.builtin |
33047
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
568 |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
569 f = _showlist('namespace', list(namespaces), args) |
33047
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
570 |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
571 def makemap(ns): |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
572 return { |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
573 'namespace': ns, |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
574 'names': namespaces[ns], |
33048
46fa46608ca5
namespaces: record and expose whether namespace is built-in
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33047
diff
changeset
|
575 'builtin': builtins[ns], |
33047
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
576 'colorname': colornames[ns], |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
577 } |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
578 |
de8e3681c402
templatekw: expose color name in {namespaces} entries
Gregory Szorc <gregory.szorc@gmail.com>
parents:
33017
diff
changeset
|
579 return _hybrid(f, namespaces, makemap, lambda x: x['namespace']) |
27894
a94f7eef3199
templatekw: add {namespaces} keyword
Yuya Nishihara <yuya@tcha.org>
parents:
27893
diff
changeset
|
580 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
581 @templatekeyword('node') |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
582 def shownode(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
583 """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
|
584 digit string. |
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
585 """ |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
586 return ctx.hex() |
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
587 |
31699
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
588 @templatekeyword('obsolete') |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
589 def showobsolete(repo, ctx, templ, **args): |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
590 """String. Whether the changeset is obsolete. |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
591 """ |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
592 if ctx.obsolete(): |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
593 return 'obsolete' |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
594 return '' |
568c4e7437b2
templatekw: add an "obsolete" keyword
Denis Laxalde <denis@laxalde.org>
parents:
31452
diff
changeset
|
595 |
33414
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
596 @templatekeyword('peerpaths') |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
597 def showpeerpaths(repo, **args): |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
598 """A dictionary of repository locations defined in the [paths] section |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
599 of your configuration file.""" |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
600 # see commands.paths() for naming of dictionary keys |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
601 paths = util.sortdict() |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
602 for k, p in sorted(repo.ui.paths.iteritems()): |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
603 d = util.sortdict() |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
604 d['url'] = p.rawloc |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
605 d.update((o, v) for o, v in sorted(p.suboptions.iteritems())) |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
606 def f(): |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
607 yield d['url'] |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
608 paths[k] = hybriddict(d, gen=f()) |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
609 |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
610 # no hybriddict() since d['path'] can't be formatted as a string. perhaps |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
611 # hybriddict() should call templatefilters.stringify(d[value]). |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
612 return _hybrid(None, paths, lambda k: {'name': k, 'path': paths[k]}, |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
613 lambda d: '%s=%s' % (d['name'], d['path']['url'])) |
16ed67164002
templatekw: export ui.paths as {peerpaths}
Yuya Nishihara <yuya@tcha.org>
parents:
33276
diff
changeset
|
614 |
32879
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
615 @templatekeyword("predecessors") |
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
616 def showpredecessors(repo, ctx, **args): |
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
617 """Returns the list if the closest visible successors |
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
618 """ |
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
619 predecessors = sorted(obsutil.closestpredecessors(repo, ctx.node())) |
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
620 predecessors = map(hex, predecessors) |
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
621 |
32910
498e9dcc5fa9
templatekw: populate all keywords depending on predecessor in map operation
Yuya Nishihara <yuya@tcha.org>
parents:
32909
diff
changeset
|
622 return _hybrid(None, predecessors, |
498e9dcc5fa9
templatekw: populate all keywords depending on predecessor in map operation
Yuya Nishihara <yuya@tcha.org>
parents:
32909
diff
changeset
|
623 lambda x: {'ctx': repo[x], 'revcache': {}}, |
32911
7f1d07d2c8f8
templatekw: use common "rev:node" format as the default of predecessors
Yuya Nishihara <yuya@tcha.org>
parents:
32910
diff
changeset
|
624 lambda d: _formatrevnode(d['ctx'])) |
32879
1858fc2327ef
template: add predecessors template
Boris Feld <boris.feld@octobus.net>
parents:
32658
diff
changeset
|
625 |
33276
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
626 @templatekeyword("successorssets") |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
627 def showsuccessorssets(repo, ctx, **args): |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
628 """Returns a string of sets of successors for a changectx |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
629 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
630 Format used is: [ctx1, ctx2], [ctx3] if ctx has been splitted into ctx1 and |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
631 ctx2 while also diverged into ctx3""" |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
632 if not ctx.obsolete(): |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
633 return '' |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
634 args = pycompat.byteskwargs(args) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
635 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
636 ssets = obsutil.successorssets(repo, ctx.node(), closest=True) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
637 ssets = [[hex(n) for n in ss] for ss in ssets] |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
638 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
639 data = [] |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
640 for ss in ssets: |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
641 h = _hybrid(None, ss, lambda x: {'ctx': repo[x], 'revcache': {}}, |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
642 lambda d: _formatrevnode(d['ctx'])) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
643 data.append(h) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
644 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
645 # Format the successorssets |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
646 def render(d): |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
647 t = [] |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
648 for i in d.gen: |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
649 t.append(i) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
650 return "".join(t) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
651 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
652 def gen(data): |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
653 yield "; ".join(render(d) for d in data) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
654 |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
655 return _hybrid(gen(data), data, lambda x: {'successorset': x}, |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
656 lambda d: d["successorset"]) |
89796a25d4bb
template: add successors template
Boris Feld <boris.feld@octobus.net>
parents:
33048
diff
changeset
|
657 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
658 @templatekeyword('p1rev') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
659 def showp1rev(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
660 """Integer. The repository-local revision number of the changeset's |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
661 first parent, or -1 if the changeset has no parents.""" |
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
662 return ctx.p1().rev() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
663 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
664 @templatekeyword('p2rev') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
665 def showp2rev(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
666 """Integer. The repository-local revision number of the changeset's |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
667 second parent, or -1 if the changeset has no second parent.""" |
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
668 return ctx.p2().rev() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
669 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
670 @templatekeyword('p1node') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
671 def showp1node(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
672 """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
|
673 as a 40 digit hexadecimal string. If the changeset has no parents, all |
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
674 digits are 0.""" |
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
675 return ctx.p1().hex() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
676 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
677 @templatekeyword('p2node') |
17357
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
678 def showp2node(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
679 """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
|
680 parent, as a 40 digit hexadecimal string. If the changeset has no second |
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
681 parent, all digits are 0.""" |
bd605568c5a0
templatekw: add p1rev, p1node, p2rev, p2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
682 return ctx.p2().hex() |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
17187
diff
changeset
|
683 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
684 @templatekeyword('parents') |
26435
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
685 def showparents(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
686 """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
|
687 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
|
688 revision) nothing is shown.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
689 args = pycompat.byteskwargs(args) |
26435
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
690 repo = args['repo'] |
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
691 ctx = args['ctx'] |
28270
650c9f69a744
templatekw: switch ctx of list expression to rev of {parents} (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
28239
diff
changeset
|
692 pctxs = scmutil.meaningfulparents(repo, ctx) |
32974
8779d35c168d
py3: use pycompat.bytestr() in place of str()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32973
diff
changeset
|
693 # ifcontains() needs a list of str |
33015
f66be4caeaab
py3: use "%d" % val for int rather than pycompat.bytestr
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32974
diff
changeset
|
694 prevs = ["%d" % 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
|
695 parents = [[('rev', p.rev()), |
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
696 ('node', p.hex()), |
882b170ae616
templatekw: port implementation of showparents() from changeset_templater
Yuya Nishihara <yuya@tcha.org>
parents:
26434
diff
changeset
|
697 ('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
|
698 for p in pctxs] |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
699 f = _showlist('parent', parents, args) |
29624
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
700 return _hybrid(f, prevs, lambda x: {'ctx': repo[int(x)], 'revcache': {}}, |
1a129dd05b7d
templatekw: fix join format of parents keyword (issue5292)
Yuya Nishihara <yuya@tcha.org>
parents:
29623
diff
changeset
|
701 lambda d: _formatrevnode(d['ctx'])) |
26434
0a823de8d7b7
templatekw: reorder stub of showparents() function
Yuya Nishihara <yuya@tcha.org>
parents:
26234
diff
changeset
|
702 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
703 @templatekeyword('phase') |
15422
042e11c4e416
phases: add a phase template keyword
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15155
diff
changeset
|
704 def showphase(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
705 """String. The changeset phase name.""" |
15823
a1f818a2b50d
phases: ``{phase}`` template keyword display the phase name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15422
diff
changeset
|
706 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
|
707 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
708 @templatekeyword('phaseidx') |
15823
a1f818a2b50d
phases: ``{phase}`` template keyword display the phase name
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15422
diff
changeset
|
709 def showphaseidx(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
710 """Integer. The changeset phase index.""" |
15422
042e11c4e416
phases: add a phase template keyword
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15155
diff
changeset
|
711 return ctx.phase() |
042e11c4e416
phases: add a phase template keyword
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
15155
diff
changeset
|
712 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
713 @templatekeyword('rev') |
10055
e400a511e63a
cmdutil: extract repo dependent closures in templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10054
diff
changeset
|
714 def showrev(repo, ctx, templ, **args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
715 """Integer. The repository-local changeset revision number.""" |
32656
4bec8cce6a09
scmutil: pass ctx object to intrev()
Yuya Nishihara <yuya@tcha.org>
parents:
32038
diff
changeset
|
716 return scmutil.intrev(ctx) |
10054
1a85861f59af
cmdutil: extract ctx dependent closures into templatekw
Patrick Mezard <pmezard@gmail.com>
parents:
10053
diff
changeset
|
717 |
26234
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
718 def showrevslist(name, revs, **args): |
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
719 """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
|
720 be evaluated""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
721 args = pycompat.byteskwargs(args) |
26234
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
722 repo = args['ctx'].repo() |
32974
8779d35c168d
py3: use pycompat.bytestr() in place of str()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32973
diff
changeset
|
723 # ifcontains() needs a list of str |
33015
f66be4caeaab
py3: use "%d" % val for int rather than pycompat.bytestr
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32974
diff
changeset
|
724 revs = ["%d" % r for r in revs] |
32036
8bcc8c9b4e9f
templatekw: change _showlist() to take mapping dict with no **kwargs expansion
Yuya Nishihara <yuya@tcha.org>
parents:
32035
diff
changeset
|
725 f = _showlist(name, revs, args) |
26234
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
726 return _hybrid(f, revs, |
29623
33bf8bd8c5b9
templatekw: fix join format of revset() function
Yuya Nishihara <yuya@tcha.org>
parents:
28539
diff
changeset
|
727 lambda x: {name: x, 'ctx': repo[int(x)], 'revcache': {}}, |
33bf8bd8c5b9
templatekw: fix join format of revset() function
Yuya Nishihara <yuya@tcha.org>
parents:
28539
diff
changeset
|
728 lambda d: d[name]) |
26234
e4609ec959f8
templater: switch ctx of list expression to rev of revset() (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
25984
diff
changeset
|
729 |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
730 @templatekeyword('subrepos') |
21897
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
731 def showsubrepos(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
732 """List of strings. Updated subrepositories in the changeset.""" |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
733 args = pycompat.byteskwargs(args) |
21897
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
734 ctx = args['ctx'] |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
735 substate = ctx.substate |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
736 if not substate: |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
737 return showlist('subrepo', [], args) |
21897
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
738 psubstate = ctx.parents()[0].substate or {} |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
739 subrepos = [] |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
740 for sub in substate: |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
741 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
|
742 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
|
743 for sub in psubstate: |
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
744 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
|
745 subrepos.append(sub) # removed in ctx |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
746 return showlist('subrepo', sorted(subrepos), args) |
21897
764adc332f6e
templatekw: add 'subrepos' keyword to show updated subrepositories
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21896
diff
changeset
|
747 |
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
|
748 # 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
|
749 # 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
|
750 # because online help text is built without namespaces initialization |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
751 @templatekeyword('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
|
752 def showtags(**args): |
28539
119702a8b415
templatekw: use templatekeyword to mark a function as template keyword
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28538
diff
changeset
|
753 """List of strings. Any tags associated with the changeset.""" |
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
|
754 return shownames('tags', **args) |
0870bb93573c
templatekw: re-add showtags() to list tags keyword up in online help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
23737
diff
changeset
|
755 |
28538
009f58f1ea75
registrar: add templatekeyword to mark a function as template keyword (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28270
diff
changeset
|
756 def loadkeyword(ui, extname, registrarobj): |
009f58f1ea75
registrar: add templatekeyword to mark a function as template keyword (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28270
diff
changeset
|
757 """Load template keyword from specified registrarobj |
009f58f1ea75
registrar: add templatekeyword to mark a function as template keyword (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28270
diff
changeset
|
758 """ |
009f58f1ea75
registrar: add templatekeyword to mark a function as template keyword (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28270
diff
changeset
|
759 for name, func in registrarobj._table.iteritems(): |
009f58f1ea75
registrar: add templatekeyword to mark a function as template keyword (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28270
diff
changeset
|
760 keywords[name] = func |
009f58f1ea75
registrar: add templatekeyword to mark a function as template keyword (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28270
diff
changeset
|
761 |
30088
d1f5f158768e
template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com>
parents:
29669
diff
changeset
|
762 @templatekeyword('termwidth') |
d1f5f158768e
template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com>
parents:
29669
diff
changeset
|
763 def termwidth(repo, ctx, templ, **args): |
d1f5f158768e
template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com>
parents:
29669
diff
changeset
|
764 """Integer. The width of the current terminal.""" |
d1f5f158768e
template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com>
parents:
29669
diff
changeset
|
765 return repo.ui.termwidth() |
d1f5f158768e
template: provide a termwidth keyword (issue5395)
Simon Farnsworth <simonfar@fb.com>
parents:
29669
diff
changeset
|
766 |
30712
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30375
diff
changeset
|
767 @templatekeyword('troubles') |
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30375
diff
changeset
|
768 def showtroubles(**args): |
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30375
diff
changeset
|
769 """List of strings. Evolution troubles affecting the changeset. |
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30375
diff
changeset
|
770 |
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30375
diff
changeset
|
771 (EXPERIMENTAL) |
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30375
diff
changeset
|
772 """ |
32972
26e710f0468f
py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32970
diff
changeset
|
773 args = pycompat.byteskwargs(args) |
32037
e5eab0fe69ee
templatekw: have showlist() take mapping dict with no **kwargs expansion (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32036
diff
changeset
|
774 return showlist('trouble', args['ctx'].troubles(), args) |
30712
5dde81de1e6d
templatekw: add a "troubles" template keyword
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
30375
diff
changeset
|
775 |
13585
2e80d495592a
templates: generate keyword help dynamically
Patrick Mezard <pmezard@gmail.com>
parents:
13386
diff
changeset
|
776 # tell hggettext to extract docstrings from these functions: |
26436
a2291c9c85a1
templatekw: remove dockeywords hack
Yuya Nishihara <yuya@tcha.org>
parents:
26435
diff
changeset
|
777 i18nfunctions = keywords.values() |