templater: make label() just fail if ui object isn't available
Silent failure hides bugs and makes it harder to track down the issue. It's
worse than raising exception.
In future patches, I plan to sort out template functions that require 'ui',
'ctx', 'fctx', etc. so that incompatible functions are excluded and the doc can
say in which context these functions are usable.
@templatefunc('label', requires=('ui',))
def label(context, mapping, args):
...
--- a/mercurial/templater.py Fri Mar 11 21:55:44 2016 +0900
+++ b/mercurial/templater.py Wed Mar 09 23:59:26 2016 +0900
@@ -547,12 +547,8 @@
# i18n: "label" is a keyword
raise error.ParseError(_("label expects two arguments"))
+ ui = mapping['ui']
thing = evalstring(context, mapping, args[1])
-
- ui = mapping.get('ui', '')
- if isinstance(ui, str):
- return thing
-
# preserve unknown symbol as literal so effects like 'red', 'bold',
# etc. don't need to be quoted
label = evalstringliteral(context, mapping, args[0])