hgext/obsolete.py
changeset 431 bd05022c7856
parent 430 07db1d511faf
child 432 6347bc69b49a
equal deleted inserted replaced
430:07db1d511faf 431:bd05022c7856
    93     def __init__(self):
    93     def __init__(self):
    94         self._uicallables = []
    94         self._uicallables = []
    95         self._extcallables = []
    95         self._extcallables = []
    96         self._repocallables = []
    96         self._repocallables = []
    97         self._revsetsymbols = []
    97         self._revsetsymbols = []
       
    98         self._templatekws = []
    98         self._commandwrappers = []
    99         self._commandwrappers = []
    99         self._extcommandwrappers = []
   100         self._extcommandwrappers = []
   100         self._functionwrappers = []
   101         self._functionwrappers = []
   101         self._duckpunchers = []
   102         self._duckpunchers = []
   102 
   103 
   138         - Extend revsets 
   139         - Extend revsets 
   139         """
   140         """
   140         knownexts = {}
   141         knownexts = {}
   141         for name, symbol in self._revsetsymbols:
   142         for name, symbol in self._revsetsymbols:
   142             revset.symbols[name] = symbol
   143             revset.symbols[name] = symbol
       
   144         for name, kw in self._templatekws:
       
   145             templatekw.keywords[name] = kw
   143         for ext, command, wrapper in self._extcommandwrappers:
   146         for ext, command, wrapper in self._extcommandwrappers:
   144             if ext not in knownexts:
   147             if ext not in knownexts:
   145                 e = extensions.find('rebase')
   148                 e = extensions.find('rebase')
   146                 if e is None:
   149                 if e is None:
   147                     raise util.Abort('extension %s not found' %e)
   150                     raise util.Abort('extension %s not found' %e)
   212                 return [r for r in subset if 'babar' in repo[r].description()]
   215                 return [r for r in subset if 'babar' in repo[r].description()]
   213         """
   216         """
   214         def dec(symbol):
   217         def dec(symbol):
   215             self._revsetsymbols.append((symbolname, symbol))
   218             self._revsetsymbols.append((symbolname, symbol))
   216             return symbol
   219             return symbol
       
   220         return dec
       
   221 
       
   222 
       
   223     def templatekw(self, keywordname):
       
   224         """Decorated function is a revset keyword
       
   225 
       
   226         The name of the keyword must be given as the decorator argument.
       
   227         The symbol is added during `extsetup`.
       
   228 
       
   229         example::
       
   230 
       
   231             @eh.templatekw('babar')
       
   232             def kwbabar(ctx):
       
   233                 return 'babar'
       
   234         """
       
   235         def dec(keyword):
       
   236             self._templatekws.append((keywordname, keyword))
       
   237             return keyword
   217         return dec
   238         return dec
   218 
   239 
   219     def wrapcommand(self, command, extension=None):
   240     def wrapcommand(self, command, extension=None):
   220         """Decorated function is a command wrapper
   241         """Decorated function is a command wrapper
   221 
   242 
   485 
   506 
   486 
   507 
   487 ### template keywords
   508 ### template keywords
   488 #####################
   509 #####################
   489 
   510 
       
   511 @eh.templatekw('obsolete')
   490 def obsoletekw(repo, ctx, templ, **args):
   512 def obsoletekw(repo, ctx, templ, **args):
   491     """:obsolete: String. The obsolescence level of the node, could be
   513     """:obsolete: String. The obsolescence level of the node, could be
   492     ``stable``, ``unstable``, ``suspended`` or ``extinct``.
   514     ``stable``, ``unstable``, ``suspended`` or ``extinct``.
   493     """
   515     """
   494     rev = ctx.rev()
   516     rev = ctx.rev()
   497     if rev in repo._suspendedset:
   519     if rev in repo._suspendedset:
   498         return 'suspended'
   520         return 'suspended'
   499     if rev in repo._unstableset:
   521     if rev in repo._unstableset:
   500         return 'unstable'
   522         return 'unstable'
   501     return 'stable'
   523     return 'stable'
   502 
       
   503 @eh.extsetup
       
   504 def addkeyword(ui):
       
   505     templatekw.keywords['obsolete'] = obsoletekw
       
   506 
   524 
   507 ### Other Extension compat
   525 ### Other Extension compat
   508 ############################
   526 ############################
   509 
   527 
   510 
   528