diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 0a51d8e..f913fb5 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -204,7 +204,8 @@
 #else
 # define ex_tearoff		ex_ni
 #endif
-#if (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK)) && defined(FEAT_MENU)
+#if (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK) \
+	|| defined(FEAT_TERM_POPUP_MENU)) && defined(FEAT_MENU)
 static void	ex_popup(exarg_T *eap);
 #else
 # define ex_popup		ex_ni
@@ -8741,11 +8742,21 @@
 }
 #endif
 
-#if (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK)) && defined(FEAT_MENU)
+#if (defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK) \
+	|| defined(FEAT_TERM_POPUP_MENU)) && defined(FEAT_MENU)
     static void
 ex_popup(exarg_T *eap)
 {
-    gui_make_popup(eap->arg, eap->forceit);
+# if defined(FEAT_GUI_MSWIN) || defined(FEAT_GUI_GTK)
+    if (gui.in_use)
+	gui_make_popup(eap->arg, eap->forceit);
+#  ifdef FEAT_TERM_POPUP_MENU
+    else
+#  endif
+# endif
+# ifdef FEAT_TERM_POPUP_MENU
+	pum_make_popup(eap->arg, eap->forceit);
+# endif
 }
 #endif
 
diff --git a/src/menu.c b/src/menu.c
index 107cabc..c04cd49 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -1891,6 +1891,16 @@
     return MENU_INDEX_INVALID;
 }
 
+    int
+get_menu_mode_flag(void)
+{
+    int mode = get_menu_mode();
+
+    if (mode == MENU_INDEX_INVALID)
+	return 0;
+    return 1 << mode;
+}
+
 /*
  * Display the Special "PopUp" menu as a pop-up at the current mouse
  * position.  The "PopUpn" menu is for Normal mode, "PopUpi" for Insert mode,
@@ -2044,13 +2054,7 @@
     if (modes != 0x0)
 	mode = modes;
     else
-    {
-	mode = get_menu_mode();
-	if (mode == MENU_INDEX_INVALID)
-	    mode = 0;
-	else
-	    mode = (1 << mode);
-    }
+	mode = get_menu_mode_flag();
 
     if (force_menu_update || mode != prev_mode)
     {
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 6cfd95a..9b5f750 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -1132,12 +1132,16 @@
 #ifdef FEAT_BEVAL_TERM
     int		save_bevalterm = p_bevalterm;
 #endif
+    int		mode;
 
     pum_undisplay();
     pum_size = 0;
+    mode = get_menu_mode_flag();
 
     for (mp = menu->children; mp != NULL; mp = mp->next)
-	++pum_size;
+	if (menu_is_separator(mp->dname)
+		|| (mp->modes & mp->enabled & mode))
+	    ++pum_size;
 
     array = (pumitem_T *)alloc_clear((unsigned)sizeof(pumitem_T) * pum_size);
     if (array == NULL)
@@ -1146,7 +1150,7 @@
     for (mp = menu->children; mp != NULL; mp = mp->next)
 	if (menu_is_separator(mp->dname))
 	    array[idx++].pum_text = (char_u *)"";
-	else
+	else if (mp->modes & mp->enabled & mode)
 	    array[idx++].pum_text = mp->dname;
 
     pum_array = array;
@@ -1232,6 +1236,24 @@
     mch_setmouse(TRUE);
 #  endif
 }
+
+    void
+pum_make_popup(char_u *path_name, int use_mouse_pos)
+{
+    vimmenu_T *menu;
+
+    if (!use_mouse_pos)
+    {
+	/* Hack: set mouse position at the cursor so that the menu pops up
+	 * around there. */
+	mouse_row = curwin->w_winrow + curwin->w_wrow;
+	mouse_col = curwin->w_wincol + curwin->w_wcol;
+    }
+
+    menu = gui_find_menu(path_name);
+    if (menu != NULL)
+	pum_show_popupmenu(menu);
+}
 # endif
 
 #endif
diff --git a/src/proto/menu.pro b/src/proto/menu.pro
index 4c8e710..63f8d11 100644
--- a/src/proto/menu.pro
+++ b/src/proto/menu.pro
@@ -12,6 +12,7 @@
 int menu_is_child_of_popup(vimmenu_T *menu);
 int menu_is_toolbar(char_u *name);
 int menu_is_separator(char_u *name);
+int get_menu_mode_flag(void);
 void show_popupmenu(void);
 int check_menu_pointer(vimmenu_T *root, vimmenu_T *menu_to_check);
 void gui_create_initial_menus(vimmenu_T *menu);
diff --git a/src/proto/popupmnu.pro b/src/proto/popupmnu.pro
index d2f6baf..8fd4ac9 100644
--- a/src/proto/popupmnu.pro
+++ b/src/proto/popupmnu.pro
@@ -10,4 +10,5 @@
 void ui_post_balloon(char_u *mesg, list_T *list);
 void ui_may_remove_balloon(void);
 void pum_show_popupmenu(vimmenu_T *menu);
+void pum_make_popup(char_u *path_name, int mouse_pos);
 /* vim: set ft=c : */
diff --git a/src/version.c b/src/version.c
index 2b64f36..6f498aa 100644
--- a/src/version.c
+++ b/src/version.c
@@ -767,6 +767,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1570,
+/**/
     1569,
 /**/
     1568,
