sponsor Vim development Vim logo Vim Book Ad

cvsmenu.vim (updated) : CVS(NT) integration plugin (Script #58 continued since 2005)

 script karma  Rating 138/52, Downloaded by 7828  Comments, bugs, improvements  Vim wiki

created by
Yongwei Wu
script type
Supports most cvs commands and adds some extended functions. It also works with CVSNT quite well and has some support for multiple encodings. Part of the top-level menus are as follows (screen shot: http://wyw.dcweb.cn/download.asp?path=vim&file=vim_session.png):

- Info
- Setting (switches and update)
- Keyword
- Directory (directory operations; screen shot: http://wyw.dcweb.cn/download.asp?path=vim&file=cvs_localstatus.png)
- Extra (operations on a specific revision, etc.)
- Diff (in the split-window style of Vim; screen shot: http://wyw.dcweb.cn/download.asp?path=vim&file=cvs_diff.png)
- Annotate (screen shot: http://wyw.dcweb.cn/download.asp?path=vim&file=cvs_annotate.png)
- History
- Log (screen shot: http://wyw.dcweb.cn/download.asp?path=vim&file=cvs_log.png)
- Status
- Local status (offline: displays status and version info)
- Check out
- Query update (like WinCVS/gCVS)
- Update (conflicts will be highlighted)
- Add
- Commit

The output can be sorted and is often clickable: it is easy to open conflicting files, etc. It works on single files as well as on whole directories, when called from fileexplorer. It also includes highlighting / mappings to navigate through cvs output or show conflicts.

The menu is displayed in GUI versions of Vim. However, it is useful even in text-only Vim. --- You may choose to use `wildmenu', or you can use key sequences similar to the hot keys in menu. E.g. `alt-c, i' is used to commit with the GUI menu; so `,ci' could be used in text-mode Vim to commit. The leader key, currently `,', can be easily modified in the script.

This is the re-release of Mr Thorsten Maerz's original script (vimscript #58), which was last updated in 2002. It now includes many bug fixes and enhancements. The latest revision of the cvsmenu script can also be found in the SourceForge CVS:


CvsMenu is able to update itself using this anonymous CVS. Find the menu items under `CVS > Settings > Install'.
install details
Copy to the Vim plugin directory: generally ~/.vim/plugin in UNIXs, and $VIM\vimfiles\plugin (or $HOME\vimfiles\plugin) in Windows.

Choose `CVS > Settings > Install > Install updates' in the menu, or the shortcut `,cgii', to checkout and install the latest script and documentation.

rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
cvsmenu.vim 1.150 2009-09-24 6.0 Yongwei Wu Fix the issue that "CVS > Revert changes" discards tag/branch information;
Fix some issues related to fileencoding.
cvsmenu.vim 1.147 2008-06-29 6.0 Yongwei Wu Fix the issue that the global fileencoding can be accidentally changed by "let &fileencoding="; fix the problem that the log message is not converted to the CVScmdencoding.
cvsmenu.vim 1.145 2007-12-29 6.0 Yongwei Wu Fix the bug that the local status is not automatically refreshed when committing a file not in the current directory.
cvsmenu.vim 1.144 2007-10-26 6.0 Yongwei Wu Fix the bug that shortcut keys cannot be created in Unix when the path of cvsmenu.vim contains spaces.
cvsmenu.vim 1.143 2007-10-01 6.0 Yongwei Wu Fix the bug that the file path cannot contain spaces (in Unix and Cygwin).
cvsmenu.vim 1.142 2007-05-09 6.0 Yongwei Wu Shorten `CVScvsoutputencoding' to `CVScmdencoding';
Add a new control variable g:CVSfileencoding to ensure the result of CVS-Diff and CVS-Annotate is correct;
Set the appropriate fileencoding in CVSDoCommand.
cvsmenu.vim 1.140 2006-10-22 6.0 Yongwei Wu Re-enable password piping on Windows (tested to work with CVSNT 2.5.02 Build 2115) to make update cvsmenu.vim smoother; Change the name pattern of temporary log message file to make CVSeasylogmessage work with different versions of CVS (tested with more than 4 different CVS clients); Make some minor bug fixes.
cvsmenu.vim 1.136 2006-10-20 6.0 Yongwei Wu When vimming a CVS log message, ensure there is an empty line at the beginning, make editing start in insert mode, and make a normal-mode ENTER finish editing (can be disabled by put `let g:CVSeasylogmessage=0' in (.|_)vimrc).
cvsmenu.vim 1.135 2006-10-19 6.0 Yongwei Wu Display a message and cease to CVS diff if the file is newly added; allow using `q' to close the CVS history window.
cvsmenu.vim 1.133 2006-10-16 6.0 Yongwei Wu Use the corresponding version instead of the most recent version in the repository to Diff, as the command line `cvs diff ...' does.
cvsmenu.vim 1.132 2006-10-13 6.0 Yongwei Wu Fix the display problem of `Directory > Local status'; clean up the code a little.
cvsmenu.vim 1.127 2006-10-10 6.0 Yongwei Wu Fix the bug that `Checkout to' does not work.
cvsmenu.vim 1.126 2006-09-11 6.0 Yongwei Wu Allow non-ASCII filename to be used when encoding=utf-8.
cvsmenu.vim 1.125 2006-09-02 6.0 Yongwei Wu Truncate the Vim title after the file name so that the file name is always visible when the directory name is long.
cvsmenu.vim 1.124 2006-08-20 6.0 Yongwei Wu Map `q' to quickly close the buffer opened by cvs annotate and cvs log.
cvsmenu.vim 1.123 2006-05-21 6.0 Yongwei Wu Update broken links and make self-update work again.
cvsmenu.vim 1.122 2006-05-13 6.0 Yongwei Wu Update CVS info due to the SourceForge site change to make updating itself continue to work.
cvsmenu.vim 1.121 2005-11-16 6.0 Yongwei Wu - Use extracted cvs command (w/o `-q' etc.) to match with CVSdontconvertfor; - Ensure correct message escaping on Windows when shell=cmd.exe (regardless of shellxquote); - Documentation is updated to reflect my changes: be sure to use `CVS - Settings - Install - Install updates' (or `Download updates' followed by `Install buffer as help' on the help file buffer) to get it.
cvsmenu.vim 1.118 2005-11-09 6.0 Yongwei Wu - Deal with "`" correctly under Unix;
- Make no-reload-prompt trick work when the committed file is not in the current directory.
cvsmenu.vim 1.116 2005-11-01 6.0 Yongwei Wu - Do not allow to commit if the current file has not a name;
- Fix a bug when executing `:w file' on an unsaved named buffer.
cvsmenu.vim 1.114 2005-10-14 6.0 Yongwei Wu - Work around a problem that unedit of CVSNT may prompt to revert changes;
- Allow the ouput encoding of cvs be different from the Vim encoding (e.g., to make Chinese in annotate and the error message of CVSNT display correctly, one may now use `let CVScvsoutputencoding="gbk"' in .vimrc).
cvsmenu.vim 1.112 2005-09-22 6.0 Yongwei Wu - Rename CVSaddspaceafterannotate to CVSspacesinannotate;
- Display two missing parameters in CVS - Info;
- Avoid the reload prompt after commit;
- Do not allow to commit if the current buffer is modified.
cvsmenu.vim 1.109 2005-07-07 6.0 Yongwei Wu Fix problems with CVS annotation highlighting.
cvsmenu.vim 1.107 2005-06-08 6.0 Yongwei Wu - Allow space adjustment of output of "CVS - Annotate"  (assign a positive value to g:CVSaddspaceafterannotate) so that files that use TABs can align better.
- Output of "CVS - Annotate" is now highlighted.
cvsmenu.vim 1.104 2005-04-28 6.0 Yongwei Wu - Do not remap keys for new buffers output by cvs annotate, history, and log.
- Correct the help message for output buffer.
cvsmenu.vim 1.102 2005-04-19 6.0 Yongwei Wu Make menu commands like "CVS - Directory - Update" work in insert mode.
cvsmenu.vim 1.100 2005-04-17 6.0 Yongwei Wu Do not reload-after-commit after a directory commit (to avoid an error).

Fix CVSInstallAsPlugin and CVSInstallAsHelp so that the plugin and its help are installed to where the script is currently installed.
cvsmenu.vim 1.97 2005-04-04 6.0 Yongwei Wu Fix the broken key mapping. Now it is possible to use key sequences similar to the menu hot keys. E.g. `alt-c, i' is used to commit when the GUI menu exists; so `,ci' could be used in text-mode Vim to commit.
cvsmenu.vim 1.96 2005-03-28 6.0 Yongwei Wu Make sure the special characters "&", "<", ">", "|", and "^" are handled correctly if shell is cmd.exe and shellxquote is \" (there will be miscellaneous gotchas if the shell is command.com or shellxquote is empty).

Change the prefixing spaces in menu items to appending spaces to make wildmenu users happier (when wim includes longest).
cvsmenu.vim 1.94 2005-03-22 6.0 Yongwei Wu Initial upload
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.