# HG changeset patch # User Christian Brabandt # Date 1502650804 -7200 # Node ID 6afc7339c2ad0063b2f7864fec5bc16a5f4c6320 # Parent feca91869d8731b8e59c6b30762d918ffdfa7fae patch 8.0.0936: mode() returns wrong value for a terminal window commit https://github.com/vim/vim/commit/2bb7b6b0e477612cc098cba27cc63ec3d19a2527 Author: Bram Moolenaar Date: Sun Aug 13 20:58:33 2017 +0200 patch 8.0.0936: mode() returns wrong value for a terminal window Problem: Mode() returns wrong value for a terminal window. Solution: Return 't' when typed keys go to a job. diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -7849,6 +7849,10 @@ f_mode(typval_T *argvars, typval_T *rett buf[0] = 'x'; buf[1] = '!'; } +#ifdef FEAT_TERMINAL + else if (term_use_loop()) + buf[0] = 't'; +#endif else if (VIsual_active) { if (VIsual_select) diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -42,8 +42,13 @@ func Test_terminal_basic() call assert_match("^winpty://", job_info(g:job).tty) call assert_match("^winpty://", term_gettty('')) endif + call assert_equal('t', mode()) + call assert_match('%aR[^\n]*running]', execute('ls')) + call Stop_shell_in_terminal(buf) call term_wait(buf) + call assert_equal('n', mode()) + call assert_match('%aF[^\n]*finished]', execute('ls')) " closing window wipes out the terminal buffer a with finished job close diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 936, +/**/ 935, /**/ 934,