# HG changeset patch # User Steve Borho # Date 1129705508 25200 # Node ID 32fde51910c0180e1ae266d62dad57c1efb88a44 # Parent 1c64c628d15f31740a60ff427f7694bdb6b62f49 New vim script; provides key mappings and menus for GVIM diff -r 1c64c628d15f -r 32fde51910c0 contrib/hg-menu.vim --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/hg-menu.vim Wed Oct 19 00:05:08 2005 -0700 @@ -0,0 +1,93 @@ +" vim600: set foldmethod=marker: +" ============================================================================= +" Name Of File: hg-menu.vim +" Description: Interface to Mercurial Version Control. +" Author: Steve Borho (modified Jeff Lanzarotta's RCS script) +" Date: Wednesday, October 5, 2005 +" Version: 0.1.0 +" Copyright: None. +" Usage: These command and gui menu displays useful hg functions +" Configuration: Your hg executable must be in your path. +" ============================================================================= + +" Section: Init {{{1 +if exists("loaded_hg_menu") + finish +endif +let loaded_hg_menu = 1 + +" Section: Menu Options {{{1 +if has("gui") +" amenu H&G.Commit\ File,ci :!hg commit %:e! +" amenu H&G.Commit\ All,call :!hg commit:e! +" amenu H&G.-SEP1- + amenu H&G.Add\\add :!hg add % + amenu H&G.Forget\ Add\\fgt :!hg forget % + amenu H&G.Show\ Differences\\diff :call ShowResults("FileDiff", "hg\ diff") + amenu H&G.Revert\ to\ Last\ Version\\revert :!hg revert %:e! + amenu H&G.Show\ History\\log :call ShowResults("FileLog", "hg\ log") + amenu H&G.Annotate\\an :call ShowResults("annotate", "hg\ annotate") + amenu H&G.-SEP1- + amenu H&G.Repo\ Status\\stat :call ShowResults("RepoStatus", "hg\ status") + amenu H&G.Pull\\pull :!hg pull:e! + amenu H&G.Update\\upd :!hg update:e! +endif + +" Section: Mappings {{{1 +if(v:version >= 600) + " The default Leader is \ 'backslash' + map add :!hg add % + map fgt :!hg forget % + map diff :call ShowResults("FileDiff", "hg\ diff") + map revert :!hg revert %:e! + map log :call ShowResults("FileLog", "hg\ log") + map an :call ShowResults("annotate", "hg\ annotate") + map stat :call ShowResults("RepoStatus", "hg\ status") + map upd :!hg update:e! + map pull :!hg pull:e! +else + " pre 6.0, the default Leader was a comma + map ,add :!hg add % + map ,fgt :!hg forget % + map ,diff :call ShowResults("FileDiff", "hg\ diff") + map ,revert :!hg revert:e! + map ,log :call ShowResults("FileLog", "hg\ log") + map ,an :call ShowResults("annotate", "hg\ annotate") + map ,stat :call ShowResults("RepoStatus", "hg\ status") + map ,upd :!hg update:e! + map ,pull :!hg pull:e! +endif + +" Section: Functions {{{1 +" Show the log results of the current file with a revision control system. +function! ShowResults(bufferName, cmdName) + " Modify the shortmess option: + " A don't give the "ATTENTION" message when an existing swap file is + " found. + set shortmess+=A + + " Get the name of the current buffer. + let currentBuffer = bufname("%") + + " If a buffer with the name rlog exists, delete it. + if bufexists(a:bufferName) + execute 'bd! ' a:bufferName + endif + + " Create a new buffer. + execute 'new ' a:bufferName + + " Execute the command. + execute 'r!' a:cmdName ' ' currentBuffer + + " Make is so that the file can't be edited. + setlocal nomodified + setlocal nomodifiable + setlocal readonly + + " Go to the beginning of the buffer. + execute "normal 1G" + + " Restore the shortmess option. + set shortmess-=A +endfunction