Show More
@@ -152,7 +152,7 def afterloaded(extension, callback): | |||||
152 | else: |
|
152 | else: | |
153 | _aftercallbacks.setdefault(extension, []).append(callback) |
|
153 | _aftercallbacks.setdefault(extension, []).append(callback) | |
154 |
|
154 | |||
155 | def wrapcommand(table, command, wrapper): |
|
155 | def wrapcommand(table, command, wrapper, synopsis=None, docstring=None): | |
156 | '''Wrap the command named `command' in table |
|
156 | '''Wrap the command named `command' in table | |
157 |
|
157 | |||
158 | Replace command in the command table with wrapper. The wrapped command will |
|
158 | Replace command in the command table with wrapper. The wrapped command will | |
@@ -164,6 +164,22 def wrapcommand(table, command, wrapper) | |||||
164 |
|
164 | |||
165 | where orig is the original (wrapped) function, and *args, **kwargs |
|
165 | where orig is the original (wrapped) function, and *args, **kwargs | |
166 | are the arguments passed to it. |
|
166 | are the arguments passed to it. | |
|
167 | ||||
|
168 | Optionally append to the command synopsis and docstring, used for help. | |||
|
169 | For example, if your extension wraps the ``bookmarks`` command to add the | |||
|
170 | flags ``--remote`` and ``--all`` you might call this function like so: | |||
|
171 | ||||
|
172 | synopsis = ' [-a] [--remote]' | |||
|
173 | docstring = """ | |||
|
174 | ||||
|
175 | The ``remotenames`` extension adds the ``--remote`` and ``--all`` (``-a``) | |||
|
176 | flags to the bookmarks command. Either flag will show the remote bookmarks | |||
|
177 | known to the repository; ``--remote`` will also supress the output of the | |||
|
178 | local bookmarks. | |||
|
179 | """ | |||
|
180 | ||||
|
181 | extensions.wrapcommand(commands.table, 'bookmarks', exbookmarks, | |||
|
182 | synopsis, docstring) | |||
167 | ''' |
|
183 | ''' | |
168 | assert callable(wrapper) |
|
184 | assert callable(wrapper) | |
169 | aliases, entry = cmdutil.findcmd(command, table) |
|
185 | aliases, entry = cmdutil.findcmd(command, table) | |
@@ -177,11 +193,17 def wrapcommand(table, command, wrapper) | |||||
177 | return util.checksignature(wrapper)( |
|
193 | return util.checksignature(wrapper)( | |
178 | util.checksignature(origfn), *args, **kwargs) |
|
194 | util.checksignature(origfn), *args, **kwargs) | |
179 |
|
195 | |||
180 | wrap.__doc__ = getattr(origfn, '__doc__') |
|
|||
181 | wrap.__module__ = getattr(origfn, '__module__') |
|
196 | wrap.__module__ = getattr(origfn, '__module__') | |
182 |
|
197 | |||
|
198 | doc = getattr(origfn, '__doc__') | |||
|
199 | if docstring is not None: | |||
|
200 | doc += docstring | |||
|
201 | wrap.__doc__ = doc | |||
|
202 | ||||
183 | newentry = list(entry) |
|
203 | newentry = list(entry) | |
184 | newentry[0] = wrap |
|
204 | newentry[0] = wrap | |
|
205 | if synopsis is not None: | |||
|
206 | newentry[2] += synopsis | |||
185 | table[key] = tuple(newentry) |
|
207 | table[key] = tuple(newentry) | |
186 | return entry |
|
208 | return entry | |
187 |
|
209 |
@@ -1140,3 +1140,27 disabling in command line overlays with | |||||
1140 | C sub3/3 |
|
1140 | C sub3/3 | |
1141 |
|
1141 | |||
1142 | $ cd .. |
|
1142 | $ cd .. | |
|
1143 | ||||
|
1144 | Test synopsis and docstring extending | |||
|
1145 | ||||
|
1146 | $ hg init exthelp | |||
|
1147 | $ cat > exthelp.py <<EOF | |||
|
1148 | > from mercurial import commands, extensions | |||
|
1149 | > def exbookmarks(orig, *args, **opts): | |||
|
1150 | > return orig(*args, **opts) | |||
|
1151 | > def uisetup(ui): | |||
|
1152 | > synopsis = ' GREPME [--foo] [-x]' | |||
|
1153 | > docstring = ''' | |||
|
1154 | > GREPME make sure that this is in the help! | |||
|
1155 | > ''' | |||
|
1156 | > extensions.wrapcommand(commands.table, 'bookmarks', exbookmarks, | |||
|
1157 | > synopsis, docstring) | |||
|
1158 | > EOF | |||
|
1159 | $ abspath=`pwd`/exthelp.py | |||
|
1160 | $ echo '[extensions]' >> $HGRCPATH | |||
|
1161 | $ echo "exthelp = $abspath" >> $HGRCPATH | |||
|
1162 | $ cd exthelp | |||
|
1163 | $ hg help bookmarks | grep GREPME | |||
|
1164 | hg bookmarks [OPTIONS]... [NAME]... GREPME [--foo] [-x] | |||
|
1165 | GREPME make sure that this is in the help! | |||
|
1166 |
General Comments 0
You need to be logged in to leave comments.
Login now