[PATCH] color: add effect to the template symbol table

Sean Farley sean.michael.farley at gmail.com
Mon Apr 14 18:25:59 CDT 2014


# HG changeset patch
# User Sean Farley <sean.michael.farley at gmail.com>
# Date 1397517686 18000
#      Mon Apr 14 18:21:26 2014 -0500
# Node ID eeba1982fac05351bbfc729ec3314eaa195eb59d
# Parent  76f68595ff8e5616a79dd79e962a97cc9ba58713
color: add effect to the template symbol table

Previously, words like 'red' had to be protected by quotes before passing to
the label template function. Now, we add color effects to the symbol table so
that commands like,

$ hg log -r . -T "{label(red, node|short)}\n"

can work without the need for quoting.

diff --git a/hgext/color.py b/hgext/color.py
--- a/hgext/color.py
+++ b/hgext/color.py
@@ -393,10 +393,14 @@ class colorui(uimod.ui):
 def templatelabel(context, mapping, args):
     if len(args) != 2:
         # i18n: "label" is a keyword
         raise error.ParseError(_("label expects two arguments"))
 
+    # add known effects to the mapping so symbols like 'red', 'bold',
+    # etc. don't need to be quoted
+    mapping.update(dict([(k, k) for k in _effects]))
+
     thing = templater._evalifliteral(args[1], context, mapping)
 
     # apparently, repo could be a string that is the favicon?
     repo = mapping.get('repo', '')
     if isinstance(repo, str):


More information about the Mercurial-devel mailing list