How to get list of files which are currently being diffed in vim
- by Yogesh Arora
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
Get a list of all listed buffers
For each of this buffers determine if diff is 1 for that
If diff is 1 use bufwinnr() to gets it window number.
From the window numbers determine which one is left and which one is right. left one will have smaller window number
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.