Hi Ben!

On Di, 09 Okt 2012, Ben Fritz wrote:

> On Tuesday, October 9, 2012 8:10:29 AM UTC-5, Christian Brabandt
> wrote:
> > 
> > You need to loop over each line and get the diff_hlID() for that
> > position.
> > 
> > Each line, where diff_hlID() returns zero you need to delete.
> > 
> > 
> > 
> > Of course, you can do it in one step ;)
> > 
> > 
> > 
> > exe ':g/'. join(map(filter(range(1,line('$')), '!diff_hlID(v:val,
> > 0)'), '
> > 
> > ''\%''.v:val."l"'), '\|'). '/d'
> > 
> > 
> > 
> > But, this works only once, you can't do this for all buffers at the
> > 
> > same time, since after you changed the first buffer the syntax
> > highlighting
> > 
> > for the other will be completely different and there will be no more
> > 
> > items being in common at the following buffers.
> > 
> 
> But, you could next undo the (single) change in the first buffer,
> repeat the process on the second buffer, then redo the change in the
> first buffer.

Even better, store the result for each window and execute it afterwards:

:let delete={}
:windo if &diff |:let delete[bufnr('')]= 
join(map(filter(range(1,line('$')), '!diff_hlID(v:val, 0)'), 
'''\%''.v:val."l"'), '\|')|endif
:windo if &diff | exe ":g/". delete[bufnr('')]."/d"|endif
:unlet delete

(each line starting with ':' is a single line, no linewraps)


regards,
Christian
-- 
Unter Rationalisierung verstehen die meisten Postminister, daß man
die Gebühren laufend erhöht und die Zustellung ständig verschlechtert.
                -- Cyril Northcote Parkinson

-- 
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

Reply via email to