comparison src/globals.h @ 9649:fd9727ae3c49 v7.4.2101

commit https://github.com/vim/vim/commit/2932359000b2f918d5fade79ea4d124d5943cd07 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jul 24 22:04:11 2016 +0200 patch 7.4.2101 Problem: Looping over windows, buffers and tab pages is inconsistant. Solution: Use FOR_ALL_ macros everywhere. (Yegappan Lakshmanan)
author Christian Brabandt <cb@256bit.org>
date Sun, 24 Jul 2016 22:15:07 +0200
parents 5eaa708ab50d
children 08df6ad72c56
comparison
equal deleted inserted replaced
9648:227649fd4301 9649:fd9727ae3c49
546 EXTERN win_T *firstwin; /* first window */ 546 EXTERN win_T *firstwin; /* first window */
547 EXTERN win_T *lastwin; /* last window */ 547 EXTERN win_T *lastwin; /* last window */
548 EXTERN win_T *prevwin INIT(= NULL); /* previous window */ 548 EXTERN win_T *prevwin INIT(= NULL); /* previous window */
549 # define W_NEXT(wp) ((wp)->w_next) 549 # define W_NEXT(wp) ((wp)->w_next)
550 # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next) 550 # define FOR_ALL_WINDOWS(wp) for (wp = firstwin; wp != NULL; wp = wp->w_next)
551 # define FOR_ALL_TABPAGES(tp) for (tp = first_tabpage; tp != NULL; tp = tp->tp_next)
552 # define FOR_ALL_WINDOWS_IN_TAB(tp, wp) \
553 for ((wp) = ((tp) == NULL || (tp) == curtab) \
554 ? firstwin : (tp)->tp_firstwin; (wp); (wp) = (wp)->w_next)
551 /* 555 /*
552 * When using this macro "break" only breaks out of the inner loop. Use "goto" 556 * When using this macro "break" only breaks out of the inner loop. Use "goto"
553 * to break out of the tabpage loop. 557 * to break out of the tabpage loop.
554 */ 558 */
555 # define FOR_ALL_TAB_WINDOWS(tp, wp) \ 559 # define FOR_ALL_TAB_WINDOWS(tp, wp) \
559 #else 563 #else
560 # define firstwin curwin 564 # define firstwin curwin
561 # define lastwin curwin 565 # define lastwin curwin
562 # define W_NEXT(wp) NULL 566 # define W_NEXT(wp) NULL
563 # define FOR_ALL_WINDOWS(wp) wp = curwin; 567 # define FOR_ALL_WINDOWS(wp) wp = curwin;
568 # define FOR_ALL_TABPAGES(tp) for (;FALSE;)
569 # define FOR_ALL_WINDOWS_IN_TAB(tp, wp) wp = curwin;
564 # define FOR_ALL_TAB_WINDOWS(tp, wp) wp = curwin; 570 # define FOR_ALL_TAB_WINDOWS(tp, wp) wp = curwin;
565 #endif 571 #endif
566 572
567 EXTERN win_T *curwin; /* currently active window */ 573 EXTERN win_T *curwin; /* currently active window */
568 574
592 * 'lastbuf' to the last entry and 'curbuf' to the currently active buffer. 598 * 'lastbuf' to the last entry and 'curbuf' to the currently active buffer.
593 */ 599 */
594 EXTERN buf_T *firstbuf INIT(= NULL); /* first buffer */ 600 EXTERN buf_T *firstbuf INIT(= NULL); /* first buffer */
595 EXTERN buf_T *lastbuf INIT(= NULL); /* last buffer */ 601 EXTERN buf_T *lastbuf INIT(= NULL); /* last buffer */
596 EXTERN buf_T *curbuf INIT(= NULL); /* currently active buffer */ 602 EXTERN buf_T *curbuf INIT(= NULL); /* currently active buffer */
603
604 #define FOR_ALL_BUFFERS(buf) for (buf = firstbuf; buf != NULL; buf = buf->b_next)
597 605
598 /* Flag that is set when switching off 'swapfile'. It means that all blocks 606 /* Flag that is set when switching off 'swapfile'. It means that all blocks
599 * are to be loaded into memory. Shouldn't be global... */ 607 * are to be loaded into memory. Shouldn't be global... */
600 EXTERN int mf_dont_release INIT(= FALSE); /* don't release blocks */ 608 EXTERN int mf_dont_release INIT(= FALSE); /* don't release blocks */
601 609