Mercurial > hg
changeset 41066:0358cca1dccf
exthelper: reintroduce the ability to register revsets
I think this is what Yuya and Boris agreed on.[1] This happens *after* the
extsetup phase now (and after the _aftercallback notifications). But this is
trivial, mergeable between exthelper instances, and doesn't need to have the
extension name supplied when registering.
The test needed updating so that extsetup() takes a `ui` argument, as exthelper
isn't trying to be backward compatible with 1.3.1.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-December/125888.html
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 27 Dec 2018 21:26:17 -0500 |
parents | 0840862977c8 |
children | f2601cbce209 |
files | mercurial/exthelper.py tests/test-extension.t |
diffstat | 2 files changed, 19 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/exthelper.py Sun Dec 23 23:01:51 2018 -0500 +++ b/mercurial/exthelper.py Thu Dec 27 21:26:17 2018 -0500 @@ -40,12 +40,14 @@ self.command = registrar.command(self.cmdtable) self.configtable = {} self.configitem = registrar.configitem(self.configtable) + self.revsetpredicate = registrar.revsetpredicate() def merge(self, other): self._uicallables.extend(other._uicallables) self._uipopulatecallables.extend(other._uipopulatecallables) self._extcallables.extend(other._extcallables) self._repocallables.extend(other._repocallables) + self.revsetpredicate._table.update(other.revsetpredicate._table) self._commandwrappers.extend(other._commandwrappers) self._extcommandwrappers.extend(other._extcommandwrappers) self._functionwrappers.extend(other._functionwrappers)
--- a/tests/test-extension.t Sun Dec 23 23:01:51 2018 -0500 +++ b/tests/test-extension.t Thu Dec 27 21:26:17 2018 -0500 @@ -151,25 +151,35 @@ $ cat > foo.py <<EOF > from __future__ import print_function > import os + > from mercurial import exthelper > name = os.path.basename(__file__).rsplit('.', 1)[0] > print("1) %s imported" % name, flush=True) - > def uisetup(ui): + > eh = exthelper.exthelper() + > @eh.uisetup + > def _uisetup(ui): > print("2) %s uisetup" % name, flush=True) - > def extsetup(): + > @eh.extsetup + > def _extsetup(ui): > print("3) %s extsetup" % name, flush=True) - > def uipopulate(ui): + > @eh.uipopulate + > def _uipopulate(ui): > print("4) %s uipopulate" % name, flush=True) - > def reposetup(ui, repo): + > @eh.reposetup + > def _reposetup(ui, repo): > print("5) %s reposetup" % name, flush=True) > + > extsetup = eh.finalextsetup + > reposetup = eh.finalreposetup + > uipopulate = eh.finaluipopulate + > uisetup = eh.finaluisetup + > revsetpredicate = eh.revsetpredicate + > > bytesname = name.encode('utf-8') > # custom predicate to check registration of functions at loading > from mercurial import ( - > registrar, > smartset, > ) - > revsetpredicate = registrar.revsetpredicate() - > @revsetpredicate(bytesname, safe=True) # safe=True for query via hgweb + > @eh.revsetpredicate(bytesname, safe=True) # safe=True for query via hgweb > def custompredicate(repo, subset, x): > return smartset.baseset([r for r in subset if r in {0}]) > EOF