changeset 20375:b790d00d5ccb v8.2.0743

patch 8.2.0743: can move to another buffer from a terminal in popup window Commit: https://github.com/vim/vim/commit/5aed0ccb965dbad4b60f4c77c9c4455a9379e73c Author: Bram Moolenaar <Bram@vim.org> Date: Tue May 12 22:02:21 2020 +0200 patch 8.2.0743: can move to another buffer from a terminal in popup window Problem: Can move to another buffer from a terminal in popup window. Solution: Do not allow "gf" or editing a file. (closes https://github.com/vim/vim/issues/6072)
author Bram Moolenaar <Bram@vim.org>
date Tue, 12 May 2020 22:15:04 +0200
parents 5e54d73063b8
children daf902b22ec0
files src/ex_cmds.c src/normal.c src/testdir/test_popupwin.vim src/version.c
diffstat 4 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2484,6 +2484,11 @@ do_ecmd(
     int		did_inc_redrawing_disabled = FALSE;
     long        *so_ptr = curwin->w_p_so >= 0 ? &curwin->w_p_so : &p_so;
 
+#ifdef FEAT_PROP_POPUP
+    if (ERROR_IF_TERM_POPUP_WINDOW)
+	return FAIL;
+#endif
+
     if (eap != NULL)
 	command = eap->do_ecmd_cmd;
     set_bufref(&old_curbuf, curbuf);
--- a/src/normal.c
+++ b/src/normal.c
@@ -4169,6 +4169,10 @@ nv_gotofile(cmdarg_T *cap)
 	clearop(cap->oap);
 	return;
     }
+#ifdef FEAT_PROP_POPUP
+    if (ERROR_IF_TERM_POPUP_WINDOW)
+	return;
+#endif
 
     ptr = grab_file_name(cap->count1, &lnum);
 
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2425,8 +2425,16 @@ func Test_popupwin_terminal_buffer()
   call assert_equal(winnr(), winnr('k'))
   call assert_equal(winnr(), winnr('h'))
   call assert_equal(winnr(), winnr('l'))
+
   " Cannot quit while job is running
   call assert_fails('call feedkeys("\<C-W>:quit\<CR>", "xt")', 'E948:')
+
+  " Cannot enter Terminal-Normal mode.
+  call feedkeys("xxx\<C-W>N", 'xt')
+  call assert_fails('call feedkeys("gf", "xt")', 'E863:')
+  call feedkeys("a\<C-U>", 'xt')
+
+  " Exiting shell closes popup window
   call feedkeys("exit\<CR>", 'xt')
   " Wait for shell to exit
   sleep 100m
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    743,
+/**/
     742,
 /**/
     741,