1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553
|
*cvsmenu.txt* Plugin for CVS Versioncontrol
cvsmenu.vim Version : 1.71
$Revision: 1.33 $
$Date: 2001/10/02 11:29:21 $
Platforms : Linux, Windows
Requires : Vim, CVS (tested with 1.11p1)
Vim version : 6.0ak and later
Author : Thorsten Maerz <info@netztorte.de> (any feedback welcome)
Primary Site : http://ezytools.sf.net/VimTools
License : LGPL
Description : Integrates a menu to access CVS commands.
Contents ~
------------------------------------------------------------------------------
|CVS-Installation| - How to install this script
|CVS-Usage| - How to use the plugin
|CVS-Tips| - More usage tips
|CVS-Variables| - Setting up CVS-menu from vimrc
|CVS-Menu| - Description of Menuentries
|CVS-Functions| - Use CVS- commands from scripts
|CVS-Troubleshooting| - If something fails
|CVS-Bugs| - More features to come
*CVS-Installation*
Installation ~
------------------------------------------------------------------------------
General :
1. Have CVS installed and your $CVSROOT set correctly,
i.e. calling "cvs status" should work without any
manual input (password queries, etc).
Vim 6 :
1. Copy cvsmenu.vim to $VIM/plugins.
2. Restart Vim.
3. Optional: Select "|CVS-Settings-Install|.Install updates"
*CVS-Usage*
Usage ~
------------------------------------------------------------------------------
When editing a file, CVS commands can be accessed from the menu. All commands
(commit,status,update,...) will affect this file.
To run a CVS command on an entire directory,
- use the command from the "Directory" submenu (single run) or
- use "|CVS-Settings|.Toggle buffer/dir" to use the directory instead of the
current buffer by default or
- use the command from a new (no filename!) buffer
- use the command from inside the fileexplorer
To be asked for revisions when using diff,commit,update,etc., use
"|CVS-Settings-Revision|".
By default, command output is printed to statusline and titlebar, when run on
a single file. It is opened in a new buffer, when run on a directory (can be
changed with "|CVS-Settings-Output|").
In the result buffer, you can use <SHIFT-CR> or <DoubleClick> to open the
listed files in a new window.
Use "|CVS-Directory|.Short Status" to get a short status list of all files
("Up-to-Date", "Needs Patch", etc).
You can use "|CVS-LocalStatus|" to display status in offline mode.
To get help use ":help cvs", ":help cvs-add", ":he -upd", etc.
Executing a CVS command, which is not directly supported by this script, is
possible with the |:CVS| command : It executes the given command and uses all
the scripts settings on it (e.g. filtering, presets,...).
*CVS-Tips*
TIPS ~
------------------------------------------------------------------------------
- Read the CVS documentation (e.g. http://www.cvshome.org).
- Use "|CVS-Info|" to display or |CVS-Settings-Info| to change current
settings. If a "CVS" directory is found, info from "Root" and "Repository"
are displayed below the current working directory. Change a coloured
options and set it with <SHIFT-CR> or a <DoubleClick>.
- Use |CVS-Variables| to setup CVS from your vimrc.
- Set $CVSROOT to your repository, including the access method, e.g.
":pserver:user@host:dir". When using ssh (:ext:), set $CVS_RSH to "ssh".
The CVSROOT from CVS subdirectory has higher priority.
- To override settings from CVS subdir, pass it using "$CVSOPT" :
let $CVSOPT='-z9 -d:ext:user@host:/cvsroot'
- By default, you are not asked for revisions, for easier usage. To enable
revision queries, use "|CVS-Settings-Revision| queries". You will then be
able to "diff" (or "commit", etc.) to certain revisions and branches.
- To enable revision queries by default, add ":let g:CVSqueryrevision=1" to
your .vimrc. Take a look at "|CVS-Info|" for further options, you may set.
- To update to a certain revision or to merge in changes from another branch,
you may use "|CVS-Extra|.Update" (uses "-r" flag) or "|CVS-Extra|.Merge"
(uses one or two "-j" flags), which will request the needed revision
numbers.
- If there are conflicts during Merge, conflicting regions are highlighted.
- To use this script from non-GUI, you may either use wildmenus (see
|CVS-Troubleshooting| section) or the keymapping, that is identical to the
GUI-hotkeys, except you have to use <Leader> instead of <ALT>. >
\ci = <ALT>ci = CVS.Commit
- To get the full command output printed to statusline/titlebar, use
"|CVS-Settings-Output|.Uncompressed"
- Vim's builtin :diff overwrites some settings (see |CVS-Diff| for details).
Cvsmenu has some functions to save and restore them, which may be useful as
a keymapping (see |CVS-Functions| for details).
To select/unselect current window for diffing, add this to your vimrc : >
:nmap <F9> :call CVSSwitchDiffMode()<cr>
- Keymappings in output window
q deletes that buffer
<shift-cr> open file in new buffer (or <doublecllick>)
- Keymappings in CVSDiff window
q deletes that buffer
<tab> jump to next diff
<s-tab> jump to previous diff
*CVS-Variables*
Variables ~
------------------------------------------------------------------------------
Cvsmenu can be configured by setting following variables (may also be copied
from output of |CVS-Settings-Info| screen).
The resulting command will be ("cmd" replaced by CVS command):
"$CVSCMD $CVSOPT cmd $CVSCMDOPT"
$CVS_ROOT - Default repository location
(see CVS documentation).
$CVS_RSH - Shell to use, e.g ssh
(see CVS documentation)
$CVSOPT - Option to pass to CVS before the command
(defaults to "-z9 ")
$CVSCMDOPT - Option to pass to CVS behind the command
Default = ""
g:CVSforcedirectory - run CVS on buffer or directory
(0:off 1:once 2:forever)
g:CVSqueryrevision - Ask for revision on commit,diff,update,...
(0:no 1:yes)
g:CVSdumpandclose - Toggle output to buffer or statusline
(0:buffer 1:statusline 2:autoswitch)
g:CVSsortoutput - Group conflicts, patches, etc.
(0:no sorting 1:sort)
g:CVScompressoutput - Make success output fit to one line
(0:off 1:on)
g:CVStitlebar - Print output to titlebar
(0:off 1:on)
g:CVSstatusline - Print output to statusline
(0:off 1:on)
g:CVSautocheck - Get local status when file is read
(0:off 1:on)
g:CVSofferrevision - Offer current revision on queries
(0:off 1:on)
g:CVSsavediff - Automatic save/restore settings using :diff
(0:off 1:on)
g:CVSdontswitch - Stay in current file on |CVS-Diff|
(0:off 1:on)
g:CVSjoininmessage - Message for |CVS-JoinIn|
(blank: query)
g:CVSfullstatus - Display all fields for fullstatus
(0:off 1:on)
(Not included in CVSInfo)
$HOME - Define users working directory (Windows)
*:CVS*
:CVS command ~
------------------------------------------------------------------------------
Sometimes you may need to call CVS with options, not provided by this script.
This is possible using the |:CVS| ex-command. It calls CVSDoCommand()
(see |CVS-Functions|) and passes the given arguments.
The CVS command will use the settings (e.g. variables like $CVSCMD) and output
processing (dump to titlebar, etc.) from cvsmenu. >
:CVS --help-commands
:CVS export mymodule
<
*CVS-Menu*
Menu commands ~
------------------------------------------------------------------------------
*CVS-Info*
Info : ~
Display current CVS settings on statusline.
*CVS-Settings*
*CVS-Settings-Info*
Settings : ~
Info : ~
Open current CVS settings in a new buffer.
After changing an option, set it using <SHIFT-CR> or <DoubleClick>.
*CVS-Settings-Diff*
Diff : ~
Stay in original : ~
When using CVSDiff(), do not switch to the diffed file.
Switch to diffed : ~
Diffed file is made current (can quickly be closed with "q").
Autorestore prev. mode : ~
When closing a |CVS-Diff| result, restore settings as foldcolumn, etc.
NOTE: This only works, if you dont diff more than two files at once.
Otherwise you have to use "Restore pre-diff mode" from the menu, to
restore settings that were backed up when cvsmenu was started.
No autorestore : ~
Disable automatic save/restore previous setting.
Restore pre-diff mode : ~
Resets options changed by :diffsplit to the state, cvsmenu was run.
When using Vim's builtin :diffsplit, following options are not
reset, when the diffed window is closed:
'diff', 'scrollbind', 'wrap',
'foldcolumn', 'foldenable', 'foldlevel', 'foldmethod'
NOTE: This command works with |:diffsplit| as well as |CVS-Diff|.
For quick access, you may either use standard menu mapping (<ALT-c>gds)
or create a custom "nodiff" keymapping, such as : >
:nmap <S-F10> :call CVSRestoreDiffMode()<cr>
<
*CVS-Settings-Output*
Output : ~
*CVS-Settings-Output-Notification*
Notification : ~
Enable statusline : ~
If output set to "Notification" or "Autoswitch", command output will
be printed to statusline.
Disable statusline : ~
Do not print to statusline.
Enable titlebar : ~
If output set to "Notification" or "Autoswitch", command output will
be printed to titlebar and be restored, each time you reenter that
buffer.
Disable titlebar : ~
Do not print to titlebar.
To new buffer : ~
All output is opened in a new buffer.
Notification only ~
All output is printed to the statusline and/or titlebar,
as defined in |CVS-Settings-Output-Notification|.
Autoswitch : ~
(Default) Results from multiple files are opened in a new
buffer, single-file results are printed to statusline and/or titlebar.
Compressed : ~
(Default) If output is printed to statusline and the command is run on a
single file, the output is compressed to fit into one line.
Uncompressed : ~
Complete output is print to statusline/titlebar.
Causes more "AnyKey" prompts.
Sorted : ~
Output from CVS commands are sorted to show conflicts first, then
updates/patches, etc.
Unsorted : ~
Command output is printed as received from CVS.
*CVS-Settings-Revision*
Revision queries : ~
Enable/Disable prompting for revisions.
When queries enabled, commands that refer to a revision (e.g. diff,
commit, update, (r)tag) ask for it.
If disabled, commands refer to the current revision and so need no (or
less) additional input
May be set using g:CVSqueryrevisions (see |CVS-Variables|)
*CVS-Settings-Target*
Target : ~
Where to work on: Single file or directory ?
Usually, CVS commands refer to the file in buffer. If commands shall work
on the whole directory by default, this can be set here.
May be set using g:CVSforcedirectory (see |CVS-Variables|)
*CVS-Settings-Install*
Install : ~
Install updates : ~
Get and install latest cvsmenu script/doc.
Download updates : ~
Get latest cvsmenu script/doc.
Checks out the latest version of cvsmenu.vim and cvsmenu.txt to new
buffers (may be installed with following menu commands).
Install buffer as help : ~
Writes current buffer to "~/.vim/doc" and runs ":helptags".
Install buffer as plugin : ~
Writes current buffer to $VIMRUNTIME/plugin.
*CVS-Keyword*
Keyword : ~
Appends the listed CVS keyword at current cursorposition.
*CVS-Directory*
Directory ~
Add, Commit, Local status, Short status, Status, Log, ~
Query update, Update, Remove : ~
Same as the commands from the main menu, but working on the whole
directory instead of the current buffer.
*CVS-Extra*
Extra : ~
Diff to rev, Log rev's, Checkout rev, Update to rev, Commit rev, ~
Import to rev, Join in rev : ~
Same as the commands from the main menu, but but explicitely query
the revision.
*CVS-Extra-Patchfile*
Create patchfile : ~
Context : ~
Opens "diff -c"-like output in a new buffer.
Standard : ~
Opens "diff"-like output in a new buffer.
Uni : ~
Opens "diff -u"-like output in a new buffer.
*CVS-Extra-Merge*
Merge revision : ~
Merges the changes from another branch into the
local copy.
You are always asked for the branch to merge from.
Merge revision diffs : ~
Merges changes between 1st rev. and 2nd rev. into
local copy.
You are always asked for both branch revisions to get the diffs from.
*CVS-Extra-Get*
Get file : ~
Download a single file from a repository.
The file will be checked out to a new buffer, no files/dirs will be
created or changed.
Get file (password) : ~
Like "Get file", but also call CVSLogin() and CVSLogout()
CVS links : ~
Clickable Vim-Script in users $HOME directory
The example file shows some checkout possibilities, but it may be used for
everything, you can do with Vim.
*CVS-Admin*
Admin : ~
Login : ~
When using password authentification ($CVSROOT=:pserver:...), you first
have to login and enter a password.
Logout : ~
Log out from a pserver.
*CVS-Delete*
Delete : ~
Remove : ~
Delete from repository (optional:from working copy)
Release : ~
Tell CVS, you do not use this working copy any longer
(optionally delete working copy)
*CVS-Tag*
Tag : ~
Create tag : ~
Tags the current file/dir (uses "tag").
Remove tag : ~
Deletes a tag from current file/dir (uses "tag").
Create branch : ~
Create a branch from current file/dir (uses "tag").
Create tag by module : ~
Tags a module (uses "rtag").
Remove tag by module : ~
Deletes a tag from a module (uses "rtag").
Create branch by module : ~
Create a branch from a module (uses "rtag").
*CVS-WatchEdit*
Watch/Edit : ~
Watchers : ~
See, who is watching this file/dir.
Watch add : ~
Add a watch on this file/dir.
Watch remove : ~
Delete a watch on this file/dir.
Watch on : ~
Enable watch.
Watch off : ~
Disable watch.
Editors : ~
See, who is editing this file/dir.
Edit : ~
Start editing this file/dir.
Unedit : ~
Stop editing this file/dir.
*CVS-Diff*
Diff : ~
Track your changes.
If revision queries turned on, you will be asked for a revision to compare
to. Otherwise, the default revision (HEAD or Sticky) is used.
This revision will be checked out to a temporary file and compared to the
current file (same as WinCVS/gCVS).
Also see |CVS-Settings-Diff|.
*CVS-Annotate*
Annotate : ~
Shows "age" of each line.
*CVS-History*
History : ~
Shows repositories history.
*CVS-Log*
Log : ~
Shows project history.
Output is always opened in a new buffer.
*CVS-Status*
Status : ~
Shows status of files in working copy.
*CVS-ShortStatus*
Short status : ~
Lists all files, sorted according to their status.
This is very helpful when run on a directory: You get a clickable
(<Shift-CR> works also) list of all changed files.
*CVS-LocalStatus*
Local status : ~
Retrieves file information offline from the 'CVS/Entries' file.
Works similar to |CVS-ShortStatus|.
*CVS-Checkout*
Checkout : ~
Check out the documents.
You will be asked for a destination, the module name and the revision.
To checkout only a specific document add it to the module name
(e.g. "mymodule/doc.txt"), otherwise the whole project is checked out.
If you omit the destination or module name, the command is cancelled.
*CVS-QueryUpdate*
Query update : ~
Query, if file needs upgrade before commit (works like update).
*CVS-Update*
Update : ~
Merge Changes from repository into current file.
Merges the "HEAD" revision from the CVS-Server into your current document.
If the buffer is empty (no filename), the whole directory is updated.
If revision queries turned on:
The working copy can be updated to a given revision by entering this
revision at the first prompt (passed as "-r" parameter).
Differences to another version (or between two version) may be merged into
the local copy by entering this/these revision at second/third prompt
(passed as "-j" flags).
*CVS-RevertChanges*
Revert changes : ~
Replaces the current file with the same version from the
repository. This also removes the sticky bit.
*CVS-Commit*
Commit : ~
Submit changes to the archive.
After entering a log message, the currently edited file (or directory,
if buffer empty) will be committed to the repository (if it can be merged
without conflicts).
To commit to a certain revision, enable revision queries.
*CVS-Add*
Add : ~
Mark file to add with next commit.
After giving a log message, the currently edited file will be added (as
text) with the next commit.
*CVS-Import*
Import : ~
Import current file/dir into repository
*CVS-JoinIn*
JoinIn : ~
Call |CVS-Add| and |CVS-Commit| afterwards.
If g:CVSjoininmessage is nonblank, this will be used. Otherwise you are
asked for the message.
*CVS-Functions*
Functions ~
------------------------------------------------------------------------------
You can call cvsmenu functions from other scripts to automate certain tasks,
e.g. call CVSLogin() when opening a projectfile, combine CVSCheckout() and
CVSEdit(), download files,...
CVSSwitchDiffMode() ~
Useful for keymapping: Toggles diffmode for the current window.
CVSRestoreDiffMode() ~
Cvsmenu keeps a beckup of options, modified by Vim's builtin :diffsplit
(see |CVS-Settings-Diff|), when it is started.
These settings can be restored using this function.
It is possible to create a snapshot of these options any time using
CVSBackupDiffMode().
CVSInstallAsHelp(destname) ~
Writes local buffer to local help directory and runs ":helptags"
CVSInstallAsPlugin(destname) ~
Writes local buffer to $VIMRUNTIME/plugins
CVSMappingFromMenu(filename,...) ~
Reads a vimscript and generates Keymapping, using <Leader> (or an optional
arg.) and the underlined Menuhotkey.
CVSGet(...) ~
Parameters :
1 : filename : if not given, filename AND repository are queried
2 : repository : optional
3 : login/out : 'i':login, 'o':logout (may be combined)
4 : password : omitted:ask, '':none
Download single file from repository into new buffer - does not create
or modify any files/directories.
This may be useful for keeping files in sync across networks (e.g. using
ssh over internet) without creating any "CVS" directories. >
call CVSGet("hosts",":ext:admin@cvs.dom:/netconf")
call CVSGet( "VimTools/cvsmenu.vim",
\ ":pserver:anonymous@cvs.ezytools.sf.net","io",'')
CVSSaveOpts() ~
Saves all |CVS-Variables| (dont call twice !)
CVSRestoreOpts() ~
Restores all |CVS-Variables|.
CVSDoCommand(cmd,...) ~
Executes CVS command on current buffer/directory, opens output in a new
buffer, applies syntax highlighting and keymappings.
CVSadd(), CVScommit, CVSshortstatus(),etc ~
Execute menu commands.
*CVS-Troubleshooting*
Troubleshooting ~
------------------------------------------------------------------------------
No menu at all : ~
You need the GUI-Version to use menus.
WRONG! Use ":help console-menus" to see how to use menus in text mode.
If there are lots of error messages, you may have the wrong fileformat
(win/unix cr/lf). Use ":set ff=dos" or ":set ff=unix" (and write changes) to
correct this.
Commands "hang" after execution : ~
This happens, if cvs awaits user input or cannot access the $CVSROOT. This
may also be caused by a password query from ssh.
Check your $CVSROOT setting when checking out.
Check if the host given as "Root" (use "|CVS-Info|") is reachable.
Execute the cvs command manually from the command line.
Changing $CVSROOT has no effect : ~
If the working directory is controlled by CVS (i.e. it has a subdir "CVS"),
these settings have higher priority than $CVSROOT.
To override these settings, use "-d" in $CVSOPT : >
let $CVSOPT=-d :ext:user@host:/dir
Manual helpfile installation : ~
1. Create the directory "~/.vim/doc/".
2. Get cvsmenu.txt (e.g. using |CVS-Info|) and copy it there.
3. Use ":helptags ~/.vim/doc" to built the tags.
Help cannot be installed, ~
Help cannot be found, ~
CVS Links cannot be created :~
Check output of ":echo expand('~')". This should return your home directory.
On MS-Windows, you have to define $HOME for Vim to expand "~" correctly.
Command results are not displayed : ~
Command output can either be opened in a new buffer or printed as a
notification. This can be set using "|CVS-Settings-Output|".
If output mode is "Notification only" or "Autoswitch", output can be printed
to statusline and/or titlebar (--> "|CVS-Settings-Output-Notification|").
Maybe you disabled both notification methods.
Errors : ~
- Unknown Option: iff Invalid Expression: &diff" ~
NOTE DANGEROUS NOTE
You are using an old version of Vim (before 6.0ak), which lacks support
for certain commands like diff and redraw. The redraw is extremely
necessary to have the CVS work on the right buffer, otherwise your
currently edited file may be closed without saveing changes !
Please update to a recent version of Vim (e.g. the full version of Vim 6.0
is out and working) - you will like its new features !
- Cannot create diffs ~
Vim requires an external "diff" program. Make sure you have one installed
on your system (Windows users may install the Cygwin package from
http://www.redhat.com - it contains (beneath a lot of other -very- helpful
unix tools) such a programm.
- Cannot create to /temp/VIafoo.tmp ~
(or similar messages)
This message may be misleading: It also occurs, when an external program
cannot be found (may happen on :make, :grep, diff-commands,...). This was
also a problem in the Alpha and Beta versions of Vim 6.0 under Win9x,
which is solved in the final release.
*CVS-Bugs*
Bugs / Todo ~
------------------------------------------------------------------------------
* Create repository
------------------------------------------------------------------------------
vim:tw=78:ts=8:ft=help:norl:
|