Mercurial > evolve
changeset 2924:430fb1758d28
topic: use registrar.revsetpredicate to register revset predicate functions
Now, using registrar.revsetpredicate of Mercurial directly in topic
extension should be safe enough. because it has been available since
Mercurial 3.8, and minimum Mercurial version for topic extension is
4.0.
This patch also removes modsetup() in topic/revset.py, because it is
useless.
BTW, this patch fixes an issue of "hg help revsets" output that custom
revset predicates are not displayed as same as others, because they
are not "inline literal" in reST syntax (``NAME``).
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Mon, 07 Aug 2017 23:17:13 +0900 |
parents | 8c2d3c474fc6 |
children | 9efedcedd9dd |
files | hgext3rd/topic/__init__.py hgext3rd/topic/revset.py |
diffstat | 2 files changed, 11 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext3rd/topic/__init__.py Mon Aug 07 23:24:57 2017 +0900 +++ b/hgext3rd/topic/__init__.py Mon Aug 07 23:17:13 2017 +0900 @@ -187,7 +187,6 @@ def uisetup(ui): destination.modsetup(ui) - topicrevset.modsetup(ui) discovery.modsetup(ui) topicmap.modsetup(ui) setupimportexport(ui) @@ -309,6 +308,9 @@ 'topics', 'topic', namemap=_namemap, nodemap=_nodemap, listnames=lambda repo: repo.topics)) +# revset predicates are automatically registered at loading via this symbol +revsetpredicate = topicrevset.revsetpredicate + @command('topics', [ ('', 'clear', False, 'clear active topic if any'), ('r', 'rev', [], 'revset of existing revisions', _('REV')),
--- a/hgext3rd/topic/revset.py Mon Aug 07 23:24:57 2017 +0900 +++ b/hgext3rd/topic/revset.py Mon Aug 07 23:17:13 2017 +0900 @@ -1,6 +1,7 @@ from __future__ import absolute_import from mercurial import ( + registrar, revset, util, ) @@ -16,10 +17,11 @@ except AttributeError: mkmatcher = util.stringmatcher +revsetpredicate = registrar.revsetpredicate() +@revsetpredicate('topic([topic])') def topicset(repo, subset, x): - """`topic([topic])` - Specified topic or all changes with any topic specified. + """Specified topic or all changes with any topic specified. If `topic` starts with `re:` the remainder of the name is treated as a regular expression. @@ -48,10 +50,9 @@ return matcher(topic) return (subset & mutable).filter(matchtopic) +@revsetpredicate('ngtip([branch])') def ngtipset(repo, subset, x): - """`ngtip([branch])` - - The untopiced tip. + """The untopiced tip. Name is horrible so that people change it. """ @@ -62,9 +63,9 @@ branch = repo['.'].branch() return subset & revset.baseset(destination.ngtip(repo, branch)) +@revsetpredicate('stack()') def stackset(repo, subset, x): - """`stack()` - All relevant changes in the current topic, + """All relevant changes in the current topic, This is roughly equivalent to 'topic(.) - obsolete' with a sorting moving unstable changeset after there future parent (as if evolve where already @@ -79,9 +80,3 @@ if not topic: branch = repo[None].branch() return revset.baseset(stack.stack(repo, branch=branch, topic=topic)[1:]) & subset - - -def modsetup(ui): - revset.symbols.update({'topic': topicset}) - revset.symbols.update({'ngtip': ngtipset}) - revset.symbols.update({'stack': stackset})