annotate contrib/vim/hgcommand.vim @ 2603:f80057407c07

HGcommand.vim : doc integration
author "Mathieu Clabaut <mathieu.clabaut@gmail.com>"
date Wed, 12 Jul 2006 23:50:34 +0200
parents 457846f400e8
children d93c23b31797
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1 " vim600: set foldmethod=marker:
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
2 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
3 " Vim plugin to assist in working with HG-controlled files.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
4 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
5 " Last Change: 2006/02/22
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
6 " Version: 1.76
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
7 " Maintainer: Mathieu Clabaut <mathieu.clabaut@gmail.com>
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
8 " License: This file is placed in the public domain.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
9 " Credits: {{{1
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
10 " Bob Hiestand <bob.hiestand@gmail.com> for the fabulous
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
11 " cvscommand.vim from which this script was directly created by
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
12 " means of sed commands and minor tweaks.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
13
2603
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
14 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
15 "
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
16 " Section: Documentation
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
17 "----------------------------
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
18 "
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
19 " Documentation should be available by ":help hgcommand" command, once the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
20 " script has been copied in you .vim/plugin directory.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
21 "
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
22 " You still can read the documentation at the end of this file. Locate it by
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
23 " searching the "hgcommand-contents" string (and set ft=help to have
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
24 " appropriate syntaxic coloration).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
25 "
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
26 " Section: Documentation : detail {{{1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
27 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
28 " Provides functions to invoke various HG commands on the current file
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
29 " (either the current buffer, or, in the case of an directory buffer, the file
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
30 " on the current line). The output of the commands is captured in a new
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
31 " scratch window. For convenience, if the functions are invoked on a HG
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
32 " output window, the original file is used for the hg operation instead after
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
33 " the window is split. This is primarily useful when running HGCommit and
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
34 " you need to see the changes made, so that HGDiff is usable and shows up in
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
35 " another window.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
36 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
37 " Command documentation {{{2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
38 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
39 " HGAdd Performs "hg add" on the current file.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
40 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
41 " HGAnnotate Performs "hg annotate" on the current file. If an
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
42 " argument is given, the argument is used as a revision
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
43 " number to display. If not given an argument, it uses the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
44 " most recent version of the file on the current branch.
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
45 " Additionally, if the current buffer is a HGAnnotate buffer
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
46 " already, the version number on the current line is used.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
47 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
48 " If the 'HGCommandAnnotateParent' variable is set to a
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
49 " non-zero value, the version previous to the one on the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
50 " current line is used instead. This allows one to navigate
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
51 " back to examine the previous version of a line.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
52 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
53 " HGCommit[!] If called with arguments, this performs "hg commit" using
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
54 " the arguments as the log message.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
55 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
56 " If '!' is used, an empty log message is committed.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
57 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
58 " If called with no arguments, this is a two-step command.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
59 " The first step opens a buffer to accept a log message.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
60 " When that buffer is written, it is automatically closed and
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
61 " the file is committed using the information from that log
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
62 " message. The commit can be abandoned if the log message
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
63 " buffer is deleted or wiped before being written.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
64 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
65 " HGDiff With no arguments, this performs "hg diff" on the current
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
66 " file. With one argument, "hg diff" is performed on the
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
67 " current file against the specified revision. With two
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
68 " arguments, hg diff is performed between the specified
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
69 " revisions of the current file. This command uses the
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
70 " 'HGCommandDiffOpt' variable to specify diff options. If
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
71 " that variable does not exist, then 'wbBc' is assumed. If
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
72 " you wish to have no options, then set it to the empty
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
73 " string.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
74 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
75 " HGGotoOriginal Returns the current window to the source buffer if the
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
76 " current buffer is a HG output buffer.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
77 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
78 " HGLog Performs "hg log" on the current file.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
79 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
80 " HGRevert Replaces the modified version of the current file with the
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
81 " most recent version from the repository.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
82 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
83 " HGReview Retrieves a particular version of the current file. If no
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
84 " argument is given, the most recent version of the file on
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
85 " the current branch is retrieved. The specified revision is
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
86 " retrieved into a new buffer.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
87 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
88 " HGStatus Performs "hg status" on the current file.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
89 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
90 " HGUpdate Performs "hg update" on the current file.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
91 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
92 " HGVimDiff With no arguments, this prompts the user for a revision and
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
93 " then uses vimdiff to display the differences between the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
94 " current file and the specified revision. If no revision is
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
95 " specified, the most recent version of the file on the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
96 " current branch is used. With one argument, that argument
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
97 " is used as the revision as above. With two arguments, the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
98 " differences between the two revisions is displayed using
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
99 " vimdiff.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
100 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
101 " With either zero or one argument, the original buffer is used
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
102 " to perform the vimdiff. When the other buffer is closed, the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
103 " original buffer will be returned to normal mode.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
104 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
105 " Once vimdiff mode is started using the above methods,
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
106 " additional vimdiff buffers may be added by passing a single
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
107 " version argument to the command. There may be up to 4
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
108 " vimdiff buffers total.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
109 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
110 " Using the 2-argument form of the command resets the vimdiff
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
111 " to only those 2 versions. Additionally, invoking the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
112 " command on a different file will close the previous vimdiff
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
113 " buffers.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
114 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
115 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
116 " Mapping documentation: {{{2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
117 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
118 " By default, a mapping is defined for each command. User-provided mappings
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
119 " can be used instead by mapping to <Plug>CommandName, for instance:
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
120 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
121 " nnoremap ,ca <Plug>HGAdd
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
122 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
123 " The default mappings are as follow:
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
124 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
125 " <Leader>hga HGAdd
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
126 " <Leader>hgn HGAnnotate
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
127 " <Leader>hgc HGCommit
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
128 " <Leader>hgd HGDiff
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
129 " <Leader>hgg HGGotoOriginal
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
130 " <Leader>hgG HGGotoOriginal!
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
131 " <Leader>hgl HGLog
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
132 " <Leader>hgr HGReview
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
133 " <Leader>hgs HGStatus
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
134 " <Leader>hgu HGUpdate
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
135 " <Leader>hgv HGVimDiff
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
136 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
137 " Options documentation: {{{2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
138 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
139 " Several variables are checked by the script to determine behavior as follow:
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
140 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
141 " HGCommandAnnotateParent
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
142 " This variable, if set to a non-zero value, causes the zero-argument form
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
143 " of HGAnnotate when invoked on a HGAnnotate buffer to go to the version
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
144 " previous to that displayed on the current line. If not set, it defaults
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
145 " to 0.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
146 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
147 " HGCommandCommitOnWrite
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
148 " This variable, if set to a non-zero value, causes the pending hg commit
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
149 " to take place immediately as soon as the log message buffer is written.
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
150 " If set to zero, only the HGCommit mapping will cause the pending commit
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
151 " to occur. If not set, it defaults to 1.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
152 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
153 " HGCommandDeleteOnHide
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
154 " This variable, if set to a non-zero value, causes the temporary HG result
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
155 " buffers to automatically delete themselves when hidden.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
156 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
157 " HGCommandDiffOpt
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
158 " This variable, if set, determines the options passed to the diff command
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
159 " of HG. If not set, it defaults to 'wbBc'.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
160 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
161 " HGCommandDiffSplit
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
162 " This variable overrides the HGCommandSplit variable, but only for buffers
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
163 " created with HGVimDiff.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
164 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
165 " HGCommandEdit
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
166 " This variable controls whether the original buffer is replaced ('edit') or
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
167 " split ('split'). If not set, it defaults to 'edit'.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
168 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
169 " HGCommandEnableBufferSetup
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
170 " This variable, if set to a non-zero value, activates HG buffer management
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
171 " mode. This mode means that two buffer variables, 'HGRevision' and
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
172 " 'HGBranch', are set if the file is HG-controlled. This is useful for
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
173 " displaying version information in the status bar.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
174 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
175 " HGCommandInteractive
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
176 " This variable, if set to a non-zero value, causes appropriate functions (for
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
177 " the moment, only HGReview) to query the user for a revision to use
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
178 " instead of the current revision if none is specified.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
179 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
180 " HGCommandNameMarker
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
181 " This variable, if set, configures the special attention-getting characters
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
182 " that appear on either side of the hg buffer type in the buffer name.
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
183 " This has no effect unless 'HGCommandNameResultBuffers' is set to a true
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
184 " value. If not set, it defaults to '_'.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
185 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
186 " HGCommandNameResultBuffers
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
187 " This variable, if set to a true value, causes the hg result buffers to be
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
188 " named in the old way ('<source file name> _<hg command>_'). If not set
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
189 " or set to a false value, the result buffer is nameless.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
190 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
191 " HGCommandSplit
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
192 " This variable controls the orientation of the various window splits that
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
193 " may occur (such as with HGVimDiff, when using a HG command on a HG
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
194 " command buffer, or when the 'HGCommandEdit' variable is set to 'split'.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
195 " If set to 'horizontal', the resulting windows will be on stacked on top of
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
196 " one another. If set to 'vertical', the resulting windows will be
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
197 " side-by-side. If not set, it defaults to 'horizontal' for all but
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
198 " HGVimDiff windows.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
199 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
200 " Event documentation {{{2
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
201 " For additional customization, hgcommand.vim uses User event autocommand
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
202 " hooks. Each event is in the HGCommand group, and different patterns
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
203 " match the various hooks.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
204 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
205 " For instance, the following could be added to the vimrc to provide a 'q'
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
206 " mapping to quit a HG buffer:
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
207 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
208 " augroup HGCommand
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
209 " au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q :bwipeout<cr>
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
210 " augroup END
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
211 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
212 " The following hooks are available:
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
213 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
214 " HGBufferCreated This event is fired just after a hg command
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
215 " result buffer is created and filled with the
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
216 " result of a hg command. It is executed within
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
217 " the context of the new buffer.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
218 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
219 " HGBufferSetup This event is fired just after HG buffer setup
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
220 " occurs, if enabled.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
221 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
222 " HGPluginInit This event is fired when the HGCommand plugin
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
223 " first loads.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
224 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
225 " HGPluginFinish This event is fired just after the HGCommand
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
226 " plugin loads.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
227 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
228 " HGVimDiffFinish This event is fired just after the HGVimDiff
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
229 " command executes to allow customization of,
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
230 " for instance, window placement and focus.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
231 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
232 " Section: Plugin header {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
233
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
234 " loaded_hgcommand is set to 1 when the initialization begins, and 2 when it
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
235 " completes. This allows various actions to only be taken by functions after
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
236 " system initialization.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
237
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
238 if exists("loaded_hgcommand")
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
239 finish
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
240 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
241 let loaded_hgcommand = 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
242
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
243 if v:version < 602
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
244 echohl WarningMsg|echomsg "HGCommand 1.69 or later requires VIM 6.2 or later"|echohl None
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
245 finish
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
246 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
247
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
248 " Section: Event group setup {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
249
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
250 augroup HGCommand
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
251 augroup END
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
252
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
253 " Section: Plugin initialization {{{1
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
254 silent do HGCommand User HGPluginInit
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
255
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
256 " Section: Script variable initialization {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
257
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
258 let s:HGCommandEditFileRunning = 0
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
259 unlet! s:vimDiffRestoreCmd
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
260 unlet! s:vimDiffSourceBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
261 unlet! s:vimDiffBufferCount
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
262 unlet! s:vimDiffScratchList
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
263
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
264 " Section: Utility functions {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
265
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
266 " Function: s:HGResolveLink() {{{2
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
267 " Fully resolve the given file name to remove shortcuts or symbolic links.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
268
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
269 function! s:HGResolveLink(fileName)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
270 let resolved = resolve(a:fileName)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
271 if resolved != a:fileName
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
272 let resolved = s:HGResolveLink(resolved)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
273 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
274 return resolved
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
275 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
276
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
277 " Function: s:HGChangeToCurrentFileDir() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
278 " Go to the directory in which the current HG-controlled file is located.
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
279 " If this is a HG command buffer, first switch to the original file.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
280
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
281 function! s:HGChangeToCurrentFileDir(fileName)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
282 let oldCwd=getcwd()
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
283 let fileName=s:HGResolveLink(a:fileName)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
284 let newCwd=fnamemodify(fileName, ':h')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
285 if strlen(newCwd) > 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
286 execute 'cd' escape(newCwd, ' ')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
287 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
288 return oldCwd
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
289 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
290
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
291 " Function: s:HGGetOption(name, default) {{{2
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
292 " Grab a user-specified option to override the default provided. Options are
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
293 " searched in the window, buffer, then global spaces.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
294
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
295 function! s:HGGetOption(name, default)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
296 if exists("s:" . a:name . "Override")
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
297 execute "return s:".a:name."Override"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
298 elseif exists("w:" . a:name)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
299 execute "return w:".a:name
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
300 elseif exists("b:" . a:name)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
301 execute "return b:".a:name
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
302 elseif exists("g:" . a:name)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
303 execute "return g:".a:name
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
304 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
305 return a:default
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
306 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
307 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
308
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
309 " Function: s:HGEditFile(name, origBuffNR) {{{2
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
310 " Wrapper around the 'edit' command to provide some helpful error text if the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
311 " current buffer can't be abandoned. If name is provided, it is used;
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
312 " otherwise, a nameless scratch buffer is used.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
313 " Returns: 0 if successful, -1 if an error occurs.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
314
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
315 function! s:HGEditFile(name, origBuffNR)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
316 "Name parameter will be pasted into expression.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
317 let name = escape(a:name, ' *?\')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
318
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
319 let editCommand = s:HGGetOption('HGCommandEdit', 'edit')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
320 if editCommand != 'edit'
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
321 if s:HGGetOption('HGCommandSplit', 'horizontal') == 'horizontal'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
322 if name == ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
323 let editCommand = 'rightbelow new'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
324 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
325 let editCommand = 'rightbelow split ' . name
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
326 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
327 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
328 if name == ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
329 let editCommand = 'vert rightbelow new'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
330 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
331 let editCommand = 'vert rightbelow split ' . name
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
332 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
333 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
334 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
335 if name == ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
336 let editCommand = 'enew'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
337 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
338 let editCommand = 'edit ' . name
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
339 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
340 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
341
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
342 " Protect against useless buffer set-up
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
343 let s:HGCommandEditFileRunning = s:HGCommandEditFileRunning + 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
344 try
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
345 execute editCommand
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
346 finally
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
347 let s:HGCommandEditFileRunning = s:HGCommandEditFileRunning - 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
348 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
349
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
350 let b:HGOrigBuffNR=a:origBuffNR
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
351 let b:HGCommandEdit='split'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
352 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
353
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
354 " Function: s:HGCreateCommandBuffer(cmd, cmdName, statusText, filename) {{{2
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
355 " Creates a new scratch buffer and captures the output from execution of the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
356 " given command. The name of the scratch buffer is returned.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
357
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
358 function! s:HGCreateCommandBuffer(cmd, cmdName, statusText, origBuffNR)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
359 let fileName=bufname(a:origBuffNR)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
360
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
361 let resultBufferName=''
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
362
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
363 if s:HGGetOption("HGCommandNameResultBuffers", 0)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
364 let nameMarker = s:HGGetOption("HGCommandNameMarker", '_')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
365 if strlen(a:statusText) > 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
366 let bufName=a:cmdName . ' -- ' . a:statusText
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
367 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
368 let bufName=a:cmdName
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
369 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
370 let bufName=fileName . ' ' . nameMarker . bufName . nameMarker
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
371 let counter=0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
372 let resultBufferName = bufName
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
373 while buflisted(resultBufferName)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
374 let counter=counter + 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
375 let resultBufferName=bufName . ' (' . counter . ')'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
376 endwhile
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
377 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
378
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
379 let hgCommand = s:HGGetOption("HGCommandHGExec", "hg") . " " . a:cmd
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
380 echomsg "DBG :".hgCommand
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
381 let hgOut = system(hgCommand)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
382 " HACK: diff command does not return proper error codes
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
383 if v:shell_error && a:cmdName != 'hgdiff'
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
384 if strlen(hgOut) == 0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
385 echoerr "HG command failed"
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
386 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
387 echoerr "HG command failed: " . hgOut
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
388 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
389 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
390 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
391 if strlen(hgOut) == 0
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
392 " Handle case of no output. In this case, it is important to check the
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
393 " file status, especially since hg edit/unedit may change the attributes
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
394 " of the file with no visible output.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
395
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
396 echomsg "No output from HG command"
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
397 checktime
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
398 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
399 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
400
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
401 if s:HGEditFile(resultBufferName, a:origBuffNR) == -1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
402 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
403 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
404
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
405 set buftype=nofile
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
406 set noswapfile
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
407 set filetype=
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
408
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
409 if s:HGGetOption("HGCommandDeleteOnHide", 0)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
410 set bufhidden=delete
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
411 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
412
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
413 silent 0put=hgOut
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
414
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
415 " The last command left a blank line at the end of the buffer. If the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
416 " last line is folded (a side effect of the 'put') then the attempt to
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
417 " remove the blank line will kill the last fold.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
418 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
419 " This could be fixed by explicitly detecting whether the last line is
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
420 " within a fold, but I prefer to simply unfold the result buffer altogether.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
421
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
422 if has('folding')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
423 normal zR
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
424 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
425
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
426 $d
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
427 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
428
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
429 " Define the environment and execute user-defined hooks.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
430
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
431 let b:HGSourceFile=fileName
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
432 let b:HGCommand=a:cmdName
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
433 if a:statusText != ""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
434 let b:HGStatusText=a:statusText
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
435 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
436
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
437 silent do HGCommand User HGBufferCreated
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
438 return bufnr("%")
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
439 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
440
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
441 " Function: s:HGBufferCheck(hgBuffer) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
442 " Attempts to locate the original file to which HG operations were applied
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
443 " for a given buffer.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
444
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
445 function! s:HGBufferCheck(hgBuffer)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
446 let origBuffer = getbufvar(a:hgBuffer, "HGOrigBuffNR")
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
447 if origBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
448 if bufexists(origBuffer)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
449 return origBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
450 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
451 " Original buffer no longer exists.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
452 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
453 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
454 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
455 " No original buffer
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
456 return a:hgBuffer
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
457 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
458 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
459
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
460 " Function: s:HGCurrentBufferCheck() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
461 " Attempts to locate the original file to which HG operations were applied
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
462 " for the current buffer.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
463
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
464 function! s:HGCurrentBufferCheck()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
465 return s:HGBufferCheck(bufnr("%"))
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
466 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
467
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
468 " Function: s:HGToggleDeleteOnHide() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
469 " Toggles on and off the delete-on-hide behavior of HG buffers
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
470
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
471 function! s:HGToggleDeleteOnHide()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
472 if exists("g:HGCommandDeleteOnHide")
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
473 unlet g:HGCommandDeleteOnHide
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
474 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
475 let g:HGCommandDeleteOnHide=1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
476 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
477 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
478
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
479 " Function: s:HGDoCommand(hgcmd, cmdName, statusText) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
480 " General skeleton for HG function execution.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
481 " Returns: name of the new command buffer containing the command results
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
482
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
483 function! s:HGDoCommand(cmd, cmdName, statusText)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
484 let hgBufferCheck=s:HGCurrentBufferCheck()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
485 if hgBufferCheck == -1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
486 echo "Original buffer no longer exists, aborting."
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
487 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
488 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
489
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
490 let fileName=bufname(hgBufferCheck)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
491 if isdirectory(fileName)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
492 let fileName=fileName . "/" . getline(".")
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
493 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
494 let realFileName = fnamemodify(s:HGResolveLink(fileName), ':t')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
495 let oldCwd=s:HGChangeToCurrentFileDir(fileName)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
496 try
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
497 " TODO
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
498 "if !filereadable('HG/Root')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
499 "throw fileName . ' is not a HG-controlled file.'
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
500 "endif
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
501 let fullCmd = a:cmd . ' "' . realFileName . '"'
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
502 "echomsg "DEBUG".fullCmd
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
503 let resultBuffer=s:HGCreateCommandBuffer(fullCmd, a:cmdName, a:statusText, hgBufferCheck)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
504 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
505 catch
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
506 echoerr v:exception
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
507 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
508 finally
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
509 execute 'cd' escape(oldCwd, ' ')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
510 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
511 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
512
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
513
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
514 " Function: s:HGGetStatusVars(revision, branch, repository) {{{2
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
515 "
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
516 " Obtains a HG revision number and branch name. The 'revisionVar',
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
517 " 'branchVar'and 'repositoryVar' arguments, if non-empty, contain the names of variables to hold
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
518 " the corresponding results.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
519 "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
520 " Returns: string to be exec'd that sets the multiple return values.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
521
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
522 function! s:HGGetStatusVars(revisionVar, branchVar, repositoryVar)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
523 let hgBufferCheck=s:HGCurrentBufferCheck()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
524 if hgBufferCheck == -1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
525 return ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
526 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
527 let fileName=bufname(hgBufferCheck)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
528 let realFileName = fnamemodify(s:HGResolveLink(fileName), ':t')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
529 let oldCwd=s:HGChangeToCurrentFileDir(fileName)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
530 try
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
531 ""TODO
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
532 "if !filereadable('HG/Root')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
533 "return ""
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
534 "endif
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
535 let hgCommand = s:HGGetOption("HGCommandHGExec", "hg") . " status -mardui " . fileName
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
536 let statustext=system(hgCommand)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
537 if(v:shell_error)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
538 return ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
539 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
540 if match(statustext, '^[?I]') >= 0
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
541 let revision="NEW"
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
542 elseif match(statustext, '^[R]') >= 0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
543 let revision="REMOVED"
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
544 elseif match(statustext, '^[D]') >= 0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
545 let revision="DELETED"
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
546 elseif match(statustext, '^[A]') >= 0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
547 let revision="ADDED"
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
548 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
549
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
550 let hgCommand = s:HGGetOption("HGCommandHGExec", "hg") . " parents -b "
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
551 let statustext=system(hgCommand)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
552 if(v:shell_error)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
553 return ""
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
554 endif
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
555 if exists('revision')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
556 let returnExpression = "let " . a:revisionVar . "='" . revision . "'"
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
557 else
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
558 let revision=substitute(statustext, '^changeset:\s*\(\d\+\):.*\_$\_.*$', '\1', "")
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
559 let returnExpression = "let " . a:revisionVar . "='" . revision . "'"
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
560 endif
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
561
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
562 if a:branchVar != "" && match(statustext, '^\_.*\_^branch:') >= 0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
563 let branch=substitute(statustext, '^\_.*\_^branch:\s*\(\S\+\)\n\_.*$', '\1', "")
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
564 let returnExpression=returnExpression . " | let " . a:branchVar . "='" . branch . "'"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
565 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
566 if a:repositoryVar != ""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
567 let hgCommand = s:HGGetOption("HGCommandHGExec", "hg") . " root "
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
568 let roottext=system(hgCommand)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
569 let repository=substitute(roottext,'^.*/\([^/\n\r]*\)\n\_.*$','\1','')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
570 let returnExpression=returnExpression . " | let " . a:repositoryVar . "='" . repository . "'"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
571 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
572
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
573
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
574
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
575 return returnExpression
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
576 finally
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
577 execute 'cd' escape(oldCwd, ' ')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
578 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
579 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
580
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
581 " Function: s:HGSetupBuffer() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
582 " Attempts to set the b:HGBranch, b:HGRevision and b:HGRepository variables.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
583
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
584 function! s:HGSetupBuffer()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
585 if (exists("b:HGBufferSetup") && b:HGBufferSetup)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
586 " This buffer is already set up.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
587 return
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
588 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
589
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
590 if !s:HGGetOption("HGCommandEnableBufferSetup", 0)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
591 \ || @% == ""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
592 \ || s:HGCommandEditFileRunning > 0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
593 \ || exists("b:HGOrigBuffNR")
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
594 unlet! b:HGRevision
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
595 unlet! b:HGBranch
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
596 unlet! b:HGRepository
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
597 return
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
598 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
599
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
600 if !filereadable(expand("%"))
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
601 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
602 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
603
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
604 let revision=""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
605 let branch=""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
606 let repository=""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
607
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
608 exec s:HGGetStatusVars('revision', 'branch', 'repository')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
609 "echomsg "DBG ".revision."#".branch."#".repository
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
610 if revision != ""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
611 let b:HGRevision=revision
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
612 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
613 unlet! b:HGRevision
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
614 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
615 if branch != ""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
616 let b:HGBranch=branch
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
617 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
618 unlet! b:HGBranch
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
619 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
620 if repository != ""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
621 let b:HGRepository=repository
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
622 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
623 unlet! b:HGRepository
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
624 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
625 silent do HGCommand User HGBufferSetup
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
626 let b:HGBufferSetup=1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
627 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
628
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
629 " Function: s:HGMarkOrigBufferForSetup(hgbuffer) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
630 " Resets the buffer setup state of the original buffer for a given HG buffer.
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
631 " Returns: The HG buffer number in a passthrough mode.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
632
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
633 function! s:HGMarkOrigBufferForSetup(hgBuffer)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
634 checktime
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
635 if a:hgBuffer != -1
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
636 let origBuffer = s:HGBufferCheck(a:hgBuffer)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
637 "This should never not work, but I'm paranoid
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
638 if origBuffer != a:hgBuffer
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
639 call setbufvar(origBuffer, "HGBufferSetup", 0)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
640 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
641 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
642 return a:hgBuffer
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
643 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
644
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
645 " Function: s:HGOverrideOption(option, [value]) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
646 " Provides a temporary override for the given HG option. If no value is
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
647 " passed, the override is disabled.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
648
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
649 function! s:HGOverrideOption(option, ...)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
650 if a:0 == 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
651 unlet! s:{a:option}Override
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
652 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
653 let s:{a:option}Override = a:1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
654 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
655 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
656
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
657 " Function: s:HGWipeoutCommandBuffers() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
658 " Clears all current HG buffers of the specified type for a given source.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
659
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
660 function! s:HGWipeoutCommandBuffers(originalBuffer, hgCommand)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
661 let buffer = 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
662 while buffer <= bufnr('$')
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
663 if getbufvar(buffer, 'HGOrigBuffNR') == a:originalBuffer
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
664 if getbufvar(buffer, 'HGCommand') == a:hgCommand
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
665 execute 'bw' buffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
666 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
667 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
668 let buffer = buffer + 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
669 endwhile
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
670 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
671
2603
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
672 " Function: s:HGInstallDocumentation(full_name, revision) {{{2
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
673 " Install help documentation.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
674 " Arguments:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
675 " full_name: Full name of this vim plugin script, including path name.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
676 " revision: Revision of the vim script. #version# mark in the document file
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
677 " will be replaced with this string with 'v' prefix.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
678 " Return:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
679 " 1 if new document installed, 0 otherwise.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
680 " Note: Cleaned and generalized by guo-peng Wen
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
681 "'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
682
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
683 function! s:HGInstallDocumentation(full_name, revision)
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
684 " Name of the document path based on the system we use:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
685 if (has("unix"))
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
686 " On UNIX like system, using forward slash:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
687 let l:slash_char = '/'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
688 let l:mkdir_cmd = ':silent !mkdir -p '
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
689 else
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
690 " On M$ system, use backslash. Also mkdir syntax is different.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
691 " This should only work on W2K and up.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
692 let l:slash_char = '\'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
693 let l:mkdir_cmd = ':silent !mkdir '
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
694 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
695
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
696 let l:doc_path = l:slash_char . 'doc'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
697 let l:doc_home = l:slash_char . '.vim' . l:slash_char . 'doc'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
698
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
699 " Figure out document path based on full name of this script:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
700 let l:vim_plugin_path = fnamemodify(a:full_name, ':h')
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
701 let l:vim_doc_path = fnamemodify(a:full_name, ':h:h') . l:doc_path
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
702 if (!(filewritable(l:vim_doc_path) == 2))
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
703 echomsg "Doc path: " . l:vim_doc_path
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
704 execute l:mkdir_cmd . '"' . l:vim_doc_path . '"'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
705 if (!(filewritable(l:vim_doc_path) == 2))
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
706 " Try a default configuration in user home:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
707 let l:vim_doc_path = expand("~") . l:doc_home
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
708 if (!(filewritable(l:vim_doc_path) == 2))
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
709 execute l:mkdir_cmd . '"' . l:vim_doc_path . '"'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
710 if (!(filewritable(l:vim_doc_path) == 2))
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
711 " Put a warning:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
712 echomsg "Unable to open documentation directory"
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
713 echomsg " type :help add-local-help for more informations."
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
714 return 0
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
715 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
716 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
717 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
718 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
719
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
720 " Exit if we have problem to access the document directory:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
721 if (!isdirectory(l:vim_plugin_path)
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
722 \ || !isdirectory(l:vim_doc_path)
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
723 \ || filewritable(l:vim_doc_path) != 2)
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
724 return 0
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
725 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
726
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
727 " Full name of script and documentation file:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
728 let l:script_name = fnamemodify(a:full_name, ':t')
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
729 let l:doc_name = fnamemodify(a:full_name, ':t:r') . '.txt'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
730 let l:plugin_file = l:vim_plugin_path . l:slash_char . l:script_name
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
731 let l:doc_file = l:vim_doc_path . l:slash_char . l:doc_name
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
732
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
733 " Bail out if document file is still up to date:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
734 if (filereadable(l:doc_file) &&
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
735 \ getftime(l:plugin_file) < getftime(l:doc_file))
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
736 return 0
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
737 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
738
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
739 " Prepare window position restoring command:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
740 if (strlen(@%))
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
741 let l:go_back = 'b ' . bufnr("%")
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
742 else
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
743 let l:go_back = 'enew!'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
744 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
745
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
746 " Create a new buffer & read in the plugin file (me):
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
747 setl nomodeline
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
748 exe 'enew!'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
749 exe 'r ' . l:plugin_file
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
750
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
751 setl modeline
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
752 let l:buf = bufnr("%")
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
753 setl noswapfile modifiable
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
754
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
755 norm zR
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
756 norm gg
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
757
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
758 " Delete from first line to a line starts with
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
759 " === START_DOC
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
760 1,/^=\{3,}\s\+START_DOC\C/ d
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
761
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
762 " Delete from a line starts with
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
763 " === END_DOC
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
764 " to the end of the documents:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
765 /^=\{3,}\s\+END_DOC\C/,$ d
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
766
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
767 " Remove fold marks:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
768 %s/{\{3}[1-9]/ /
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
769
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
770 " Add modeline for help doc: the modeline string is mangled intentionally
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
771 " to avoid it be recognized by VIM:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
772 call append(line('$'), '')
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
773 call append(line('$'), ' v' . 'im:tw=78:ts=8:ft=help:norl:')
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
774
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
775 " Replace revision:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
776 exe "normal :1s/#version#/ v" . a:revision . "/\<CR>"
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
777
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
778 " Save the help document:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
779 exe 'w! ' . l:doc_file
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
780 exe l:go_back
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
781 exe 'bw ' . l:buf
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
782
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
783 " Build help tags:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
784 exe 'helptags ' . l:vim_doc_path
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
785
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
786 return 1
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
787 endfunction
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
788
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
789 " Section: Public functions {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
790
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
791 " Function: HGGetRevision() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
792 " Global function for retrieving the current buffer's HG revision number.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
793 " Returns: Revision number or an empty string if an error occurs.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
794
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
795 function! HGGetRevision()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
796 let revision=""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
797 exec s:HGGetStatusVars('revision', '', '')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
798 return revision
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
799 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
800
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
801 " Function: HGDisableBufferSetup() {{{2
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
802 " Global function for deactivating the buffer autovariables.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
803
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
804 function! HGDisableBufferSetup()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
805 let g:HGCommandEnableBufferSetup=0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
806 silent! augroup! HGCommandPlugin
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
807 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
808
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
809 " Function: HGEnableBufferSetup() {{{2
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
810 " Global function for activating the buffer autovariables.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
811
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
812 function! HGEnableBufferSetup()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
813 let g:HGCommandEnableBufferSetup=1
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
814 augroup HGCommandPlugin
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
815 au!
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
816 au BufEnter * call s:HGSetupBuffer()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
817 augroup END
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
818
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
819 " Only auto-load if the plugin is fully loaded. This gives other plugins a
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
820 " chance to run.
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
821 if g:loaded_hgcommand == 2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
822 call s:HGSetupBuffer()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
823 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
824 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
825
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
826 " Function: HGGetStatusLine() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
827 " Default (sample) status line entry for HG files. This is only useful if
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
828 " HG-managed buffer mode is on (see the HGCommandEnableBufferSetup variable
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
829 " for how to do this).
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
830
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
831 function! HGGetStatusLine()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
832 if exists('b:HGSourceFile')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
833 " This is a result buffer
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
834 let value='[' . b:HGCommand . ' ' . b:HGSourceFile
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
835 if exists('b:HGStatusText')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
836 let value=value . ' ' . b:HGStatusText
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
837 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
838 let value = value . ']'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
839 return value
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
840 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
841
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
842 if exists('b:HGRevision')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
843 \ && b:HGRevision != ''
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
844 \ && exists('b:HGBranch')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
845 \ && b:HGBranch != ''
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
846 \ && exists('b:HGRepository')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
847 \ && b:HGRepository != ''
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
848 \ && exists('g:HGCommandEnableBufferSetup')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
849 \ && g:HGCommandEnableBufferSetup
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
850 return '[HG ' . b:HGRepository . '/' . b:HGBranch .'/' . b:HGRevision . ']'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
851 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
852 return ''
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
853 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
854 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
855
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
856 " Section: HG command functions {{{1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
857
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
858 " Function: s:HGAdd() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
859 function! s:HGAdd()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
860 return s:HGMarkOrigBufferForSetup(s:HGDoCommand('add', 'hgadd', ''))
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
861 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
862
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
863 " Function: s:HGAnnotate(...) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
864 function! s:HGAnnotate(...)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
865 if a:0 == 0
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
866 if &filetype == "HGAnnotate"
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
867 " This is a HGAnnotate buffer. Perform annotation of the version
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
868 " indicated by the current line.
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
869 let revision = substitute(getline("."),'\(^[0-9]*\):.*','\1','')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
870 if s:HGGetOption('HGCommandAnnotateParent', 0) != 0 && revision > 0
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
871 let revision = revision - 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
872 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
873 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
874 let revision=HGGetRevision()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
875 if revision == ""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
876 echoerr "Unable to obtain HG version information."
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
877 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
878 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
879 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
880 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
881 let revision=a:1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
882 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
883
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
884 if revision == "NEW"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
885 echo "No annotatation available for new file."
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
886 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
887 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
888
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
889 let resultBuffer=s:HGDoCommand('annotate -ndu -r ' . revision, 'hgannotate', revision)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
890 echomsg "DBG: ".resultBuffer
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
891 if resultBuffer != -1
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
892 set filetype=HGAnnotate
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
893 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
894
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
895 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
896 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
897
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
898 " Function: s:HGCommit() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
899 function! s:HGCommit(...)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
900 " Handle the commit message being specified. If a message is supplied, it
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
901 " is used; if bang is supplied, an empty message is used; otherwise, the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
902 " user is provided a buffer from which to edit the commit message.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
903 if a:2 != "" || a:1 == "!"
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
904 return s:HGMarkOrigBufferForSetup(s:HGDoCommand('commit -m "' . a:2 . '"', 'hgcommit', ''))
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
905 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
906
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
907 let hgBufferCheck=s:HGCurrentBufferCheck()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
908 if hgBufferCheck == -1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
909 echo "Original buffer no longer exists, aborting."
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
910 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
911 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
912
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
913 " Protect against windows' backslashes in paths. They confuse exec'd
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
914 " commands.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
915
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
916 let shellSlashBak = &shellslash
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
917 try
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
918 set shellslash
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
919
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
920 let messageFileName = tempname()
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
921
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
922 let fileName=bufname(hgBufferCheck)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
923 let realFilePath=s:HGResolveLink(fileName)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
924 let newCwd=fnamemodify(realFilePath, ':h')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
925 if strlen(newCwd) == 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
926 " Account for autochdir being in effect, which will make this blank, but
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
927 " we know we'll be in the current directory for the original file.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
928 let newCwd = getcwd()
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
929 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
930
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
931 let realFileName=fnamemodify(realFilePath, ':t')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
932
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
933 if s:HGEditFile(messageFileName, hgBufferCheck) == -1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
934 return
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
935 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
936
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
937 " Protect against case and backslash issues in Windows.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
938 let autoPattern = '\c' . messageFileName
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
939
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
940 " Ensure existance of group
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
941 augroup HGCommit
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
942 augroup END
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
943
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
944 execute 'au HGCommit BufDelete' autoPattern 'call delete("' . messageFileName . '")'
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
945 execute 'au HGCommit BufDelete' autoPattern 'au! HGCommit * ' autoPattern
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
946
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
947 " Create a commit mapping. The mapping must clear all autocommands in case
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
948 " it is invoked when HGCommandCommitOnWrite is active, as well as to not
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
949 " invoke the buffer deletion autocommand.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
950
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
951 execute 'nnoremap <silent> <buffer> <Plug>HGCommit '.
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
952 \ ':au! HGCommit * ' . autoPattern . '<CR>'.
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
953 \ ':g/^HG:/d<CR>'.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
954 \ ':update<CR>'.
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
955 \ ':call <SID>HGFinishCommit("' . messageFileName . '",' .
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
956 \ '"' . newCwd . '",' .
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
957 \ '"' . realFileName . '",' .
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
958 \ hgBufferCheck . ')<CR>'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
959
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
960 silent 0put ='HG: ----------------------------------------------------------------------'
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
961 silent put =\"HG: Enter Log. Lines beginning with `HG:' are removed automatically\"
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
962 silent put ='HG: Type <leader>cc (or your own <Plug>HGCommit mapping)'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
963
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
964 if s:HGGetOption('HGCommandCommitOnWrite', 1) == 1
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
965 execute 'au HGCommit BufWritePre' autoPattern 'g/^HG:/d'
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
966 execute 'au HGCommit BufWritePost' autoPattern 'call s:HGFinishCommit("' . messageFileName . '", "' . newCwd . '", "' . realFileName . '", ' . hgBufferCheck . ') | au! * ' autoPattern
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
967 silent put ='HG: or write this buffer'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
968 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
969
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
970 silent put ='HG: to finish this commit operation'
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
971 silent put ='HG: ----------------------------------------------------------------------'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
972 $
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
973 let b:HGSourceFile=fileName
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
974 let b:HGCommand='HGCommit'
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
975 set filetype=hg
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
976 finally
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
977 let &shellslash = shellSlashBak
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
978 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
979
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
980 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
981
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
982 " Function: s:HGDiff(...) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
983 function! s:HGDiff(...)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
984 if a:0 == 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
985 let revOptions = '-r' . a:1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
986 let caption = a:1 . ' -> current'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
987 elseif a:0 == 2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
988 let revOptions = '-r' . a:1 . ' -r' . a:2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
989 let caption = a:1 . ' -> ' . a:2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
990 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
991 let revOptions = ''
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
992 let caption = ''
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
993 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
994
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
995 let hgdiffopt=s:HGGetOption('HGCommandDiffOpt', 'w')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
996
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
997 if hgdiffopt == ""
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
998 let diffoptionstring=""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
999 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1000 let diffoptionstring=" -" . hgdiffopt . " "
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1001 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1002
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1003 let resultBuffer = s:HGDoCommand('diff ' . diffoptionstring . revOptions , 'hgdiff', caption)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1004 if resultBuffer != -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1005 set filetype=diff
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1006 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1007 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1008 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1009
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1010
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1011 " Function: s:HGGotoOriginal(["!]) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1012 function! s:HGGotoOriginal(...)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1013 let origBuffNR = s:HGCurrentBufferCheck()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1014 if origBuffNR > 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1015 let origWinNR = bufwinnr(origBuffNR)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1016 if origWinNR == -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1017 execute 'buffer' origBuffNR
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1018 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1019 execute origWinNR . 'wincmd w'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1020 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1021 if a:0 == 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1022 if a:1 == "!"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1023 let buffnr = 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1024 let buffmaxnr = bufnr("$")
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1025 while buffnr <= buffmaxnr
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1026 if getbufvar(buffnr, "HGOrigBuffNR") == origBuffNR
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1027 execute "bw" buffnr
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1028 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1029 let buffnr = buffnr + 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1030 endwhile
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1031 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1032 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1033 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1034 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1035
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1036 " Function: s:HGFinishCommit(messageFile, targetDir, targetFile) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1037 function! s:HGFinishCommit(messageFile, targetDir, targetFile, origBuffNR)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1038 if filereadable(a:messageFile)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1039 let oldCwd=getcwd()
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1040 if strlen(a:targetDir) > 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1041 execute 'cd' escape(a:targetDir, ' ')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1042 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1043 let resultBuffer=s:HGCreateCommandBuffer('commit -F "' . a:messageFile . '" "'. a:targetFile . '"', 'hgcommit', '', a:origBuffNR)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1044 execute 'cd' escape(oldCwd, ' ')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1045 execute 'bw' escape(a:messageFile, ' *?\')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1046 silent execute 'call delete("' . a:messageFile . '")'
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1047 return s:HGMarkOrigBufferForSetup(resultBuffer)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1048 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1049 echoerr "Can't read message file; no commit is possible."
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1050 return -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1051 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1052 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1053
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1054 " Function: s:HGLog() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1055 function! s:HGLog(...)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1056 if a:0 == 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1057 let versionOption = ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1058 let caption = ''
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1059 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1060 let versionOption=" -r" . a:1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1061 let caption = a:1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1062 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1063
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1064 let resultBuffer=s:HGDoCommand('log' . versionOption, 'hglog', caption)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1065 if resultBuffer != ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1066 set filetype=rcslog
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1067 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1068 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1069 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1070
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1071 " Function: s:HGRevert() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1072 function! s:HGRevert()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1073 return s:HGMarkOrigBufferForSetup(s:HGDoCommand('revert', 'hgrevert', ''))
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1074 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1075
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1076 " Function: s:HGReview(...) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1077 function! s:HGReview(...)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1078 if a:0 == 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1079 let versiontag=""
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1080 if s:HGGetOption('HGCommandInteractive', 0)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1081 let versiontag=input('Revision: ')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1082 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1083 if versiontag == ""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1084 let versiontag="(current)"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1085 let versionOption=""
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1086 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1087 let versionOption=" -r " . versiontag . " "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1088 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1089 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1090 let versiontag=a:1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1091 let versionOption=" -r " . versiontag . " "
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1092 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1093
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1094 let resultBuffer = s:HGDoCommand('cat' . versionOption, 'hgreview', versiontag)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1095 if resultBuffer > 0
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1096 let &filetype=getbufvar(b:HGOrigBuffNR, '&filetype')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1097 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1098
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1099 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1100 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1101
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1102 " Function: s:HGStatus() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1103 function! s:HGStatus()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1104 return s:HGDoCommand('status', 'hgstatus', '')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1105 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1106
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1107
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1108 " Function: s:HGUpdate() {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1109 function! s:HGUpdate()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1110 return s:HGMarkOrigBufferForSetup(s:HGDoCommand('update', 'update', ''))
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1111 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1112
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1113 " Function: s:HGVimDiff(...) {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1114 function! s:HGVimDiff(...)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1115 let originalBuffer = s:HGCurrentBufferCheck()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1116 let s:HGCommandEditFileRunning = s:HGCommandEditFileRunning + 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1117 try
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1118 " If there's already a VimDiff'ed window, restore it.
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1119 " There may only be one HGVimDiff original window at a time.
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1120
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1121 if exists("s:vimDiffSourceBuffer") && s:vimDiffSourceBuffer != originalBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1122 " Clear the existing vimdiff setup by removing the result buffers.
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1123 call s:HGWipeoutCommandBuffers(s:vimDiffSourceBuffer, 'vimdiff')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1124 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1125
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1126 " Split and diff
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1127 if(a:0 == 2)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1128 " Reset the vimdiff system, as 2 explicit versions were provided.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1129 if exists('s:vimDiffSourceBuffer')
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1130 call s:HGWipeoutCommandBuffers(s:vimDiffSourceBuffer, 'vimdiff')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1131 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1132 let resultBuffer = s:HGReview(a:1)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1133 if resultBuffer < 0
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1134 echomsg "Can't open HG revision " . a:1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1135 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1136 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1137 let b:HGCommand = 'vimdiff'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1138 diffthis
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1139 let s:vimDiffBufferCount = 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1140 let s:vimDiffScratchList = '{'. resultBuffer . '}'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1141 " If no split method is defined, cheat, and set it to vertical.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1142 try
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1143 call s:HGOverrideOption('HGCommandSplit', s:HGGetOption('HGCommandDiffSplit', s:HGGetOption('HGCommandSplit', 'vertical')))
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1144 let resultBuffer=s:HGReview(a:2)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1145 finally
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1146 call s:HGOverrideOption('HGCommandSplit')
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1147 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1148 if resultBuffer < 0
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1149 echomsg "Can't open HG revision " . a:1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1150 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1151 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1152 let b:HGCommand = 'vimdiff'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1153 diffthis
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1154 let s:vimDiffBufferCount = 2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1155 let s:vimDiffScratchList = s:vimDiffScratchList . '{'. resultBuffer . '}'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1156 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1157 " Add new buffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1158 try
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1159 " Force splitting behavior, otherwise why use vimdiff?
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1160 call s:HGOverrideOption("HGCommandEdit", "split")
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1161 call s:HGOverrideOption("HGCommandSplit", s:HGGetOption('HGCommandDiffSplit', s:HGGetOption('HGCommandSplit', 'vertical')))
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1162 if(a:0 == 0)
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1163 let resultBuffer=s:HGReview()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1164 else
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1165 let resultBuffer=s:HGReview(a:1)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1166 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1167 finally
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1168 call s:HGOverrideOption("HGCommandEdit")
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1169 call s:HGOverrideOption("HGCommandSplit")
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1170 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1171 if resultBuffer < 0
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1172 echomsg "Can't open current HG revision"
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1173 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1174 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1175 let b:HGCommand = 'vimdiff'
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1176 diffthis
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1177
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1178 if !exists('s:vimDiffBufferCount')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1179 " New instance of vimdiff.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1180 let s:vimDiffBufferCount = 2
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1181 let s:vimDiffScratchList = '{' . resultBuffer . '}'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1182
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1183 " This could have been invoked on a HG result buffer, not the
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1184 " original buffer.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1185 wincmd W
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1186 execute 'buffer' originalBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1187 " Store info for later original buffer restore
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1188 let s:vimDiffRestoreCmd =
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1189 \ "call setbufvar(".originalBuffer.", \"&diff\", ".getbufvar(originalBuffer, '&diff').")"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1190 \ . "|call setbufvar(".originalBuffer.", \"&foldcolumn\", ".getbufvar(originalBuffer, '&foldcolumn').")"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1191 \ . "|call setbufvar(".originalBuffer.", \"&foldenable\", ".getbufvar(originalBuffer, '&foldenable').")"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1192 \ . "|call setbufvar(".originalBuffer.", \"&foldmethod\", '".getbufvar(originalBuffer, '&foldmethod')."')"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1193 \ . "|call setbufvar(".originalBuffer.", \"&scrollbind\", ".getbufvar(originalBuffer, '&scrollbind').")"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1194 \ . "|call setbufvar(".originalBuffer.", \"&wrap\", ".getbufvar(originalBuffer, '&wrap').")"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1195 \ . "|if &foldmethod=='manual'|execute 'normal zE'|endif"
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1196 diffthis
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1197 wincmd w
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1198 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1199 " Adding a window to an existing vimdiff
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1200 let s:vimDiffBufferCount = s:vimDiffBufferCount + 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1201 let s:vimDiffScratchList = s:vimDiffScratchList . '{' . resultBuffer . '}'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1202 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1203 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1204
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1205 let s:vimDiffSourceBuffer = originalBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1206
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1207 " Avoid executing the modeline in the current buffer after the autocommand.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1208
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1209 let currentBuffer = bufnr('%')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1210 let saveModeline = getbufvar(currentBuffer, '&modeline')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1211 try
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1212 call setbufvar(currentBuffer, '&modeline', 0)
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1213 silent do HGCommand User HGVimDiffFinish
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1214 finally
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1215 call setbufvar(currentBuffer, '&modeline', saveModeline)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1216 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1217 return resultBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1218 finally
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1219 let s:HGCommandEditFileRunning = s:HGCommandEditFileRunning - 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1220 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1221 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1222
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1223 " Section: Command definitions {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1224 " Section: Primary commands {{{2
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1225 com! HGAdd call s:HGAdd()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1226 com! -nargs=? HGAnnotate call s:HGAnnotate(<f-args>)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1227 com! -bang -nargs=? HGCommit call s:HGCommit(<q-bang>, <q-args>)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1228 com! -nargs=* HGDiff call s:HGDiff(<f-args>)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1229 com! -bang HGGotoOriginal call s:HGGotoOriginal(<q-bang>)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1230 com! -nargs=? HGLog call s:HGLog(<f-args>)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1231 com! HGRevert call s:HGRevert()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1232 com! -nargs=? HGReview call s:HGReview(<f-args>)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1233 com! HGStatus call s:HGStatus()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1234 com! HGUpdate call s:HGUpdate()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1235 com! -nargs=* HGVimDiff call s:HGVimDiff(<f-args>)
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1236
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1237 " Section: HG buffer management commands {{{2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1238 com! HGDisableBufferSetup call HGDisableBufferSetup()
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1239 com! HGEnableBufferSetup call HGEnableBufferSetup()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1240
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1241 " Allow reloading hgcommand.vim
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1242 com! HGReload unlet! loaded_hgcommand | runtime plugin/hgcommand.vim
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1243
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1244 " Section: Plugin command mappings {{{1
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1245 nnoremap <silent> <Plug>HGAdd :HGAdd<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1246 nnoremap <silent> <Plug>HGAnnotate :HGAnnotate<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1247 nnoremap <silent> <Plug>HGCommit :HGCommit<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1248 nnoremap <silent> <Plug>HGDiff :HGDiff<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1249 nnoremap <silent> <Plug>HGGotoOriginal :HGGotoOriginal<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1250 nnoremap <silent> <Plug>HGClearAndGotoOriginal :HGGotoOriginal!<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1251 nnoremap <silent> <Plug>HGLog :HGLog<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1252 nnoremap <silent> <Plug>HGRevert :HGRevert<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1253 nnoremap <silent> <Plug>HGReview :HGReview<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1254 nnoremap <silent> <Plug>HGStatus :HGStatus<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1255 nnoremap <silent> <Plug>HGUpdate :HGUpdate<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1256 nnoremap <silent> <Plug>HGVimDiff :HGVimDiff<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1257 nnoremap <silent> <Plug>HGWatchers :HGWatchers<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1258 nnoremap <silent> <Plug>HGWatchAdd :HGWatchAdd<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1259 nnoremap <silent> <Plug>HGWatchOn :HGWatchOn<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1260 nnoremap <silent> <Plug>HGWatchOff :HGWatchOff<CR>
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1261 nnoremap <silent> <Plug>HGWatchRemove :HGWatchRemove<CR>
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1262
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1263 " Section: Default mappings {{{1
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1264 if !hasmapto('<Plug>HGAdd')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1265 nmap <unique> <Leader>hga <Plug>HGAdd
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1266 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1267 if !hasmapto('<Plug>HGAnnotate')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1268 nmap <unique> <Leader>hgn <Plug>HGAnnotate
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1269 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1270 if !hasmapto('<Plug>HGClearAndGotoOriginal')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1271 nmap <unique> <Leader>hgG <Plug>HGClearAndGotoOriginal
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1272 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1273 if !hasmapto('<Plug>HGCommit')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1274 nmap <unique> <Leader>hgc <Plug>HGCommit
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1275 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1276 if !hasmapto('<Plug>HGDiff')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1277 nmap <unique> <Leader>hgd <Plug>HGDiff
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1278 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1279 if !hasmapto('<Plug>HGGotoOriginal')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1280 nmap <unique> <Leader>hgg <Plug>HGGotoOriginal
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1281 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1282 if !hasmapto('<Plug>HGLog')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1283 nmap <unique> <Leader>hgl <Plug>HGLog
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1284 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1285 if !hasmapto('<Plug>HGRevert')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1286 nmap <unique> <Leader>hgq <Plug>HGRevert
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1287 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1288 if !hasmapto('<Plug>HGReview')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1289 nmap <unique> <Leader>hgr <Plug>HGReview
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1290 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1291 if !hasmapto('<Plug>HGStatus')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1292 nmap <unique> <Leader>hgs <Plug>HGStatus
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1293 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1294 if !hasmapto('<Plug>HGUpdate')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1295 nmap <unique> <Leader>hgu <Plug>HGUpdate
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1296 endif
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1297 if !hasmapto('<Plug>HGVimDiff')
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1298 nmap <unique> <Leader>hgv <Plug>HGVimDiff
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1299 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1300
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1301 " Section: Menu items {{{1
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1302 silent! aunmenu Plugin.HG
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1303 amenu <silent> &Plugin.HG.&Add <Plug>HGAdd
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1304 amenu <silent> &Plugin.HG.A&nnotate <Plug>HGAnnotate
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1305 amenu <silent> &Plugin.HG.&Commit <Plug>HGCommit
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1306 amenu <silent> &Plugin.HG.&Diff <Plug>HGDiff
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1307 amenu <silent> &Plugin.HG.&Log <Plug>HGLog
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1308 amenu <silent> &Plugin.HG.Revert <Plug>HGRevert
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1309 amenu <silent> &Plugin.HG.&Review <Plug>HGReview
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1310 amenu <silent> &Plugin.HG.&Status <Plug>HGStatus
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1311 amenu <silent> &Plugin.HG.&Update <Plug>HGUpdate
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1312 amenu <silent> &Plugin.HG.&VimDiff <Plug>HGVimDiff
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1313 amenu <silent> &Plugin.HG.&Watchers <Plug>HGWatchers
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1314 amenu <silent> &Plugin.HG.WatchAdd <Plug>HGWatchAdd
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1315 amenu <silent> &Plugin.HG.WatchOn <Plug>HGWatchOn
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1316 amenu <silent> &Plugin.HG.WatchOff <Plug>HGWatchOff
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1317 amenu <silent> &Plugin.HG.WatchRemove <Plug>HGWatchRemove
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1318
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1319 " Section: Autocommands to restore vimdiff state {{{1
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1320 function! s:HGVimDiffRestore(vimDiffBuff)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1321 let s:HGCommandEditFileRunning = s:HGCommandEditFileRunning + 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1322 try
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1323 if exists("s:vimDiffSourceBuffer")
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1324 if a:vimDiffBuff == s:vimDiffSourceBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1325 " Original file is being removed.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1326 unlet! s:vimDiffSourceBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1327 unlet! s:vimDiffBufferCount
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1328 unlet! s:vimDiffRestoreCmd
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1329 unlet! s:vimDiffScratchList
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1330 elseif match(s:vimDiffScratchList, '{' . a:vimDiffBuff . '}') >= 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1331 let s:vimDiffScratchList = substitute(s:vimDiffScratchList, '{' . a:vimDiffBuff . '}', '', '')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1332 let s:vimDiffBufferCount = s:vimDiffBufferCount - 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1333 if s:vimDiffBufferCount == 1 && exists('s:vimDiffRestoreCmd')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1334 " All scratch buffers are gone, reset the original.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1335 " Only restore if the source buffer is still in Diff mode
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1336
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1337 let sourceWinNR=bufwinnr(s:vimDiffSourceBuffer)
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1338 if sourceWinNR != -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1339 " The buffer is visible in at least one window
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1340 let currentWinNR = winnr()
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1341 while winbufnr(sourceWinNR) != -1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1342 if winbufnr(sourceWinNR) == s:vimDiffSourceBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1343 execute sourceWinNR . 'wincmd w'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1344 if getwinvar('', "&diff")
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1345 execute s:vimDiffRestoreCmd
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1346 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1347 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1348 let sourceWinNR = sourceWinNR + 1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1349 endwhile
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1350 execute currentWinNR . 'wincmd w'
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1351 else
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1352 " The buffer is hidden. It must be visible in order to set the
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1353 " diff option.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1354 let currentBufNR = bufnr('')
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1355 execute "hide buffer" s:vimDiffSourceBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1356 if getwinvar('', "&diff")
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1357 execute s:vimDiffRestoreCmd
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1358 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1359 execute "hide buffer" currentBufNR
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1360 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1361
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1362 unlet s:vimDiffRestoreCmd
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1363 unlet s:vimDiffSourceBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1364 unlet s:vimDiffBufferCount
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1365 unlet s:vimDiffScratchList
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1366 elseif s:vimDiffBufferCount == 0
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1367 " All buffers are gone.
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1368 unlet s:vimDiffSourceBuffer
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1369 unlet s:vimDiffBufferCount
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1370 unlet s:vimDiffScratchList
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1371 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1372 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1373 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1374 finally
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1375 let s:HGCommandEditFileRunning = s:HGCommandEditFileRunning - 1
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1376 endtry
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1377 endfunction
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1378
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1379 augroup HGVimDiffRestore
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1380 au!
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1381 au BufUnload * call s:HGVimDiffRestore(expand("<abuf>"))
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1382 augroup END
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1383
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1384 " Section: Optional activation of buffer management {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1385
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1386 if s:HGGetOption('HGCommandEnableBufferSetup', 0)
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1387 call HGEnableBufferSetup()
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1388 endif
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1389
2603
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1390 " Section: Doc installation {{{1
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1391 "
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1392 let s:revision="0.1"
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1393 silent! let s:install_status =
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1394 \ s:HGInstallDocumentation(expand('<sfile>:p'), s:revision)
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1395 if (s:install_status == 1)
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1396 echom expand("<sfile>:t:r") . ' v' . s:revision .
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1397 \ ': Help-documentation installed.'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1398 endif
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1399
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1400
2591
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1401 " Section: Plugin completion {{{1
61f2008cd6bf Addition of CVScommand vim script as a base for HGcommand
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
diff changeset
1402
2592
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1403 let loaded_hgcommand=2
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1404 silent do HGCommand User HGPluginFinish
457846f400e8 Vim script: Adaptation from CVS to Mercurial
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2591
diff changeset
1405 " vim:se expandtab sts=2 sw=2:
2603
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1406 finish
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1407
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1408 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1409 " Section: Documentation content {{{1
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1410 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1411 === START_DOC
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1412 *hgcommand.txt* Mercurial vim integration #version#
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1413
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1414
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1415 HGCOMMAND REFERENCE MANUAL~
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1416
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1417
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1418 Author: Mathieu Clabaut <mathieu.clabaut@gmail.com>
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1419 Credits: Bob Hiestand <bob.hiestand@gmail.com>
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1420 Mercurial: http://www.selenic.com/mercurial
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1421 Mercurial (noted Hg) is a fast, lightweight Source Control Management
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1422 system designed for efficient handling of very large distributed projects.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1423
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1424 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1425 1. Contents *hgcommand-contents*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1426
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1427 Installation : |hgcommand-install|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1428 HGCommand Intro : |hgcommand|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1429 HGCommand Manual : |hgcommand-manual|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1430 Customization : |hgcommand-customize|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1431 SSH "integration" : |hgcommand-ssh|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1432 Bugs : |hgcommand-bugs|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1433
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1434 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1435 *hgcommand-install*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1436 2. HGCommand Installation
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1437
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1438 In order to install the plugin, place the hgcommand.vim file into a plugin'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1439 directory in your runtime path (please see |add-global-plugin| and
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1440 |'runtimepath'|.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1441
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1442 HGCommand may be customized by setting variables, creating maps, and
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1443 specifying event handlers. Please see |hgcommand-customize| for more
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1444 details.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1445
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1446 *hgcommand-auto-help*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1447 The help file is automagically generated when the |vimspell| script is
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1448 loaded for the first time.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1449
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1450 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1451
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1452 3. HGCommand Intro *hgcommand*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1453 *hgcommand-intro*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1454
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1455 The HGCommand plugin provides global ex commands for manipulating
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1456 HG-controlled source files. In general, each command operates on the current
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1457 buffer and accomplishes a separate hg function, such as update, commit, log,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1458 and others (please see |hgcommand-commands| for a list of all available
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1459 commands). The results of each operation are displayed in a scratch buffer.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1460 Several buffer variables are defined for those scratch buffers (please see
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1461 |hgcommand-buffer-variables|).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1462
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1463 The notion of "current file" means either the current buffer, or, in the case
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1464 of a directory buffer, the file on the current line within the buffer.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1465
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1466 For convenience, any HGCommand invoked on a HGCommand scratch buffer acts as
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1467 though it was invoked on the original file and splits the screen so that the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1468 output appears in a new window.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1469
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1470 Many of the commands accept revisions as arguments. By default, most operate
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1471 on the most recent revision on the current branch if no revision is specified
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1472 (though see |HGCommandInteractive| to prompt instead).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1473
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1474 Each HGCommand is mapped to a key sequence starting with the <Leader>
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1475 keystroke. The default mappings may be overridden by supplying different
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1476 mappings before the plugin is loaded, such as in the vimrc, in the standard
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1477 fashion for plugin mappings. For examples, please see
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1478 |hgcommand-mappings-override|.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1479
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1480 The HGCommand plugin may be configured in several ways. For more details,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1481 please see |hgcommand-customize|.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1482
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1483 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1484
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1485 4. HGCommand Manual *hgcommand-manual*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1486
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1487 4.1 HGCommand commands *hgcommand-commands*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1488
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1489 HGCommand defines the following commands:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1490
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1491 |:HGAdd|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1492 |:HGAnnotate|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1493 |:HGCommit|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1494 |:HGDiff|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1495 |:HGGotoOriginal|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1496 |:HGLog|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1497 |:HGRevert|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1498 |:HGReview|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1499 |:HGStatus|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1500 |:HGUnedit|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1501 |:HGUpdate|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1502 |:HGVimDiff|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1503
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1504 :HGAdd *:HGAdd*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1505
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1506 This command performs "hg add" on the current file. Please note, this does
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1507 not commit the newly-added file.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1508
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1509 :HGAnnotate *:HGAnnotate*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1510
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1511 This command performs "hg annotate" on the current file. If an argument is
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1512 given, the argument is used as a revision number to display. If not given an
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1513 argument, it uses the most recent version of the file on the current branch.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1514 Additionally, if the current buffer is a HGAnnotate buffer already, the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1515 version number on the current line is used.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1516
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1517 If the |HGCommandAnnotateParent| variable is set to a non-zero value, the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1518 version previous to the one on the current line is used instead. This allows
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1519 one to navigate back to examine the previous version of a line.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1520
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1521 The filetype of the HGCommand scratch buffer is set to 'HGAnnotate', to take
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1522 advantage of the bundled syntax file.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1523
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1524
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1525 :HGCommit[!] *:HGCommit*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1526
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1527 If called with arguments, this performs "hg commit" using the arguments as
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1528 the log message.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1529
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1530 If '!' is used with no arguments, an empty log message is committed.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1531
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1532 If called with no arguments, this is a two-step command. The first step opens
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1533 a buffer to accept a log message. When that buffer is written, it is
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1534 automatically closed and the file is committed using the information from that
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1535 log message. The commit can be abandoned if the log message buffer is deleted
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1536 or wiped before being written.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1537
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1538 Alternatively, the mapping that is used to invoke :HGCommit (by default
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1539 <Leader>hgc) can be used in the log message buffer to immediately commit.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1540 This
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1541 is useful if the |HGCommandCommitOnWrite| variable is set to 0 to disable the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1542 normal commit-on-write behavior.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1543
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1544 :HGDiff *:HGDiff*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1545
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1546 With no arguments, this performs "hg diff" on the current file against the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1547 current repository version.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1548
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1549 With one argument, "hg diff" is performed on the current file against the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1550 specified revision.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1551
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1552 With two arguments, hg diff is performed between the specified
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1553 revisions of the current file.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1554
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1555 This command uses the 'HGCommandDiffOpt' variable to specify diff options.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1556 If that variable does not exist, then 'wbBc' is assumed. If you wish to have
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1557 no options, then set it to the empty string.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1558
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1559
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1560 This command performs "hg edit" on the current file.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1561
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1562 :HGGotoOriginal *:HGGotoOriginal*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1563
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1564 This command returns the current window to the source buffer, if the current
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1565 buffer is a HG command output buffer.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1566
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1567 :HGGotoOriginal!
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1568
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1569 Like ":HGGotoOriginal" but also executes :bufwipeout on all HG command
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1570 output buffers for the source buffer.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1571
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1572 :HGLog *:HGLog*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1573
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1574 Performs "hg log" on the current file.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1575
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1576 If an argument is given, it is passed as an argument to the "-r" option of
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1577 "hg log".
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1578
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1579 :HGRevert *:HGRevert*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1580
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1581 Replaces the current file with the most recent version from the repository in
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1582 order to wipe out any undesired changes.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1583
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1584 :HGReview *:HGReview*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1585
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1586 Retrieves a particular version of the current file. If no argument is given,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1587 the most recent version of the file on the current branch is retrieved.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1588 Otherwise, the specified version is retrieved.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1589
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1590 :HGStatus *:HGStatus*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1591
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1592 Performs "hg status" on the current file.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1593
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1594 :HGUnedit *:HGUnedit*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1595
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1596 Performs "hg unedit" on the current file. Again, yes, the output buffer here
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1597 is basically useless.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1598
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1599 :HGUpdate *:HGUpdate*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1600
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1601 Performs "hg update" on the current file. This intentionally does not
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1602 automatically reload the current buffer, though vim should prompt the user to
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1603 do so if the underlying file is altered by this command.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1604
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1605 :HGVimDiff *:HGVimDiff*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1606
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1607 With no arguments, this prompts the user for a revision and then uses vimdiff
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1608 to display the differences between the current file and the specified
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1609 revision. If no revision is specified, the most recent version of the file on
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1610 the current branch is used.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1611
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1612 With one argument, that argument is used as the revision as above. With two
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1613 arguments, the differences between the two revisions is displayed using
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1614 vimdiff.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1615
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1616 With either zero or one argument, the original buffer is used to perform the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1617 vimdiff. When the other buffer is closed, the original buffer will be
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1618 returned to normal mode.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1619
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1620 Once vimdiff mode is started using the above methods, additional vimdiff
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1621 buffers may be added by passing a single version argument to the command.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1622 There may be up to 4 vimdiff buffers total.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1623
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1624 Using the 2-argument form of the command resets the vimdiff to only those 2
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1625 versions. Additionally, invoking the command on a different file will close
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1626 the previous vimdiff buffers.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1627
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1628
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1629 4.2 Mappings *hgcommand-mappings*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1630
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1631 By default, a mapping is defined for each command. These mappings execute the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1632 default (no-argument) form of each command.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1633
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1634 <Leader>hga HGAdd
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1635 <Leader>hgn HGAnnotate
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1636 <Leader>hgc HGCommit
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1637 <Leader>hgd HGDiff
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1638 <Leader>hgg HGGotoOriginal
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1639 <Leader>hgG HGGotoOriginal!
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1640 <Leader>hgl HGLog
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1641 <Leader>hgr HGReview
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1642 <Leader>hgs HGStatus
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1643 <Leader>hgt HGUnedit
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1644 <Leader>hgu HGUpdate
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1645 <Leader>hgv HGVimDiff
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1646
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1647 *hgcommand-mappings-override*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1648
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1649 The default mappings can be overriden by user-provided instead by mapping to
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1650 <Plug>CommandName. This is especially useful when these mappings collide with
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1651 other existing mappings (vim will warn of this during plugin initialization,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1652 but will not clobber the existing mappings).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1653
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1654 For instance, to override the default mapping for :HGAdd to set it to '\add',
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1655 add the following to the vimrc:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1656
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1657 nmap \add <Plug>HGAdd
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1658
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1659 4.3 Automatic buffer variables *hgcommand-buffer-variables*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1660
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1661 Several buffer variables are defined in each HGCommand result buffer. These
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1662 may be useful for additional customization in callbacks defined in the event
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1663 handlers (please see |hgcommand-events|).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1664
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1665 The following variables are automatically defined:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1666
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1667 b:hgOrigBuffNR *b:hgOrigBuffNR*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1668
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1669 This variable is set to the buffer number of the source file.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1670
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1671 b:hgcmd *b:hgcmd*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1672
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1673 This variable is set to the name of the hg command that created the result
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1674 buffer.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1675 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1676
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1677 5. Configuration and customization *hgcommand-customize*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1678 *hgcommand-config*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1679
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1680 The HGCommand plugin can be configured in two ways: by setting configuration
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1681 variables (see |hgcommand-options|) or by defining HGCommand event handlers
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1682 (see |hgcommand-events|). Additionally, the HGCommand plugin provides
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1683 several option for naming the HG result buffers (see |hgcommand-naming|) and
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1684 supported a customized status line (see |hgcommand-statusline| and
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1685 |hgcommand-buffer-management|).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1686
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1687 5.1 HGCommand configuration variables *hgcommand-options*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1688
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1689 Several variables affect the plugin's behavior. These variables are checked
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1690 at time of execution, and may be defined at the window, buffer, or global
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1691 level and are checked in that order of precedence.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1692
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1693
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1694 The following variables are available:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1695
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1696 |HGCommandAnnotateParent|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1697 |HGCommandCommitOnWrite|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1698 |HGCommandHGExec|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1699 |HGCommandDeleteOnHide|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1700 |HGCommandDiffOpt|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1701 |HGCommandDiffSplit|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1702 |HGCommandEdit|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1703 |HGCommandEnableBufferSetup|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1704 |HGCommandInteractive|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1705 |HGCommandNameMarker|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1706 |HGCommandNameResultBuffers|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1707 |HGCommandSplit|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1708
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1709 HGCommandAnnotateParent *HGCommandAnnotateParent*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1710
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1711 This variable, if set to a non-zero value, causes the zero-argument form of
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1712 HGAnnotate when invoked on a HGAnnotate buffer to go to the version previous
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1713 to that displayed on the current line. If not set, it defaults to 0.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1714
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1715 HGCommandCommitOnWrite *HGCommandCommitOnWrite*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1716
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1717 This variable, if set to a non-zero value, causes the pending hg commit
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1718 to take place immediately as soon as the log message buffer is written.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1719 If set to zero, only the HGCommit mapping will cause the pending commit to
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1720 occur. If not set, it defaults to 1.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1721
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1722 HGCommandHGExec *HGCommandHGExec*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1723
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1724 This variable controls the executable used for all HG commands If not set,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1725 it defaults to "hg".
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1726
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1727 HGCommandDeleteOnHide *HGCommandDeleteOnHide*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1728
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1729 This variable, if set to a non-zero value, causes the temporary HG result
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1730 buffers to automatically delete themselves when hidden.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1731
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1732 HGCommandDiffOpt *HGCommandDiffOpt*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1733
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1734 This variable, if set, determines the options passed to the diff command of
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1735 HG. If not set, it defaults to 'wbBc'.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1736
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1737 HGCommandDiffSplit *HGCommandDiffSplit*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1738
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1739 This variable overrides the |HGCommandSplit| variable, but only for buffers
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1740 created with |:HGVimDiff|.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1741
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1742 HGCommandEdit *HGCommandEdit*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1743
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1744 This variable controls whether the original buffer is replaced ('edit') or
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1745 split ('split'). If not set, it defaults to 'edit'.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1746
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1747 HGCommandEnableBufferSetup *HGCommandEnableBufferSetup*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1748
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1749 This variable, if set to a non-zero value, activates HG buffer management
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1750 mode see (|hgcommand-buffer-management|). This mode means that two buffer
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1751 variables, 'HGRevision' and 'HGBranch', are set if the file is
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1752 HG-controlled. This is useful for displaying version information in the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1753 status bar.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1754
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1755 HGCommandInteractive *HGCommandInteractive*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1756
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1757 This variable, if set to a non-zero value, causes appropriate commands (for
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1758 the moment, only |:HGReview|) to query the user for a revision to use instead
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1759 of the current revision if none is specified.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1760
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1761 HGCommandNameMarker *HGCommandNameMarker*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1762
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1763 This variable, if set, configures the special attention-getting characters
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1764 that appear on either side of the hg buffer type in the buffer name. This
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1765 has no effect unless |HGCommandNameResultBuffers| is set to a true value. If
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1766 not set, it defaults to '_'.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1767
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1768 HGCommandNameResultBuffers *HGCommandNameResultBuffers*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1769
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1770 This variable, if set to a true value, causes the hg result buffers to be
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1771 named in the old way ('<source file name> _<hg command>_'). If not set
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1772 or set to a false value, the result buffer is nameless.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1773
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1774 HGCommandSplit *HGCommandSplit*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1775
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1776 This variable controls the orientation of the various window splits that
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1777 may occur (such as with HGVimDiff, when using a HG command on a HG
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1778 command buffer, or when the |HGCommandEdit| variable is set to 'split'.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1779 If set to 'horizontal', the resulting windows will be on stacked on top of
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1780 one another. If set to 'vertical', the resulting windows will be
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1781 side-by-side. If not set, it defaults to 'horizontal' for all but
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1782 HGVimDiff windows.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1783
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1784 5.2 HGCommand events *hgcommand-events*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1785
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1786 For additional customization, HGCommand can trigger user-defined events.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1787 Event handlers are provided by defining User event autocommands (see
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1788 |autocommand|, |User|) in the HGCommand group with patterns matching the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1789 event name.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1790
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1791 For instance, the following could be added to the vimrc to provide a 'q'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1792 mapping to quit a HGCommand scratch buffer:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1793
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1794 augroup HGCommand
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1795 au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q: bwipeout<cr>
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1796 augroup END
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1797
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1798 The following hooks are available:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1799
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1800 HGBufferCreated This event is fired just after a hg command
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1801 result buffer is created and filled with the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1802 result of a hg command. It is executed within
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1803 the context of the HG command buffer. The
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1804 HGCommand buffer variables may be useful for
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1805 handlers of this event (please see
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1806 |hgcommand-buffer-variables|).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1807
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1808 HGBufferSetup This event is fired just after HG buffer setup
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1809 occurs, if enabled.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1810
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1811 HGPluginInit This event is fired when the HGCommand plugin
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1812 first loads.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1813
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1814 HGPluginFinish This event is fired just after the HGCommand
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1815 plugin loads.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1816
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1817 HGVimDiffFinish This event is fired just after the HGVimDiff
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1818 command executes to allow customization of,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1819 for instance, window placement and focus.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1820
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1821 5.3 HGCommand buffer naming *hgcommand-naming*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1822
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1823 By default, the buffers containing the result of HG commands are nameless
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1824 scratch buffers. It is intended that buffer variables of those buffers be
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1825 used to customize the statusline option so that the user may fully control the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1826 display of result buffers.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1827
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1828 If the old-style naming is desired, please enable the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1829 |HGCommandNameResultBuffers| variable. Then, each result buffer will receive
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1830 a unique name that includes the source file name, the HG command, and any
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1831 extra data (such as revision numbers) that were part of the command.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1832
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1833 5.4 HGCommand status line support *hgcommand-statusline*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1834
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1835 It is intended that the user will customize the |'statusline'| option to
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1836 include HG result buffer attributes. A sample function that may be used in
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1837 the |'statusline'| option is provided by the plugin, HGGetStatusLine(). In
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1838 order to use that function in the status line, do something like the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1839 following:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1840
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1841 set statusline=%<%f\ %{HGGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1842
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1843 of which %{HGGetStatusLine()} is the relevant portion.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1844
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1845 The sample HGGetStatusLine() function handles both HG result buffers and
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1846 HG-managed files if HGCommand buffer management is enabled (please see
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1847 |hgcommand-buffer-management|).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1848
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1849 5.5 HGCommand buffer management *hgcommand-buffer-management*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1850
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1851 The HGCommand plugin can operate in buffer management mode, which means that
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1852 it attempts to set two buffer variables ('HGRevision' and 'HGBranch') upon
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1853 entry into a buffer. This is rather slow because it means that 'hg status'
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1854 will be invoked at each entry into a buffer (during the |BufEnter|
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1855 autocommand).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1856
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1857 This mode is disabled by default. In order to enable it, set the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1858 |HGCommandEnableBufferSetup| variable to a true (non-zero) value. Enabling
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1859 this mode simply provides the buffer variables mentioned above. The user must
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1860 explicitly include those in the |'statusline'| option if they are to appear in
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1861 the status line (but see |hgcommand-statusline| for a simple way to do that).
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1862
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1863 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1864
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1865 6. SSH "integration" *hgcommand-ssh*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1866
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1867 The following instructions are intended for use in integrating the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1868 hgcommand.vim plugin with an SSH-based HG environment.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1869
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1870 Familiarity with SSH and HG are assumed.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1871
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1872 These instructions assume that the intent is to have a message box pop up in
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1873 order to allow the user to enter a passphrase. If, instead, the user is
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1874 comfortable using certificate-based authentication, then only instructions
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1875 6.1.1 and 6.1.2 (and optionally 6.1.4) need to be followed; ssh should then
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1876 work transparently.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1877
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1878 6.1 Environment settings *hgcommand-ssh-env*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1879
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1880 6.1.1 HGROOT should be set to something like:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1881
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1882 :ext:user@host:/path_to_repository
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1883
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1884 6.1.2 HG_RSH should be set to:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1885
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1886 ssh
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1887
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1888 Together, those settings tell HG to use ssh as the transport when
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1889 performing HG calls.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1890
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1891 6.1.3 SSH_ASKPASS should be set to the password-dialog program. In my case,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1892 running gnome, it's set to:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1893
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1894 /usr/libexec/openssh/gnome-ssh-askpass
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1895
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1896 This tells SSH how to get passwords if no input is available.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1897
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1898 6.1.4 OPTIONAL. You may need to set SSH_SERVER to the location of the hg
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1899 executable on the remote (server) machine.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1900
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1901 6.2 HG wrapper program *hgcommand-ssh-wrapper*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1902
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1903 Now you need to convince SSH to use the password-dialog program. This means
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1904 you need to execute SSH (and therefore HG) without standard input. The
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1905 following script is a simple perl wrapper that dissasociates the HG command
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1906 from the current terminal. Specific steps to do this may vary from system to
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1907 system; the following example works for me on linux.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1908
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1909 #!/usr/bin/perl -w
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1910 use strict;
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1911 use POSIX qw(setsid);
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1912 open STDIN, '/dev/null';
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1913 fork and do {wait; exit;};
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1914 setsid;
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1915 exec('hg', @ARGV);
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1916
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1917 6.3 Configuring hgcommand.vim *hgcommand-ssh-config*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1918
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1919 At this point, you should be able to use your wrapper script to invoke HG with
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1920 various commands, and get the password dialog. All that's left is to make HG
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1921 use your newly-created wrapper script.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1922
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1923 6.3.1 Tell hgcommand.vim what HG executable to use. The easiest way to do this
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1924 is globally, by putting the following in your .vimrc:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1925
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1926 let HGCommandHGExec=/path/to/hg/wrapper/script
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1927
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1928 6.4 Where to go from here *hgcommand-ssh-other*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1929
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1930 The script given above works even when non-SSH HG connections are used,
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1931 except possibly when interactively entering the message for HG commit log
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1932 (depending on the editor you use... VIM works fine). Since the hgcommand.vim
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1933 plugin handles that message without a terminal, the wrapper script can be used
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1934 all the time.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1935
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1936 This allows mixed-mode operation, where some work is done with SSH-based HG
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1937 repositories, and others with pserver or local access.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1938
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1939 It is possible, though beyond the scope of the plugin, to dynamically set the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1940 HG executable based on the HGROOT for the file being edited. The user
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1941 events provided (such as HGBufferCreated and HGBufferSetup) can be used to
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1942 set a buffer-local value (b:HGCommandHGExec) to override the HG executable
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1943 on a file-by-file basis. Alternatively, much the same can be done (less
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1944 automatically) by the various project-oriented plugins out there.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1945
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1946 It is highly recommended for ease-of-use that certificates with no passphrase
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1947 or ssh-agent are employed so that the user is not given the password prompt
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1948 too often.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1949
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1950 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1951 9. Tips *hgcommand-tips*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1952
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1953 9.1 Split window annotation, by Michael Anderson
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1954
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1955 :nmap <Leader>hgN :vs<CR><C-w>h<Leader>hgn:vertical res 40<CR>
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1956 \ggdddd:set scb<CR>:set nowrap<CR><C-w>lgg:set scb<CR>
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1957 \:set nowrap<CR>
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1958
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1959 This splits the buffer vertically, puts an annotation on the left (minus the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1960 header) with the width set to 40. An editable/normal copy is placed on the
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1961 right. The two versions are scroll locked so they move as one. and wrapping
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1962 is turned off so that the lines line up correctly. The advantages are...
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1963
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1964 1) You get a versioning on the right.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1965 2) You can still edit your own code.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1966 3) Your own code still has syntax highlighting.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1967
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1968 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1969
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1970 8. Known bugs *hgcommand-bugs*
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1971
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1972 Please let me know if you run across any.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1973
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1974 HGVimDiff, when using the original (real) source buffer as one of the diff
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1975 buffers, uses some hacks to try to restore the state of the original buffer
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1976 when the scratch buffer containing the other version is destroyed. There may
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1977 still be bugs in here, depending on many configuration details.
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1978
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1979 ==============================================================================
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1980 === END_DOC
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1981 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1982 " v im:tw=78:ts=8:ft=help:norl:
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1983 " vim600: set foldmethod=marker tabstop=8 shiftwidth=2 softtabstop=2 smartindent smarttab :
f80057407c07 HGcommand.vim : doc integration
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents: 2592
diff changeset
1984 "fileencoding=iso-8859-15