[PATCH] keyword: support extensions using dorecord, e.g. crecord

Christian Ebert blacktrash at gmx.net
Sun May 9 05:56:39 CDT 2010


# HG changeset patch
# User Christian Ebert <blacktrash at gmx.net>
# Date 1273396483 -7200
# Node ID 4be95ea45fc6c018f10b04eee262c0a2d6821af9
# Parent  0bedcbcb3ae2caca7f8894c6b53c901475aad6a1
keyword: support extensions using dorecord, e.g. crecord

Provide extendable keyword.recordextensions variable, so other
extensions beside hgext.record which provide the dorecord function
can cooperate with hgext.keyword like so (example from crecord):

def extsetup():
    try:
        keyword = extensions.find('keyword')
        keyword.restricted += ' crecord qcrecord'
        try:
            # use record support in keyword.py if present
            keyword.recordcommands += ' crecord qcrecord'
            keyword.recordextensions += ' crecord'
        except AttributeError:
            pass
    except KeyError:
        pass

diff --git a/hgext/keyword.py b/hgext/keyword.py
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -91,6 +91,8 @@
 
 # commands using dorecord
 recordcommands = 'record qrecord'
+# names of extensions using dorecord
+recordextensions = 'record'
 
 # provide cvs-like UTC date filter
 utcdate = lambda x: util.datestr((x[0], 0), '%Y/%m/%d %H:%M:%S')
@@ -515,11 +517,12 @@
         extensions.wrapfunction(patch, 'diff', kw_diff)
     for c in 'annotate changeset rev filediff diff'.split():
         extensions.wrapfunction(webcommands, c, kwweb_skip)
-    try:
-        record = extensions.find('record')
-        extensions.wrapfunction(record, 'dorecord', kw_dorecord)
-    except KeyError:
-        pass
+    for name in recordextensions.split():
+        try:
+            record = extensions.find(name)
+            extensions.wrapfunction(record, 'dorecord', kw_dorecord)
+        except KeyError:
+            pass
 
 cmdtable = {
     'kwdemo':


More information about the Mercurial-devel mailing list