patch 9.1.1599: :bnext doesn't go to unlisted help buffers Commit: https://github.com/vim/vim/commit/9662f334801597baa3c8d809834794b7a1986a17 Author: zeertzjq <zeert...@outlook.com> Date: Thu Aug 7 15:24:29 2025 +0200
patch 9.1.1599: :bnext doesn't go to unlisted help buffers Problem: :bnext doesn't go to unlisted help buffers when cycling through help buffers (after 9.1.0557). Solution: Don't check if a help buffer is listed (zeertzjq). From <https://github.com/vim/vim/issues/4478#issuecomment-498831057>: > I think we should fix that, since once you get to a non-help buffer > all unlisted buffers are skipped, thus you won't encounter another > help buffer. This implies that cycling through help buffers should work even if help buffers are unlisted. Otherwise this part of :bnext isn't really useful, as :h makes help buffers unlisted by default. related: #4478 related: #15198 closes: #17913 Signed-off-by: zeertzjq <zeert...@outlook.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/buffer.c b/src/buffer.c index 748ffdaa7..49db39d8f 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1371,8 +1371,11 @@ do_buffer_ext( } else { + int help_only = (flags & DOBUF_SKIPHELP) != 0 && buf->b_help; + bp = NULL; - while (count > 0 || (!unload && !buf->b_p_bl && bp != buf)) + while (count > 0 || (bp != buf && !unload + && !(help_only ? buf->b_help : buf->b_p_bl))) { // remember the buffer where we start, we come back there when all // buffers are unlisted. @@ -1390,14 +1393,17 @@ do_buffer_ext( if (buf == NULL) buf = lastbuf; } + // Avoid non-help buffers if the starting point was a help buffer + // and vice-versa. // Don't count unlisted buffers. - // Avoid non-help buffers if the starting point was a non-help buffer and - // vice-versa. - if (unload || (buf->b_p_bl - && ((flags & DOBUF_SKIPHELP) == 0 || buf->b_help == bp->b_help))) + if (unload + || (help_only + ? buf->b_help + : (buf->b_p_bl && ((flags & DOBUF_SKIPHELP) == 0 + || !buf->b_help)))) { - --count; - bp = NULL; // use this buffer as new starting point + --count; + bp = NULL; // use this buffer as new starting point } if (bp == buf) { diff --git a/src/testdir/test_buffer.vim b/src/testdir/test_buffer.vim index d6d668799..e16a537ef 100644 --- a/src/testdir/test_buffer.vim +++ b/src/testdir/test_buffer.vim @@ -167,6 +167,17 @@ func Test_bnext_bprev_help() b XHelp1 blast | call assert_equal(b4, bufnr()) + " Cycling through help buffers works even if they aren't listed. + b XHelp1 + setlocal nobuflisted + bnext | call assert_equal(b3, bufnr()) + bnext | call assert_equal(b1, bufnr()) + bprev | call assert_equal(b3, bufnr()) + setlocal nobuflisted + bprev | call assert_equal(b1, bufnr()) + bprev | call assert_equal(b3, bufnr()) + bnext | call assert_equal(b1, bufnr()) + %bwipe! endfunc diff --git a/src/version.c b/src/version.c index ff47328d4..d1923b1db 100644 --- a/src/version.c +++ b/src/version.c @@ -719,6 +719,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1599, /**/ 1598, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1uk0h4-000UaF-9y%40256bit.org.