[PATCH 2 of 2] templater: move label() function from color extension
Augie Fackler
raf at durin42.com
Mon Mar 7 22:21:37 EST 2016
On Sat, Mar 05, 2016 at 11:07:00PM +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1434031454 -32400
> # Thu Jun 11 23:04:14 2015 +0900
> # Node ID a0bb91d92f440b114966015f11160527457f7325
> # Parent b4bdb4210d4d23d0c783bfed38ee1dd5c15f3a15
> templater: move label() function from color extension
queued, thanks
>
> ui.label() is no-op by default, so we can just call ui.label() by label()
> template function no matter if the color is enabled or not.
>
> diff --git a/hgext/color.py b/hgext/color.py
> --- a/hgext/color.py
> +++ b/hgext/color.py
> @@ -157,7 +157,6 @@ import os
>
> from mercurial import cmdutil, commands, dispatch, extensions, subrepo, util
> from mercurial import ui as uimod
> -from mercurial import templater, error
> from mercurial.i18n import _
>
> cmdtable = {}
> @@ -480,24 +479,6 @@ class colorui(uimod.ui):
> for s in msg.split('\n')])
> return msg
>
> -def templatelabel(context, mapping, args):
> - if len(args) != 2:
> - # i18n: "label" is a keyword
> - raise error.ParseError(_("label expects two arguments"))
> -
> - thing = templater.evalstring(context, mapping, args[1])
> -
> - # apparently, repo could be a string that is the favicon?
> - repo = mapping.get('repo', '')
> - if isinstance(repo, str):
> - return thing
> -
> - # preserve unknown symbol as literal so effects like 'red', 'bold',
> - # etc. don't need to be quoted
> - label = templater.evalstringliteral(context, mapping, args[0])
> -
> - return repo.ui.label(thing, label)
> -
> def uisetup(ui):
> if ui.plain():
> return
> @@ -519,8 +500,6 @@ def uisetup(ui):
> return orig(gitsub, commands, env, stream, cwd)
> extensions.wrapfunction(dispatch, '_runcommand', colorcmd)
> extensions.wrapfunction(subrepo.gitsubrepo, '_gitnodir', colorgit)
> - templatelabel.__doc__ = templater.funcs['label'].__doc__
> - templater.funcs['label'] = templatelabel
>
> def extsetup(ui):
> commands.globalopts.append(
> diff --git a/mercurial/templater.py b/mercurial/templater.py
> --- a/mercurial/templater.py
> +++ b/mercurial/templater.py
> @@ -547,8 +547,18 @@ def label(context, mapping, args):
> # i18n: "label" is a keyword
> raise error.ParseError(_("label expects two arguments"))
>
> - # ignore args[0] (the label string) since this is supposed to be a a no-op
> - yield args[1][0](context, mapping, args[1][1])
> + thing = evalstring(context, mapping, args[1])
> +
> + # apparently, repo could be a string that is the favicon?
> + repo = mapping.get('repo', '')
> + if isinstance(repo, 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])
> +
> + return repo.ui.label(thing, label)
>
> def latesttag(context, mapping, args):
> """:latesttag([pattern]): The global tags matching the given pattern on the
> diff --git a/tests/test-command-template.t b/tests/test-command-template.t
> --- a/tests/test-command-template.t
> +++ b/tests/test-command-template.t
> @@ -3183,6 +3183,13 @@ color effect can be specified without qu
> $ hg log --color=always -l 1 --template '{label(red, "text\n")}'
> \x1b[0;31mtext\x1b[0m (esc)
>
> +label should be no-op if color is disabled:
> +
> + $ hg log --color=never -l 1 --template '{label(red, "text\n")}'
> + text
> + $ hg log --config extensions.color=! -l 1 --template '{label(red, "text\n")}'
> + text
> +
> Test branches inside if statement:
>
> $ hg log -r 0 --template '{if(branches, "yes", "no")}\n'
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list