diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-08-13 20:43:48 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-08-13 20:43:48 +0200 |
commit | 304b64c9e6957fa3f552e0540ca786139b39a1c4 (patch) | |
tree | 0e66b4426d3193af79334fe971a1ea4f1e462638 /src/buffer.c | |
parent | 6b93b0e8388adc6c9bb50ce2c011d93d6cc41bc8 (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.c | 22 |
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; |