New vim script; provides key mappings and menus for GVIM
authorSteve Borho <steve@borho.org>
Wed, 19 Oct 2005 00:05:08 -0700
changeset 1414 32fde51910c0
parent 1413 1c64c628d15f
child 1415 c6e6ca96a033
New vim script; provides key mappings and menus for GVIM
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<Tab>,ci :!hg commit %<CR>:e!<CR>
+"  amenu H&G.Commit\ All<Tab>,call :!hg commit<CR>:e!<CR>
+"  amenu H&G.-SEP1-        <nul>
+  amenu H&G.Add<Tab>\\add :!hg add %<CR><CR>
+  amenu H&G.Forget\ Add<Tab>\\fgt :!hg forget %<CR><CR>
+  amenu H&G.Show\ Differences<Tab>\\diff :call ShowResults("FileDiff", "hg\ diff")<CR><CR>
+  amenu H&G.Revert\ to\ Last\ Version<Tab>\\revert :!hg revert %<CR>:e!<CR>
+  amenu H&G.Show\ History<Tab>\\log :call ShowResults("FileLog", "hg\ log")<CR><CR>
+  amenu H&G.Annotate<Tab>\\an :call ShowResults("annotate", "hg\ annotate")<CR><CR>
+  amenu H&G.-SEP1-        <nul>
+  amenu H&G.Repo\ Status<Tab>\\stat :call ShowResults("RepoStatus", "hg\ status")<CR><CR>
+  amenu H&G.Pull<Tab>\\pull :!hg pull<CR>:e!<CR>
+  amenu H&G.Update<Tab>\\upd :!hg update<CR>:e!<CR>
+endif
+
+" Section: Mappings {{{1
+if(v:version >= 600)
+  " The default Leader is \ 'backslash'
+  map <Leader>add       :!hg add %<CR><CR>
+  map <Leader>fgt       :!hg forget %<CR><CR>
+  map <Leader>diff      :call ShowResults("FileDiff", "hg\ diff")<CR><CR>
+  map <Leader>revert    :!hg revert %<CR>:e!<CR>
+  map <Leader>log       :call ShowResults("FileLog", "hg\ log")<CR><CR>
+  map <Leader>an        :call ShowResults("annotate", "hg\ annotate")<CR><CR>
+  map <Leader>stat      :call ShowResults("RepoStatus", "hg\ status")<CR><CR>
+  map <Leader>upd       :!hg update<CR>:e!<CR>
+  map <Leader>pull      :!hg pull<CR>:e!<CR>
+else
+  " pre 6.0, the default Leader was a comma
+  map ,add          :!hg add %<CR><CR>
+  map ,fgt          :!hg forget %<CR><CR>
+  map ,diff         :call ShowResults("FileDiff", "hg\ diff")<CR><CR>
+  map ,revert       :!hg revert<CR>:e!<CR>
+  map ,log          :call ShowResults("FileLog", "hg\ log")<CR><CR>
+  map ,an           :call ShowResults("annotate", "hg\ annotate")<CR><CR>
+  map ,stat         :call ShowResults("RepoStatus", "hg\ status")<CR><CR>
+  map ,upd          :!hg update<CR>:e!<CR>
+  map ,pull         :!hg pull<CR>:e!<CR>
+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