diff --git a/src/popupmenu.c b/src/popupmenu.c
index b88c653..005adb2 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -622,33 +622,36 @@
 }
 
 #if defined(FEAT_TEXT_PROP) && defined(FEAT_QUICKFIX)
-    static void
-pum_position_info_popup(void)
+/*
+ * Position the info popup relative to the popup menu item.
+ */
+    void
+pum_position_info_popup(win_T *wp)
 {
     int col = pum_col + pum_width + 1;
     int row = pum_row;
     int botpos = POPPOS_BOTLEFT;
 
-    curwin->w_popup_pos = POPPOS_TOPLEFT;
+    wp->w_popup_pos = POPPOS_TOPLEFT;
     if (Columns - col < 20 && Columns - col < pum_col)
     {
 	col = pum_col - 1;
-	curwin->w_popup_pos = POPPOS_TOPRIGHT;
+	wp->w_popup_pos = POPPOS_TOPRIGHT;
 	botpos = POPPOS_BOTRIGHT;
-	curwin->w_maxwidth = pum_col - 1;
+	wp->w_maxwidth = pum_col - 1;
     }
     else
-	curwin->w_maxwidth = Columns - col + 1;
-    curwin->w_maxwidth -= popup_extra_width(curwin);
+	wp->w_maxwidth = Columns - col + 1;
+    wp->w_maxwidth -= popup_extra_width(wp);
 
-    row -= popup_top_extra(curwin);
-    if (curwin->w_popup_flags & POPF_INFO_MENU)
+    row -= popup_top_extra(wp);
+    if (wp->w_popup_flags & POPF_INFO_MENU)
     {
 	if (pum_row < pum_win_row)
 	{
 	    // menu above cursor line, align with bottom
 	    row += pum_height;
-	    curwin->w_popup_pos = botpos;
+	    wp->w_popup_pos = botpos;
 	}
 	else
 	    // menu below cursor line, align with top
@@ -658,7 +661,7 @@
 	// align with the selected item
 	row += pum_selected - pum_first + 1;
 
-    popup_set_wantpos_rowcol(curwin, row, col);
+    popup_set_wantpos_rowcol(wp, row, col);
 }
 #endif
 
@@ -756,15 +759,21 @@
 	    tabpage_T   *curtab_save = curtab;
 	    int		res = OK;
 # ifdef FEAT_TEXT_PROP
-	    int		use_popup = strstr((char *)p_cot, "popup") != NULL;
+	    use_popup_T	use_popup;
 # else
-#  define use_popup 0
+#  define use_popup POPUP_NONE
 # endif
 # ifdef FEAT_TEXT_PROP
 	    has_info = TRUE;
+	    if (strstr((char *)p_cot, "popuphidden") != NULL)
+		use_popup = USEPOPUP_HIDDEN;
+	    else if (strstr((char *)p_cot, "popup") != NULL)
+		use_popup = USEPOPUP_NORMAL;
+	    else
+		use_popup = USEPOPUP_NONE;
 # endif
-	    // Open a preview window.  3 lines by default.  Prefer
-	    // 'previewheight' if set and smaller.
+	    // Open a preview window and set "curwin" to it.
+	    // 3 lines by default, prefer 'previewheight' if set and smaller.
 	    g_do_tagpreview = 3;
 	    if (p_pvh > 0 && p_pvh < g_do_tagpreview)
 		g_do_tagpreview = p_pvh;
@@ -838,7 +847,7 @@
 
 		    /* Increase the height of the preview window to show the
 		     * text, but no more than 'previewheight' lines. */
-		    if (repeat == 0 && !use_popup)
+		    if (repeat == 0 && use_popup == USEPOPUP_NONE)
 		    {
 			if (lnum > p_pvh)
 			    lnum = p_pvh;
@@ -863,9 +872,9 @@
 		    curwin->w_cursor.lnum = curwin->w_topline;
 		    curwin->w_cursor.col = 0;
 # ifdef FEAT_TEXT_PROP
-		    if (use_popup)
+		    if (use_popup != USEPOPUP_NONE)
 		    {
-			pum_position_info_popup();
+			pum_position_info_popup(curwin);
 			if (win_valid(curwin_save))
 			    redraw_win_later(curwin_save, SOME_VALID);
 		    }
@@ -907,9 +916,16 @@
 
 			if (!resized && win_valid(curwin_save))
 			{
+# ifdef FEAT_TEXT_PROP
+			    win_T *wp = curwin;
+# endif
 			    ++no_u_sync;
 			    win_enter(curwin_save, TRUE);
 			    --no_u_sync;
+# ifdef FEAT_TEXT_PROP
+			    if (use_popup == USEPOPUP_HIDDEN && win_valid(wp))
+				popup_hide(wp);
+# endif
 			}
 
 			/* May need to update the screen again when there are
