summaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-08-13 20:43:48 +0200
committerBram Moolenaar <Bram@vim.org>2017-08-13 20:43:48 +0200
commit304b64c9e6957fa3f552e0540ca786139b39a1c4 (patch)
tree0e66b4426d3193af79334fe971a1ea4f1e462638 /src/buffer.c
parent6b93b0e8388adc6c9bb50ce2c011d93d6cc41bc8 (diff)
patch 8.0.0935: cannot recognize a terminal buffer in :ls outputv8.0.0935
Problem: Cannot recognize a terminal buffer in :ls output. Solution: Use R for a running job and F for a finished job.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/buffer.c b/src/buffer.c
index a33b349d9d..3934941565 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -3034,6 +3034,8 @@ buflist_list(exarg_T *eap)
buf_T *buf;
int len;
int i;
+ int ro_char;
+ int changed_char;
for (buf = firstbuf; buf != NULL && !got_int; buf = buf->b_next)
{
@@ -3060,6 +3062,21 @@ buflist_list(exarg_T *eap)
if (message_filtered(NameBuff))
continue;
+ changed_char = (buf->b_flags & BF_READERR) ? 'x'
+ : (bufIsChanged(buf) ? '+' : ' ');
+#ifdef FEAT_TERMINAL
+ if (term_job_running(buf->b_term))
+ {
+ ro_char = 'R';
+ changed_char = ' '; /* bufIsChanged() returns TRUE to avoid
+ * closing, but it's not actually changed. */
+ }
+ else if (buf->b_term != NULL)
+ ro_char = 'F';
+ else
+#endif
+ ro_char = !buf->b_p_ma ? '-' : (buf->b_p_ro ? '=' : ' ');
+
msg_putchar('\n');
len = vim_snprintf((char *)IObuff, IOSIZE - 20, "%3d%c%c%c%c%c \"%s\"",
buf->b_fnum,
@@ -3068,9 +3085,8 @@ buflist_list(exarg_T *eap)
(curwin->w_alt_fnum == buf->b_fnum ? '#' : ' '),
buf->b_ml.ml_mfp == NULL ? ' ' :
(buf->b_nwindows == 0 ? 'h' : 'a'),
- !buf->b_p_ma ? '-' : (buf->b_p_ro ? '=' : ' '),
- (buf->b_flags & BF_READERR) ? 'x'
- : (bufIsChanged(buf) ? '+' : ' '),
+ ro_char,
+ changed_char,
NameBuff);
if (len > IOSIZE - 20)
len = IOSIZE - 20;