On Fri, 7 Apr 2006 at 11:43am, Hari Krishna Dara wrote: > > On Fri, 7 Apr 2006 at 2:44pm, Yakov Lerner wrote: > > > On 4/7/06, Eric Arnold <[EMAIL PROTECTED]> wrote: > > > > > > Is there a way to get full information about all the windows, i.e. whether a > > > window is against the left/right/top/bottom side, or to the right of another > > > window, etc.etc.? > > > > I'd do it like this. I'd write 4 functions, GetWinOnRight, GetWinOnLeft, > > GetWinAbove, GetWinBelow. Each function accepts window number, or > > '.' for current window, and returns window number or -1. > > > > Here's how I'd write GetWinOnRight: we try to do "wincmd l". If window > > number does not change, we return -1 (we're in rightmost window). If > > window number changed, we return its winnr(). > > > > function! GetWinOnRight(winnum) " untested > > let save_winnr = winnr() > > if winnum != '.' > > exe winnum."wincmd w" > > endif > > if winnr() != winnum > > return -1 > > endif > > silent! "wincmd l" > > if winnr() == winnum > > result = -1 > > else > > result = winnr() > > endif > > "restore window > > exe save_winnr."wincmd w" > > return result > > endfu > > > > Other 3 functions are similar, only use "wincmd h", "wincmd j", and > > "wincmd k". Applying those functions iteratively, you can discover > > full relation of windows in relation to each other. > > > > My genutils.vim plugin has a few functions that use almost the same > scheme to determine a few facts about windows. They are tested and avoid > side effects by modifying 'eventignore'. You might want to take a look > at the IsOnlyVerticalWindow() and IsOnlyHorizontalWindow() functions. > You can easily extend those functions using the other primitives such as > MarkActiveWindow() and RestoreActiveWindow(). If you want, I can include > any new functions you come up with, back in the genutils.vim so other > scripts can share. > >
Just wanted to add that there are other functions you might be able to use such as, GetNextWinnrInStack(), GetLastWinnrInStack(), MoveCursorToNextInWinStack(), MoveCursorToLastInWinStack(). If you haven't already figure out, I intended them as primitives to create a window management plugin at some point, but never got to it. Hope they come to use for you. -- Thanks, Hari __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
