> For example, we could add another method the backends could define, > call it list_tool_variants, and whenever the control flow goes from > run_merge_tool through setup_tool for a tool whose name ends with > [1-9], e.g. "foomerge3", we first see if there is "foomerge" tool > and if there is ask it if it knows about "foomerge3" variant by > calling its list_tool_variants. > > That way, we probably can remove the files for vimdiff2, vimdiff3, > gvimdiff2 and gvimdiff3 (gvimdiff needs to stay there, as we do not > want to make the name derivation rule too complex) only to hold a > single line ". vimdiff". Then the next person who adds yet another > set of backends based on a yet another reimplementation or skin of > vim would only have to add a single file in mergetools/ directory, > not three. This is what I managed to do. pudinha (2): Refactor vimdiff and bc merge tool variants Support nvim as merge tool contrib/completion/git-completion.bash | 4 +-- git-mergetool--lib.sh | 35 ++++++++++++++++++++------ mergetools/bc | 5 ++++ mergetools/bc3 | 1 - mergetools/gvimdiff3 | 1 - mergetools/{gvimdiff2 => nvimdiff} | 0 mergetools/vimdiff | 21 ++++++++++++---- mergetools/vimdiff2 | 1 - mergetools/vimdiff3 | 1 - 9 files changed, 51 insertions(+), 18 deletions(-) delete mode 100644 mergetools/bc3 delete mode 100644 mergetools/gvimdiff3 rename mergetools/{gvimdiff2 => nvimdiff} (100%) delete mode 100644 mergetools/vimdiff2 delete mode 100644 mergetools/vimdiff3 -- 2.27.0