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: