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: 422
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.
© Stack Overflow or respective owner