How to get list of files which are currently being diffed in vim

Posted by Yogesh Arora on Stack Overflow See other posts from Stack Overflow or by Yogesh Arora
Published on 2010-03-21T08:30:45Z Indexed on 2010/03/21 8:41 UTC
Read the original article Hit count: 418

Filed under:
|
|

I am writing a vim plugin in which i need to determine all those files which are currently being diffed. That is the ones for which diff is set. I have been going through the manual but could not find much.

Is it possible to do this.

This question is actually related to question how-to-detect-the-position-of-window-in-vim. In that question i was trying to get the position of window, so as to detect which one of the diffs is the right one and which is left one. The solution i got was to use winnr()

That solution can work only if there are only 2 windows(the ones being diffed). I want to make it generic so that even if multiple windows are open in vim, i can determine which one is on left and which one is right. This is what i was thinking to solve the problem

  1. Get a list of all listed buffers
  2. For each of this buffers determine if diff is 1 for that
  3. If diff is 1 use bufwinnr() to gets it window number.
  4. From the window numbers determine which one is left and which one is right. left one will have smaller window number
  5. And then determine if current buffer(in which alt-left`alt-right` is pressed) is left or right using winnr of current buffer.

Now the pieces that are missing are 1 and 2. For 1 ls can be used but i need to parse its output. Is there a straightfwd way to get list of all listed buffers. And then is there a way to check if for that buffer diff is 1 or not.

Any suggestions for a simpler solution are also appreciated.

© Stack Overflow or respective owner

Related posts about vim

Related posts about gvim