25 # we need current mercurial named objects (bookmarks, tags, and |
25 # we need current mercurial named objects (bookmarks, tags, and |
26 # branches) to be initialized somewhere, so that place is here |
26 # branches) to be initialized somewhere, so that place is here |
27 bmknames = lambda repo: repo._bookmarks.keys() |
27 bmknames = lambda repo: repo._bookmarks.keys() |
28 bmknamemap = lambda repo, name: tolist(repo._bookmarks.get(name)) |
28 bmknamemap = lambda repo, name: tolist(repo._bookmarks.get(name)) |
29 bmknodemap = lambda repo, name: repo.nodebookmarks(name) |
29 bmknodemap = lambda repo, name: repo.nodebookmarks(name) |
30 n = namespace("bookmarks", templatename="bookmark", listnames=bmknames, |
30 n = namespace("bookmarks", templatename="bookmark", |
|
31 # i18n: column positioning for "hg log" |
|
32 logfmt=_("bookmark: %s\n"), |
|
33 listnames=bmknames, |
31 namemap=bmknamemap, nodemap=bmknodemap) |
34 namemap=bmknamemap, nodemap=bmknodemap) |
32 self.addnamespace(n) |
35 self.addnamespace(n) |
33 |
36 |
34 tagnames = lambda repo: [t for t, n in repo.tagslist()] |
37 tagnames = lambda repo: [t for t, n in repo.tagslist()] |
35 tagnamemap = lambda repo, name: tolist(repo._tagscache.tags.get(name)) |
38 tagnamemap = lambda repo, name: tolist(repo._tagscache.tags.get(name)) |
36 tagnodemap = lambda repo, name: repo.nodetags(name) |
39 tagnodemap = lambda repo, name: repo.nodetags(name) |
37 n = namespace("tags", templatename="tag", listnames=tagnames, |
40 n = namespace("tags", templatename="tag", |
|
41 # i18n: column positioning for "hg log" |
|
42 logfmt=_("tag: %s\n"), |
|
43 listnames=tagnames, |
38 namemap=tagnamemap, nodemap=tagnodemap) |
44 namemap=tagnamemap, nodemap=tagnodemap) |
39 self.addnamespace(n) |
45 self.addnamespace(n) |
40 |
46 |
41 bnames = lambda repo: repo.branchmap().keys() |
47 bnames = lambda repo: repo.branchmap().keys() |
42 bnamemap = lambda repo, name: tolist(repo.branchtip(name, True)) |
48 bnamemap = lambda repo, name: tolist(repo.branchtip(name, True)) |
43 bnodemap = lambda repo, node: [repo[node].branch()] |
49 bnodemap = lambda repo, node: [repo[node].branch()] |
44 n = namespace("branches", templatename="branch", listnames=bnames, |
50 n = namespace("branches", templatename="branch", |
|
51 # i18n: column positioning for "hg log" |
|
52 logfmt=_("branch: %s\n"), |
|
53 listnames=bnames, |
45 namemap=bnamemap, nodemap=bnodemap) |
54 namemap=bnamemap, nodemap=bnodemap) |
46 self.addnamespace(n) |
55 self.addnamespace(n) |
47 |
56 |
48 def __getitem__(self, namespace): |
57 def __getitem__(self, namespace): |
49 """returns the namespace object""" |
58 """returns the namespace object""" |
119 'nodemap': function that takes a node and returns a list of names |
128 'nodemap': function that takes a node and returns a list of names |
120 |
129 |
121 """ |
130 """ |
122 |
131 |
123 def __init__(self, name, templatename=None, logname=None, colorname=None, |
132 def __init__(self, name, templatename=None, logname=None, colorname=None, |
124 listnames=None, namemap=None, nodemap=None): |
133 logfmt=None, listnames=None, namemap=None, nodemap=None): |
125 """create a namespace |
134 """create a namespace |
126 |
135 |
127 name: the namespace to be registered (in plural form) |
136 name: the namespace to be registered (in plural form) |
128 templatename: the name to use for templating |
137 templatename: the name to use for templating |
129 logname: the name to use for log output; if not specified templatename |
138 logname: the name to use for log output; if not specified templatename |
130 is used |
139 is used |
131 colorname: the name to use for colored log output; if not specified |
140 colorname: the name to use for colored log output; if not specified |
132 logname is used |
141 logname is used |
|
142 logfmt: the format to use for (l10n-ed) log output; if not specified |
|
143 it is composed from logname |
133 listnames: function to list all names |
144 listnames: function to list all names |
134 namemap: function that inputs a node, output name(s) |
145 namemap: function that inputs a node, output name(s) |
135 nodemap: function that inputs a name, output node(s) |
146 nodemap: function that inputs a name, output node(s) |
136 |
147 |
137 """ |
148 """ |
138 self.name = name |
149 self.name = name |
139 self.templatename = templatename |
150 self.templatename = templatename |
140 self.logname = logname |
151 self.logname = logname |
141 self.colorname = colorname |
152 self.colorname = colorname |
|
153 self.logfmt = logfmt |
142 self.listnames = listnames |
154 self.listnames = listnames |
143 self.namemap = namemap |
155 self.namemap = namemap |
144 self.nodemap = nodemap |
156 self.nodemap = nodemap |
145 |
157 |
146 # if logname is not specified, use the template name as backup |
158 # if logname is not specified, use the template name as backup |
149 |
161 |
150 # if colorname is not specified, just use the logname as a backup |
162 # if colorname is not specified, just use the logname as a backup |
151 if self.colorname is None: |
163 if self.colorname is None: |
152 self.colorname = self.logname |
164 self.colorname = self.logname |
153 |
165 |
|
166 # if logfmt is not specified, compose it from logname as backup |
|
167 if self.logfmt is None: |
|
168 # i18n: column positioning for "hg log" |
|
169 self.logfmt = ("%s:" % self.logname).ljust(13) + "%s\n" |
|
170 |
154 def names(self, repo, node): |
171 def names(self, repo, node): |
155 """method that returns a (sorted) list of names in a namespace that |
172 """method that returns a (sorted) list of names in a namespace that |
156 match a given node""" |
173 match a given node""" |
157 return sorted(self.nodemap(repo, node)) |
174 return sorted(self.nodemap(repo, node)) |
158 |
175 |