diff src/ex_docmd.c @ 17644:daa1dea1c1b3 v8.1.1819

patch 8.1.1819: :pedit does not work with a popup preview window commit https://github.com/vim/vim/commit/1b6d9c4215a56f3dda4df6e05d655c853551ffbd Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 5 21:52:04 2019 +0200 patch 8.1.1819: :pedit does not work with a popup preview window Problem: :pedit does not work with a popup preview window. Solution: Avoid aborting with an error. (fixes https://github.com/vim/vim/issues/4777) Also double check that after prepare_tagpreview() the current window is not a popup window.
author Bram Moolenaar <Bram@vim.org>
date Mon, 05 Aug 2019 22:00:06 +0200
parents ccbf8c2a47ee
children a1437b8f2fac
line wrap: on
line diff
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7083,7 +7083,7 @@ do_exedit(
     int		need_hide;
     int		exmode_was = exmode_active;
 
-    if (ERROR_IF_POPUP_WINDOW)
+    if (eap->cmdidx != CMD_pedit && ERROR_IF_POPUP_WINDOW)
 	return;
     /*
      * ":vi" command ends Ex mode.
@@ -8798,9 +8798,11 @@ ex_pedit(exarg_T *eap)
 
     g_do_tagpreview = p_pvh;
     prepare_tagpreview(TRUE);
+
     keep_help_flag = bt_help(curwin_save->w_buffer);
     do_exedit(eap, NULL);
     keep_help_flag = FALSE;
+
     if (curwin != curwin_save && win_valid(curwin_save))
     {
 	/* Return cursor to where we were */
@@ -8808,6 +8810,13 @@ ex_pedit(exarg_T *eap)
 	redraw_later(VALID);
 	win_enter(curwin_save, TRUE);
     }
+# ifdef FEAT_TEXT_PROP
+    else if (WIN_IS_POPUP(curwin))
+    {
+	// can't keep focus in popup window
+	win_enter(firstwin, TRUE);
+    }
+# endif
     g_do_tagpreview = 0;
 }
 #endif