summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/buffer.c5
-rw-r--r--src/proto/terminal.pro1
-rw-r--r--src/terminal.c9
-rw-r--r--src/testdir/test_terminal.vim12
-rw-r--r--src/version.c2
5 files changed, 29 insertions, 0 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 29cfb8a993..2983ca9fe8 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -3453,6 +3453,11 @@ buf_name_changed(buf_T *buf)
if (buf->b_ml.ml_mfp != NULL)
ml_setname(buf);
+#ifdef FEAT_TERMINAL
+ if (buf->b_term != NULL)
+ term_clear_status_text(buf->b_term);
+#endif
+
if (curwin->w_buffer == buf)
check_arg_idx(curwin); // check file name for arg list
#ifdef FEAT_TITLE
diff --git a/src/proto/terminal.pro b/src/proto/terminal.pro
index 061a668bf8..f5e3258d1f 100644
--- a/src/proto/terminal.pro
+++ b/src/proto/terminal.pro
@@ -31,6 +31,7 @@ int term_get_attr(win_T *wp, linenr_T lnum, int col);
void term_update_colors(term_T *term);
void term_update_colors_all(void);
char_u *term_get_status_text(term_T *term);
+void term_clear_status_text(term_T *term);
int set_ref_in_term(int copyID);
void f_term_dumpwrite(typval_T *argvars, typval_T *rettv);
int term_swap_diff(void);
diff --git a/src/terminal.c b/src/terminal.c
index fb8b2881fb..c00302d2b5 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -4638,6 +4638,15 @@ term_get_status_text(term_T *term)
}
/*
+ * Clear the cached value of the status text.
+ */
+ void
+term_clear_status_text(term_T *term)
+{
+ VIM_CLEAR(term->tl_status_text);
+}
+
+/*
* Mark references in jobs of terminals.
*/
int
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index cd7f477c26..62dfbf1050 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -159,6 +159,18 @@ func Test_terminal_hide_buffer_job_finished()
bwipe Xasdfasdf
endfunc
+func Test_terminal_rename_buffer()
+ let cmd = Get_cat_123_cmd()
+ let buf = term_start(cmd, {'term_name': 'foo'})
+ call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))})
+ call assert_equal('foo', bufname())
+ call assert_match('foo.*finished', execute('ls'))
+ file bar
+ call assert_equal('bar', bufname())
+ call assert_match('bar.*finished', execute('ls'))
+ exe 'bwipe! ' .. buf
+endfunc
+
func s:Nasty_exit_cb(job, st)
exe g:buf . 'bwipe!'
let g:buf = 0
diff --git a/src/version.c b/src/version.c
index 919a802d3c..7cadcebf04 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3624,
+/**/
3623,
/**/
3622,