hgkw/keyword.py
branchstable
changeset 612 0d75562ef3b0
parent 611 c50f56b5f4b8
child 614 6bbf554beea2
equal deleted inserted replaced
606:7f928c9d56d0 612:0d75562ef3b0
   122                                  kwtools['inc'], kwtools['exc'])
   122                                  kwtools['inc'], kwtools['exc'])
   123         self.restrict = kwtools['hgcmd'] in restricted.split()
   123         self.restrict = kwtools['hgcmd'] in restricted.split()
   124 
   124 
   125         kwmaps = self.ui.configitems('keywordmaps')
   125         kwmaps = self.ui.configitems('keywordmaps')
   126         if kwmaps: # override default templates
   126         if kwmaps: # override default templates
   127             kwmaps = [(k, templater.parsestring(v, False))
   127             self.templates = dict((k, templater.parsestring(v, False))
   128                       for (k, v) in kwmaps]
   128                                   for k, v in kwmaps)
   129             self.templates = dict(kwmaps)
       
   130         escaped = map(re.escape, self.templates.keys())
   129         escaped = map(re.escape, self.templates.keys())
   131         kwpat = r'\$(%s)(: [^$\n\r]*? )??\$' % '|'.join(escaped)
   130         kwpat = r'\$(%s)(: [^$\n\r]*? )??\$' % '|'.join(escaped)
   132         self.re_kw = re.compile(kwpat)
   131         self.re_kw = re.compile(kwpat)
   133 
   132 
   134         templatefilters.filters['utcdate'] = utcdate
   133         templatefilters.filters['utcdate'] = utcdate
   455 
   454 
   456         def wread(self, filename):
   455         def wread(self, filename):
   457             data = super(kwrepo, self).wread(filename)
   456             data = super(kwrepo, self).wread(filename)
   458             return kwt.wread(filename, data)
   457             return kwt.wread(filename, data)
   459 
   458 
   460         def commit(self, text='', user=None, date=None, match=None,
   459         def commit(self, *args, **opts):
   461                    force=False, editor=None, extra={}):
       
   462             # use custom commitctx for user commands
   460             # use custom commitctx for user commands
   463             # other extensions can still wrap repo.commitctx directly
   461             # other extensions can still wrap repo.commitctx directly
   464             repo.commitctx = self.kwcommitctx
   462             self.commitctx = self.kwcommitctx
   465             return super(kwrepo, self).commit(text, user, date, match, force,
   463             try:
   466                          editor, extra)
   464                 return super(kwrepo, self).commit(*args, **opts)
       
   465             finally:
       
   466                 del self.commitctx
   467 
   467 
   468         def kwcommitctx(self, ctx, error=False):
   468         def kwcommitctx(self, ctx, error=False):
   469             wlock = lock = None
   469             wlock = lock = None
   470             try:
   470             try:
   471                 wlock = self.wlock()
   471                 wlock = self.wlock()
   485 
   485 
   486                 kwt.overwrite(n, True, None)
   486                 kwt.overwrite(n, True, None)
   487                 if commithooks:
   487                 if commithooks:
   488                     for name, cmd in commithooks.iteritems():
   488                     for name, cmd in commithooks.iteritems():
   489                         ui.setconfig('hooks', name, cmd)
   489                         ui.setconfig('hooks', name, cmd)
   490                     repo.hook('commit', node=n, parent1=xp1, parent2=xp2)
   490                     self.hook('commit', node=n, parent1=xp1, parent2=xp2)
   491                 return n
   491                 return n
   492             finally:
   492             finally:
   493                 release(lock, wlock)
   493                 release(lock, wlock)
   494 
   494 
   495     # monkeypatches
   495     # monkeypatches