Splice9 merge tool

33 views
Skip to first unread message

Ernie Rael

unread,
Aug 27, 2023, 8:42:54 PM8/27/23
to vim...@googlegroups.com
Greetings,

In March of 2022 I started porting Splice[1], a 3 way merge tool written in
vim/python, to vim9script. I had never used vimscript and felt weak when
it came
to merging; so "two birds with one stone". There's now a pure vim9script
version. It has some UI enhancements.

I'm looking for suggestions/recommendations on setting it up for general
availability. Currently I've got everything under
~/pack/random-packages/start/splice-vim with one file in .../plugin and
everything else under .../autoload/splice9. All imports are relative to
facilitate having multiple versions installed.

I think using autoload for everything was a mistake and caused some of
the weird
errors I see when screwing around what get's imported and/or what get
declared
with proper type. In particular if in some file a variable gets exported
and the
file does imports, autoload can run into problems; now that Splice9 is
stable,
I'll play around with it. I'm guessing the right thing to do is put app
files
under import and "library" type files under autoload.

Splice9 is never, well, hardly ever, run from the command line. It it
run by the
version control tool. Currently I can have .../autoload/splice9 be a
symlink to
my VCS work area, very simple. But for general use I know there are a
variety of
ways to provide it, packadd and package managers, and I see this
EditorConfig
plugin that's now shipping with vim and I wonder if that's relevant, and
possibly a myriad of other approaches.

Anyway, suggestions and/or pointer to docs in this area that discuss best
practices appreciated.

Some of the Splice9 UI enhancements:
    - Additional status info (compact) in the HUD (Heads Up Display).
    - The action buttons in the HUD are clickable.
    - Rollover highlight for active HUD buttons.
    - Click for popup of shortcuts.
    - Can specify each action's ":map"/shortcut individually.
    - Can set "use meta" and the meta key is used instead of using
g:mapleader.
    - Version control system configuration the same as original Splice.

[1] https://docs.stevelosh.com/splice.vim/

-ernie

Christian Brabandt

unread,
Aug 28, 2023, 3:13:14 PM8/28/23
to vim...@googlegroups.com
Is that a request to package this with Vim? ;)

I would be interested into trying this out, as I have had to fix a few
conflicts already, but I just used the git mergetool -t vimdiff (which
worked surprisingly well, once one knows what all those different files
are)

Best,
Christian
--
All life evolves by the differential survival of replicating entities.
-- Dawkins

Ernie Rael

unread,
Aug 28, 2023, 3:45:32 PM8/28/23
to vim...@googlegroups.com
No, it wasn't. I've never published, or otherwise made available,
vimscript/vim9script (this is the first vim[9]script I've done). I have
seen a lot of talk in this forum on managing plugins and such and I'm
wondering what's the best way to do it.

If people have some experience with Splice9 and want to make it
available with vim at some point, I'm not adverse to it. But I think
it's a bit premature...

-ernie

>
> I would be interested into trying this out,
There's a video accessible through steve's website that shows how to use
the tool, as well as configuring git/mercurial/others to use it. Once
vim9 is stable (any day now)...

Christian Brabandt

unread,
Aug 28, 2023, 3:50:30 PM8/28/23
to vim...@googlegroups.com

On Mo, 28 Aug 2023, Ernie Rael wrote:
> On 23/08/28 12:13 PM, Christian Brabandt wrote:
> No, it wasn't. I've never published, or otherwise made available,
> vimscript/vim9script (this is the first vim[9]script I've done). I have seen
> a lot of talk in this forum on managing plugins and such and I'm wondering
> what's the best way to do it.

Vim9 script should be pretty usable already. Except for OOP features, I
mean. I'd suggest you publish it somehwere to be able to get some
feedback.

Best,
Christian
--
Yow! Are we wet yet?

Ernie Rael

unread,
Aug 28, 2023, 4:19:18 PM8/28/23
to vim...@googlegroups.com
Splice9 makes considerable use of vim9classes. When classes were first
available last March I filed a bunch of issues. Only in the last few
days have all the issues I filed been resolved. This last pending issue
about access rules affects Splice9.

-ernie

>
> Best,
> Christian


Ernie Rael

unread,
Sep 8, 2023, 8:37:34 PM9/8/23
to vim...@googlegroups.com
On 23/08/28 12:13 PM, Christian Brabandt wrote:
> On So, 27 Aug 2023, Ernie Rael wrote:
>
>> Greetings,
>>
>> In March of 2022 I started porting Splice[1], a 3 way merge tool written in
>> vim/python, to vim9script.[...]
>>
>> [1] https://docs.stevelosh.com/splice.vim/
> Is that a request to package this with Vim? ;)
>
> I would be interested into trying this out, as I have had to fix a few
> conflicts already, but I just used the git mergetool -t vimdiff (which
> worked surprisingly well, once one knows what all those different files
> are)
>
> Best,
> Christian

There's an RC1 release of Splice9[1], a pure vim9script implementation.
I've got it set to minimal patch level 1880. The repo's README has
instructions on hooking it up to Git (or mercurial or bazzar). Enjoy,
and of course let me know of any issues/questions and/or open an issue.

[1] https://github.com/errael/splice9/releases/tag/v0.9-RC1

-ernie

Reply all
Reply to author
Forward
0 new messages