diff options
author | Wayne Rowcliffe <war1025@gmail.com> | 2014-08-02 20:19:33 -0500 |
---|---|---|
committer | Wayne Rowcliffe <war1025@gmail.com> | 2014-08-02 20:19:33 -0500 |
commit | 8cf45786b11c4c96444962227a960a3683d9f2b1 (patch) | |
tree | cb77b3c5ffb31809b004f08ef4288575ecfc1c40 /src/nvim/buffer.c | |
parent | 44afe610f8cfbb72141fddd4b13f5fe54386211f (diff) | |
download | rneovim-8cf45786b11c4c96444962227a960a3683d9f2b1.tar.gz rneovim-8cf45786b11c4c96444962227a960a3683d9f2b1.tar.bz2 rneovim-8cf45786b11c4c96444962227a960a3683d9f2b1.zip |
Add FOR_ALL_BUFFERS helper
Diffstat (limited to 'src/nvim/buffer.c')
-rw-r--r-- | src/nvim/buffer.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index a1efc98516..244fc2d3b2 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -115,9 +115,11 @@ open_buffer ( * If we can't create one for the current buffer, take another buffer */ close_buffer(NULL, curbuf, 0, FALSE); - for (curbuf = firstbuf; curbuf != NULL; curbuf = curbuf->b_next) + FOR_ALL_BUFFERS(curbuf) { if (curbuf->b_ml.ml_mfp != NULL) break; + } + /* * if there is no memfile at all, exit * This is OK, since there are no changes to lose. @@ -262,9 +264,11 @@ int buf_valid(buf_T *buf) { buf_T *bp; - for (bp = firstbuf; bp != NULL; bp = bp->b_next) - if (bp == buf) + FOR_ALL_BUFFERS(bp) { + if (bp == buf) { return TRUE; + } + } return FALSE; } @@ -946,9 +950,11 @@ do_buffer ( * If deleting the last (listed) buffer, make it empty. * The last (listed) buffer cannot be unloaded. */ - for (bp = firstbuf; bp != NULL; bp = bp->b_next) - if (bp->b_p_bl && bp != buf) + FOR_ALL_BUFFERS(bp) { + if (bp->b_p_bl && bp != buf) { break; + } + } if (bp == NULL && buf == curbuf) return empty_curbuf(TRUE, forceit, action); @@ -1047,9 +1053,11 @@ do_buffer ( if (buf == NULL) /* No loaded buffer, use unloaded one */ buf = bp; if (buf == NULL) { /* No loaded buffer, find listed one */ - for (buf = firstbuf; buf != NULL; buf = buf->b_next) - if (buf->b_p_bl && buf != curbuf) + FOR_ALL_BUFFERS(buf) { + if (buf->b_p_bl && buf != curbuf) { break; + } + } } if (buf == NULL) { /* Still no buffer, just take one */ if (curbuf->b_next != NULL) @@ -1671,7 +1679,7 @@ static buf_T *buflist_findname_file_id(char_u *ffname, FileID *file_id, { buf_T *buf; - for (buf = firstbuf; buf != NULL; buf = buf->b_next) { + FOR_ALL_BUFFERS(buf) { if ((buf->b_flags & BF_DUMMY) == 0 && !otherfile_buf(buf, ffname, file_id, file_id_valid)) { return buf; @@ -1745,7 +1753,7 @@ buflist_findpat ( return -1; } - for (buf = firstbuf; buf != NULL; buf = buf->b_next) + FOR_ALL_BUFFERS(buf) { if (buf->b_p_bl == find_listed && (!diffmode || diff_mode_buf(buf)) && buflist_match(prog, buf) != NULL) { @@ -1766,6 +1774,7 @@ buflist_findpat ( } match = buf->b_fnum; /* remember first match */ } + } vim_regfree(prog); if (match >= 0) /* found one match */ @@ -1836,7 +1845,7 @@ int ExpandBufnames(char_u *pat, int *num_file, char_u ***file, int options) */ for (round = 1; round <= 2; ++round) { count = 0; - for (buf = firstbuf; buf != NULL; buf = buf->b_next) { + FOR_ALL_BUFFERS(buf) { if (!buf->b_p_bl) /* skip unlisted buffers */ continue; p = buflist_match(prog, buf); @@ -1924,9 +1933,11 @@ buf_T *buflist_findnr(int nr) if (nr == 0) nr = curwin->w_alt_fnum; - for (buf = firstbuf; buf != NULL; buf = buf->b_next) - if (buf->b_fnum == nr) + FOR_ALL_BUFFERS(buf) { + if (buf->b_fnum == nr) { return buf; + } + } return NULL; } @@ -2345,7 +2356,7 @@ void buflist_slash_adjust(void) { buf_T *bp; - for (bp = firstbuf; bp != NULL; bp = bp->b_next) { + FOR_ALL_BUFFERS(bp) { if (bp->b_ffname != NULL) slash_adjust(bp->b_ffname); if (bp->b_sfname != NULL) @@ -4212,7 +4223,7 @@ void write_viminfo_bufferlist(FILE *fp) } fputs(_("\n# Buffer list:\n"), fp); - for (buf = firstbuf; buf != NULL; buf = buf->b_next) { + FOR_ALL_BUFFERS(buf) { if (buf->b_fname == NULL || !buf->b_p_bl || bt_quickfix(buf) @@ -4489,7 +4500,7 @@ void buf_delete_all_signs(void) { buf_T *buf; /* buffer we are checking for signs */ - for (buf = firstbuf; buf != NULL; buf = buf->b_next) { + FOR_ALL_BUFFERS(buf) { if (buf->b_signlist != NULL) { buf_delete_signs(buf); } |