diff --git a/src/popupwin.c b/src/popupwin.c
index b8fc8fd..482c5a6 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2058,6 +2058,18 @@
 	popup_close_and_callback(wp, &argvars[1]);
 }
 
+    static void
+popup_hide(win_T *wp)
+{
+    if ((wp->w_popup_flags & POPF_HIDDEN) == 0)
+    {
+	wp->w_popup_flags |= POPF_HIDDEN;
+	--wp->w_buffer->b_nwindows;
+	redraw_all_later(NOT_VALID);
+	popup_mask_refresh = TRUE;
+    }
+}
+
 /*
  * popup_hide({id})
  */
@@ -2067,10 +2079,17 @@
     int		id = (int)tv_get_number(argvars);
     win_T	*wp = find_popup_win(id);
 
-    if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) == 0)
+    if (wp != NULL)
+	popup_hide(wp);
+}
+
+    void
+popup_show(win_T *wp)
+{
+    if ((wp->w_popup_flags & POPF_HIDDEN) != 0)
     {
-	wp->w_popup_flags |= POPF_HIDDEN;
-	--wp->w_buffer->b_nwindows;
+	wp->w_popup_flags &= ~POPF_HIDDEN;
+	++wp->w_buffer->b_nwindows;
 	redraw_all_later(NOT_VALID);
 	popup_mask_refresh = TRUE;
     }
@@ -2085,13 +2104,8 @@
     int		id = (int)tv_get_number(argvars);
     win_T	*wp = find_popup_win(id);
 
-    if (wp != NULL && (wp->w_popup_flags & POPF_HIDDEN) != 0)
-    {
-	wp->w_popup_flags &= ~POPF_HIDDEN;
-	++wp->w_buffer->b_nwindows;
-	redraw_all_later(NOT_VALID);
-	popup_mask_refresh = TRUE;
-    }
+    if (wp != NULL)
+	popup_show(wp);
 }
 
 /*
@@ -3314,7 +3328,15 @@
 #endif
 
     void
-f_popup_getpreview(typval_T *argvars UNUSED, typval_T *rettv)
+f_popup_findinfo(typval_T *argvars UNUSED, typval_T *rettv)
+{
+    win_T   *wp = popup_find_info_window();
+
+    rettv->vval.v_number = wp == NULL ? 0 : wp->w_id;
+}
+
+    void
+f_popup_findpreview(typval_T *argvars UNUSED, typval_T *rettv)
 {
     win_T   *wp = popup_find_preview_window();
 
@@ -3355,10 +3377,13 @@
 }
 
 #if defined(FEAT_QUICKFIX) || defined(PROTO)
+/*
+ * Close any preview popup.
+ */
     void
-popup_close_preview(int info)
+popup_close_preview(void)
 {
-    win_T *wp = info ? popup_find_info_window() : popup_find_preview_window();
+    win_T *wp = popup_find_preview_window();
 
     if (wp != NULL)
     {
@@ -3369,6 +3394,18 @@
 	popup_close_and_callback(wp, &res);
     }
 }
+
+/*
+ * Hide the info popup.
+ */
+    void
+popup_hide_info(void)
+{
+    win_T *wp = popup_find_info_window();
+
+    if (wp != NULL)
+	popup_hide(wp);
+}
 #endif
 
 /*
