template: add 'current' to scope during {bookmarks % ...}
This adds the keyword 'current' to the template scope when processing a
bookmark list. The 'current' keyword resolves to the name of the currently
active bookmark in the repo. This allows us to apply special labels to the
current bookmark to distinguish it (especially in the case where there are
multiple bookmarks on the same commit).
Example: "{bookmarks % '{bookmark}{ifeq(bookmark, current, \"*\")} '}"
Results in a space separated list of bookmarks where the current bookmark has
an asterix.
--- a/mercurial/templatekw.py Tue Feb 11 21:04:12 2014 -0800
+++ b/mercurial/templatekw.py Tue Feb 11 21:40:33 2014 -0800
@@ -195,8 +195,12 @@
""":bookmarks: List of strings. Any bookmarks associated with the
changeset.
"""
+ repo = args['ctx']._repo
bookmarks = args['ctx'].bookmarks()
- return showlist('bookmark', bookmarks, **args)
+ hybrid = showlist('bookmark', bookmarks, **args)
+ for value in hybrid.values:
+ value['current'] = repo._bookmarkcurrent
+ return hybrid
def showchildren(**args):
""":children: List of strings. The children of the changeset."""
--- a/tests/test-command-template.t Tue Feb 11 21:04:12 2014 -0800
+++ b/tests/test-command-template.t Tue Feb 11 21:40:33 2014 -0800
@@ -1676,3 +1676,10 @@
Rev: 0
Ancestor: 0
+Test current bookmark templating
+
+ $ hg book foo
+ $ hg book bar
+ $ hg log --template "{rev} {bookmarks % '{bookmark}{ifeq(bookmark, current, \"*\")} '}\n"
+ 1 bar* foo
+ 0