Skip to content

Commit

Permalink
patch 8.2.3624: when renaming a terminal buffer status text is not up…
Browse files Browse the repository at this point in the history
…dated

Problem:    When renaming a terminal buffer the status text is not updated.
Solution:   Clear the cached status text when renaming a terminal buffer.
            (closes #9162)
  • Loading branch information
brammool committed Nov 19, 2021
1 parent 8b8d829 commit 3ad6953
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/buffer.c
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/proto/terminal.pro
Expand Up @@ -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);
Expand Down
9 changes: 9 additions & 0 deletions src/terminal.c
Expand Up @@ -4637,6 +4637,15 @@ term_get_status_text(term_T *term)
return term->tl_status_text;
}

/*
* 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.
*/
Expand Down
12 changes: 12 additions & 0 deletions src/testdir/test_terminal.vim
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -757,6 +757,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
3624,
/**/
3623,
/**/
Expand Down

0 comments on commit 3ad6953

Please sign in to comment.