diff options
author | Bram Moolenaar <bram@vim.org> | 2015-07-21 15:03:06 +0200 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2015-07-21 15:03:06 +0200 |
commit | 5eacc8266b9de87170a7fe4a119f3fb956c5199d (patch) | |
tree | f0e0441582f433c10c3aca836e294d722888eb8e /src | |
parent | 70855f86dc79537113b158c57b7acdd2b485d783 (diff) | |
download | vim-5eacc8266b9de87170a7fe4a119f3fb956c5199d.tar.gz |
Problem: The buffer list can be very long.
Solution: Add an argument to ":ls" to specify the type of buffer to list.
(Marcin Szamotulski)
Diffstat (limited to 'src')
-rw-r--r-- | src/buffer.c | 15 | ||||
-rw-r--r-- | src/ex_cmds.h | 6 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 19 insertions, 4 deletions
diff --git a/src/buffer.c b/src/buffer.c index c4d5e340..19df710e 100644 --- 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) diff --git a/src/ex_cmds.h b/src/ex_cmds.h index 21d42d55..79459569 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -217,7 +217,7 @@ EX(CMD_browse, "browse", ex_wrongmodifier, NEEDARG|EXTRA|NOTRLCOM|CMDWIN, ADDR_LINES), EX(CMD_buffers, "buffers", buflist_list, - BANG|TRLBAR|CMDWIN, + BANG|EXTRA|TRLBAR|CMDWIN, ADDR_LINES), EX(CMD_bufdo, "bufdo", ex_listdo, BANG|NEEDARG|EXTRA|NOTRLCOM|RANGE|NOTADR|DFLALL, @@ -526,7 +526,7 @@ EX(CMD_file, "file", ex_file, RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR, ADDR_LINES), EX(CMD_files, "files", buflist_list, - BANG|TRLBAR|CMDWIN, + BANG|EXTRA|TRLBAR|CMDWIN, ADDR_LINES), EX(CMD_filetype, "filetype", ex_filetype, EXTRA|TRLBAR|CMDWIN, @@ -847,7 +847,7 @@ EX(CMD_lwindow, "lwindow", ex_cwindow, RANGE|NOTADR|COUNT|TRLBAR, ADDR_LINES), EX(CMD_ls, "ls", buflist_list, - BANG|TRLBAR|CMDWIN, + BANG|EXTRA|TRLBAR|CMDWIN, ADDR_LINES), EX(CMD_move, "move", ex_copymove, RANGE|WHOLEFOLD|EXTRA|TRLBAR|CMDWIN|MODIFY, diff --git a/src/version.c b/src/version.c index 18ba7d0f..2b288722 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 791, +/**/ 790, /**/ 789, |