splice.txt   a plugin for resolving three-way merge conflicts.

                 _____       ___            ___       _____    
                / ___/____  / (_)__________(_) \  ____\___ \   
                \__ \/ __ \/ / / ___/ _ \__ \ \ \/ __ \/ __/   
               ___/ / /_/ / / / /__/  __/__\ \ \ \ \_\ \ \___  
              /____/ .___/_/_/\___/\___/ \___/\_\_\___. \____\ 
                  /_/                                  \_\     

                                  SPLICE 
       is a Vim plugin for resolving conflicts during three-way merges.

     It's designed to be used as a merge tool for version control systems
                       like Mercurial, Git and Bazaar.

==============================================================================
CONTENTS                                            Splice Splice-contents

    1. Version Control Integration .............. SpliceVCS
        1.1 Mercurial ........................... SpliceVCS_hg
        1.2 Git ................................. SpliceVCS_git
        1.3 Bazaar .............................. SpliceVCS_bzr
    2. Basic Usage .............................. SpliceUsage
        2.1 Files ............................... SpliceUsage_files
        2.2 Modes ............................... SpliceUsage_modes
        2.3 HUD ................................. SpliceUsage_hud
    3. Key Bindings ............................. SpliceKeys
        3.1 Mode Selection Keys ................. SpliceKeys_mode
        3.2 File Selection Keys ................. SpliceKeys_file
        3.3 Other Keys .......................... SpliceKeys_other
    4. Modes .................................... SpliceModes
        4.1 Grid ................................ SpliceModes_grid
        4.2 Loupe ............................... SpliceModes_loupe
        4.3 Compare ............................. SpliceModes_compare
        4.4 Path ................................ SpliceModes_path
    5. Configuration ............................ SpliceConfig
        5.1 debug ............................... SpliceConfig_debug
        5.2 disable ............................. SpliceConfig_disable
        5.3 initial_diff_grid ................... SpliceConfig_id_grid
        5.4 initial_diff_loupe .................. SpliceConfig_id_loupe
        5.5 initial_diff_compare ................ SpliceConfig_id_compare
        5.6 initial_diff_path ................... SpliceConfig_id_path
        5.7 initial_layout_grid ................. SpliceConfig_il_grid
        5.8 initial_layout_loupe ................ SpliceConfig_il_loupe
        5.9 initial_layout_compare .............. SpliceConfig_il_compare
        5.10 initial_layout_path ................ SpliceConfig_il_path
        5.11 initial_scrollbind_grid ............ SpliceConfig_is_grid
        5.12 initial_scrollbind_loupe ........... SpliceConfig_is_loupe
        5.13 initial_scrollbind_compare ......... SpliceConfig_is_compare
        5.14 initial_scrollbind_path ............ SpliceConfig_is_path
        5.15 initial_mode ....................... SpliceConfig_im
        5.16 wrap ............................... SpliceConfig_wrap
        5.17 prefix ............................. SpliceConfig_prefix
        5.18 leader ............................. SpliceConfig_leader
        5.19 bind_use_alt ....................... SpliceConfig_bind_alt
        5.20 bind_<command> ..................... SpliceConfig_bind_command
        5.21 bind_extra ......................... SpliceConfig_bind_extra
        5.22 hl_<highlight> ..................... SpliceConfig_highlights
        5.23 flash_cursor_timer ................. SpliceConfig_cursor_timer
        5.24 log_<config>........................ SpliceConfig_logging
    6. HUD ...................................... SpliceHUD
        6.1 Diffs Off ........................... SpliceHUD_DiffsOff
        6.2 Toggle Scrollbind ................... SpliceHUD_ToggleScrollbind
        6.3 Layout and diff ..................... SpliceHUD_Layout
        6.4 Diff Options Dialog ................. SpliceHUD_DiffOptions
        6.5 Splice Command Shortcuts Dialog ..... SpliceHUD_Shortcuts
    7. External Website ......................... SpliceExternal
    8. License .................................. SpliceLicense
    9. Bugs ..................................... SpliceBugs
   10. Contributing ............................. SpliceContributing
   11. Changelog ................................ SpliceChangelog
   12. Credits .................................. SpliceCredits


==============================================================================
1. Version Control Integration                                     SpliceVCS

Splice is meant to be called by your version control system when it needs you
to resolve merge conflicts.  You will need to configure your VCS to do this
before you can use Splice.

You may find these vim options useful when invoking Vim.
Use the following to startup with more columns

    -c "set columns=220"

If Splic9 is configured with multi-character shortcuts (used internally with
:map), use the following to prevent shortcut input, :mapped key sequences,
from being interrupted by a time out.

    -c "set ttimeout" -c "set notimeout"


*Note: If you'd like to use a console vim intead of Vim GUI, replace
       "gvim", or "mvim" on a Mac, in the following commands with "vim".
------------------------------------------------------------------------------
1.1 Mercurial                                                   SpliceVCS_hg

Add the following lines to "~/.hgrc": 

    [merge-tools]
    splice.executable = gvim
    splice.args = -f $base $local $other $output -c 'Splice9Init'
    splice.premerge = keep
    splice.priority = 1

Mercurial will now open Vim with Splice whenever a file has merge conflicts
which need to be resolved.

------------------------------------------------------------------------------
1.2 Git                                                        SpliceVCS_git

Add the following lines to "~/.gitconfig": 

    [merge]
    tool = splice

    [mergetool "splice"]
    cmd = "gvim -f $BASE $LOCAL $REMOTE $MERGED -c 'Splice9Init'"
    trustExitCode = true

If a "git merge" or "git pull" fails with merge conflicts you can run
"git mergetool".  Git will loop over all the files with conflicts and allow
you to resolve them with Vim and Splice.

------------------------------------------------------------------------------
1.3 Bazaar                                                     SpliceVCS_bzr

For Bazaar 2.4 or greater, add the following line to bazaar.conf:

    bzr.mergetool.splice = gvim {base} {this} {other} {result} -c 'Splice9Init'

Optionally, change the default merge tool by setting:

    bzr.default_mergetool = splice

For earlier versions of Bazaar, set the following entry in bazaar.conf:

    external_merge = gvim %b %t %o %r -c 'Splice9Init'

You can now use Vim with Splice from "bzr qconflicts".

==============================================================================
2. Basic Usage                                                   SpliceUsage

Splice takes a lot of inspiration for its user interface from Adobe Lightroom,
a photo editing program.

When resolving merge conflicts your goal is:

  - Examine the three files describing the changes being merged.
  - Combine these changes into a fourth file (the "result").
  - Save the result to disk.
  - Exit Vim with a non-error status code to tell the VCS the merge succeeded.

Splice has several "modes" to help you work with the various files.

------------------------------------------------------------------------------
2.1 Files                                                  SpliceUsage_files

When resolving a merge there are four files you will work with:

Original                                       SpliceUsage_files_original
    The original file, as it appears in the parent revision of the two
    revisions being merged.

One                                                 SpliceUsage_files_one
    The file as it appears in the first revision being merged.

    This is usually the "current" revision, or the one you are at when you
    run "hg merge REV").

Two                                                 SpliceUsage_files_two
    The file as it appears in the second revision being merged.

    This is usually the "target" revision, or the one you specify in the
    "hg merge REV" command).

Result                                           SpliceUsage_files_result
    The result of merging the two revisions of the file.

    This is the file that your version control system expects to contain the
    final result once you're done.

------------------------------------------------------------------------------
2.2 Modes                                                  SpliceUsage_modes

Splice has four "modes" or "views" for working with the files.

Grid                                               SpliceUsage_modes_grid
    Shows all four files at once to give you an overview of the merge.

    See SpliceModes_grid for more information.

Loupe                                             SpliceUsage_modes_loupe
    Shows a single file at a time for close examination of a single file.

    See SpliceModes_loupe for more information.

Compare                                         SpliceUsage_modes_compare
    Shows two files at a time for examining the movement of changes between
    pairs of files.

    See SpliceModes_compare for more information.

Path                                               SpliceUsage_modes_path
    Shows three files at a time:

      - The original
      - Either one or two
      - The result

    Used for examining how a change moves through one "path" or "branch"
    of the merge.

    See SpliceModes_path for more information.

------------------------------------------------------------------------------
2.3 HUD                                                      SpliceUsage_hud

The heads up display, HUD, is active. Command names are highlighted when the
mouse rolls over them and clicking them executes the comand. There are state
indicators and some popup dialogs that may be invoked.

See SpliceHUD for more information.


==============================================================================
3. Key Bindings                                                   SpliceKeys

By default all of Splice's key mappings are prefixed with a single key to
group them together and avoid shadowing other mappings.  By default this key
is '-' (minus/hyphen).

See the SpliceConfig_prefix setting if you'd like to change this prefix to
something else.

To use the Alt, aka Meta, key instead of a prefix see SpliceConfig_bind_alt.

Each command's key mapping can be individually specified. These mappings do
not use the prefix or the Alt key, see SpliceConfig_bind_command.

All keybindings are used across (almost) all modes.

The behavior of some of them changes depending on the current mode, but the
effects should be fairly intuitive.

------------------------------------------------------------------------------
3.1 Mode Selection Keys                                      SpliceKeys_mode

<prefix>g                                       Grid
                        Switch to grid view.

<prefix>l                                      Loupe
                        Switch to loupe view.

<prefix>c                                    Compare
                        Switch to compare view.

<prefix>p                                       Path
                        Switch to path view.

------------------------------------------------------------------------------
3.2 File Selection Keys                                      SpliceKeys_file

<prefix>o                                   Original
                        Select the original file.

<prefix>1                                        One
                        Select file one.

<prefix>2                                        Two
                        Select file two.

<prefix>r                                     Result
                        Select the result file.

------------------------------------------------------------------------------
3.3 Other Keys                                              SpliceKeys_other

<prefix>d                                       Diff
                        Cycle through various diff combinations.

<prefix>D                                    DiffOff
                        Turn off all diffs. If diffs are off, turn
                        diffs on at the same place in the cycle where
                        diffs were turned off. Especially useful in
                        `path mode` SpliceModes_path_diffs.

<prefix>u                                    UseHunk
                        Place a hunk from file one or two into
                        the result file.

<prefix>s                                     Scroll
                        Toggle scroll locking on and off.

<prefix><space>                               Layout
                        Cycle through various layouts of the
                        current view.

<prefix>n                                       Next
                        Move to the next unresolved conflict.

<prefix>N                                   Previous
                        Move to the previous unresolved conflict.

<prefix>q                                       Quit
                        Save the result file and exit Vim.

                        Indicates to the VCS that the merge was
                        successful and it should use the current
                        contents of the result file as the result.

<prefix>CC                                    Cancel
                        Exits Vim with an error code (like :cquit).
                        Indicates to the VCS that the merge was
                        NOT successful.

==============================================================================
4. Modes                                                         SpliceModes

This section describes each mode in detail.

------------------------------------------------------------------------------
4.1 Grid                                                    SpliceModes_grid

The grid view is used to get an overview of all files at once to get a birds'
eye view of the merge.

Grid Layouts                                     SpliceModes_grid_layouts
------------

    Layout 0                 Layout 1                        Layout 2
    +-------------------+    +--------------------------+    +---------------+
    |     Original      |    | One    | Result | Two    |    |      One      |
    |                   |    |        |        |        |    |               |
    +-------------------+    |        |        |        |    +---------------+
    |  One    |    Two  |    |        |        |        |    |     Result    |
    |         |         |    |        |        |        |    |               |
    +-------------------+    |        |        |        |    +---------------+
    |      Result       |    |        |        |        |    |      Two      |
    |                   |    |        |        |        |    |               |
    +-------------------+    +--------------------------+    +---------------+

Grid-Specific Key Bindings                          SpliceModes_grid_keys
--------------------------

<prefix>o                                   Original-Grid
                        Select the original file, but only in layout 0.

<prefix>u                                    UseHunk-Grid
                        Disabled in this mode.

<prefix>u1                                  UseHunk1-Grid
                        Place a hunk from file one into the result file.

<prefix>u2                                  UseHunk2-Grid
                        Place a hunk from file two into the result file.

<prefix>u0                                  UseHunk0-Grid
                        Place hunks from both file one and file two into the
                        result file; use '<<<', '===', .>>>' to delineate and
                        distinguish one and two.

Grid Diffs                                         SpliceModes_grid_diffs
----------

0 - No diff.
1 - Diff all files.

------------------------------------------------------------------------------
4.2 Loupe                                                  SpliceModes_loupe

The loupe view is used to focus on and examine a single file in detail.

Loupe Layouts                                   SpliceModes_loupe_layouts
-------------

    Layout 0
    +-----------------+
    | Any Single File |
    |                 |
    |                 |
    |                 |
    |                 |
    |                 |
    +-----------------+

Loupe-Specific Key Bindings                        SpliceModes_loupe_keys
---------------------------

<prefix>u                                    UseHunk-Loupe
                        Disabled in this mode.

Loupe Diffs                                       SpliceModes_loupe_diffs
-----------

No diffs are possible in loupe mode.

------------------------------------------------------------------------------
4.3 Compare                                              SpliceModes_compare

The compare view is used to examine the differences between two files at
a time.

Compare Layouts                               SpliceModes_compare_layouts
---------------

    Layout 0                 Layout 1
    +-------------------+    +-------------------+
    | Orig    | Result  |    | Orig              |
    |         |         |    | or One            |
    |    or   |    or   |    | or Two            |
    |         |         |    |                   |
    | One     | One     |    +-------------------+
    |         |         |    | One               |
    |    or   |    or   |    | or Two            |
    |         |         |    | or Result         |
    | Two     | Two     |    |                   |
    +-------------------+    +-------------------+

Compare-Specific Key Bindings                    SpliceModes_compare_keys
-----------------------------

<prefix>u                                    UseHunk-Compare
                        If the result file and file one/two are
                        both visible, place a hunk from one/two
                        into the result file.  Otherwise: disabled.

Compare Diffs                                   SpliceModes_compare_diffs
-------------

0 - No diff.
1 - Diff both files.

------------------------------------------------------------------------------
4.4 Path                                                    SpliceModes_path

The path view is used to view the flow of changed through one "path" or
"branch" of the merge.

Path Layouts                                     SpliceModes_path_layouts
------------

    Layout 0                        Layout 1
    +--------------------------+    +-------------------+
    | Orig   |        | Result |    | Orig              |
    |        | One    |        |    |                   |
    |        |        |        |    +-------------------+
    |        |   or   |        |    | One               |
    |        |        |        |    | or Two            |
    |        | Two    |        |    +-------------------+
    |        |        |        |    | Result            |
    |        |        |        |    |                   |
    +--------------------------+    +-------------------+


Path-Specific Key Bindings                          SpliceModes_path_keys
--------------------------

<prefix>u                                    UseHunk-Path
                        Place a hunk from file one or two (whichever
                        is currently in the center window) into the
                        result file.

Path Diffs                                         SpliceModes_path_diffs
----------

0 - No diff.
1 - Diff the original and result windows.
2 - Diff the original and center windows.
3 - Diff the center and result windows.
4 - Diff the original and center and result windows.

==============================================================================
5. Configuration                                                SpliceConfig

You can tweak the behavior of Splice9 by setting variables in your vimrc
file; the old Splice global variable names work with Splice9. However that
method is deprecated and using the `g:splice_config` dictionary is preferred.
For example, using a splice configuration dictionary, in vim9script 
        g:splice_config = {
        initial_mode: "compare",
        initial_layout_grid: 2,
        initial_layout_compare: 1,
    }

Or, using separate splice configuration statements, in a legacy script 
        let g:splice_config = {}
    let g:splice_config.initial_mode = "compare"
    let g:splice_config.initial_layout_grid = 2
    let g:splice_config.initial_layout_compare = 1

The deprecated global variable name is derived from the g:splice_config name
by prefixing the name with "splice_". For example 
    let g:splice_initial_mode = "compare"
sets the `initial_mode` configuration variable to `"compare"`.

*Note: When g:splice_config exists the deprecated global variables are
       ignored and NOT used.

------------------------------------------------------------------------------
5.1 g:splice_config.debug                                 SpliceConfig_debug

Ignored

------------------------------------------------------------------------------
5.2 g:splice_config.disable                             SpliceConfig_disable

Ignored

------------------------------------------------------------------------------
5.3 g:splice_config.initial_diff_grid                   SpliceConfig_id_grid

Set this to change the diff the grid mode starts in.

See SpliceModes_grid_diffs for the list of diffs.

Options: 0, or 1
Default: 0

------------------------------------------------------------------------------
5.4 g:splice_config.initial_diff_loupe                 SpliceConfig_id_loupe

Set this to change the diff the loupe mode starts in.

See SpliceModes_loupe_diffs for the list of diffs.

Options: 0
Default: 0

------------------------------------------------------------------------------
5.5 g:splice_config.initial_diff_compare             SpliceConfig_id_compare

Set this to change the diff the compare mode starts in.

See SpliceModes_compare_diffs for the list of diffs.

Options: 0 or 1
Default: 0

------------------------------------------------------------------------------
5.6 g:splice_config.initial_diff_path                   SpliceConfig_id_path

Set this to change the diff the path mode starts in.

See SpliceModes_path_diffs for the list of diffs.

options: 0, 1, 2, 3, or 4
Default: 0

------------------------------------------------------------------------------
5.7 g:splice_config.initial_layout_grid                 SpliceConfig_il_grid

Set this to change the layout the grid mode starts in.

See SpliceModes_grid_layouts for the list of layouts.

Options: 0, 1, or 2
Default: 0

------------------------------------------------------------------------------
5.8 g:splice_config.initial_layout_loupe               SpliceConfig_il_loupe

Set this to change the layout the loupe mode starts in.

See SpliceModes_loupe_layouts for the list of layouts.

Options: 0
Default: 0

------------------------------------------------------------------------------
5.9 g:splice_config.initial_layout_compare           SpliceConfig_il_compare

Set this to change the layout the compare mode starts in.

See SpliceModes_compare_layouts for the list of layouts.

Options: 0 or 1
Default: 0

------------------------------------------------------------------------------
5.10 g:splice_config.initial_layout_path                SpliceConfig_il_path

Set this to change the layout the path mode starts in.

See SpliceModes_path_layouts for the list of layouts.

Options: 0 or 1
Default: 0

------------------------------------------------------------------------------
5.11 g:splice_config.initial_scrollbind_grid            SpliceConfig_is_grid

Set this to 1 to enable scrollbind by default in grid mode.

Options: 0 or 1
Default: 0

------------------------------------------------------------------------------
5.12 g:splice_config.initial_scrollbind_loupe          SpliceConfig_is_loupe

Set this to 1 to enable scrollbind by default in loupe mode.

Options: 0 or 1
Default: 0

------------------------------------------------------------------------------
5.13 g:splice_config.initial_scrollbind_compare      SpliceConfig_is_compare

Set this to 1 to enable scrollbind by default in compare mode.

Options: 0 or 1
Default: 0

------------------------------------------------------------------------------
5.14 g:splice_config.initial_scrollbind_path            SpliceConfig_is_path

Set this to 1 to enable scrollbind by default in path mode.

Options: 0 or 1
Default: 0

------------------------------------------------------------------------------
5.15 g:splice_config.initial_mode                            SpliceConfig_im

Set this to change the mode Splice initially starts up in.

See SpliceModes for a description of each mode.

Options: "grid", "loupe", "compare", or "path"
Default: "grid"

------------------------------------------------------------------------------
5.16 g:splice_config.wrap                                  SpliceConfig_wrap

Set this to "wrap" or "nowrap" to set wrap or nowrap on all windows by
default.

By default Splice will use your default settings.

Options: "wrap", "nowrap"
Default: None (use the default settings)

------------------------------------------------------------------------------
5.17 g:splice_config.prefix                              SpliceConfig_prefix

Set this to change the prefix Splice will bind all of its mappings to; if not
set the value of SpliceConfig_leader is considered.

For example: 

    let g:splice_config.prefix = "<leader>t"

Will make all Splice commands start with <leader>t instead of the default '-'.

Options: Any valid key mapping string
Default: "-", if "leader" is not set

------------------------------------------------------------------------------
5.18 g:splice_config.leader                              SpliceConfig_leader

This is a way to specify SpliceConfig_prefix when it is not set. It is a way
to to avoid changing Vim's mapleader. See the SpliceChangelog.

For example: 

    let g:splice_config.leader = ',,'

If "prefix" is not set, will make Splice commands, start with ',,' instead of
the default '-'.

This is the algorithm used to initialize SpliceConfig_prefix 
        if not exist prefix
            if exist leader
                prefix = leader
            else
                prefix = '-'

Options: Any valid key mapping string
Default: None

------------------------------------------------------------------------------
5.19 g:splice_config.bind_use_alt                      SpliceConfig_bind_alt

Set this to 1 or true to use the Alt key instead of a prefix.

For example: 
    let g:splice_config.bin_use_alt = 1

Means hold down the Alt key and press the command character(s).

Options: 1 or true
Default: false

------------------------------------------------------------------------------
5.20 g:splice_config.bind_<command>                SpliceConfig_bind_command

Any command can have it's mapping explicitly set.

The possible commands are 
    Grid 'g'        Loupe 'l'       Compare 'c'     Path 'p'
    Diff 'd'        DiffOff 'D'     Next 'n'        Previous 'N'
    Layout ' '      Scroll 's'
    UseHunk 'u'     UseHunk0 'u0'   UseHunk1 'u1'   UseHunk2 'u2'
    Original 'o'    Result 'r'      One '1'         Two '2'
    Quit 'q'        Cancel 'CC'

For example, with the option 
    g:splice_config.bind_Grid = '<F7>'
press function key F7 for grid mode.

Options: Any valid key mapping string
Default: The default characters are shown in quotes above.

------------------------------------------------------------------------------
5.21 g:splice_config.bind_extra                      SpliceConfig_bind_extra

In addtion to the normal key bindings, addtional bindings can be specified.
See SpliceConfig_bind_command for the list of commands.

For example, with the option 
    bind_extra: [ ['<F12>', 'Grid'], ['<F7>', 'Grid'] ]
pressing F7 or F12 goes to `grid` mode. The normal `grid` mode mapping is
also in effect; so the shortucts display shows three mappings for `grid` mode.

Options: list of lists, like: [ [ 'map_keys', 'command_name' ], ... ]
Default: an empty list


------------------------------------------------------------------------------
5.22 g:splice_config.hl_<highlight>                  SpliceConfig_highlights

Splice9 uses several highlights. They can be configured. Most are in the HUD.

          config name      default            description 
        hl_label        'SpliceLabel'       3 region labels                HUD
        hl_sep          'SpliceLabel'       region separators              HUD
        hl_command      'SpliceCommand'     clickable commands             HUD
        hl_rollover     'Pmenu'             mouse over commands            HUD
        hl_active       'Keyword'           active mode              Modes-HUD
        hl_diff         'DiffChange'        participates in diff    Layout-HUD
        hl_alert_popup  'Pmenu'             problem popup                  
        hl_popup        'ColorColumn'       info popup, like for shortcuts
        hl_heading      'SpliceUnderline'   popup heading, like for shortcuts
        hl_conflict     'SpliceConflict'    conflict marker
        hl_cur_conflict 'SpliceCurConflict' current conflict marker
        hl_cursor_line  'SpliceUnderline'   all (diff) windows cursor line
        hl_flash_cursor 'Pmenu'             all windows flash cursor line

For example: 
    let g:splice_config.hl_label = 'WildMenu'
displays the HUD region labels with yellow marker or as WildMenu is defined.

Options: Any valid highlight

*Note: Bring up the shortcut popup by clicking on "Splice Commands:" at the
       top of the screen.
*Note: SpliceConflict link CursorColumn, SpliceCConflict link Todo


------------------------------------------------------------------------------
5.23 g:splice_config.flash_cursor_timer            SpliceConfig_cursor_timer

In some situations, when the windows are changed around, the cursor line in
each window is highlighted for a duration of time. The duration is specified
in milli-seconds.

For example, with the option 
    g:splice_config.flash_cursor_timer = 2000
the duration of the cursor line highlight is 2 seconds.

Options: number in milli-seconds
Default: 1000 - for a 1 second duration

------------------------------------------------------------------------------
5.24 g:splice_config.log_<config>                       SpliceConfig_logging

Splice logging has options. They specify whether logging is enabled, the log
file path and name, which logging categories are excluded.

          config name                 default 
        log_enable                  false
        log_file                    $HOME/SPLICE_LOG
        log_exclude_categories      ['focus', 'result', 'setting', 'diffopts']
        log_add_exclude_categories    []
        log_remove_exclude_categories []

For example, with the option 
    g:splice_config.log_remove_exclude_categories = [ 'result' ]
the `result` category is output into the log file.

Options: Any string; has no effect if not a known category

==============================================================================
6. HUD                                                             SpliceHUD

The heads up display, HUD, is active. Command names are highlighted when the
mouse rolls over them and clicking them executes the comand. There are state
indicators and some popup dialogs that may be invoked.

------------------------------------------------------------------------------
6.1 Diffs Off                                             SpliceHUD_DiffsOff

With a '*', the `diffs off` button indicates diff mode is on. In addition, in
given mode when diffs are turned on, the `diffs off` button becomes a toggle
for turning diff on/off.

    - D:*diffs off

------------------------------------------------------------------------------
6.2 Toggle Scrollbind                             SpliceHUD_ToggleScrollbind

With a '*', the the `toggle scrollbind` button indicates scrollbind is on.
ScrollBind is on automatically when diffs are on, otherwise it can be toggled. 

    - s:*toggle scrollbind

------------------------------------------------------------------------------
6.3 Layout and diff                                         SpliceHUD_Layout

When diffs are on/enabled, the Layout section highlights the files/windows
participating in the diff.

------------------------------------------------------------------------------
6.4 Diff Options Dialog                                SpliceHUD_DiffOptions

The `Diff Options` button brings up a modal dialog to change diff and wrap
settings. The dialog must the . Click on a boolean option line to toggle
its state. Click on a radio button option to select it and turn off any
other options in the group. Entering `CTRL-C` closes the dialog and no
actions are taken. `x` or `ESC` or clicking at the the bottom of the dialog
closes the dialog and applies the changes.

Some of vim's 'diffopt' options may be changed; refer to the vim help for
information about these optins. The supported boolean options are:

    - filler
    - iblank
    - icase
    - iwhite
    - iwhiteall
    - followwrap
    - internal
    - indent-heuristic

The splice `wrap` option may be changed. When the dialog is closed, the
option is immediately applied to the open windows, unless a `wrap-all-*`
button is enabled.

    - wrap

A `wrap-all-*` radio button is applied to the open windows when the dialog is
closed; it overrides the splice `wrap` setting. Use `wrap-all-no-change` to
prevent the wrap of the open windows from changing to the `wrap` setting.

    - wrap-all-on
    - wrap-all-off
    - wrap-all-no-change

------------------------------------------------------------------------------
6.5 Splice Command Shortcuts Dialog                      SpliceHUD_Shortcuts

Click on `Splice Commands:` to bring up a non-modal dialog with a list of
splice commands and their current shortcuts. Note that a command might have
more than one shortcut.

==============================================================================
7. External Website                                           SpliceExternal

The splice9 github pages have a variety of information, see

    The site    https://github.com/errael/splice9
    README      https://github.com/errael/splice9#splice9
    WIKI        https://github.com/errael/splice9/wiki

==============================================================================
8. License                                                     SpliceLicense

Splice9 is copyright Steve Losh, Ernie Rael & contributors, 2011+ and is
licensed under the MIT/X11 license.

==============================================================================
9. Bugs                                                           SpliceBugs

Please report any bugs you may find on the GitHub issue tracker:

    http://github.com/errael/splice9/issues

==============================================================================
10. Contributing                                          SpliceContributing

Think you can make Splice better?  Awesome.  New contributors are always
welcome.

Email a patch to errael@raelity.com or send a pull request.

    GitHub:    https://github.com/errael/splice9

==============================================================================
11. Changelog                                                SpliceChangelog

11.1 Splice9

v1.0.0
    * "UseBoth" command to select both "One" and "Two" hunks.
    * "Diff Options" HUD button to bring up dialog to configure vim's
      `diffopt` and splice9's `wrap` option and visible windows wrap.
    * A few addtional error popups for some things that were quietly ignored.
      v0.9
    * Pure vim9 release of splice, no python required.
    * Plug in compatible with splice.vim and its configuration.
    * New configuration style avaiable through `g:splice_config` dictionary.
    * HUD is hot; command names are clickable buttons.
    * "D: diffs off" extended to toggle off/on button.
    * All highlights are configurable.
    * Additional HUD status indicators without increasing HUD size.
    * Update vim help. Github Readme and wiki.

11.2 Splice

This is the splice.vim changelog

v1.1.0
    * Initial Python 3 support. v1.0.1
    * Fix the splice_config.prefix setting to actually take effect as
      documented.
    * Fix the grid view showing the wrong buffers sometimes.
    * Set the filetype in each buffer.
    * Fix showing files 2 and result in compare mode. v1.0.0
    * Rename to Splice.
    * Change the default prefix to '-' instead of <localleader>.
    * Various bugfixes. v0.2.0
    * Add threesome_leader as a config option. v0.1.1
    * Fix a bug when the user doesn't use :set hidden. v0.1.0
    * Preliminary "it probably won't eat your data" release! v0.0.8
    * A bunch of cleanup. v0.0.7
    * Add use hunk functionality. v0.0.6
    * Add the HUD.
    * Configurable wrapping. v0.0.5
    * Configurable scrollbinding. v0.0.4
    * Basic configuration settings. v0.0.3
    * Multiple layout support. v0.0.2
    * There's still not much working, but at least there's some help now!
      v0.0.1
    * Oh god nothing works please don't use this for real work yet.

==============================================================================
12. Credits                                                    SpliceCredits

Splice was originally written by Steve Losh after he got fed up with the lack
of a powerful, intuitive, beautiful three-way merge program on OS X.

A lot of the inspiration for the layout of the code came from vim-orgmode.

The UI is a combination of ideas from Conflict2Diff.vim, Fugitive.vim, and
Adobe Lightroom.

Splice9 was ported from vim9script/Python by Ernie Rael as a way to learn
vim9script and get more comfortable with merging. Splice9 is extended with a
clickable HUD and popup dialogs and better error checking and reporting.

==============================================================================

 vim:ts=4:et:ft=help: