|
1 *cvscommand.txt* CVSCommand |
|
2 |
|
3 For instructions on installing this file, type |
|
4 :help add-local-help |
|
5 inside Vim. |
|
6 |
|
7 Author: Bob Hiestand <bob.hiestand@gmail.com> |
|
8 Credits: Benji Fisher's excellent MatchIt documentation |
|
9 |
|
10 ============================================================================== |
|
11 1. Contents *cvscommand-contents* |
|
12 |
|
13 Installation : |cvscommand-install| |
|
14 CVSCommand Intro : |cvscommand| |
|
15 CVSCommand Manual : |cvscommand-manual| |
|
16 Customization : |cvscommand-customize| |
|
17 SSH "integration" : |cvscommand-ssh| |
|
18 Bugs : |cvscommand-bugs| |
|
19 |
|
20 ============================================================================== |
|
21 |
|
22 2. CVSCommand Installation *cvscommand-install* |
|
23 |
|
24 The CVSCommand plugin comprises two files, cvscommand.vim and cvscommand.txt |
|
25 (this file). In order to install the plugin, place the cvscommand.vim file |
|
26 into a plugin' directory in your runtime path (please see |add-global-plugin| |
|
27 and |'runtimepath'|. |
|
28 |
|
29 CVSCommand may be customized by setting variables, creating maps, and |
|
30 specifying event handlers. Please see |cvscommand-customize| for more |
|
31 details. |
|
32 |
|
33 This help file can be included in the VIM help system by copying it into a |
|
34 'doc' directory in your runtime path and then executing the |:helptags| |
|
35 command, specifying the full path of the 'doc' directory. Please see |
|
36 |add-local-help| for more details. |
|
37 |
|
38 ============================================================================== |
|
39 |
|
40 3. CVSCommand Intro *cvscommand* |
|
41 *cvscommand-intro* |
|
42 |
|
43 The CVSCommand plugin provides global ex commands for manipulating |
|
44 CVS-controlled source files. In general, each command operates on the current |
|
45 buffer and accomplishes a separate cvs function, such as update, commit, log, |
|
46 and others (please see |cvscommand-commands| for a list of all available |
|
47 commands). The results of each operation are displayed in a scratch buffer. |
|
48 Several buffer variables are defined for those scratch buffers (please see |
|
49 |cvscommand-buffer-variables|). |
|
50 |
|
51 The notion of "current file" means either the current buffer, or, in the case |
|
52 of a directory buffer, the file on the current line within the buffer. |
|
53 |
|
54 For convenience, any CVSCommand invoked on a CVSCommand scratch buffer acts as |
|
55 though it was invoked on the original file and splits the screen so that the |
|
56 output appears in a new window. |
|
57 |
|
58 Many of the commands accept revisions as arguments. By default, most operate |
|
59 on the most recent revision on the current branch if no revision is specified |
|
60 (though see |CVSCommandInteractive| to prompt instead). |
|
61 |
|
62 Each CVSCommand is mapped to a key sequence starting with the <Leader> |
|
63 keystroke. The default mappings may be overridden by supplying different |
|
64 mappings before the plugin is loaded, such as in the vimrc, in the standard |
|
65 fashion for plugin mappings. For examples, please see |
|
66 |cvscommand-mappings-override|. |
|
67 |
|
68 The CVSCommand plugin may be configured in several ways. For more details, |
|
69 please see |cvscommand-customize|. |
|
70 |
|
71 ============================================================================== |
|
72 |
|
73 4. CVSCommand Manual *cvscommand-manual* |
|
74 |
|
75 4.1 CVSCommand commands *cvscommand-commands* |
|
76 |
|
77 CVSCommand defines the following commands: |
|
78 |
|
79 |:CVSAdd| |
|
80 |:CVSAnnotate| |
|
81 |:CVSCommit| |
|
82 |:CVSDiff| |
|
83 |:CVSEdit| |
|
84 |:CVSEditors| |
|
85 |:CVSGotoOriginal| |
|
86 |:CVSLog| |
|
87 |:CVSRevert| |
|
88 |:CVSReview| |
|
89 |:CVSStatus| |
|
90 |:CVSUnedit| |
|
91 |:CVSUpdate| |
|
92 |:CVSVimDiff| |
|
93 |:CVSWatch| |
|
94 |:CVSWatchAdd| |
|
95 |:CVSWatchOn| |
|
96 |:CVSWatchOff| |
|
97 |:CVSWatchRemove| |
|
98 |:CVSWatchers| |
|
99 |
|
100 :CVSAdd *:CVSAdd* |
|
101 |
|
102 This command performs "cvs add" on the current file. Please note, this does |
|
103 not commit the newly-added file. |
|
104 |
|
105 :CVSAnnotate *:CVSAnnotate* |
|
106 |
|
107 This command performs "cvs annotate" on the current file. If an argument is |
|
108 given, the argument is used as a revision number to display. If not given an |
|
109 argument, it uses the most recent version of the file on the current branch. |
|
110 Additionally, if the current buffer is a CVSAnnotate buffer already, the |
|
111 version number on the current line is used. |
|
112 |
|
113 If the |CVSCommandAnnotateParent| variable is set to a non-zero value, the |
|
114 version previous to the one on the current line is used instead. This allows |
|
115 one to navigate back to examine the previous version of a line. |
|
116 |
|
117 The filetype of the CVSCommand scratch buffer is set to 'CVSAnnotate', to take |
|
118 advantage of the bundled syntax file. |
|
119 |
|
120 |
|
121 :CVSCommit[!] *:CVSCommit* |
|
122 |
|
123 If called with arguments, this performs "cvs commit" using the arguments as |
|
124 the log message. |
|
125 |
|
126 If '!' is used with no arguments, an empty log message is committed. |
|
127 |
|
128 If called with no arguments, this is a two-step command. The first step opens |
|
129 a buffer to accept a log message. When that buffer is written, it is |
|
130 automatically closed and the file is committed using the information from that |
|
131 log message. The commit can be abandoned if the log message buffer is deleted |
|
132 or wiped before being written. |
|
133 |
|
134 Alternatively, the mapping that is used to invoke :CVSCommit (by default |
|
135 <Leader>cc) can be used in the log message buffer to immediately commit. This |
|
136 is useful if the |CVSCommandCommitOnWrite| variable is set to 0 to disable the |
|
137 normal commit-on-write behavior. |
|
138 |
|
139 :CVSDiff *:CVSDiff* |
|
140 |
|
141 With no arguments, this performs "cvs diff" on the current file against the |
|
142 current repository version. |
|
143 |
|
144 With one argument, "cvs diff" is performed on the current file against the |
|
145 specified revision. |
|
146 |
|
147 With two arguments, cvs diff is performed between the specified |
|
148 revisions of the current file. |
|
149 |
|
150 This command uses the 'CVSCommandDiffOpt' variable to specify diff options. |
|
151 If that variable does not exist, then 'wbBc' is assumed. If you wish to have |
|
152 no options, then set it to the empty string. |
|
153 |
|
154 :CVSEdit *:CVSEdit* |
|
155 |
|
156 This command performs "cvs edit" on the current file. Yes, the output buffer |
|
157 in this case is almost completely useless. |
|
158 |
|
159 :CVSEditors *:CVSEditors* |
|
160 |
|
161 This command performs "cvs edit" on the current file. |
|
162 |
|
163 :CVSGotoOriginal *:CVSGotoOriginal* |
|
164 |
|
165 This command returns the current window to the source buffer, if the current |
|
166 buffer is a CVS command output buffer. |
|
167 |
|
168 :CVSGotoOriginal! |
|
169 |
|
170 Like ":CVSGotoOriginal" but also executes :bufwipeout on all CVS command |
|
171 output buffers for the source buffer. |
|
172 |
|
173 :CVSLog *:CVSLog* |
|
174 |
|
175 Performs "cvs log" on the current file. |
|
176 |
|
177 If an argument is given, it is passed as an argument to the "-r" option of |
|
178 "cvs log". |
|
179 |
|
180 :CVSRevert *:CVSRevert* |
|
181 |
|
182 Replaces the current file with the most recent version from the repository in |
|
183 order to wipe out any undesired changes. |
|
184 |
|
185 :CVSReview *:CVSReview* |
|
186 |
|
187 Retrieves a particular version of the current file. If no argument is given, |
|
188 the most recent version of the file on the current branch is retrieved. |
|
189 Otherwise, the specified version is retrieved. |
|
190 |
|
191 :CVSStatus *:CVSStatus* |
|
192 |
|
193 Performs "cvs status" on the current file. |
|
194 |
|
195 :CVSUnedit *:CVSUnedit* |
|
196 |
|
197 Performs "cvs unedit" on the current file. Again, yes, the output buffer here |
|
198 is basically useless. |
|
199 |
|
200 :CVSUpdate *:CVSUpdate* |
|
201 |
|
202 Performs "cvs update" on the current file. This intentionally does not |
|
203 automatically reload the current buffer, though vim should prompt the user to |
|
204 do so if the underlying file is altered by this command. |
|
205 |
|
206 :CVSVimDiff *:CVSVimDiff* |
|
207 |
|
208 With no arguments, this prompts the user for a revision and then uses vimdiff |
|
209 to display the differences between the current file and the specified |
|
210 revision. If no revision is specified, the most recent version of the file on |
|
211 the current branch is used. |
|
212 |
|
213 With one argument, that argument is used as the revision as above. With two |
|
214 arguments, the differences between the two revisions is displayed using |
|
215 vimdiff. |
|
216 |
|
217 With either zero or one argument, the original buffer is used to perform the |
|
218 vimdiff. When the other buffer is closed, the original buffer will be |
|
219 returned to normal mode. |
|
220 |
|
221 Once vimdiff mode is started using the above methods, additional vimdiff |
|
222 buffers may be added by passing a single version argument to the command. |
|
223 There may be up to 4 vimdiff buffers total. |
|
224 |
|
225 Using the 2-argument form of the command resets the vimdiff to only those 2 |
|
226 versions. Additionally, invoking the command on a different file will close |
|
227 the previous vimdiff buffers. |
|
228 |
|
229 :CVSWatch *:CVSWatch* |
|
230 |
|
231 This command takes an argument which must be one of [on|off|add|remove]. The |
|
232 command performs "cvs watch" with the given argument on the current file. |
|
233 |
|
234 :CVSWatchAdd *:CVSWatchAdd* |
|
235 |
|
236 This command is an alias for ":CVSWatch add" |
|
237 |
|
238 :CVSWatchOn *:CVSWatchOn* |
|
239 |
|
240 This command is an alias for ":CVSWatch on" |
|
241 |
|
242 :CVSWatchOff *:CVSWatchOff* |
|
243 |
|
244 This command is an alias for ":CVSWatch off" |
|
245 |
|
246 :CVSWatchRemove *:CVSWatchRemove* |
|
247 |
|
248 This command is an alias for ":CVSWatch remove" |
|
249 |
|
250 :CVSWatchers *:CVSWatchers* |
|
251 |
|
252 This command performs "cvs watchers" on the current file. |
|
253 |
|
254 4.2 Mappings *cvscommand-mappings* |
|
255 |
|
256 By default, a mapping is defined for each command. These mappings execute the |
|
257 default (no-argument) form of each command. |
|
258 |
|
259 <Leader>ca CVSAdd |
|
260 <Leader>cn CVSAnnotate |
|
261 <Leader>cc CVSCommit |
|
262 <Leader>cd CVSDiff |
|
263 <Leader>ce CVSEdit |
|
264 <Leader>ci CVSEditors |
|
265 <Leader>cg CVSGotoOriginal |
|
266 <Leader>cG CVSGotoOriginal! |
|
267 <Leader>cl CVSLog |
|
268 <Leader>cr CVSReview |
|
269 <Leader>cs CVSStatus |
|
270 <Leader>ct CVSUnedit |
|
271 <Leader>cu CVSUpdate |
|
272 <Leader>cv CVSVimDiff |
|
273 <Leader>cwv CVSWatchers |
|
274 <Leader>cwa CVSWatchAdd |
|
275 <Leader>cwn CVSWatchOn |
|
276 <Leader>cwf CVSWatchOff |
|
277 <Leader>cwf CVSWatchRemove |
|
278 |
|
279 *cvscommand-mappings-override* |
|
280 |
|
281 The default mappings can be overriden by user-provided instead by mapping to |
|
282 <Plug>CommandName. This is especially useful when these mappings collide with |
|
283 other existing mappings (vim will warn of this during plugin initialization, |
|
284 but will not clobber the existing mappings). |
|
285 |
|
286 For instance, to override the default mapping for :CVSAdd to set it to '\add', |
|
287 add the following to the vimrc: |
|
288 |
|
289 nmap \add <Plug>CVSAdd |
|
290 |
|
291 4.3 Automatic buffer variables *cvscommand-buffer-variables* |
|
292 |
|
293 Several buffer variables are defined in each CVSCommand result buffer. These |
|
294 may be useful for additional customization in callbacks defined in the event |
|
295 handlers (please see |cvscommand-events|). |
|
296 |
|
297 The following variables are automatically defined: |
|
298 |
|
299 b:cvsOrigBuffNR *b:cvsOrigBuffNR* |
|
300 |
|
301 This variable is set to the buffer number of the source file. |
|
302 |
|
303 b:cvscmd *b:cvscmd* |
|
304 |
|
305 This variable is set to the name of the cvs command that created the result |
|
306 buffer. |
|
307 ============================================================================== |
|
308 |
|
309 5. Configuration and customization *cvscommand-customize* |
|
310 *cvscommand-config* |
|
311 |
|
312 The CVSCommand plugin can be configured in two ways: by setting configuration |
|
313 variables (see |cvscommand-options|) or by defining CVSCommand event handlers |
|
314 (see |cvscommand-events|). Additionally, the CVSCommand plugin provides |
|
315 several option for naming the CVS result buffers (see |cvscommand-naming|) and |
|
316 supported a customized status line (see |cvscommand-statusline| and |
|
317 |cvscommand-buffer-management|). |
|
318 |
|
319 5.1 CVSCommand configuration variables *cvscommand-options* |
|
320 |
|
321 Several variables affect the plugin's behavior. These variables are checked |
|
322 at time of execution, and may be defined at the window, buffer, or global |
|
323 level and are checked in that order of precedence. |
|
324 |
|
325 |
|
326 The following variables are available: |
|
327 |
|
328 |CVSCommandAnnotateParent| |
|
329 |CVSCommandCommitOnWrite| |
|
330 |CVSCommandCVSExec| |
|
331 |CVSCommandDeleteOnHide| |
|
332 |CVSCommandDiffOpt| |
|
333 |CVSCommandDiffSplit| |
|
334 |CVSCommandEdit| |
|
335 |CVSCommandEnableBufferSetup| |
|
336 |CVSCommandInteractive| |
|
337 |CVSCommandNameMarker| |
|
338 |CVSCommandNameResultBuffers| |
|
339 |CVSCommandSplit| |
|
340 |
|
341 CVSCommandAnnotateParent *CVSCommandAnnotateParent* |
|
342 |
|
343 This variable, if set to a non-zero value, causes the zero-argument form of |
|
344 CVSAnnotate when invoked on a CVSAnnotate buffer to go to the version previous |
|
345 to that displayed on the current line. If not set, it defaults to 0. |
|
346 |
|
347 CVSCommandCommitOnWrite *CVSCommandCommitOnWrite* |
|
348 |
|
349 This variable, if set to a non-zero value, causes the pending cvs commit |
|
350 to take place immediately as soon as the log message buffer is written. |
|
351 If set to zero, only the CVSCommit mapping will cause the pending commit to |
|
352 occur. If not set, it defaults to 1. |
|
353 |
|
354 CVSCommandCVSExec *CVSCommandCVSExec* |
|
355 |
|
356 This variable controls the executable used for all CVS commands If not set, |
|
357 it defaults to "cvs". |
|
358 |
|
359 CVSCommandDeleteOnHide *CVSCommandDeleteOnHide* |
|
360 |
|
361 This variable, if set to a non-zero value, causes the temporary CVS result |
|
362 buffers to automatically delete themselves when hidden. |
|
363 |
|
364 CVSCommandDiffOpt *CVSCommandDiffOpt* |
|
365 |
|
366 This variable, if set, determines the options passed to the diff command of |
|
367 CVS. If not set, it defaults to 'wbBc'. |
|
368 |
|
369 CVSCommandDiffSplit *CVSCommandDiffSplit* |
|
370 |
|
371 This variable overrides the |CVSCommandSplit| variable, but only for buffers |
|
372 created with |:CVSVimDiff|. |
|
373 |
|
374 CVSCommandEdit *CVSCommandEdit* |
|
375 |
|
376 This variable controls whether the original buffer is replaced ('edit') or |
|
377 split ('split'). If not set, it defaults to 'edit'. |
|
378 |
|
379 CVSCommandEnableBufferSetup *CVSCommandEnableBufferSetup* |
|
380 |
|
381 This variable, if set to a non-zero value, activates CVS buffer management |
|
382 mode see (|cvscommand-buffer-management|). This mode means that two buffer |
|
383 variables, 'CVSRevision' and 'CVSBranch', are set if the file is |
|
384 CVS-controlled. This is useful for displaying version information in the |
|
385 status bar. |
|
386 |
|
387 CVSCommandInteractive *CVSCommandInteractive* |
|
388 |
|
389 This variable, if set to a non-zero value, causes appropriate commands (for |
|
390 the moment, only |:CVSReview|) to query the user for a revision to use instead |
|
391 of the current revision if none is specified. |
|
392 |
|
393 CVSCommandNameMarker *CVSCommandNameMarker* |
|
394 |
|
395 This variable, if set, configures the special attention-getting characters |
|
396 that appear on either side of the cvs buffer type in the buffer name. This |
|
397 has no effect unless |CVSCommandNameResultBuffers| is set to a true value. If |
|
398 not set, it defaults to '_'. |
|
399 |
|
400 CVSCommandNameResultBuffers *CVSCommandNameResultBuffers* |
|
401 |
|
402 This variable, if set to a true value, causes the cvs result buffers to be |
|
403 named in the old way ('<source file name> _<cvs command>_'). If not set |
|
404 or set to a false value, the result buffer is nameless. |
|
405 |
|
406 CVSCommandSplit *CVSCommandSplit* |
|
407 |
|
408 This variable controls the orientation of the various window splits that |
|
409 may occur (such as with CVSVimDiff, when using a CVS command on a CVS |
|
410 command buffer, or when the |CVSCommandEdit| variable is set to 'split'. |
|
411 If set to 'horizontal', the resulting windows will be on stacked on top of |
|
412 one another. If set to 'vertical', the resulting windows will be |
|
413 side-by-side. If not set, it defaults to 'horizontal' for all but |
|
414 CVSVimDiff windows. |
|
415 |
|
416 5.2 CVSCommand events *cvscommand-events* |
|
417 |
|
418 For additional customization, CVSCommand can trigger user-defined events. |
|
419 Event handlers are provided by defining User event autocommands (see |
|
420 |autocommand|, |User|) in the CVSCommand group with patterns matching the |
|
421 event name. |
|
422 |
|
423 For instance, the following could be added to the vimrc to provide a 'q' |
|
424 mapping to quit a CVSCommand scratch buffer: |
|
425 |
|
426 augroup CVSCommand |
|
427 au CVSCommand User CVSBufferCreated silent! nmap <unique> <buffer> q: bwipeout<cr> |
|
428 augroup END |
|
429 |
|
430 The following hooks are available: |
|
431 |
|
432 CVSBufferCreated This event is fired just after a cvs command |
|
433 result buffer is created and filled with the |
|
434 result of a cvs command. It is executed within |
|
435 the context of the CVS command buffer. The |
|
436 CVSCommand buffer variables may be useful for |
|
437 handlers of this event (please see |
|
438 |cvscommand-buffer-variables|). |
|
439 |
|
440 CVSBufferSetup This event is fired just after CVS buffer setup |
|
441 occurs, if enabled. |
|
442 |
|
443 CVSPluginInit This event is fired when the CVSCommand plugin |
|
444 first loads. |
|
445 |
|
446 CVSPluginFinish This event is fired just after the CVSCommand |
|
447 plugin loads. |
|
448 |
|
449 CVSVimDiffFinish This event is fired just after the CVSVimDiff |
|
450 command executes to allow customization of, |
|
451 for instance, window placement and focus. |
|
452 |
|
453 5.3 CVSCommand buffer naming *cvscommand-naming* |
|
454 |
|
455 By default, the buffers containing the result of CVS commands are nameless |
|
456 scratch buffers. It is intended that buffer variables of those buffers be |
|
457 used to customize the statusline option so that the user may fully control the |
|
458 display of result buffers. |
|
459 |
|
460 If the old-style naming is desired, please enable the |
|
461 |CVSCommandNameResultBuffers| variable. Then, each result buffer will receive |
|
462 a unique name that includes the source file name, the CVS command, and any |
|
463 extra data (such as revision numbers) that were part of the command. |
|
464 |
|
465 5.4 CVSCommand status line support *cvscommand-statusline* |
|
466 |
|
467 It is intended that the user will customize the |'statusline'| option to |
|
468 include CVS result buffer attributes. A sample function that may be used in |
|
469 the |'statusline'| option is provided by the plugin, CVSGetStatusLine(). In |
|
470 order to use that function in the status line, do something like the |
|
471 following: |
|
472 |
|
473 set statusline=%<%f\ %{CVSGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P |
|
474 |
|
475 of which %{CVSGetStatusLine()} is the relevant portion. |
|
476 |
|
477 The sample CVSGetStatusLine() function handles both CVS result buffers and |
|
478 CVS-managed files if CVSCommand buffer management is enabled (please see |
|
479 |cvscommand-buffer-management|). |
|
480 |
|
481 5.5 CVSCommand buffer management *cvscommand-buffer-management* |
|
482 |
|
483 The CVSCommand plugin can operate in buffer management mode, which means that |
|
484 it attempts to set two buffer variables ('CVSRevision' and 'CVSBranch') upon |
|
485 entry into a buffer. This is rather slow because it means that 'cvs status' |
|
486 will be invoked at each entry into a buffer (during the |BufEnter| |
|
487 autocommand). |
|
488 |
|
489 This mode is disabled by default. In order to enable it, set the |
|
490 |CVSCommandEnableBufferSetup| variable to a true (non-zero) value. Enabling |
|
491 this mode simply provides the buffer variables mentioned above. The user must |
|
492 explicitly include those in the |'statusline'| option if they are to appear in |
|
493 the status line (but see |cvscommand-statusline| for a simple way to do that). |
|
494 |
|
495 ============================================================================== |
|
496 |
|
497 6. SSH "integration" *cvscommand-ssh* |
|
498 |
|
499 The following instructions are intended for use in integrating the |
|
500 cvscommand.vim plugin with an SSH-based CVS environment. |
|
501 |
|
502 Familiarity with SSH and CVS are assumed. |
|
503 |
|
504 These instructions assume that the intent is to have a message box pop up in |
|
505 order to allow the user to enter a passphrase. If, instead, the user is |
|
506 comfortable using certificate-based authentication, then only instructions |
|
507 6.1.1 and 6.1.2 (and optionally 6.1.4) need to be followed; ssh should then |
|
508 work transparently. |
|
509 |
|
510 6.1 Environment settings *cvscommand-ssh-env* |
|
511 |
|
512 6.1.1 CVSROOT should be set to something like: |
|
513 |
|
514 :ext:user@host:/path_to_repository |
|
515 |
|
516 6.1.2 CVS_RSH should be set to: |
|
517 |
|
518 ssh |
|
519 |
|
520 Together, those settings tell CVS to use ssh as the transport when |
|
521 performing CVS calls. |
|
522 |
|
523 6.1.3 SSH_ASKPASS should be set to the password-dialog program. In my case, |
|
524 running gnome, it's set to: |
|
525 |
|
526 /usr/libexec/openssh/gnome-ssh-askpass |
|
527 |
|
528 This tells SSH how to get passwords if no input is available. |
|
529 |
|
530 6.1.4 OPTIONAL. You may need to set SSH_SERVER to the location of the cvs |
|
531 executable on the remote (server) machine. |
|
532 |
|
533 6.2 CVS wrapper program *cvscommand-ssh-wrapper* |
|
534 |
|
535 Now you need to convince SSH to use the password-dialog program. This means |
|
536 you need to execute SSH (and therefore CVS) without standard input. The |
|
537 following script is a simple perl wrapper that dissasociates the CVS command |
|
538 from the current terminal. Specific steps to do this may vary from system to |
|
539 system; the following example works for me on linux. |
|
540 |
|
541 #!/usr/bin/perl -w |
|
542 use strict; |
|
543 use POSIX qw(setsid); |
|
544 open STDIN, '/dev/null'; |
|
545 fork and do {wait; exit;}; |
|
546 setsid; |
|
547 exec('cvs', @ARGV); |
|
548 |
|
549 6.3 Configuring cvscommand.vim *cvscommand-ssh-config* |
|
550 |
|
551 At this point, you should be able to use your wrapper script to invoke CVS with |
|
552 various commands, and get the password dialog. All that's left is to make CVS |
|
553 use your newly-created wrapper script. |
|
554 |
|
555 6.3.1 Tell cvscommand.vim what CVS executable to use. The easiest way to do this |
|
556 is globally, by putting the following in your .vimrc: |
|
557 |
|
558 let CVSCommandCVSExec=/path/to/cvs/wrapper/script |
|
559 |
|
560 6.4 Where to go from here *cvscommand-ssh-other* |
|
561 |
|
562 The script given above works even when non-SSH CVS connections are used, |
|
563 except possibly when interactively entering the message for CVS commit log |
|
564 (depending on the editor you use... VIM works fine). Since the cvscommand.vim |
|
565 plugin handles that message without a terminal, the wrapper script can be used |
|
566 all the time. |
|
567 |
|
568 This allows mixed-mode operation, where some work is done with SSH-based CVS |
|
569 repositories, and others with pserver or local access. |
|
570 |
|
571 It is possible, though beyond the scope of the plugin, to dynamically set the |
|
572 CVS executable based on the CVSROOT for the file being edited. The user |
|
573 events provided (such as CVSBufferCreated and CVSBufferSetup) can be used to |
|
574 set a buffer-local value (b:CVSCommandCVSExec) to override the CVS executable |
|
575 on a file-by-file basis. Alternatively, much the same can be done (less |
|
576 automatically) by the various project-oriented plugins out there. |
|
577 |
|
578 It is highly recommended for ease-of-use that certificates with no passphrase |
|
579 or ssh-agent are employed so that the user is not given the password prompt |
|
580 too often. |
|
581 |
|
582 ============================================================================== |
|
583 9. Tips *cvscommand-tips* |
|
584 |
|
585 9.1 Split window annotation, by Michael Anderson |
|
586 |
|
587 :nmap <Leader>cN :vs<CR><C-w>h<Leader>cn:vertical res 40<CR> |
|
588 \ggdddd:set scb<CR>:set nowrap<CR><C-w>lgg:set scb<CR> |
|
589 \:set nowrap<CR> |
|
590 |
|
591 This splits the buffer vertically, puts an annotation on the left (minus the |
|
592 header) with the width set to 40. An editable/normal copy is placed on the |
|
593 right. The two versions are scroll locked so they move as one. and wrapping |
|
594 is turned off so that the lines line up correctly. The advantages are... |
|
595 |
|
596 1) You get a versioning on the right. |
|
597 2) You can still edit your own code. |
|
598 3) Your own code still has syntax highlighting. |
|
599 |
|
600 ============================================================================== |
|
601 |
|
602 8. Known bugs *cvscommand-bugs* |
|
603 |
|
604 Please let me know if you run across any. |
|
605 |
|
606 CVSUnedit may, if a file is changed from the repository, provide prompt text |
|
607 to determine whether the changes should be thrown away. Currently, that text |
|
608 shows up in the CVS result buffer as information; there is no way for the user |
|
609 to actually respond to the prompt and the CVS unedit command does nothing. If |
|
610 this really bothers anyone, please let me know. |
|
611 |
|
612 CVSVimDiff, when using the original (real) source buffer as one of the diff |
|
613 buffers, uses some hacks to try to restore the state of the original buffer |
|
614 when the scratch buffer containing the other version is destroyed. There may |
|
615 still be bugs in here, depending on many configuration details. |
|
616 |
|
617 vim:tw=78:ts=8:ft=help |