Mercurial > hg-stable
changeset 2604:d93c23b31797
HGcommand.vim : doc review.
author | "Mathieu Clabaut <mathieu.clabaut@gmail.com>" |
---|---|
date | Wed, 12 Jul 2006 23:52:08 +0200 |
parents | f80057407c07 |
children | 4ad79eeebf96 |
files | contrib/vim/hgcommand.vim |
diffstat | 1 files changed, 319 insertions(+), 620 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/vim/hgcommand.vim Wed Jul 12 23:50:34 2006 +0200 +++ b/contrib/vim/hgcommand.vim Wed Jul 12 23:52:08 2006 +0200 @@ -6,7 +6,7 @@ " Version: 1.76 " Maintainer: Mathieu Clabaut <mathieu.clabaut@gmail.com> " License: This file is placed in the public domain. -" Credits: {{{1 +" Credits: " Bob Hiestand <bob.hiestand@gmail.com> for the fabulous " cvscommand.vim from which this script was directly created by " means of sed commands and minor tweaks. @@ -22,213 +22,7 @@ " You still can read the documentation at the end of this file. Locate it by " searching the "hgcommand-contents" string (and set ft=help to have " appropriate syntaxic coloration). -" -" Section: Documentation : detail {{{1 -" -" Provides functions to invoke various HG commands on the current file -" (either the current buffer, or, in the case of an directory buffer, the file -" on the current line). The output of the commands is captured in a new -" scratch window. For convenience, if the functions are invoked on a HG -" output window, the original file is used for the hg operation instead after -" the window is split. This is primarily useful when running HGCommit and -" you need to see the changes made, so that HGDiff is usable and shows up in -" another window. -" -" Command documentation {{{2 -" -" HGAdd Performs "hg add" on the current file. -" -" HGAnnotate Performs "hg annotate" on the current file. If an -" argument is given, the argument is used as a revision -" number to display. If not given an argument, it uses the -" most recent version of the file on the current branch. -" Additionally, if the current buffer is a HGAnnotate buffer -" already, the version number on the current line is used. -" -" If the 'HGCommandAnnotateParent' variable is set to a -" non-zero value, the version previous to the one on the -" current line is used instead. This allows one to navigate -" back to examine the previous version of a line. -" -" HGCommit[!] If called with arguments, this performs "hg commit" using -" the arguments as the log message. -" -" If '!' is used, an empty log message is committed. -" -" If called with no arguments, this is a two-step command. -" The first step opens a buffer to accept a log message. -" When that buffer is written, it is automatically closed and -" the file is committed using the information from that log -" message. The commit can be abandoned if the log message -" buffer is deleted or wiped before being written. -" -" HGDiff With no arguments, this performs "hg diff" on the current -" file. With one argument, "hg diff" is performed on the -" current file against the specified revision. With two -" arguments, hg diff is performed between the specified -" revisions of the current file. This command uses the -" 'HGCommandDiffOpt' variable to specify diff options. If -" that variable does not exist, then 'wbBc' is assumed. If -" you wish to have no options, then set it to the empty -" string. -" -" HGGotoOriginal Returns the current window to the source buffer if the -" current buffer is a HG output buffer. -" -" HGLog Performs "hg log" on the current file. -" -" HGRevert Replaces the modified version of the current file with the -" most recent version from the repository. -" -" HGReview Retrieves a particular version of the current file. If no -" argument is given, the most recent version of the file on -" the current branch is retrieved. The specified revision is -" retrieved into a new buffer. -" -" HGStatus Performs "hg status" on the current file. -" -" HGUpdate Performs "hg update" on the current file. -" -" HGVimDiff With no arguments, this prompts the user for a revision and -" then uses vimdiff to display the differences between the -" current file and the specified revision. If no revision is -" specified, the most recent version of the file on the -" current branch is used. With one argument, that argument -" is used as the revision as above. With two arguments, the -" differences between the two revisions is displayed using -" vimdiff. -" -" With either zero or one argument, the original buffer is used -" to perform the vimdiff. When the other buffer is closed, the -" original buffer will be returned to normal mode. -" -" Once vimdiff mode is started using the above methods, -" additional vimdiff buffers may be added by passing a single -" version argument to the command. There may be up to 4 -" vimdiff buffers total. -" -" Using the 2-argument form of the command resets the vimdiff -" to only those 2 versions. Additionally, invoking the -" command on a different file will close the previous vimdiff -" buffers. -" -" -" Mapping documentation: {{{2 -" -" By default, a mapping is defined for each command. User-provided mappings -" can be used instead by mapping to <Plug>CommandName, for instance: -" -" nnoremap ,ca <Plug>HGAdd -" -" The default mappings are as follow: -" -" <Leader>hga HGAdd -" <Leader>hgn HGAnnotate -" <Leader>hgc HGCommit -" <Leader>hgd HGDiff -" <Leader>hgg HGGotoOriginal -" <Leader>hgG HGGotoOriginal! -" <Leader>hgl HGLog -" <Leader>hgr HGReview -" <Leader>hgs HGStatus -" <Leader>hgu HGUpdate -" <Leader>hgv HGVimDiff -" -" Options documentation: {{{2 -" -" Several variables are checked by the script to determine behavior as follow: -" -" HGCommandAnnotateParent -" This variable, if set to a non-zero value, causes the zero-argument form -" of HGAnnotate when invoked on a HGAnnotate buffer to go to the version -" previous to that displayed on the current line. If not set, it defaults -" to 0. -" -" HGCommandCommitOnWrite -" This variable, if set to a non-zero value, causes the pending hg commit -" to take place immediately as soon as the log message buffer is written. -" If set to zero, only the HGCommit mapping will cause the pending commit -" to occur. If not set, it defaults to 1. -" -" HGCommandDeleteOnHide -" This variable, if set to a non-zero value, causes the temporary HG result -" buffers to automatically delete themselves when hidden. -" -" HGCommandDiffOpt -" This variable, if set, determines the options passed to the diff command -" of HG. If not set, it defaults to 'wbBc'. -" -" HGCommandDiffSplit -" This variable overrides the HGCommandSplit variable, but only for buffers -" created with HGVimDiff. -" -" HGCommandEdit -" This variable controls whether the original buffer is replaced ('edit') or -" split ('split'). If not set, it defaults to 'edit'. -" -" HGCommandEnableBufferSetup -" This variable, if set to a non-zero value, activates HG buffer management -" mode. This mode means that two buffer variables, 'HGRevision' and -" 'HGBranch', are set if the file is HG-controlled. This is useful for -" displaying version information in the status bar. -" -" HGCommandInteractive -" This variable, if set to a non-zero value, causes appropriate functions (for -" the moment, only HGReview) to query the user for a revision to use -" instead of the current revision if none is specified. -" -" HGCommandNameMarker -" This variable, if set, configures the special attention-getting characters -" that appear on either side of the hg buffer type in the buffer name. -" This has no effect unless 'HGCommandNameResultBuffers' is set to a true -" value. If not set, it defaults to '_'. -" -" HGCommandNameResultBuffers -" This variable, if set to a true value, causes the hg result buffers to be -" named in the old way ('<source file name> _<hg command>_'). If not set -" or set to a false value, the result buffer is nameless. -" -" HGCommandSplit -" This variable controls the orientation of the various window splits that -" may occur (such as with HGVimDiff, when using a HG command on a HG -" command buffer, or when the 'HGCommandEdit' variable is set to 'split'. -" If set to 'horizontal', the resulting windows will be on stacked on top of -" one another. If set to 'vertical', the resulting windows will be -" side-by-side. If not set, it defaults to 'horizontal' for all but -" HGVimDiff windows. -" -" Event documentation {{{2 -" For additional customization, hgcommand.vim uses User event autocommand -" hooks. Each event is in the HGCommand group, and different patterns -" match the various hooks. -" -" For instance, the following could be added to the vimrc to provide a 'q' -" mapping to quit a HG buffer: -" -" augroup HGCommand -" au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q :bwipeout<cr> -" augroup END -" -" The following hooks are available: -" -" HGBufferCreated This event is fired just after a hg command -" result buffer is created and filled with the -" result of a hg command. It is executed within -" the context of the new buffer. -" -" HGBufferSetup This event is fired just after HG buffer setup -" occurs, if enabled. -" -" HGPluginInit This event is fired when the HGCommand plugin -" first loads. -" -" HGPluginFinish This event is fired just after the HGCommand -" plugin loads. -" -" HGVimDiffFinish This event is fired just after the HGVimDiff -" command executes to allow customization of, -" for instance, window placement and focus. -" + " Section: Plugin header {{{1 " loaded_hgcommand is set to 1 when the initialization begins, and 2 when it @@ -1422,18 +1216,16 @@ system designed for efficient handling of very large distributed projects. ============================================================================== -1. Contents *hgcommand-contents* +1. Contents *hgcommand-contents* Installation : |hgcommand-install| HGCommand Intro : |hgcommand| HGCommand Manual : |hgcommand-manual| Customization : |hgcommand-customize| - SSH "integration" : |hgcommand-ssh| Bugs : |hgcommand-bugs| ============================================================================== - *hgcommand-install* -2. HGCommand Installation +2. HGCommand Installation *hgcommand-install* In order to install the plugin, place the hgcommand.vim file into a plugin' directory in your runtime path (please see |add-global-plugin| and @@ -1444,537 +1236,444 @@ details. *hgcommand-auto-help* - The help file is automagically generated when the |vimspell| script is + The help file is automagically generated when the |hgcommand| script is loaded for the first time. ============================================================================== -3. HGCommand Intro *hgcommand* - *hgcommand-intro* +3. HGCommand Intro *hgcommand* + *hgcommand-intro* -The HGCommand plugin provides global ex commands for manipulating -HG-controlled source files. In general, each command operates on the current -buffer and accomplishes a separate hg function, such as update, commit, log, -and others (please see |hgcommand-commands| for a list of all available -commands). The results of each operation are displayed in a scratch buffer. -Several buffer variables are defined for those scratch buffers (please see -|hgcommand-buffer-variables|). + The HGCommand plugin provides global ex commands for manipulating + HG-controlled source files. In general, each command operates on the + current buffer and accomplishes a separate hg function, such as update, + commit, log, and others (please see |hgcommand-commands| for a list of all + available commands). The results of each operation are displayed in a + scratch buffer. Several buffer variables are defined for those scratch + buffers (please see |hgcommand-buffer-variables|). -The notion of "current file" means either the current buffer, or, in the case -of a directory buffer, the file on the current line within the buffer. + The notion of "current file" means either the current buffer, or, in the + case of a directory buffer, the file on the current line within the buffer. -For convenience, any HGCommand invoked on a HGCommand scratch buffer acts as -though it was invoked on the original file and splits the screen so that the -output appears in a new window. + For convenience, any HGCommand invoked on a HGCommand scratch buffer acts + as though it was invoked on the original file and splits the screen so that + the output appears in a new window. -Many of the commands accept revisions as arguments. By default, most operate -on the most recent revision on the current branch if no revision is specified -(though see |HGCommandInteractive| to prompt instead). + Many of the commands accept revisions as arguments. By default, most + operate on the most recent revision on the current branch if no revision is + specified (though see |HGCommandInteractive| to prompt instead). -Each HGCommand is mapped to a key sequence starting with the <Leader> -keystroke. The default mappings may be overridden by supplying different -mappings before the plugin is loaded, such as in the vimrc, in the standard -fashion for plugin mappings. For examples, please see -|hgcommand-mappings-override|. + Each HGCommand is mapped to a key sequence starting with the <Leader> + keystroke. The default mappings may be overridden by supplying different + mappings before the plugin is loaded, such as in the vimrc, in the standard + fashion for plugin mappings. For examples, please see + |hgcommand-mappings-override|. -The HGCommand plugin may be configured in several ways. For more details, -please see |hgcommand-customize|. + The HGCommand plugin may be configured in several ways. For more details, + please see |hgcommand-customize|. ============================================================================== - -4. HGCommand Manual *hgcommand-manual* +4. HGCommand Manual *hgcommand-manual* -4.1 HGCommand commands *hgcommand-commands* +4.1 HGCommand commands *hgcommand-commands* -HGCommand defines the following commands: + HGCommand defines the following commands: -|:HGAdd| -|:HGAnnotate| -|:HGCommit| -|:HGDiff| -|:HGGotoOriginal| -|:HGLog| -|:HGRevert| -|:HGReview| -|:HGStatus| -|:HGUnedit| -|:HGUpdate| -|:HGVimDiff| + |:HGAdd| + |:HGAnnotate| + |:HGCommit| + |:HGDiff| + |:HGGotoOriginal| + |:HGLog| + |:HGRevert| + |:HGReview| + |:HGStatus| + |:HGUpdate| + |:HGVimDiff| -:HGAdd *:HGAdd* +:HGAdd *:HGAdd* -This command performs "hg add" on the current file. Please note, this does -not commit the newly-added file. + This command performs "hg add" on the current file. Please note, this does + not commit the newly-added file. -:HGAnnotate *:HGAnnotate* +:HGAnnotate *:HGAnnotate* -This command performs "hg annotate" on the current file. If an argument is -given, the argument is used as a revision number to display. If not given an -argument, it uses the most recent version of the file on the current branch. -Additionally, if the current buffer is a HGAnnotate buffer already, the -version number on the current line is used. + This command performs "hg annotate" on the current file. If an argument is + given, the argument is used as a revision number to display. If not given + an argument, it uses the most recent version of the file on the current + branch. Additionally, if the current buffer is a HGAnnotate buffer + already, the version number on the current line is used. -If the |HGCommandAnnotateParent| variable is set to a non-zero value, the -version previous to the one on the current line is used instead. This allows -one to navigate back to examine the previous version of a line. + If the |HGCommandAnnotateParent| variable is set to a non-zero value, the + version previous to the one on the current line is used instead. This + allows one to navigate back to examine the previous version of a line. -The filetype of the HGCommand scratch buffer is set to 'HGAnnotate', to take -advantage of the bundled syntax file. + The filetype of the HGCommand scratch buffer is set to 'HGAnnotate', to + take advantage of the bundled syntax file. -:HGCommit[!] *:HGCommit* +:HGCommit[!] *:HGCommit* -If called with arguments, this performs "hg commit" using the arguments as -the log message. + If called with arguments, this performs "hg commit" using the arguments as + the log message. -If '!' is used with no arguments, an empty log message is committed. + If '!' is used with no arguments, an empty log message is committed. -If called with no arguments, this is a two-step command. The first step opens -a buffer to accept a log message. When that buffer is written, it is -automatically closed and the file is committed using the information from that -log message. The commit can be abandoned if the log message buffer is deleted -or wiped before being written. + If called with no arguments, this is a two-step command. The first step + opens a buffer to accept a log message. When that buffer is written, it is + automatically closed and the file is committed using the information from + that log message. The commit can be abandoned if the log message buffer is + deleted or wiped before being written. -Alternatively, the mapping that is used to invoke :HGCommit (by default -<Leader>hgc) can be used in the log message buffer to immediately commit. -This -is useful if the |HGCommandCommitOnWrite| variable is set to 0 to disable the -normal commit-on-write behavior. + Alternatively, the mapping that is used to invoke :HGCommit (by default + <Leader>hgc) can be used in the log message buffer to immediately commit. + This is useful if the |HGCommandCommitOnWrite| variable is set to 0 to + disable the normal commit-on-write behavior. -:HGDiff *:HGDiff* +:HGDiff *:HGDiff* + + With no arguments, this performs "hg diff" on the current file against the + current repository version. -With no arguments, this performs "hg diff" on the current file against the -current repository version. - -With one argument, "hg diff" is performed on the current file against the -specified revision. + With one argument, "hg diff" is performed on the current file against the + specified revision. -With two arguments, hg diff is performed between the specified -revisions of the current file. + With two arguments, hg diff is performed between the specified revisions of + the current file. -This command uses the 'HGCommandDiffOpt' variable to specify diff options. -If that variable does not exist, then 'wbBc' is assumed. If you wish to have -no options, then set it to the empty string. + This command uses the 'HGCommandDiffOpt' variable to specify diff options. + If that variable does not exist, then 'wbBc' is assumed. If you wish to + have no options, then set it to the empty string. -This command performs "hg edit" on the current file. +:HGGotoOriginal *:HGGotoOriginal* -:HGGotoOriginal *:HGGotoOriginal* - -This command returns the current window to the source buffer, if the current -buffer is a HG command output buffer. + This command returns the current window to the source buffer, if the + current buffer is a HG command output buffer. :HGGotoOriginal! -Like ":HGGotoOriginal" but also executes :bufwipeout on all HG command -output buffers for the source buffer. + Like ":HGGotoOriginal" but also executes :bufwipeout on all HG command + output buffers for the source buffer. -:HGLog *:HGLog* +:HGLog *:HGLog* -Performs "hg log" on the current file. + Performs "hg log" on the current file. -If an argument is given, it is passed as an argument to the "-r" option of -"hg log". + If an argument is given, it is passed as an argument to the "-r" option of + "hg log". -:HGRevert *:HGRevert* +:HGRevert *:HGRevert* -Replaces the current file with the most recent version from the repository in -order to wipe out any undesired changes. - -:HGReview *:HGReview* + Replaces the current file with the most recent version from the repository + in order to wipe out any undesired changes. + +:HGReview *:HGReview* -Retrieves a particular version of the current file. If no argument is given, -the most recent version of the file on the current branch is retrieved. -Otherwise, the specified version is retrieved. + Retrieves a particular version of the current file. If no argument is + given, the most recent version of the file on the current branch is + retrieved. Otherwise, the specified version is retrieved. -:HGStatus *:HGStatus* +:HGStatus *:HGStatus* -Performs "hg status" on the current file. + Performs "hg status" on the current file. -:HGUnedit *:HGUnedit* +:HGUpdate *:HGUpdate* -Performs "hg unedit" on the current file. Again, yes, the output buffer here -is basically useless. - -:HGUpdate *:HGUpdate* + Performs "hg update" on the current file. This intentionally does not + automatically reload the current buffer, though vim should prompt the user + to do so if the underlying file is altered by this command. -Performs "hg update" on the current file. This intentionally does not -automatically reload the current buffer, though vim should prompt the user to -do so if the underlying file is altered by this command. +:HGVimDiff *:HGVimDiff* -:HGVimDiff *:HGVimDiff* - -With no arguments, this prompts the user for a revision and then uses vimdiff -to display the differences between the current file and the specified -revision. If no revision is specified, the most recent version of the file on -the current branch is used. + With no arguments, this prompts the user for a revision and then uses + vimdiff to display the differences between the current file and the + specified revision. If no revision is specified, the most recent version + of the file on the current branch is used. -With one argument, that argument is used as the revision as above. With two -arguments, the differences between the two revisions is displayed using -vimdiff. + With one argument, that argument is used as the revision as above. With + two arguments, the differences between the two revisions is displayed using + vimdiff. -With either zero or one argument, the original buffer is used to perform the -vimdiff. When the other buffer is closed, the original buffer will be -returned to normal mode. + With either zero or one argument, the original buffer is used to perform + the vimdiff. When the other buffer is closed, the original buffer will be + returned to normal mode. -Once vimdiff mode is started using the above methods, additional vimdiff -buffers may be added by passing a single version argument to the command. -There may be up to 4 vimdiff buffers total. + Once vimdiff mode is started using the above methods, additional vimdiff + buffers may be added by passing a single version argument to the command. + There may be up to 4 vimdiff buffers total. -Using the 2-argument form of the command resets the vimdiff to only those 2 -versions. Additionally, invoking the command on a different file will close -the previous vimdiff buffers. + Using the 2-argument form of the command resets the vimdiff to only those 2 + versions. Additionally, invoking the command on a different file will + close the previous vimdiff buffers. -4.2 Mappings *hgcommand-mappings* +4.2 Mappings *hgcommand-mappings* -By default, a mapping is defined for each command. These mappings execute the -default (no-argument) form of each command. + By default, a mapping is defined for each command. These mappings execute + the default (no-argument) form of each command. -<Leader>hga HGAdd -<Leader>hgn HGAnnotate -<Leader>hgc HGCommit -<Leader>hgd HGDiff -<Leader>hgg HGGotoOriginal -<Leader>hgG HGGotoOriginal! -<Leader>hgl HGLog -<Leader>hgr HGReview -<Leader>hgs HGStatus -<Leader>hgt HGUnedit -<Leader>hgu HGUpdate -<Leader>hgv HGVimDiff + <Leader>hga HGAdd + <Leader>hgn HGAnnotate + <Leader>hgc HGCommit + <Leader>hgd HGDiff + <Leader>hgg HGGotoOriginal + <Leader>hgG HGGotoOriginal! + <Leader>hgl HGLog + <Leader>hgr HGReview + <Leader>hgs HGStatus + <Leader>hgu HGUpdate + <Leader>hgv HGVimDiff - *hgcommand-mappings-override* + *hgcommand-mappings-override* -The default mappings can be overriden by user-provided instead by mapping to -<Plug>CommandName. This is especially useful when these mappings collide with -other existing mappings (vim will warn of this during plugin initialization, -but will not clobber the existing mappings). + The default mappings can be overriden by user-provided instead by mapping + to <Plug>CommandName. This is especially useful when these mappings + collide with other existing mappings (vim will warn of this during plugin + initialization, but will not clobber the existing mappings). -For instance, to override the default mapping for :HGAdd to set it to '\add', -add the following to the vimrc: + For instance, to override the default mapping for :HGAdd to set it to + '\add', add the following to the vimrc: > -nmap \add <Plug>HGAdd - -4.3 Automatic buffer variables *hgcommand-buffer-variables* + nmap \add <Plug>HGAdd +< +4.3 Automatic buffer variables *hgcommand-buffer-variables* -Several buffer variables are defined in each HGCommand result buffer. These -may be useful for additional customization in callbacks defined in the event -handlers (please see |hgcommand-events|). + Several buffer variables are defined in each HGCommand result buffer. + These may be useful for additional customization in callbacks defined in + the event handlers (please see |hgcommand-events|). -The following variables are automatically defined: + The following variables are automatically defined: -b:hgOrigBuffNR *b:hgOrigBuffNR* +b:hgOrigBuffNR *b:hgOrigBuffNR* -This variable is set to the buffer number of the source file. + This variable is set to the buffer number of the source file. -b:hgcmd *b:hgcmd* +b:hgcmd *b:hgcmd* -This variable is set to the name of the hg command that created the result -buffer. + This variable is set to the name of the hg command that created the result + buffer. ============================================================================== -5. Configuration and customization *hgcommand-customize* - *hgcommand-config* +5. Configuration and customization *hgcommand-customize* + *hgcommand-config* -The HGCommand plugin can be configured in two ways: by setting configuration -variables (see |hgcommand-options|) or by defining HGCommand event handlers -(see |hgcommand-events|). Additionally, the HGCommand plugin provides -several option for naming the HG result buffers (see |hgcommand-naming|) and -supported a customized status line (see |hgcommand-statusline| and -|hgcommand-buffer-management|). + The HGCommand plugin can be configured in two ways: by setting + configuration variables (see |hgcommand-options|) or by defining HGCommand + event handlers (see |hgcommand-events|). Additionally, the HGCommand + plugin provides several option for naming the HG result buffers (see + |hgcommand-naming|) and supported a customized status line (see + |hgcommand-statusline| and |hgcommand-buffer-management|). -5.1 HGCommand configuration variables *hgcommand-options* +5.1 HGCommand configuration variables *hgcommand-options* -Several variables affect the plugin's behavior. These variables are checked -at time of execution, and may be defined at the window, buffer, or global -level and are checked in that order of precedence. + Several variables affect the plugin's behavior. These variables are + checked at time of execution, and may be defined at the window, buffer, or + global level and are checked in that order of precedence. -The following variables are available: + The following variables are available: -|HGCommandAnnotateParent| -|HGCommandCommitOnWrite| -|HGCommandHGExec| -|HGCommandDeleteOnHide| -|HGCommandDiffOpt| -|HGCommandDiffSplit| -|HGCommandEdit| -|HGCommandEnableBufferSetup| -|HGCommandInteractive| -|HGCommandNameMarker| -|HGCommandNameResultBuffers| -|HGCommandSplit| + |HGCommandAnnotateParent| + |HGCommandCommitOnWrite| + |HGCommandHGExec| + |HGCommandDeleteOnHide| + |HGCommandDiffOpt| + |HGCommandDiffSplit| + |HGCommandEdit| + |HGCommandEnableBufferSetup| + |HGCommandInteractive| + |HGCommandNameMarker| + |HGCommandNameResultBuffers| + |HGCommandSplit| + +HGCommandAnnotateParent *HGCommandAnnotateParent* -HGCommandAnnotateParent *HGCommandAnnotateParent* + This variable, if set to a non-zero value, causes the zero-argument form of + HGAnnotate when invoked on a HGAnnotate buffer to go to the version + previous to that displayed on the current line. If not set, it defaults to + 0. -This variable, if set to a non-zero value, causes the zero-argument form of -HGAnnotate when invoked on a HGAnnotate buffer to go to the version previous -to that displayed on the current line. If not set, it defaults to 0. - -HGCommandCommitOnWrite *HGCommandCommitOnWrite* +HGCommandCommitOnWrite *HGCommandCommitOnWrite* -This variable, if set to a non-zero value, causes the pending hg commit -to take place immediately as soon as the log message buffer is written. -If set to zero, only the HGCommit mapping will cause the pending commit to -occur. If not set, it defaults to 1. + This variable, if set to a non-zero value, causes the pending hg commit to + take place immediately as soon as the log message buffer is written. If + set to zero, only the HGCommit mapping will cause the pending commit to + occur. If not set, it defaults to 1. -HGCommandHGExec *HGCommandHGExec* +HGCommandHGExec *HGCommandHGExec* -This variable controls the executable used for all HG commands If not set, -it defaults to "hg". + This variable controls the executable used for all HG commands. If not + set, it defaults to "hg". -HGCommandDeleteOnHide *HGCommandDeleteOnHide* +HGCommandDeleteOnHide *HGCommandDeleteOnHide* -This variable, if set to a non-zero value, causes the temporary HG result -buffers to automatically delete themselves when hidden. + This variable, if set to a non-zero value, causes the temporary HG result + buffers to automatically delete themselves when hidden. -HGCommandDiffOpt *HGCommandDiffOpt* +HGCommandDiffOpt *HGCommandDiffOpt* -This variable, if set, determines the options passed to the diff command of -HG. If not set, it defaults to 'wbBc'. + This variable, if set, determines the options passed to the diff command of + HG. If not set, it defaults to 'w'. -HGCommandDiffSplit *HGCommandDiffSplit* +HGCommandDiffSplit *HGCommandDiffSplit* -This variable overrides the |HGCommandSplit| variable, but only for buffers -created with |:HGVimDiff|. + This variable overrides the |HGCommandSplit| variable, but only for buffers + created with |:HGVimDiff|. -HGCommandEdit *HGCommandEdit* +HGCommandEdit *HGCommandEdit* -This variable controls whether the original buffer is replaced ('edit') or -split ('split'). If not set, it defaults to 'edit'. + This variable controls whether the original buffer is replaced ('edit') or + split ('split'). If not set, it defaults to 'edit'. -HGCommandEnableBufferSetup *HGCommandEnableBufferSetup* +HGCommandEnableBufferSetup *HGCommandEnableBufferSetup* -This variable, if set to a non-zero value, activates HG buffer management -mode see (|hgcommand-buffer-management|). This mode means that two buffer -variables, 'HGRevision' and 'HGBranch', are set if the file is -HG-controlled. This is useful for displaying version information in the -status bar. + This variable, if set to a non-zero value, activates HG buffer management + mode see (|hgcommand-buffer-management|). This mode means that three + buffer variables, 'HGRepository', 'HGRevision' and 'HGBranch', are set if + the file is HG-controlled. This is useful for displaying version + information in the status bar. -HGCommandInteractive *HGCommandInteractive* +HGCommandInteractive *HGCommandInteractive* -This variable, if set to a non-zero value, causes appropriate commands (for -the moment, only |:HGReview|) to query the user for a revision to use instead -of the current revision if none is specified. + This variable, if set to a non-zero value, causes appropriate commands (for + the moment, only |:HGReview|) to query the user for a revision to use + instead of the current revision if none is specified. -HGCommandNameMarker *HGCommandNameMarker* +HGCommandNameMarker *HGCommandNameMarker* -This variable, if set, configures the special attention-getting characters -that appear on either side of the hg buffer type in the buffer name. This -has no effect unless |HGCommandNameResultBuffers| is set to a true value. If -not set, it defaults to '_'. + This variable, if set, configures the special attention-getting characters + that appear on either side of the hg buffer type in the buffer name. This + has no effect unless |HGCommandNameResultBuffers| is set to a true value. + If not set, it defaults to '_'. -HGCommandNameResultBuffers *HGCommandNameResultBuffers* +HGCommandNameResultBuffers *HGCommandNameResultBuffers* -This variable, if set to a true value, causes the hg result buffers to be -named in the old way ('<source file name> _<hg command>_'). If not set -or set to a false value, the result buffer is nameless. + This variable, if set to a true value, causes the hg result buffers to be + named in the old way ('<source file name> _<hg command>_'). If not set or + set to a false value, the result buffer is nameless. -HGCommandSplit *HGCommandSplit* +HGCommandSplit *HGCommandSplit* -This variable controls the orientation of the various window splits that -may occur (such as with HGVimDiff, when using a HG command on a HG -command buffer, or when the |HGCommandEdit| variable is set to 'split'. -If set to 'horizontal', the resulting windows will be on stacked on top of -one another. If set to 'vertical', the resulting windows will be -side-by-side. If not set, it defaults to 'horizontal' for all but -HGVimDiff windows. - -5.2 HGCommand events *hgcommand-events* + This variable controls the orientation of the various window splits that + may occur (such as with HGVimDiff, when using a HG command on a HG command + buffer, or when the |HGCommandEdit| variable is set to 'split'. If set to + 'horizontal', the resulting windows will be on stacked on top of one + another. If set to 'vertical', the resulting windows will be side-by-side. + If not set, it defaults to 'horizontal' for all but HGVimDiff windows. -For additional customization, HGCommand can trigger user-defined events. -Event handlers are provided by defining User event autocommands (see -|autocommand|, |User|) in the HGCommand group with patterns matching the -event name. +5.2 HGCommand events *hgcommand-events* -For instance, the following could be added to the vimrc to provide a 'q' -mapping to quit a HGCommand scratch buffer: + For additional customization, HGCommand can trigger user-defined events. + Event handlers are provided by defining User event autocommands (see + |autocommand|, |User|) in the HGCommand group with patterns matching the + event name. -augroup HGCommand - au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q: bwipeout<cr> -augroup END + For instance, the following could be added to the vimrc to provide a 'q' + mapping to quit a HGCommand scratch buffer: > -The following hooks are available: + augroup HGCommand + au HGCommand User HGBufferCreated silent! nmap <unique> <buffer> q: + bwipeout<cr> + augroup END +< + + The following hooks are available: -HGBufferCreated This event is fired just after a hg command - result buffer is created and filled with the - result of a hg command. It is executed within - the context of the HG command buffer. The - HGCommand buffer variables may be useful for - handlers of this event (please see - |hgcommand-buffer-variables|). +HGBufferCreated This event is fired just after a hg command result + buffer is created and filled with the result of a hg + command. It is executed within the context of the HG + command buffer. The HGCommand buffer variables may be + useful for handlers of this event (please see + |hgcommand-buffer-variables|). -HGBufferSetup This event is fired just after HG buffer setup - occurs, if enabled. - -HGPluginInit This event is fired when the HGCommand plugin - first loads. +HGBufferSetup This event is fired just after HG buffer setup occurs, + if enabled. -HGPluginFinish This event is fired just after the HGCommand - plugin loads. +HGPluginInit This event is fired when the HGCommand plugin first + loads. -HGVimDiffFinish This event is fired just after the HGVimDiff - command executes to allow customization of, - for instance, window placement and focus. +HGPluginFinish This event is fired just after the HGCommand plugin + loads. -5.3 HGCommand buffer naming *hgcommand-naming* +HGVimDiffFinish This event is fired just after the HGVimDiff command + executes to allow customization of, for instance, + window placement and focus. -By default, the buffers containing the result of HG commands are nameless -scratch buffers. It is intended that buffer variables of those buffers be -used to customize the statusline option so that the user may fully control the -display of result buffers. +5.3 HGCommand buffer naming *hgcommand-naming* -If the old-style naming is desired, please enable the -|HGCommandNameResultBuffers| variable. Then, each result buffer will receive -a unique name that includes the source file name, the HG command, and any -extra data (such as revision numbers) that were part of the command. + By default, the buffers containing the result of HG commands are nameless + scratch buffers. It is intended that buffer variables of those buffers be + used to customize the statusline option so that the user may fully control + the display of result buffers. + + If the old-style naming is desired, please enable the + |HGCommandNameResultBuffers| variable. Then, each result buffer will + receive a unique name that includes the source file name, the HG command, + and any extra data (such as revision numbers) that were part of the + command. 5.4 HGCommand status line support *hgcommand-statusline* -It is intended that the user will customize the |'statusline'| option to -include HG result buffer attributes. A sample function that may be used in -the |'statusline'| option is provided by the plugin, HGGetStatusLine(). In -order to use that function in the status line, do something like the -following: + It is intended that the user will customize the |'statusline'| option to + include HG result buffer attributes. A sample function that may be used in + the |'statusline'| option is provided by the plugin, HGGetStatusLine(). In + order to use that function in the status line, do something like the + following: > + + set statusline=%<%f\ %{HGGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P +< + of which %{HGGetStatusLine()} is the relevant portion. -set statusline=%<%f\ %{HGGetStatusLine()}\ %h%m%r%=%l,%c%V\ %P + The sample HGGetStatusLine() function handles both HG result buffers and + HG-managed files if HGCommand buffer management is enabled (please see + |hgcommand-buffer-management|). -of which %{HGGetStatusLine()} is the relevant portion. +5.5 HGCommand buffer management *hgcommand-buffer-management* -The sample HGGetStatusLine() function handles both HG result buffers and -HG-managed files if HGCommand buffer management is enabled (please see -|hgcommand-buffer-management|). + The HGCommand plugin can operate in buffer management mode, which means + that it attempts to set two buffer variables ('HGRevision' and 'HGBranch') + upon entry into a buffer. This is rather slow because it means that 'hg + status' will be invoked at each entry into a buffer (during the |BufEnter| + autocommand). -5.5 HGCommand buffer management *hgcommand-buffer-management* + This mode is disabled by default. In order to enable it, set the + |HGCommandEnableBufferSetup| variable to a true (non-zero) value. Enabling + this mode simply provides the buffer variables mentioned above. The user + must explicitly include those in the |'statusline'| option if they are to + appear in the status line (but see |hgcommand-statusline| for a simple way + to do that). + +============================================================================== +9. Tips *hgcommand-tips* + +9.1 Split window annotation, by Michael Anderson > -The HGCommand plugin can operate in buffer management mode, which means that -it attempts to set two buffer variables ('HGRevision' and 'HGBranch') upon -entry into a buffer. This is rather slow because it means that 'hg status' -will be invoked at each entry into a buffer (during the |BufEnter| -autocommand). + :nmap <Leader>hgN :vs<CR><C-w>h<Leader>hgn:vertical res 40<CR> + \ggdddd:set scb<CR>:set nowrap<CR><C-w>lgg:set scb<CR> + \:set nowrap<CR> +< -This mode is disabled by default. In order to enable it, set the -|HGCommandEnableBufferSetup| variable to a true (non-zero) value. Enabling -this mode simply provides the buffer variables mentioned above. The user must -explicitly include those in the |'statusline'| option if they are to appear in -the status line (but see |hgcommand-statusline| for a simple way to do that). + This splits the buffer vertically, puts an annotation on the left (minus + the header) with the width set to 40. An editable/normal copy is placed on + the right. The two versions are scroll locked so they move as one. and + wrapping is turned off so that the lines line up correctly. The advantages + are... + + 1) You get a versioning on the right. + 2) You can still edit your own code. + 3) Your own code still has syntax highlighting. ============================================================================== -6. SSH "integration" *hgcommand-ssh* - -The following instructions are intended for use in integrating the -hgcommand.vim plugin with an SSH-based HG environment. - -Familiarity with SSH and HG are assumed. - -These instructions assume that the intent is to have a message box pop up in -order to allow the user to enter a passphrase. If, instead, the user is -comfortable using certificate-based authentication, then only instructions -6.1.1 and 6.1.2 (and optionally 6.1.4) need to be followed; ssh should then -work transparently. - -6.1 Environment settings *hgcommand-ssh-env* - -6.1.1 HGROOT should be set to something like: - - :ext:user@host:/path_to_repository - -6.1.2 HG_RSH should be set to: - - ssh - - Together, those settings tell HG to use ssh as the transport when - performing HG calls. +8. Known bugs *hgcommand-bugs* -6.1.3 SSH_ASKPASS should be set to the password-dialog program. In my case, - running gnome, it's set to: - - /usr/libexec/openssh/gnome-ssh-askpass - - This tells SSH how to get passwords if no input is available. - -6.1.4 OPTIONAL. You may need to set SSH_SERVER to the location of the hg - executable on the remote (server) machine. - -6.2 HG wrapper program *hgcommand-ssh-wrapper* - -Now you need to convince SSH to use the password-dialog program. This means -you need to execute SSH (and therefore HG) without standard input. The -following script is a simple perl wrapper that dissasociates the HG command -from the current terminal. Specific steps to do this may vary from system to -system; the following example works for me on linux. - -#!/usr/bin/perl -w -use strict; -use POSIX qw(setsid); -open STDIN, '/dev/null'; -fork and do {wait; exit;}; -setsid; -exec('hg', @ARGV); - -6.3 Configuring hgcommand.vim *hgcommand-ssh-config* + Please let me know if you run across any. -At this point, you should be able to use your wrapper script to invoke HG with -various commands, and get the password dialog. All that's left is to make HG -use your newly-created wrapper script. - -6.3.1 Tell hgcommand.vim what HG executable to use. The easiest way to do this - is globally, by putting the following in your .vimrc: - - let HGCommandHGExec=/path/to/hg/wrapper/script - -6.4 Where to go from here *hgcommand-ssh-other* - -The script given above works even when non-SSH HG connections are used, -except possibly when interactively entering the message for HG commit log -(depending on the editor you use... VIM works fine). Since the hgcommand.vim -plugin handles that message without a terminal, the wrapper script can be used -all the time. - -This allows mixed-mode operation, where some work is done with SSH-based HG -repositories, and others with pserver or local access. - -It is possible, though beyond the scope of the plugin, to dynamically set the -HG executable based on the HGROOT for the file being edited. The user -events provided (such as HGBufferCreated and HGBufferSetup) can be used to -set a buffer-local value (b:HGCommandHGExec) to override the HG executable -on a file-by-file basis. Alternatively, much the same can be done (less -automatically) by the various project-oriented plugins out there. - -It is highly recommended for ease-of-use that certificates with no passphrase -or ssh-agent are employed so that the user is not given the password prompt -too often. - -============================================================================== -9. Tips *hgcommand-tips* - -9.1 Split window annotation, by Michael Anderson - -:nmap <Leader>hgN :vs<CR><C-w>h<Leader>hgn:vertical res 40<CR> - \ggdddd:set scb<CR>:set nowrap<CR><C-w>lgg:set scb<CR> - \:set nowrap<CR> - -This splits the buffer vertically, puts an annotation on the left (minus the -header) with the width set to 40. An editable/normal copy is placed on the -right. The two versions are scroll locked so they move as one. and wrapping -is turned off so that the lines line up correctly. The advantages are... - -1) You get a versioning on the right. -2) You can still edit your own code. -3) Your own code still has syntax highlighting. - -============================================================================== - -8. Known bugs *hgcommand-bugs* - -Please let me know if you run across any. - -HGVimDiff, when using the original (real) source buffer as one of the diff -buffers, uses some hacks to try to restore the state of the original buffer -when the scratch buffer containing the other version is destroyed. There may -still be bugs in here, depending on many configuration details. + HGVimDiff, when using the original (real) source buffer as one of the diff + buffers, uses some hacks to try to restore the state of the original buffer + when the scratch buffer containing the other version is destroyed. There + may still be bugs in here, depending on many configuration details. ============================================================================== === END_DOC