Mercurial > vim
diff src/buffer.c @ 6945:957a3bb312fa v7.4.791
patch 7.4.791
Problem: The buffer list can be very long.
Solution: Add an argument to ":ls" to specify the type of buffer to list.
(Marcin Szamotulski)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 21 Jul 2015 15:03:06 +0200 |
parents | 62ba356c2d4e |
children | 7b5f9313f40b |
line wrap: on
line diff
--- a/src/buffer.c +++ b/src/buffer.c @@ -2761,7 +2761,20 @@ buflist_list(eap) for (buf = firstbuf; buf != NULL && !got_int; buf = buf->b_next) { /* skip unlisted buffers, unless ! was used */ - if (!buf->b_p_bl && !eap->forceit) + if ((!buf->b_p_bl && !eap->forceit && !vim_strchr(eap->arg, 'u')) + || (vim_strchr(eap->arg, 'u') && buf->b_p_bl) + || (vim_strchr(eap->arg, '+') + && ((buf->b_flags & BF_READERR) || !bufIsChanged(buf))) + || (vim_strchr(eap->arg, 'a') + && (buf->b_ml.ml_mfp == NULL || buf->b_nwindows == 0)) + || (vim_strchr(eap->arg, 'h') + && (buf->b_ml.ml_mfp == NULL || buf->b_nwindows != 0)) + || (vim_strchr(eap->arg, '-') && buf->b_p_ma) + || (vim_strchr(eap->arg, '=') && !buf->b_p_ro) + || (vim_strchr(eap->arg, 'x') && !(buf->b_flags & BF_READERR)) + || (vim_strchr(eap->arg, '%') && buf != curbuf) + || (vim_strchr(eap->arg, '#') + && (buf == curbuf || curwin->w_alt_fnum != buf->b_fnum))) continue; msg_putchar('\n'); if (buf_spname(buf) != NULL)