@@ -186,7 +186,6 @@ def _nodemap(repo, node):
def uisetup(ui):
destination.modsetup(ui)
- topicrevset.modsetup(ui)
discovery.modsetup(ui)
topicmap.modsetup(ui)
setupimportexport(ui)
@@ -308,6 +307,9 @@ def reposetup(ui, repo):
'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')),
@@ -1,6 +1,7 @@
from __future__ import absolute_import
from mercurial import (
+ registrar,
revset,
util,
)
@@ -16,10 +17,11 @@ try:
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 @@ def topicset(repo, subset, x):
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 @@ def ngtipset(repo, subset, x):
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 @@ def stackset(repo, subset, x):
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})