Mercurial > hg > mercurial-crew-with-dirclash
comparison contrib/vim/hgcommand.vim @ 2604:d93c23b31797
HGcommand.vim : doc review.
author | "Mathieu Clabaut <mathieu.clabaut@gmail.com>" |
---|---|
date | Wed, 12 Jul 2006 23:52:08 +0200 |
parents | f80057407c07 |
children | 4ad79eeebf96 |
comparison
equal
deleted
inserted
replaced
2603:f80057407c07 | 2604:d93c23b31797 |
---|---|
4 " | 4 " |
5 " Last Change: 2006/02/22 | 5 " Last Change: 2006/02/22 |
6 " Version: 1.76 | 6 " Version: 1.76 |
7 " Maintainer: Mathieu Clabaut <mathieu.clabaut@gmail.com> | 7 " Maintainer: Mathieu Clabaut <mathieu.clabaut@gmail.com> |
8 " License: This file is placed in the public domain. | 8 " License: This file is placed in the public domain. |
9 " Credits: {{{1 | 9 " Credits: |
10 " Bob Hiestand <bob.hiestand@gmail.com> for the fabulous | 10 " Bob Hiestand <bob.hiestand@gmail.com> for the fabulous |
11 " cvscommand.vim from which this script was directly created by | 11 " cvscommand.vim from which this script was directly created by |
12 " means of sed commands and minor tweaks. | 12 " means of sed commands and minor tweaks. |
13 | 13 |
14 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | 14 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
20 " script has been copied in you .vim/plugin directory. | 20 " script has been copied in you .vim/plugin directory. |
21 " | 21 " |
22 " You still can read the documentation at the end of this file. Locate it by | 22 " You still can read the documentation at the end of this file. Locate it by |
23 " searching the "hgcommand-contents" string (and set ft=help to have | 23 " searching the "hgcommand-contents" string (and set ft=help to have |
24 " appropriate syntaxic coloration). | 24 " appropriate syntaxic coloration). |
25 " | 25 |
26 " Section: Documentation : detail {{{1 | |
27 " | |
28 " Provides functions to invoke various HG commands on the current file | |
29 " (either the current buffer, or, in the case of an directory buffer, the file | |
30 " on the current line). The output of the commands is captured in a new | |
31 " scratch window. For convenience, if the functions are invoked on a HG | |
32 " output window, the original file is used for the hg operation instead after | |
33 " the window is split. This is primarily useful when running HGCommit and | |
34 " you need to see the changes made, so that HGDiff is usable and shows up in | |
35 " another window. | |
36 " | |
37 " Command documentation {{{2 | |
38 " | |
39 " HGAdd Performs "hg add" on the current file. | |
40 " | |
41 " HGAnnotate Performs "hg annotate" on the current file. If an | |
42 " argument is given, the argument is used as a revision | |
43 " number to display. If not given an argument, it uses the | |
44 " most recent version of the file on the current branch. | |
45 " Additionally, if the current buffer is a HGAnnotate buffer | |
46 " already, the version number on the current line is used. | |
47 " | |
48 " If the 'HGCommandAnnotateParent' variable is set to a | |
49 " non-zero value, the version previous to the one on the | |
50 " current line is used instead. This allows one to navigate | |
51 " back to examine the previous version of a line. | |
52 " | |
53 " HGCommit[!] If called with arguments, this performs "hg commit" using | |
54 " the arguments as the log message. | |
55 " | |
56 " If '!' is used, an empty log message is committed. | |
57 " | |
58 " If called with no arguments, this is a two-step command. | |
59 " The first step opens a buffer to accept a log message. | |
60 " When that buffer is written, it is automatically closed and | |
61 " the file is committed using the information from that log | |
62 " message. The commit can be abandoned if the log message | |
63 " buffer is deleted or wiped before being written. | |
64 " | |
65 " HGDiff With no arguments, this performs "hg diff" on the current | |
66 " file. With one argument, "hg diff" is performed on the | |
67 " current file against the specified revision. With two | |
68 " arguments, hg diff is performed between the specified | |
69 " revisions of the current file. This command uses the | |
70 " 'HGCommandDiffOpt' variable to specify diff options. If | |
71 " that variable does not exist, then 'wbBc' is assumed. If | |
72 " you wish to have no options, then set it to the empty | |
73 " string. | |
74 " | |
75 " HGGotoOriginal Returns the current window to the source buffer if the | |
76 " current buffer is a HG output buffer. | |
77 " | |
78 " HGLog Performs "hg log" on the current file. | |
79 " | |
80 " HGRevert Replaces the modified version of the current file with the | |
81 " most recent version from the repository. | |
82 " | |
83 " HGReview Retrieves a particular version of the current file. If no | |
84 " argument is given, the most recent version of the file on | |
85 " the current branch is retrieved. The specified revision is | |
86 " retrieved into a new buffer. | |
87 " | |
88 " HGStatus Performs "hg status" on the current file. | |
89 " | |
90 " HGUpdate Performs "hg update" on the current file. | |
91 " | |
92 " HGVimDiff With no arguments, this prompts the user for a revision and | |
93 " then uses vimdiff to display the differences between the | |
94 " current file and the specified revision. If no revision is | |
95 " specified, the most recent version of the file on the | |
96 " current branch is used. With one argument, that argument | |
97 " is used as the revision as above. With two arguments, the | |
98 " differences between the two revisions is displayed using | |
99 " vimdiff. | |
100 " | |
101 " With either zero or one argument, the original buffer is used | |
102 " to perform the vimdiff. When the other buffer is closed, the | |
103 " original buffer will be returned to normal mode. | |
104 " | |
105 " Once vimdiff mode is started using the above methods, | |
106 " additional vimdiff buffers may be added by passing a single | |
107 " version argument to the command. There may be up to 4 | |
108 " vimdiff buffers total. | |
109 " | |
110 " Using the 2-argument form of the command resets the vimdiff | |
111 " to only those 2 versions. Additionally, invoking the | |
112 " command on a different file will close the previous vimdiff | |
113 " buffers. | |
114 " | |
115 " | |
116 " Mapping documentation: {{{2 | |
117 " | |
118 " By default, a mapping is defined for each command. User-provided mappings | |
119 " can be used instead by mapping to <Plug>CommandName, for instance: | |
120 " | |
121 " nnoremap ,ca <Plug>HGAdd | |
122 " | |
123 " The default mappings are as follow: | |
124 " | |
125 " <Leader>hga HGAdd | |
126 " <Leader>hgn HGAnnotate | |
127 " <Leader>hgc HGCommit | |
128 " <Leader>hgd HGDiff | |
129 " <Leader>hgg HGGotoOriginal | |
130 " <Leader>hgG HGGotoOriginal! | |
131 " <Leader>hgl HGLog | |
132 " <Leader>hgr HGReview | |
133 " <Leader>hgs HGStatus | |
134 " <Leader>hgu HGUpdate | |
135 " <Leader>hgv HGVimDiff | |
136 " | |
137 " Options documentation: {{{2 | |
138 " | |
139 " Several variables are checked by the script to determine behavior as follow: | |
140 " | |
141 " HGCommandAnnotateParent | |
142 " This variable, if set to a non-zero value, causes the zero-argument form | |
143 " of HGAnnotate when invoked on a HGAnnotate buffer to go to the version | |
144 " previous to that displayed on the current line. If not set, it defaults | |
145 " to 0. | |
146 " | |
147 " HGCommandCommitOnWrite | |
148 " This variable, if set to a non-zero value, causes the pending hg commit | |
149 " to take place immediately as soon as the log message buffer is written. | |
150 " If set to zero, only the HGCommit mapping will cause the pending commit | |
151 " to occur. If not set, it defaults to 1. | |
152 " | |
153 " HGCommandDeleteOnHide | |
154 " This variable, if set to a non-zero value, causes the temporary HG result | |
155 " buffers to automatically delete themselves when hidden. | |
156 " | |
157 " HGCommandDiffOpt | |
158 " This variable, if set, determines the options passed to the diff command | |
159 " of HG. If not set, it defaults to 'wbBc'. | |
160 " | |
161 " HGCommandDiffSplit | |
162 " This variable overrides the HGCommandSplit variable, but only for buffers | |
163 " created with HGVimDiff. | |
164 " | |
165 " HGCommandEdit | |
166 " This variable controls whether the original buffer is replaced ('edit') or | |
167 " split ('split'). If not set, it defaults to 'edit'. | |
168 " | |
169 " HGCommandEnableBufferSetup | |
170 " This variable, if set to a non-zero value, activates HG buffer management | |
171 " mode. This mode means that two buffer variables, 'HGRevision' and | |
172 " 'HGBranch', are set if the file is HG-controlled. This is useful for | |
173 " displaying version information in the status bar. | |
174 " | |
175 " HGCommandInteractive | |
176 " This variable, if set to a non-zero value, causes appropriate functions (for | |
177 " the moment, only HGReview) to query the user for a revision to use | |
178 " instead of the current revision if none is specified. | |
179 " | |
180 " HGCommandNameMarker | |
181 " This variable, if set, configures the special attention-getting characters | |
182 " that appear on either side of the hg buffer type in the buffer name. | |
183 " This has no effect unless 'HGCommandNameResultBuffers' is set to a true | |
184 " value. If not set, it defaults to '_'. | |
185 " | |
186 " HGCommandNameResultBuffers | |
187 " This variable, if set to a true value, causes the hg result buffers to be | |
188 " named in the old way ('<source file name> _<hg command>_'). If not set | |
189 " or set to a false value, the result buffer is nameless. | |
190 " | |
191 " HGCommandSplit | |
192 " This variable controls the orientation of the various window splits that | |
193 " may occur (such as with HGVimDiff, when using a HG command on a HG | |
194 " command buffer, or when the 'HGCommandEdit' variable is set to 'split'. | |
195 " If set to 'horizontal', the resulting windows will be on stacked on top of | |
196 " one another. If set to 'vertical', the resulting windows will be | |
197 " side-by-side. If not set, it defaults to 'horizontal' for all but | |
198 " HGVimDiff windows. | |
199 " | |
200 " Event documentation {{{2 | |
201 " For additional customization, hgcommand.vim uses User event autocommand | |
202 " hooks. Each event is in the HGCommand group, and different patterns | |
203 " match the various hooks. | |
204 " | |
205 " For instance, the following could be added to the vimrc to provide a 'q' | |
206 " mapping to quit a HG buffer: | |
207 " | |
208 " augroup HGCommand | |
209 " au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q :bwipeout<cr> | |
210 " augroup END | |
211 " | |
212 " The following hooks are available: | |
213 " | |
214 " HGBufferCreated This event is fired just after a hg command | |
215 " result buffer is created and filled with the | |
216 " result of a hg command. It is executed within | |
217 " the context of the new buffer. | |
218 " | |
219 " HGBufferSetup This event is fired just after HG buffer setup | |
220 " occurs, if enabled. | |
221 " | |
222 " HGPluginInit This event is fired when the HGCommand plugin | |
223 " first loads. | |
224 " | |
225 " HGPluginFinish This event is fired just after the HGCommand | |
226 " plugin loads. | |
227 " | |
228 " HGVimDiffFinish This event is fired just after the HGVimDiff | |
229 " command executes to allow customization of, | |
230 " for instance, window placement and focus. | |
231 " | |
232 " Section: Plugin header {{{1 | 26 " Section: Plugin header {{{1 |
233 | 27 |
234 " loaded_hgcommand is set to 1 when the initialization begins, and 2 when it | 28 " loaded_hgcommand is set to 1 when the initialization begins, and 2 when it |
235 " completes. This allows various actions to only be taken by functions after | 29 " completes. This allows various actions to only be taken by functions after |
236 " system initialization. | 30 " system initialization. |
1420 Mercurial: http://www.selenic.com/mercurial | 1214 Mercurial: http://www.selenic.com/mercurial |
1421 Mercurial (noted Hg) is a fast, lightweight Source Control Management | 1215 Mercurial (noted Hg) is a fast, lightweight Source Control Management |
1422 system designed for efficient handling of very large distributed projects. | 1216 system designed for efficient handling of very large distributed projects. |
1423 | 1217 |
1424 ============================================================================== | 1218 ============================================================================== |
1425 1. Contents *hgcommand-contents* | 1219 1. Contents *hgcommand-contents* |
1426 | 1220 |
1427 Installation : |hgcommand-install| | 1221 Installation : |hgcommand-install| |
1428 HGCommand Intro : |hgcommand| | 1222 HGCommand Intro : |hgcommand| |
1429 HGCommand Manual : |hgcommand-manual| | 1223 HGCommand Manual : |hgcommand-manual| |
1430 Customization : |hgcommand-customize| | 1224 Customization : |hgcommand-customize| |
1431 SSH "integration" : |hgcommand-ssh| | |
1432 Bugs : |hgcommand-bugs| | 1225 Bugs : |hgcommand-bugs| |
1433 | 1226 |
1434 ============================================================================== | 1227 ============================================================================== |
1435 *hgcommand-install* | 1228 2. HGCommand Installation *hgcommand-install* |
1436 2. HGCommand Installation | |
1437 | 1229 |
1438 In order to install the plugin, place the hgcommand.vim file into a plugin' | 1230 In order to install the plugin, place the hgcommand.vim file into a plugin' |
1439 directory in your runtime path (please see |add-global-plugin| and | 1231 directory in your runtime path (please see |add-global-plugin| and |
1440 |'runtimepath'|. | 1232 |'runtimepath'|. |
1441 | 1233 |
1442 HGCommand may be customized by setting variables, creating maps, and | 1234 HGCommand may be customized by setting variables, creating maps, and |
1443 specifying event handlers. Please see |hgcommand-customize| for more | 1235 specifying event handlers. Please see |hgcommand-customize| for more |
1444 details. | 1236 details. |
1445 | 1237 |
1446 *hgcommand-auto-help* | 1238 *hgcommand-auto-help* |
1447 The help file is automagically generated when the |vimspell| script is | 1239 The help file is automagically generated when the |hgcommand| script is |
1448 loaded for the first time. | 1240 loaded for the first time. |
1449 | 1241 |
1450 ============================================================================== | 1242 ============================================================================== |
1451 | 1243 |
1452 3. HGCommand Intro *hgcommand* | 1244 3. HGCommand Intro *hgcommand* |
1453 *hgcommand-intro* | 1245 *hgcommand-intro* |
1454 | 1246 |
1455 The HGCommand plugin provides global ex commands for manipulating | 1247 The HGCommand plugin provides global ex commands for manipulating |
1456 HG-controlled source files. In general, each command operates on the current | 1248 HG-controlled source files. In general, each command operates on the |
1457 buffer and accomplishes a separate hg function, such as update, commit, log, | 1249 current buffer and accomplishes a separate hg function, such as update, |
1458 and others (please see |hgcommand-commands| for a list of all available | 1250 commit, log, and others (please see |hgcommand-commands| for a list of all |
1459 commands). The results of each operation are displayed in a scratch buffer. | 1251 available commands). The results of each operation are displayed in a |
1460 Several buffer variables are defined for those scratch buffers (please see | 1252 scratch buffer. Several buffer variables are defined for those scratch |
1461 |hgcommand-buffer-variables|). | 1253 buffers (please see |hgcommand-buffer-variables|). |
1462 | 1254 |
1463 The notion of "current file" means either the current buffer, or, in the case | 1255 The notion of "current file" means either the current buffer, or, in the |
1464 of a directory buffer, the file on the current line within the buffer. | 1256 case of a directory buffer, the file on the current line within the buffer. |
1465 | 1257 |
1466 For convenience, any HGCommand invoked on a HGCommand scratch buffer acts as | 1258 For convenience, any HGCommand invoked on a HGCommand scratch buffer acts |
1467 though it was invoked on the original file and splits the screen so that the | 1259 as though it was invoked on the original file and splits the screen so that |
1468 output appears in a new window. | 1260 the output appears in a new window. |
1469 | 1261 |
1470 Many of the commands accept revisions as arguments. By default, most operate | 1262 Many of the commands accept revisions as arguments. By default, most |
1471 on the most recent revision on the current branch if no revision is specified | 1263 operate on the most recent revision on the current branch if no revision is |
1472 (though see |HGCommandInteractive| to prompt instead). | 1264 specified (though see |HGCommandInteractive| to prompt instead). |
1473 | 1265 |
1474 Each HGCommand is mapped to a key sequence starting with the <Leader> | 1266 Each HGCommand is mapped to a key sequence starting with the <Leader> |
1475 keystroke. The default mappings may be overridden by supplying different | 1267 keystroke. The default mappings may be overridden by supplying different |
1476 mappings before the plugin is loaded, such as in the vimrc, in the standard | 1268 mappings before the plugin is loaded, such as in the vimrc, in the standard |
1477 fashion for plugin mappings. For examples, please see | 1269 fashion for plugin mappings. For examples, please see |
1478 |hgcommand-mappings-override|. | 1270 |hgcommand-mappings-override|. |
1479 | 1271 |
1480 The HGCommand plugin may be configured in several ways. For more details, | 1272 The HGCommand plugin may be configured in several ways. For more details, |
1481 please see |hgcommand-customize|. | 1273 please see |hgcommand-customize|. |
1482 | 1274 |
1483 ============================================================================== | 1275 ============================================================================== |
1484 | 1276 4. HGCommand Manual *hgcommand-manual* |
1485 4. HGCommand Manual *hgcommand-manual* | 1277 |
1486 | 1278 4.1 HGCommand commands *hgcommand-commands* |
1487 4.1 HGCommand commands *hgcommand-commands* | 1279 |
1488 | 1280 HGCommand defines the following commands: |
1489 HGCommand defines the following commands: | 1281 |
1490 | 1282 |:HGAdd| |
1491 |:HGAdd| | 1283 |:HGAnnotate| |
1492 |:HGAnnotate| | 1284 |:HGCommit| |
1493 |:HGCommit| | 1285 |:HGDiff| |
1494 |:HGDiff| | 1286 |:HGGotoOriginal| |
1495 |:HGGotoOriginal| | 1287 |:HGLog| |
1496 |:HGLog| | 1288 |:HGRevert| |
1497 |:HGRevert| | 1289 |:HGReview| |
1498 |:HGReview| | 1290 |:HGStatus| |
1499 |:HGStatus| | 1291 |:HGUpdate| |
1500 |:HGUnedit| | 1292 |:HGVimDiff| |
1501 |:HGUpdate| | 1293 |
1502 |:HGVimDiff| | 1294 :HGAdd *:HGAdd* |
1503 | 1295 |
1504 :HGAdd *:HGAdd* | 1296 This command performs "hg add" on the current file. Please note, this does |
1505 | 1297 not commit the newly-added file. |
1506 This command performs "hg add" on the current file. Please note, this does | 1298 |
1507 not commit the newly-added file. | 1299 :HGAnnotate *:HGAnnotate* |
1508 | 1300 |
1509 :HGAnnotate *:HGAnnotate* | 1301 This command performs "hg annotate" on the current file. If an argument is |
1510 | 1302 given, the argument is used as a revision number to display. If not given |
1511 This command performs "hg annotate" on the current file. If an argument is | 1303 an argument, it uses the most recent version of the file on the current |
1512 given, the argument is used as a revision number to display. If not given an | 1304 branch. Additionally, if the current buffer is a HGAnnotate buffer |
1513 argument, it uses the most recent version of the file on the current branch. | 1305 already, the version number on the current line is used. |
1514 Additionally, if the current buffer is a HGAnnotate buffer already, the | 1306 |
1515 version number on the current line is used. | 1307 If the |HGCommandAnnotateParent| variable is set to a non-zero value, the |
1516 | 1308 version previous to the one on the current line is used instead. This |
1517 If the |HGCommandAnnotateParent| variable is set to a non-zero value, the | 1309 allows one to navigate back to examine the previous version of a line. |
1518 version previous to the one on the current line is used instead. This allows | 1310 |
1519 one to navigate back to examine the previous version of a line. | 1311 The filetype of the HGCommand scratch buffer is set to 'HGAnnotate', to |
1520 | 1312 take advantage of the bundled syntax file. |
1521 The filetype of the HGCommand scratch buffer is set to 'HGAnnotate', to take | 1313 |
1522 advantage of the bundled syntax file. | 1314 |
1523 | 1315 :HGCommit[!] *:HGCommit* |
1524 | 1316 |
1525 :HGCommit[!] *:HGCommit* | 1317 If called with arguments, this performs "hg commit" using the arguments as |
1526 | 1318 the log message. |
1527 If called with arguments, this performs "hg commit" using the arguments as | 1319 |
1528 the log message. | 1320 If '!' is used with no arguments, an empty log message is committed. |
1529 | 1321 |
1530 If '!' is used with no arguments, an empty log message is committed. | 1322 If called with no arguments, this is a two-step command. The first step |
1531 | 1323 opens a buffer to accept a log message. When that buffer is written, it is |
1532 If called with no arguments, this is a two-step command. The first step opens | 1324 automatically closed and the file is committed using the information from |
1533 a buffer to accept a log message. When that buffer is written, it is | 1325 that log message. The commit can be abandoned if the log message buffer is |
1534 automatically closed and the file is committed using the information from that | 1326 deleted or wiped before being written. |
1535 log message. The commit can be abandoned if the log message buffer is deleted | 1327 |
1536 or wiped before being written. | 1328 Alternatively, the mapping that is used to invoke :HGCommit (by default |
1537 | 1329 <Leader>hgc) can be used in the log message buffer to immediately commit. |
1538 Alternatively, the mapping that is used to invoke :HGCommit (by default | 1330 This is useful if the |HGCommandCommitOnWrite| variable is set to 0 to |
1539 <Leader>hgc) can be used in the log message buffer to immediately commit. | 1331 disable the normal commit-on-write behavior. |
1540 This | 1332 |
1541 is useful if the |HGCommandCommitOnWrite| variable is set to 0 to disable the | 1333 :HGDiff *:HGDiff* |
1542 normal commit-on-write behavior. | 1334 |
1543 | 1335 With no arguments, this performs "hg diff" on the current file against the |
1544 :HGDiff *:HGDiff* | 1336 current repository version. |
1545 | 1337 |
1546 With no arguments, this performs "hg diff" on the current file against the | 1338 With one argument, "hg diff" is performed on the current file against the |
1547 current repository version. | 1339 specified revision. |
1548 | 1340 |
1549 With one argument, "hg diff" is performed on the current file against the | 1341 With two arguments, hg diff is performed between the specified revisions of |
1550 specified revision. | 1342 the current file. |
1551 | 1343 |
1552 With two arguments, hg diff is performed between the specified | 1344 This command uses the 'HGCommandDiffOpt' variable to specify diff options. |
1553 revisions of the current file. | 1345 If that variable does not exist, then 'wbBc' is assumed. If you wish to |
1554 | 1346 have no options, then set it to the empty string. |
1555 This command uses the 'HGCommandDiffOpt' variable to specify diff options. | 1347 |
1556 If that variable does not exist, then 'wbBc' is assumed. If you wish to have | 1348 |
1557 no options, then set it to the empty string. | 1349 :HGGotoOriginal *:HGGotoOriginal* |
1558 | 1350 |
1559 | 1351 This command returns the current window to the source buffer, if the |
1560 This command performs "hg edit" on the current file. | 1352 current buffer is a HG command output buffer. |
1561 | |
1562 :HGGotoOriginal *:HGGotoOriginal* | |
1563 | |
1564 This command returns the current window to the source buffer, if the current | |
1565 buffer is a HG command output buffer. | |
1566 | 1353 |
1567 :HGGotoOriginal! | 1354 :HGGotoOriginal! |
1568 | 1355 |
1569 Like ":HGGotoOriginal" but also executes :bufwipeout on all HG command | 1356 Like ":HGGotoOriginal" but also executes :bufwipeout on all HG command |
1570 output buffers for the source buffer. | 1357 output buffers for the source buffer. |
1571 | 1358 |
1572 :HGLog *:HGLog* | 1359 :HGLog *:HGLog* |
1573 | 1360 |
1574 Performs "hg log" on the current file. | 1361 Performs "hg log" on the current file. |
1575 | 1362 |
1576 If an argument is given, it is passed as an argument to the "-r" option of | 1363 If an argument is given, it is passed as an argument to the "-r" option of |
1577 "hg log". | 1364 "hg log". |
1578 | 1365 |
1579 :HGRevert *:HGRevert* | 1366 :HGRevert *:HGRevert* |
1580 | 1367 |
1581 Replaces the current file with the most recent version from the repository in | 1368 Replaces the current file with the most recent version from the repository |
1582 order to wipe out any undesired changes. | 1369 in order to wipe out any undesired changes. |
1583 | 1370 |
1584 :HGReview *:HGReview* | 1371 :HGReview *:HGReview* |
1585 | 1372 |
1586 Retrieves a particular version of the current file. If no argument is given, | 1373 Retrieves a particular version of the current file. If no argument is |
1587 the most recent version of the file on the current branch is retrieved. | 1374 given, the most recent version of the file on the current branch is |
1588 Otherwise, the specified version is retrieved. | 1375 retrieved. Otherwise, the specified version is retrieved. |
1589 | 1376 |
1590 :HGStatus *:HGStatus* | 1377 :HGStatus *:HGStatus* |
1591 | 1378 |
1592 Performs "hg status" on the current file. | 1379 Performs "hg status" on the current file. |
1593 | 1380 |
1594 :HGUnedit *:HGUnedit* | 1381 :HGUpdate *:HGUpdate* |
1595 | 1382 |
1596 Performs "hg unedit" on the current file. Again, yes, the output buffer here | 1383 Performs "hg update" on the current file. This intentionally does not |
1597 is basically useless. | 1384 automatically reload the current buffer, though vim should prompt the user |
1598 | 1385 to do so if the underlying file is altered by this command. |
1599 :HGUpdate *:HGUpdate* | 1386 |
1600 | 1387 :HGVimDiff *:HGVimDiff* |
1601 Performs "hg update" on the current file. This intentionally does not | 1388 |
1602 automatically reload the current buffer, though vim should prompt the user to | 1389 With no arguments, this prompts the user for a revision and then uses |
1603 do so if the underlying file is altered by this command. | 1390 vimdiff to display the differences between the current file and the |
1604 | 1391 specified revision. If no revision is specified, the most recent version |
1605 :HGVimDiff *:HGVimDiff* | 1392 of the file on the current branch is used. |
1606 | 1393 |
1607 With no arguments, this prompts the user for a revision and then uses vimdiff | 1394 With one argument, that argument is used as the revision as above. With |
1608 to display the differences between the current file and the specified | 1395 two arguments, the differences between the two revisions is displayed using |
1609 revision. If no revision is specified, the most recent version of the file on | 1396 vimdiff. |
1610 the current branch is used. | 1397 |
1611 | 1398 With either zero or one argument, the original buffer is used to perform |
1612 With one argument, that argument is used as the revision as above. With two | 1399 the vimdiff. When the other buffer is closed, the original buffer will be |
1613 arguments, the differences between the two revisions is displayed using | 1400 returned to normal mode. |
1614 vimdiff. | 1401 |
1615 | 1402 Once vimdiff mode is started using the above methods, additional vimdiff |
1616 With either zero or one argument, the original buffer is used to perform the | 1403 buffers may be added by passing a single version argument to the command. |
1617 vimdiff. When the other buffer is closed, the original buffer will be | 1404 There may be up to 4 vimdiff buffers total. |
1618 returned to normal mode. | 1405 |
1619 | 1406 Using the 2-argument form of the command resets the vimdiff to only those 2 |
1620 Once vimdiff mode is started using the above methods, additional vimdiff | 1407 versions. Additionally, invoking the command on a different file will |
1621 buffers may be added by passing a single version argument to the command. | 1408 close the previous vimdiff buffers. |
1622 There may be up to 4 vimdiff buffers total. | 1409 |
1623 | 1410 |
1624 Using the 2-argument form of the command resets the vimdiff to only those 2 | 1411 4.2 Mappings *hgcommand-mappings* |
1625 versions. Additionally, invoking the command on a different file will close | 1412 |
1626 the previous vimdiff buffers. | 1413 By default, a mapping is defined for each command. These mappings execute |
1627 | 1414 the default (no-argument) form of each command. |
1628 | 1415 |
1629 4.2 Mappings *hgcommand-mappings* | 1416 <Leader>hga HGAdd |
1630 | 1417 <Leader>hgn HGAnnotate |
1631 By default, a mapping is defined for each command. These mappings execute the | 1418 <Leader>hgc HGCommit |
1632 default (no-argument) form of each command. | 1419 <Leader>hgd HGDiff |
1633 | 1420 <Leader>hgg HGGotoOriginal |
1634 <Leader>hga HGAdd | 1421 <Leader>hgG HGGotoOriginal! |
1635 <Leader>hgn HGAnnotate | 1422 <Leader>hgl HGLog |
1636 <Leader>hgc HGCommit | 1423 <Leader>hgr HGReview |
1637 <Leader>hgd HGDiff | 1424 <Leader>hgs HGStatus |
1638 <Leader>hgg HGGotoOriginal | 1425 <Leader>hgu HGUpdate |
1639 <Leader>hgG HGGotoOriginal! | 1426 <Leader>hgv HGVimDiff |
1640 <Leader>hgl HGLog | 1427 |
1641 <Leader>hgr HGReview | 1428 *hgcommand-mappings-override* |
1642 <Leader>hgs HGStatus | 1429 |
1643 <Leader>hgt HGUnedit | 1430 The default mappings can be overriden by user-provided instead by mapping |
1644 <Leader>hgu HGUpdate | 1431 to <Plug>CommandName. This is especially useful when these mappings |
1645 <Leader>hgv HGVimDiff | 1432 collide with other existing mappings (vim will warn of this during plugin |
1646 | 1433 initialization, but will not clobber the existing mappings). |
1647 *hgcommand-mappings-override* | 1434 |
1648 | 1435 For instance, to override the default mapping for :HGAdd to set it to |
1649 The default mappings can be overriden by user-provided instead by mapping to | 1436 '\add', add the following to the vimrc: > |
1650 <Plug>CommandName. This is especially useful when these mappings collide with | 1437 |
1651 other existing mappings (vim will warn of this during plugin initialization, | 1438 nmap \add <Plug>HGAdd |
1652 but will not clobber the existing mappings). | 1439 < |
1653 | 1440 4.3 Automatic buffer variables *hgcommand-buffer-variables* |
1654 For instance, to override the default mapping for :HGAdd to set it to '\add', | 1441 |
1655 add the following to the vimrc: | 1442 Several buffer variables are defined in each HGCommand result buffer. |
1656 | 1443 These may be useful for additional customization in callbacks defined in |
1657 nmap \add <Plug>HGAdd | 1444 the event handlers (please see |hgcommand-events|). |
1658 | 1445 |
1659 4.3 Automatic buffer variables *hgcommand-buffer-variables* | 1446 The following variables are automatically defined: |
1660 | 1447 |
1661 Several buffer variables are defined in each HGCommand result buffer. These | 1448 b:hgOrigBuffNR *b:hgOrigBuffNR* |
1662 may be useful for additional customization in callbacks defined in the event | 1449 |
1663 handlers (please see |hgcommand-events|). | 1450 This variable is set to the buffer number of the source file. |
1664 | 1451 |
1665 The following variables are automatically defined: | 1452 b:hgcmd *b:hgcmd* |
1666 | 1453 |
1667 b:hgOrigBuffNR *b:hgOrigBuffNR* | 1454 This variable is set to the name of the hg command that created the result |
1668 | 1455 buffer. |
1669 This variable is set to the buffer number of the source file. | |
1670 | |
1671 b:hgcmd *b:hgcmd* | |
1672 | |
1673 This variable is set to the name of the hg command that created the result | |
1674 buffer. | |
1675 ============================================================================== | 1456 ============================================================================== |
1676 | 1457 |
1677 5. Configuration and customization *hgcommand-customize* | 1458 5. Configuration and customization *hgcommand-customize* |
1678 *hgcommand-config* | 1459 *hgcommand-config* |
1679 | 1460 |
1680 The HGCommand plugin can be configured in two ways: by setting configuration | 1461 The HGCommand plugin can be configured in two ways: by setting |
1681 variables (see |hgcommand-options|) or by defining HGCommand event handlers | 1462 configuration variables (see |hgcommand-options|) or by defining HGCommand |
1682 (see |hgcommand-events|). Additionally, the HGCommand plugin provides | 1463 event handlers (see |hgcommand-events|). Additionally, the HGCommand |
1683 several option for naming the HG result buffers (see |hgcommand-naming|) and | 1464 plugin provides several option for naming the HG result buffers (see |
1684 supported a customized status line (see |hgcommand-statusline| and | 1465 |hgcommand-naming|) and supported a customized status line (see |
1685 |hgcommand-buffer-management|). | 1466 |hgcommand-statusline| and |hgcommand-buffer-management|). |
1686 | 1467 |
1687 5.1 HGCommand configuration variables *hgcommand-options* | 1468 5.1 HGCommand configuration variables *hgcommand-options* |
1688 | 1469 |
1689 Several variables affect the plugin's behavior. These variables are checked | 1470 Several variables affect the plugin's behavior. These variables are |
1690 at time of execution, and may be defined at the window, buffer, or global | 1471 checked at time of execution, and may be defined at the window, buffer, or |
1691 level and are checked in that order of precedence. | 1472 global level and are checked in that order of precedence. |
1692 | 1473 |
1693 | 1474 |
1694 The following variables are available: | 1475 The following variables are available: |
1695 | 1476 |
1696 |HGCommandAnnotateParent| | 1477 |HGCommandAnnotateParent| |
1697 |HGCommandCommitOnWrite| | 1478 |HGCommandCommitOnWrite| |
1698 |HGCommandHGExec| | 1479 |HGCommandHGExec| |
1699 |HGCommandDeleteOnHide| | 1480 |HGCommandDeleteOnHide| |
1700 |HGCommandDiffOpt| | 1481 |HGCommandDiffOpt| |
1701 |HGCommandDiffSplit| | 1482 |HGCommandDiffSplit| |
1702 |HGCommandEdit| | 1483 |HGCommandEdit| |
1703 |HGCommandEnableBufferSetup| | 1484 |HGCommandEnableBufferSetup| |
1704 |HGCommandInteractive| | 1485 |HGCommandInteractive| |
1705 |HGCommandNameMarker| | 1486 |HGCommandNameMarker| |
1706 |HGCommandNameResultBuffers| | 1487 |HGCommandNameResultBuffers| |
1707 |HGCommandSplit| | 1488 |HGCommandSplit| |
1708 | 1489 |
1709 HGCommandAnnotateParent *HGCommandAnnotateParent* | 1490 HGCommandAnnotateParent *HGCommandAnnotateParent* |
1710 | 1491 |
1711 This variable, if set to a non-zero value, causes the zero-argument form of | 1492 This variable, if set to a non-zero value, causes the zero-argument form of |
1712 HGAnnotate when invoked on a HGAnnotate buffer to go to the version previous | 1493 HGAnnotate when invoked on a HGAnnotate buffer to go to the version |
1713 to that displayed on the current line. If not set, it defaults to 0. | 1494 previous to that displayed on the current line. If not set, it defaults to |
1714 | 1495 0. |
1715 HGCommandCommitOnWrite *HGCommandCommitOnWrite* | 1496 |
1716 | 1497 HGCommandCommitOnWrite *HGCommandCommitOnWrite* |
1717 This variable, if set to a non-zero value, causes the pending hg commit | 1498 |
1718 to take place immediately as soon as the log message buffer is written. | 1499 This variable, if set to a non-zero value, causes the pending hg commit to |
1719 If set to zero, only the HGCommit mapping will cause the pending commit to | 1500 take place immediately as soon as the log message buffer is written. If |
1720 occur. If not set, it defaults to 1. | 1501 set to zero, only the HGCommit mapping will cause the pending commit to |
1721 | 1502 occur. If not set, it defaults to 1. |
1722 HGCommandHGExec *HGCommandHGExec* | 1503 |
1723 | 1504 HGCommandHGExec *HGCommandHGExec* |
1724 This variable controls the executable used for all HG commands If not set, | 1505 |
1725 it defaults to "hg". | 1506 This variable controls the executable used for all HG commands. If not |
1726 | 1507 set, it defaults to "hg". |
1727 HGCommandDeleteOnHide *HGCommandDeleteOnHide* | 1508 |
1728 | 1509 HGCommandDeleteOnHide *HGCommandDeleteOnHide* |
1729 This variable, if set to a non-zero value, causes the temporary HG result | 1510 |
1730 buffers to automatically delete themselves when hidden. | 1511 This variable, if set to a non-zero value, causes the temporary HG result |
1731 | 1512 buffers to automatically delete themselves when hidden. |
1732 HGCommandDiffOpt *HGCommandDiffOpt* | 1513 |
1733 | 1514 HGCommandDiffOpt *HGCommandDiffOpt* |
1734 This variable, if set, determines the options passed to the diff command of | 1515 |
1735 HG. If not set, it defaults to 'wbBc'. | 1516 This variable, if set, determines the options passed to the diff command of |
1736 | 1517 HG. If not set, it defaults to 'w'. |
1737 HGCommandDiffSplit *HGCommandDiffSplit* | 1518 |
1738 | 1519 HGCommandDiffSplit *HGCommandDiffSplit* |
1739 This variable overrides the |HGCommandSplit| variable, but only for buffers | 1520 |
1740 created with |:HGVimDiff|. | 1521 This variable overrides the |HGCommandSplit| variable, but only for buffers |
1741 | 1522 created with |:HGVimDiff|. |
1742 HGCommandEdit *HGCommandEdit* | 1523 |
1743 | 1524 HGCommandEdit *HGCommandEdit* |
1744 This variable controls whether the original buffer is replaced ('edit') or | 1525 |
1745 split ('split'). If not set, it defaults to 'edit'. | 1526 This variable controls whether the original buffer is replaced ('edit') or |
1746 | 1527 split ('split'). If not set, it defaults to 'edit'. |
1747 HGCommandEnableBufferSetup *HGCommandEnableBufferSetup* | 1528 |
1748 | 1529 HGCommandEnableBufferSetup *HGCommandEnableBufferSetup* |
1749 This variable, if set to a non-zero value, activates HG buffer management | 1530 |
1750 mode see (|hgcommand-buffer-management|). This mode means that two buffer | 1531 This variable, if set to a non-zero value, activates HG buffer management |
1751 variables, 'HGRevision' and 'HGBranch', are set if the file is | 1532 mode see (|hgcommand-buffer-management|). This mode means that three |
1752 HG-controlled. This is useful for displaying version information in the | 1533 buffer variables, 'HGRepository', 'HGRevision' and 'HGBranch', are set if |
1753 status bar. | 1534 the file is HG-controlled. This is useful for displaying version |
1754 | 1535 information in the status bar. |
1755 HGCommandInteractive *HGCommandInteractive* | 1536 |
1756 | 1537 HGCommandInteractive *HGCommandInteractive* |
1757 This variable, if set to a non-zero value, causes appropriate commands (for | 1538 |
1758 the moment, only |:HGReview|) to query the user for a revision to use instead | 1539 This variable, if set to a non-zero value, causes appropriate commands (for |
1759 of the current revision if none is specified. | 1540 the moment, only |:HGReview|) to query the user for a revision to use |
1760 | 1541 instead of the current revision if none is specified. |
1761 HGCommandNameMarker *HGCommandNameMarker* | 1542 |
1762 | 1543 HGCommandNameMarker *HGCommandNameMarker* |
1763 This variable, if set, configures the special attention-getting characters | 1544 |
1764 that appear on either side of the hg buffer type in the buffer name. This | 1545 This variable, if set, configures the special attention-getting characters |
1765 has no effect unless |HGCommandNameResultBuffers| is set to a true value. If | 1546 that appear on either side of the hg buffer type in the buffer name. This |
1766 not set, it defaults to '_'. | 1547 has no effect unless |HGCommandNameResultBuffers| is set to a true value. |
1767 | 1548 If not set, it defaults to '_'. |
1768 HGCommandNameResultBuffers *HGCommandNameResultBuffers* | 1549 |
1769 | 1550 HGCommandNameResultBuffers *HGCommandNameResultBuffers* |
1770 This variable, if set to a true value, causes the hg result buffers to be | 1551 |
1771 named in the old way ('<source file name> _<hg command>_'). If not set | 1552 This variable, if set to a true value, causes the hg result buffers to be |
1772 or set to a false value, the result buffer is nameless. | 1553 named in the old way ('<source file name> _<hg command>_'). If not set or |
1773 | 1554 set to a false value, the result buffer is nameless. |
1774 HGCommandSplit *HGCommandSplit* | 1555 |
1775 | 1556 HGCommandSplit *HGCommandSplit* |
1776 This variable controls the orientation of the various window splits that | 1557 |
1777 may occur (such as with HGVimDiff, when using a HG command on a HG | 1558 This variable controls the orientation of the various window splits that |
1778 command buffer, or when the |HGCommandEdit| variable is set to 'split'. | 1559 may occur (such as with HGVimDiff, when using a HG command on a HG command |
1779 If set to 'horizontal', the resulting windows will be on stacked on top of | 1560 buffer, or when the |HGCommandEdit| variable is set to 'split'. If set to |
1780 one another. If set to 'vertical', the resulting windows will be | 1561 'horizontal', the resulting windows will be on stacked on top of one |
1781 side-by-side. If not set, it defaults to 'horizontal' for all but | 1562 another. If set to 'vertical', the resulting windows will be side-by-side. |
1782 HGVimDiff windows. | 1563 If not set, it defaults to 'horizontal' for all but HGVimDiff windows. |
1783 | 1564 |
1784 5.2 HGCommand events *hgcommand-events* | 1565 5.2 HGCommand events *hgcommand-events* |
1785 | 1566 |
1786 For additional customization, HGCommand can trigger user-defined events. | 1567 For additional customization, HGCommand can trigger user-defined events. |
1787 Event handlers are provided by defining User event autocommands (see | 1568 Event handlers are provided by defining User event autocommands (see |
1788 |autocommand|, |User|) in the HGCommand group with patterns matching the | 1569 |autocommand|, |User|) in the HGCommand group with patterns matching the |
1789 event name. | 1570 event name. |
1790 | 1571 |
1791 For instance, the following could be added to the vimrc to provide a 'q' | 1572 For instance, the following could be added to the vimrc to provide a 'q' |
1792 mapping to quit a HGCommand scratch buffer: | 1573 mapping to quit a HGCommand scratch buffer: > |
1793 | 1574 |
1794 augroup HGCommand | 1575 augroup HGCommand |
1795 au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q: bwipeout<cr> | 1576 au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q: |
1796 augroup END | 1577 bwipeout<cr> |
1797 | 1578 augroup END |
1798 The following hooks are available: | 1579 < |
1799 | 1580 |
1800 HGBufferCreated This event is fired just after a hg command | 1581 The following hooks are available: |
1801 result buffer is created and filled with the | 1582 |
1802 result of a hg command. It is executed within | 1583 HGBufferCreated This event is fired just after a hg command result |
1803 the context of the HG command buffer. The | 1584 buffer is created and filled with the result of a hg |
1804 HGCommand buffer variables may be useful for | 1585 command. It is executed within the context of the HG |
1805 handlers of this event (please see | 1586 command buffer. The HGCommand buffer variables may be |
1806 |hgcommand-buffer-variables|). | 1587 useful for handlers of this event (please see |
1807 | 1588 |hgcommand-buffer-variables|). |
1808 HGBufferSetup This event is fired just after HG buffer setup | 1589 |
1809 occurs, if enabled. | 1590 HGBufferSetup This event is fired just after HG buffer setup occurs, |
1810 | 1591 if enabled. |
1811 HGPluginInit This event is fired when the HGCommand plugin | 1592 |
1812 first loads. | 1593 HGPluginInit This event is fired when the HGCommand plugin first |
1813 | 1594 loads. |
1814 HGPluginFinish This event is fired just after the HGCommand | 1595 |
1815 plugin loads. | 1596 HGPluginFinish This event is fired just after the HGCommand plugin |
1816 | 1597 loads. |
1817 HGVimDiffFinish This event is fired just after the HGVimDiff | 1598 |
1818 command executes to allow customization of, | 1599 HGVimDiffFinish This event is fired just after the HGVimDiff command |
1819 for instance, window placement and focus. | 1600 executes to allow customization of, for instance, |
1820 | 1601 window placement and focus. |
1821 5.3 HGCommand buffer naming *hgcommand-naming* | 1602 |
1822 | 1603 5.3 HGCommand buffer naming *hgcommand-naming* |
1823 By default, the buffers containing the result of HG commands are nameless | 1604 |
1824 scratch buffers. It is intended that buffer variables of those buffers be | 1605 By default, the buffers containing the result of HG commands are nameless |
1825 used to customize the statusline option so that the user may fully control the | 1606 scratch buffers. It is intended that buffer variables of those buffers be |
1826 display of result buffers. | 1607 used to customize the statusline option so that the user may fully control |
1827 | 1608 the display of result buffers. |
1828 If the old-style naming is desired, please enable the | 1609 |
1829 |HGCommandNameResultBuffers| variable. Then, each result buffer will receive | 1610 If the old-style naming is desired, please enable the |
1830 a unique name that includes the source file name, the HG command, and any | 1611 |HGCommandNameResultBuffers| variable. Then, each result buffer will |
1831 extra data (such as revision numbers) that were part of the command. | 1612 receive a unique name that includes the source file name, the HG command, |
1613 and any extra data (such as revision numbers) that were part of the | |
1614 command. | |
1832 | 1615 |
1833 5.4 HGCommand status line support *hgcommand-statusline* | 1616 5.4 HGCommand status line support *hgcommand-statusline* |
1834 | 1617 |
1835 It is intended that the user will customize the |'statusline'| option to | 1618 It is intended that the user will customize the |'statusline'| option to |
1836 include HG result buffer attributes. A sample function that may be used in | 1619 include HG result buffer attributes. A sample function that may be used in |
1837 the |'statusline'| option is provided by the plugin, HGGetStatusLine(). In | 1620 the |'statusline'| option is provided by the plugin, HGGetStatusLine(). In |
1838 order to use that function in the status line, do something like the | 1621 order to use that function in the status line, do something like the |
1839 following: | 1622 following: > |
1840 | 1623 |
1841 set statusline=%<%f\ %{HGGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P | 1624 set statusline=%<%f\ %{HGGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P |
1842 | 1625 < |
1843 of which %{HGGetStatusLine()} is the relevant portion. | 1626 of which %{HGGetStatusLine()} is the relevant portion. |
1844 | 1627 |
1845 The sample HGGetStatusLine() function handles both HG result buffers and | 1628 The sample HGGetStatusLine() function handles both HG result buffers and |
1846 HG-managed files if HGCommand buffer management is enabled (please see | 1629 HG-managed files if HGCommand buffer management is enabled (please see |
1847 |hgcommand-buffer-management|). | 1630 |hgcommand-buffer-management|). |
1848 | 1631 |
1849 5.5 HGCommand buffer management *hgcommand-buffer-management* | 1632 5.5 HGCommand buffer management *hgcommand-buffer-management* |
1850 | 1633 |
1851 The HGCommand plugin can operate in buffer management mode, which means that | 1634 The HGCommand plugin can operate in buffer management mode, which means |
1852 it attempts to set two buffer variables ('HGRevision' and 'HGBranch') upon | 1635 that it attempts to set two buffer variables ('HGRevision' and 'HGBranch') |
1853 entry into a buffer. This is rather slow because it means that 'hg status' | 1636 upon entry into a buffer. This is rather slow because it means that 'hg |
1854 will be invoked at each entry into a buffer (during the |BufEnter| | 1637 status' will be invoked at each entry into a buffer (during the |BufEnter| |
1855 autocommand). | 1638 autocommand). |
1856 | 1639 |
1857 This mode is disabled by default. In order to enable it, set the | 1640 This mode is disabled by default. In order to enable it, set the |
1858 |HGCommandEnableBufferSetup| variable to a true (non-zero) value. Enabling | 1641 |HGCommandEnableBufferSetup| variable to a true (non-zero) value. Enabling |
1859 this mode simply provides the buffer variables mentioned above. The user must | 1642 this mode simply provides the buffer variables mentioned above. The user |
1860 explicitly include those in the |'statusline'| option if they are to appear in | 1643 must explicitly include those in the |'statusline'| option if they are to |
1861 the status line (but see |hgcommand-statusline| for a simple way to do that). | 1644 appear in the status line (but see |hgcommand-statusline| for a simple way |
1645 to do that). | |
1862 | 1646 |
1863 ============================================================================== | 1647 ============================================================================== |
1864 | 1648 9. Tips *hgcommand-tips* |
1865 6. SSH "integration" *hgcommand-ssh* | 1649 |
1866 | 1650 9.1 Split window annotation, by Michael Anderson > |
1867 The following instructions are intended for use in integrating the | 1651 |
1868 hgcommand.vim plugin with an SSH-based HG environment. | 1652 :nmap <Leader>hgN :vs<CR><C-w>h<Leader>hgn:vertical res 40<CR> |
1869 | |
1870 Familiarity with SSH and HG are assumed. | |
1871 | |
1872 These instructions assume that the intent is to have a message box pop up in | |
1873 order to allow the user to enter a passphrase. If, instead, the user is | |
1874 comfortable using certificate-based authentication, then only instructions | |
1875 6.1.1 and 6.1.2 (and optionally 6.1.4) need to be followed; ssh should then | |
1876 work transparently. | |
1877 | |
1878 6.1 Environment settings *hgcommand-ssh-env* | |
1879 | |
1880 6.1.1 HGROOT should be set to something like: | |
1881 | |
1882 :ext:user@host:/path_to_repository | |
1883 | |
1884 6.1.2 HG_RSH should be set to: | |
1885 | |
1886 ssh | |
1887 | |
1888 Together, those settings tell HG to use ssh as the transport when | |
1889 performing HG calls. | |
1890 | |
1891 6.1.3 SSH_ASKPASS should be set to the password-dialog program. In my case, | |
1892 running gnome, it's set to: | |
1893 | |
1894 /usr/libexec/openssh/gnome-ssh-askpass | |
1895 | |
1896 This tells SSH how to get passwords if no input is available. | |
1897 | |
1898 6.1.4 OPTIONAL. You may need to set SSH_SERVER to the location of the hg | |
1899 executable on the remote (server) machine. | |
1900 | |
1901 6.2 HG wrapper program *hgcommand-ssh-wrapper* | |
1902 | |
1903 Now you need to convince SSH to use the password-dialog program. This means | |
1904 you need to execute SSH (and therefore HG) without standard input. The | |
1905 following script is a simple perl wrapper that dissasociates the HG command | |
1906 from the current terminal. Specific steps to do this may vary from system to | |
1907 system; the following example works for me on linux. | |
1908 | |
1909 #!/usr/bin/perl -w | |
1910 use strict; | |
1911 use POSIX qw(setsid); | |
1912 open STDIN, '/dev/null'; | |
1913 fork and do {wait; exit;}; | |
1914 setsid; | |
1915 exec('hg', @ARGV); | |
1916 | |
1917 6.3 Configuring hgcommand.vim *hgcommand-ssh-config* | |
1918 | |
1919 At this point, you should be able to use your wrapper script to invoke HG with | |
1920 various commands, and get the password dialog. All that's left is to make HG | |
1921 use your newly-created wrapper script. | |
1922 | |
1923 6.3.1 Tell hgcommand.vim what HG executable to use. The easiest way to do this | |
1924 is globally, by putting the following in your .vimrc: | |
1925 | |
1926 let HGCommandHGExec=/path/to/hg/wrapper/script | |
1927 | |
1928 6.4 Where to go from here *hgcommand-ssh-other* | |
1929 | |
1930 The script given above works even when non-SSH HG connections are used, | |
1931 except possibly when interactively entering the message for HG commit log | |
1932 (depending on the editor you use... VIM works fine). Since the hgcommand.vim | |
1933 plugin handles that message without a terminal, the wrapper script can be used | |
1934 all the time. | |
1935 | |
1936 This allows mixed-mode operation, where some work is done with SSH-based HG | |
1937 repositories, and others with pserver or local access. | |
1938 | |
1939 It is possible, though beyond the scope of the plugin, to dynamically set the | |
1940 HG executable based on the HGROOT for the file being edited. The user | |
1941 events provided (such as HGBufferCreated and HGBufferSetup) can be used to | |
1942 set a buffer-local value (b:HGCommandHGExec) to override the HG executable | |
1943 on a file-by-file basis. Alternatively, much the same can be done (less | |
1944 automatically) by the various project-oriented plugins out there. | |
1945 | |
1946 It is highly recommended for ease-of-use that certificates with no passphrase | |
1947 or ssh-agent are employed so that the user is not given the password prompt | |
1948 too often. | |
1949 | |
1950 ============================================================================== | |
1951 9. Tips *hgcommand-tips* | |
1952 | |
1953 9.1 Split window annotation, by Michael Anderson | |
1954 | |
1955 :nmap <Leader>hgN :vs<CR><C-w>h<Leader>hgn:vertical res 40<CR> | |
1956 \ggdddd:set scb<CR>:set nowrap<CR><C-w>lgg:set scb<CR> | 1653 \ggdddd:set scb<CR>:set nowrap<CR><C-w>lgg:set scb<CR> |
1957 \:set nowrap<CR> | 1654 \:set nowrap<CR> |
1958 | 1655 < |
1959 This splits the buffer vertically, puts an annotation on the left (minus the | 1656 |
1960 header) with the width set to 40. An editable/normal copy is placed on the | 1657 This splits the buffer vertically, puts an annotation on the left (minus |
1961 right. The two versions are scroll locked so they move as one. and wrapping | 1658 the header) with the width set to 40. An editable/normal copy is placed on |
1962 is turned off so that the lines line up correctly. The advantages are... | 1659 the right. The two versions are scroll locked so they move as one. and |
1963 | 1660 wrapping is turned off so that the lines line up correctly. The advantages |
1964 1) You get a versioning on the right. | 1661 are... |
1965 2) You can still edit your own code. | 1662 |
1966 3) Your own code still has syntax highlighting. | 1663 1) You get a versioning on the right. |
1664 2) You can still edit your own code. | |
1665 3) Your own code still has syntax highlighting. | |
1967 | 1666 |
1968 ============================================================================== | 1667 ============================================================================== |
1969 | 1668 |
1970 8. Known bugs *hgcommand-bugs* | 1669 8. Known bugs *hgcommand-bugs* |
1971 | 1670 |
1972 Please let me know if you run across any. | 1671 Please let me know if you run across any. |
1973 | 1672 |
1974 HGVimDiff, when using the original (real) source buffer as one of the diff | 1673 HGVimDiff, when using the original (real) source buffer as one of the diff |
1975 buffers, uses some hacks to try to restore the state of the original buffer | 1674 buffers, uses some hacks to try to restore the state of the original buffer |
1976 when the scratch buffer containing the other version is destroyed. There may | 1675 when the scratch buffer containing the other version is destroyed. There |
1977 still be bugs in here, depending on many configuration details. | 1676 may still be bugs in here, depending on many configuration details. |
1978 | 1677 |
1979 ============================================================================== | 1678 ============================================================================== |
1980 === END_DOC | 1679 === END_DOC |
1981 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | 1680 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
1982 " v im:tw=78:ts=8:ft=help:norl: | 1681 " v im:tw=78:ts=8:ft=help:norl: |