1 " vim600: set foldmethod=marker: |
|
2 " ============================================================================= |
|
3 " Name Of File: hg-menu.vim |
|
4 " Description: Interface to Mercurial Version Control. |
|
5 " Author: Steve Borho (modified Jeff Lanzarotta's RCS script) |
|
6 " Date: Wednesday, October 5, 2005 |
|
7 " Version: 0.1.0 |
|
8 " Copyright: None. |
|
9 " Usage: These command and gui menu displays useful hg functions |
|
10 " Configuration: Your hg executable must be in your path. |
|
11 " ============================================================================= |
|
12 |
|
13 " Section: Init {{{1 |
|
14 if exists("loaded_hg_menu") |
|
15 finish |
|
16 endif |
|
17 let loaded_hg_menu = 1 |
|
18 |
|
19 " Section: Menu Options {{{1 |
|
20 if has("gui") |
|
21 " amenu H&G.Commit\ File<Tab>,ci :!hg commit %<CR>:e!<CR> |
|
22 " amenu H&G.Commit\ All<Tab>,call :!hg commit<CR>:e!<CR> |
|
23 " amenu H&G.-SEP1- <nul> |
|
24 amenu H&G.Add<Tab>\\add :!hg add %<CR><CR> |
|
25 amenu H&G.Forget\ Add<Tab>\\fgt :!hg forget %<CR><CR> |
|
26 amenu H&G.Show\ Differences<Tab>\\diff :call ShowResults("FileDiff", "hg\ diff")<CR><CR> |
|
27 amenu H&G.Revert\ to\ Last\ Version<Tab>\\revert :!hg revert %<CR>:e!<CR> |
|
28 amenu H&G.Show\ History<Tab>\\log :call ShowResults("FileLog", "hg\ log")<CR><CR> |
|
29 amenu H&G.Annotate<Tab>\\an :call ShowResults("annotate", "hg\ annotate")<CR><CR> |
|
30 amenu H&G.-SEP1- <nul> |
|
31 amenu H&G.Repo\ Status<Tab>\\stat :call ShowResults("RepoStatus", "hg\ status")<CR><CR> |
|
32 amenu H&G.Pull<Tab>\\pull :!hg pull<CR>:e!<CR> |
|
33 amenu H&G.Update<Tab>\\upd :!hg update<CR>:e!<CR> |
|
34 endif |
|
35 |
|
36 " Section: Mappings {{{1 |
|
37 if(v:version >= 600) |
|
38 " The default Leader is \ 'backslash' |
|
39 map <Leader>add :!hg add %<CR><CR> |
|
40 map <Leader>fgt :!hg forget %<CR><CR> |
|
41 map <Leader>diff :call ShowResults("FileDiff", "hg\ diff")<CR><CR> |
|
42 map <Leader>revert :!hg revert %<CR>:e!<CR> |
|
43 map <Leader>log :call ShowResults("FileLog", "hg\ log")<CR><CR> |
|
44 map <Leader>an :call ShowResults("annotate", "hg\ annotate")<CR><CR> |
|
45 map <Leader>stat :call ShowResults("RepoStatus", "hg\ status")<CR><CR> |
|
46 map <Leader>upd :!hg update<CR>:e!<CR> |
|
47 map <Leader>pull :!hg pull<CR>:e!<CR> |
|
48 else |
|
49 " pre 6.0, the default Leader was a comma |
|
50 map ,add :!hg add %<CR><CR> |
|
51 map ,fgt :!hg forget %<CR><CR> |
|
52 map ,diff :call ShowResults("FileDiff", "hg\ diff")<CR><CR> |
|
53 map ,revert :!hg revert<CR>:e!<CR> |
|
54 map ,log :call ShowResults("FileLog", "hg\ log")<CR><CR> |
|
55 map ,an :call ShowResults("annotate", "hg\ annotate")<CR><CR> |
|
56 map ,stat :call ShowResults("RepoStatus", "hg\ status")<CR><CR> |
|
57 map ,upd :!hg update<CR>:e!<CR> |
|
58 map ,pull :!hg pull<CR>:e!<CR> |
|
59 endif |
|
60 |
|
61 " Section: Functions {{{1 |
|
62 " Show the log results of the current file with a revision control system. |
|
63 function! ShowResults(bufferName, cmdName) |
|
64 " Modify the shortmess option: |
|
65 " A don't give the "ATTENTION" message when an existing swap file is |
|
66 " found. |
|
67 set shortmess+=A |
|
68 |
|
69 " Get the name of the current buffer. |
|
70 let currentBuffer = bufname("%") |
|
71 |
|
72 " If a buffer with the name rlog exists, delete it. |
|
73 if bufexists(a:bufferName) |
|
74 execute 'bd! ' a:bufferName |
|
75 endif |
|
76 |
|
77 " Create a new buffer. |
|
78 execute 'new ' a:bufferName |
|
79 |
|
80 " Execute the command. |
|
81 execute 'r!' a:cmdName ' ' currentBuffer |
|
82 |
|
83 " Make is so that the file can't be edited. |
|
84 setlocal nomodified |
|
85 setlocal nomodifiable |
|
86 setlocal readonly |
|
87 |
|
88 " Go to the beginning of the buffer. |
|
89 execute "normal 1G" |
|
90 |
|
91 " Restore the shortmess option. |
|
92 set shortmess-=A |
|
93 endfunction |
|