Thursday, June 18, 2015

Re: Diff mode via Tabs

On Thursday, June 18, 2015 at 7:52:53 AM UTC-5, David Fishburn wrote:
> On Thu, Jun 18, 2015 at 2:57 AM, John Beckett <johnb.beckett@gmail.com> wrote:
> David Fishburn wrote:
>
> > I use gVim for diffing from my source control system using:
>
> > gvim.exe -O -d file1.txt file2.txt
>
>
>
> I avoid problems by working in Vim. I use some external tool to generate a list of files I want to diff, then paste it into a temporary buffer in Vim. Either the external tool or a Vim script massages the list to come up with text like this:
>
>
>
> :tabe new1.txt
>
> :vert diffs old1.txt
>
>
>
>
> Thanks for the suggestion John.
>
>
> So basically I need to run some of my own commands, like you have done above.
>
>
> But I am running into the following issue.
>
>
> $ gvim.exe --servername DIFF -c "echo 1"
>
>
> $ gvim.exe --servername DIFF -c "echo 2"
>
>
>
> I was hoping the 2nd call to gvim would use the already running servername DIFF, but it instead launches a new vim instance called DIFF1
>
>
>
>
> So I tried some alternatives:
>
>
> $ gvim.exe --servername DIFF --remote-send "echo 1"
>
>
> This one tells me the vim instance DIFF isn't running (which it isn't).
>
>
> $ gvim.exe --servername DIFF --remote-expr "echo 1"
>
>
>
> Same with this one.
>
>
>
>
> Basically, I am trying to do this in a Windows batch / cmd file:
>
>
>
> function! DiffByTab( file1, file2 )
>     echomsg 'F1:'.a:file1.'  F2:'.a:file2
>     exec 'tabedit '.a:file1
>     exec 'vert diffsplit '.a:file2
> endfunction
>
>
>
>
>
> start gvim.exe --servername DIFF -c ":call DiffByTab( '%1', '%2' )" 
>
>
> I have this working, but if I call it a second time with another set of files, it just launches another instance of vim instead of using the one specified by --servername.
>
>

Ah, you have a function to do it already. The problem is that only --remote type commands are forwarded to an existing Vim instance; any other commands get directed at the Vim you are launching to send those remote commands.

See my other post; you can use your function in the existing Vim if you use --remote-send. But since it is a function, you could actually invoke it more easily using --remote-expr:

gvim --servername gDiff --remote-expr "DiffByTab('%1', '%2')"

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: