summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-08-13 20:58:33 +0200
committerBram Moolenaar <Bram@vim.org>2017-08-13 20:58:33 +0200
commit2bb7b6b0e477612cc098cba27cc63ec3d19a2527 (patch)
tree0a4badc5a5b096260256edb358cfb184fd0b901f
parent304b64c9e6957fa3f552e0540ca786139b39a1c4 (diff)
patch 8.0.0936: mode() returns wrong value for a terminal windowv8.0.0936
Problem: Mode() returns wrong value for a terminal window. Solution: Return 't' when typed keys go to a job.
-rw-r--r--src/evalfunc.c4
-rw-r--r--src/testdir/test_terminal.vim5
-rw-r--r--src/version.c2
3 files changed, 11 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 3d657f73e6..2be7fe1bf2 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -7849,6 +7849,10 @@ f_mode(typval_T *argvars, typval_T *rettv)
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
index 605292e6a5..e18087bbdb 100644
--- 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
index 61ee3c06e0..ccf857caf4 100644
--- 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,