diff mercurial/templatekw.py @ 33048:46fa46608ca5

namespaces: record and expose whether namespace is built-in Currently, the templating layer tends to treat each namespace as a one-off, with explicit usage of {bookmarks}, {tags}, {branch}, etc instead of using {namespaces}. It would be really useful if we could iterate over namespaces and operate on them generically. However, some consumers may wish to differentiate namespaces by whether they are built-in to core Mercurial or provided by extensions. Expected use cases include ignoring non-built-in namespaces or emitting a generic label for non-built-in namespaces. This commit introduces an attribute on namespace instances that says whether the namespace is "built-in" and then exposes this to the templating layer. As part of this, we implement a reusable extension for defining custom names on each changeset for testing. A second consumer will be introduced in a subsequent commit.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 24 Jun 2017 14:52:15 -0700
parents de8e3681c402
children 89796a25d4bb
line wrap: on
line diff
--- a/mercurial/templatekw.py	Sat Jun 24 13:39:20 2017 -0700
+++ b/mercurial/templatekw.py	Sat Jun 24 14:52:15 2017 -0700
@@ -557,10 +557,12 @@
 
     namespaces = util.sortdict()
     colornames = {}
+    builtins = {}
 
     for k, ns in repo.names.iteritems():
         namespaces[k] = showlist('name', ns.names(repo, ctx.node()), args)
         colornames[k] = ns.colorname
+        builtins[k] = ns.builtin
 
     f = _showlist('namespace', list(namespaces), args)
 
@@ -568,6 +570,7 @@
         return {
             'namespace': ns,
             'names': namespaces[ns],
+            'builtin': builtins[ns],
             'colorname': colornames[ns],
         }