Mercurial > vim
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 |