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
is1
for that - If
diff
is1
usebufwinnr()
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.