[PATCH] namespaces: add logname member to namespace object
Augie Fackler
raf at durin42.com
Fri Jan 16 09:29:56 CST 2015
On Wed, Jan 14, 2015 at 04:49:25PM -0800, Sean Farley wrote:
> # HG changeset patch
> # User Sean Farley <sean.michael.farley at gmail.com>
> # Date 1421281900 28800
> # Wed Jan 14 16:31:40 2015 -0800
> # Node ID 0508ab9d59758c22fa968d3bc2a184c51dd2c7ff
> # Parent f6070d3a9cb89a50ae3112f7c3d22f4ccc5c4db7
> namespaces: add logname member to namespace object
>
> Previously, there was no way to change the name used for 'hg log' output. This
> was inconvenient for extensions that want a template name longer than 12
> characters (e.g. remotebookmarks) but a different name for 'hg log'.
If/when we se a new version of htis, could you give an example of what
a regular vs logname might look like? I wrote remotebranches and I
can't come up with an example offhand.
>
> diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
> --- a/mercurial/cmdutil.py
> +++ b/mercurial/cmdutil.py
> @@ -914,16 +914,16 @@ class changeset_printer(object):
> for name, ns in self.repo.names.iteritems():
> # branches has special logic already handled above, so here we just
> # skip it
> if name == 'branches':
> continue
> - # we will use the templatename as the color name since those two
> - # should be the same
> + # we will use the logname as the color name since those two should
> + # be the same
> for name in ns.names(self.repo, changenode):
> # i18n: column positioning for "hg log"
> - tname = _(("%s:" % ns.templatename).ljust(13) + "%s\n") % name
> - self.ui.write("%s" % tname, label='log.%s' % ns.templatename)
> + lname = _(("%s:" % ns.logname).ljust(13) + "%s\n") % name
> + self.ui.write("%s" % lname, label='log.%s' % ns.logname)
> if self.ui.debugflag:
> # i18n: column positioning for "hg log"
> self.ui.write(_("phase: %s\n") % _(ctx.phasestr()),
> label='log.phase')
> for parent in parents:
> diff --git a/mercurial/namespaces.py b/mercurial/namespaces.py
> --- a/mercurial/namespaces.py
> +++ b/mercurial/namespaces.py
> @@ -25,23 +25,23 @@ class namespaces(object):
> # shorten the class name for less indentation
> ns = namespace
>
> # we need current mercurial named objects (bookmarks, tags, and
> # branches) to be initialized somewhere, so that place is here
> - n = ns("bookmarks", "bookmark",
> + n = ns("bookmarks", "bookmark", "bookmark",
> lambda repo: repo._bookmarks.keys(),
> lambda repo, name: tolist(repo._bookmarks.get(name)),
> lambda repo, name: repo.nodebookmarks(name))
> self.addnamespace(n)
>
> - n = ns("tags", "tag",
> + n = ns("tags", "tag", "tag",
> lambda repo: [t for t, n in repo.tagslist()],
> lambda repo, name: tolist(repo._tagscache.tags.get(name)),
> lambda repo, name: repo.nodetags(name))
> self.addnamespace(n)
>
> - n = ns("branches", "branch",
> + n = ns("branches", "branch", "branch",
> lambda repo: repo.branchmap().keys(),
> lambda repo, name: tolist(repo.branchtip(name, True)),
> lambda repo, node: [repo[node].branch()])
> self.addnamespace(n)
>
> @@ -118,22 +118,25 @@ class namespace(object):
> 'namemap': function that takes a name and returns a list of nodes
> 'nodemap': function that takes a node and returns a list of names
>
> """
>
> - def __init__(self, name, templatename, listnames, namemap, nodemap):
> + def __init__(self, name, templatename, logname, listnames, namemap,
> + nodemap):
> """create a namespace
>
> name: the namespace to be registered (in plural form)
> listnames: function to list all names
> templatename: the name to use for templating
> + logname: the name to use for log output
> namemap: function that inputs a node, output name(s)
> nodemap: function that inputs a name, output node(s)
>
> """
> self.name = name
> self.templatename = templatename
> + self.logname = logname
> self.listnames = listnames
> self.namemap = namemap
> self.nodemap = nodemap
>
> def names(self, repo, node):
> diff --git a/tests/test-log.t b/tests/test-log.t
> --- a/tests/test-log.t
> +++ b/tests/test-log.t
> @@ -1565,11 +1565,11 @@ Check that adding an arbitrary name show
> > """A small extension to test adding arbitrary names to a repo"""
> > from mercurial.namespaces import namespace
> >
> > def reposetup(ui, repo):
> > foo = {'foo': repo[0].node()}
> - > ns = namespace("bars", "bar",
> + > ns = namespace("bars", "bar", "bar",
> > lambda r: foo.keys(),
> > lambda r, name: foo.get(name),
> > lambda r, node: [name for name, n
> > in foo.iteritems()
> > if n == node])
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list