diff --git a/src/evalfunc.c b/src/evalfunc.c
index d2a0c64..62938c1 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -702,9 +702,10 @@
     {"popup_dialog",	2, 2, 0,	  f_popup_dialog},
     {"popup_filter_menu", 2, 2, 0,	  f_popup_filter_menu},
     {"popup_filter_yesno", 2, 2, 0,	  f_popup_filter_yesno},
+    {"popup_findinfo",	0, 0, 0,	  f_popup_findinfo},
+    {"popup_findpreview", 0, 0, 0,	  f_popup_findpreview},
     {"popup_getoptions", 1, 1, 0,	  f_popup_getoptions},
     {"popup_getpos",	1, 1, 0,	  f_popup_getpos},
-    {"popup_getpreview", 0, 0, 0,	  f_popup_getpreview},
     {"popup_hide",	1, 1, 0,	  f_popup_hide},
     {"popup_locate",	2, 2, 0,	  f_popup_locate},
     {"popup_menu",	2, 2, 0,	  f_popup_menu},
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index ee3291c..dceb1a7 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5154,7 +5154,8 @@
 	else if (use_popup)
 	{
 	    wp = popup_find_info_window();
-	    // TODO: set position
+	    if (wp != NULL)
+		popup_show(wp);
 	}
 	else
 # endif
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a64a0b4..aad1bae 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5808,7 +5808,7 @@
 	}
 # ifdef FEAT_TEXT_PROP
     // Also when 'previewpopup' is empty, it might have been cleared.
-    popup_close_preview(FALSE);
+    popup_close_preview();
 # endif
 }
 #endif
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 8f35ee5..03eb412 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -923,8 +923,8 @@
     }
 #if defined(FEAT_TEXT_PROP) && defined(FEAT_QUICKFIX)
     if (!has_info)
-	// close any popup info window
-	popup_close_preview(TRUE);
+	// hide any popup info window
+	popup_hide_info();
 #endif
 
     if (!resized)
@@ -944,8 +944,8 @@
     redraw_tabline = TRUE;
     status_redraw_all();
 #if defined(FEAT_TEXT_PROP) && defined(FEAT_QUICKFIX)
-    // close any popup info window
-    popup_close_preview(TRUE);
+    // hide any popup info window
+    popup_hide_info();
 #endif
 }
 
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
 
 /*
diff --git a/src/proto/popupwin.pro b/src/proto/popupwin.pro
index 9f6d433..0507114 100644
--- a/src/proto/popupwin.pro
+++ b/src/proto/popupwin.pro
@@ -27,6 +27,7 @@
 void f_popup_notification(typval_T *argvars, typval_T *rettv);
 void f_popup_close(typval_T *argvars, typval_T *rettv);
 void f_popup_hide(typval_T *argvars, typval_T *rettv);
+void popup_show(win_T *wp);
 void f_popup_show(typval_T *argvars, typval_T *rettv);
 void f_popup_settext(typval_T *argvars, typval_T *rettv);
 void popup_close(int id);
@@ -49,9 +50,11 @@
 win_T *popup_find_preview_window(void);
 int popup_is_popup(win_T *wp);
 win_T *popup_find_info_window(void);
-void f_popup_getpreview(typval_T *argvars, typval_T *rettv);
+void f_popup_findinfo(typval_T *argvars, typval_T *rettv);
+void f_popup_findpreview(typval_T *argvars, typval_T *rettv);
 int popup_create_preview_window(int info);
-void popup_close_preview(int info);
+void popup_close_preview(void);
+void popup_hide_info(void);
 void popup_set_title(win_T *wp);
 void popup_update_preview_title(void);
 /* vim: set ft=c : */
diff --git a/src/testdir/dumps/Test_popupwin_infopopup_align_3.dump b/src/testdir/dumps/Test_popupwin_infopopup_align_3.dump
index 6effda0..2599094 100644
--- a/src/testdir/dumps/Test_popupwin_infopopup_align_3.dump
+++ b/src/testdir/dumps/Test_popupwin_infopopup_align_3.dump
@@ -8,7 +8,7 @@
 |x| @7| +0#0000001#e0e0e08|w|r|d| @4|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
 |x| @7| +0#0000001#ffd7ff255|a|n|o|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
 |x| @7| +0#0000001#ffd7ff255|n|o|a|w|r|d| @1|W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffffff0@43
-|x| @7| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0&#e0e0e08|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0#0000000#ffffff0@27
+|x| @7| +0#0000001#ffd7ff255|t|h|a|t|w|r|d| |W| |e|x|t|r|a| |t|e|x|t| | +0#0000000#ffff4012|w|o|r|d|s| |a|r|e| |c|o@1|l| | +0&#ffffff0@27
 |t|e|s|t| |t|e|x|t| |a|w|o|r|d> @59
 |~+0#4040ff13&| @73
 |-+2#0000000&@1| |U|s|e|r| |d|e|f|i|n|e|d| |c|o|m|p|l|e|t|i|o|n| |(|^|U|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |4| +0#0000000&@26
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index 1f1f731..6c1ac52 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2162,7 +2162,7 @@
   call term_sendkeys(buf, "/another\<CR>\<C-W>}")
   call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_2', {})
 
-  call term_sendkeys(buf, ":call popup_move(popup_getpreview(), #{col: 15})\<CR>")
+  call term_sendkeys(buf, ":call popup_move(popup_findpreview(), #{col: 15})\<CR>")
   call term_sendkeys(buf, ":\<CR>")
   call VerifyScreenDump(buf, 'Test_popupwin_previewpopup_3', {})
 
@@ -2245,6 +2245,10 @@
 	      \ }
       endfunc
       call setline(1, 'text text text text text text text ')
+      func ChangeColor()
+	let id = popup_findinfo()
+	call popup_setoptions(id, #{highlight: 'InfoPopup'})
+      endfunc
   END
   return lines
 endfunc
@@ -2313,6 +2317,7 @@
   call VerifyScreenDump(buf, 'Test_popupwin_infopopup_align_2', {})
 
   call term_sendkeys(buf, "\<Esc>")
+  call term_sendkeys(buf, ":call ChangeColor()\<CR>")
   call term_sendkeys(buf, ":call setline(2, ['x']->repeat(10))\<CR>")
   call term_sendkeys(buf, "Gotest text test text\<C-X>\<C-U>")
   call VerifyScreenDump(buf, 'Test_popupwin_infopopup_align_3', {})
diff --git a/src/version.c b/src/version.c
index 6c8bd89..ae0bd9c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -762,6 +762,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1905,
+/**/
     1904,
 /**/
     1903,
