# HG changeset patch # User FUJIWARA Katsunori # Date 1457445893 -32400 # Node ID 0383f7a5e86cfa2d303166e1a3e82acbd0479eb1 # Parent dcb4209bd30dc03ad45f95b8377f423b99134c9d revset: replace predicate by revsetpredicate of registrar To make all built-in predicates be known to hggettext, loading built-in predicates by loadpredicate() should be placed before fixing i18nfunctions but after all of predicate decorating. diff -r dcb4209bd30d -r 0383f7a5e86c mercurial/revset.py --- a/mercurial/revset.py Tue Mar 08 23:04:53 2016 +0900 +++ b/mercurial/revset.py Tue Mar 08 23:04:53 2016 +0900 @@ -482,36 +482,7 @@ # functions that just return a lot of changesets (like all) don't count here safesymbols = set() -class predicate(registrar.funcregistrar): - """Decorator to register revset predicate - - Usage:: - - @predicate('mypredicate(arg1, arg2[, arg3])') - def mypredicatefunc(repo, subset, x): - '''Explanation of this revset predicate .... - ''' - pass - - The first string argument of the constructor is used also in - online help. - - Use 'extpredicate' instead of this to register revset predicate in - extensions. - """ - table = symbols - formatdoc = "``%s``\n %s" - getname = registrar.funcregistrar.parsefuncdecl - - def __init__(self, decl, safe=False): - """'safe' indicates whether a predicate is safe for DoS attack - """ - super(predicate, self).__init__(decl) - self.safe = safe - - def extraaction(self, name, func): - if self.safe: - safesymbols.add(name) +predicate = registrar.revsetpredicate() class extpredicate(registrar.delayregistrar): """Decorator to register revset predicate in extensions @@ -3636,5 +3607,8 @@ if func._safe: safesymbols.add(name) +# load built-in predicates explicitly to setup safesymbols +loadpredicate(None, None, predicate) + # tell hggettext to extract docstrings from these functions: i18nfunctions = symbols.values()