updated for version 7.3.102
Problem:    When using ":make", typing the next command and then getting the
            "reload" prompt the next command is (partly) eaten by the reload
            prompt.
Solution:   Accept ':' as a special character at the reload prompt to accept
            the default choice and execute the command.
diff --git a/src/eval.c b/src/eval.c
index a737311..a46789f 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9323,7 +9323,7 @@
 
     if (!error)
 	rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
-								   def, NULL);
+							    def, NULL, FALSE);
 #endif
 }
 
@@ -12744,7 +12744,7 @@
 	    IObuff[0] = NUL;
 	if (message != NULL && defstr != NULL
 		&& do_dialog(VIM_QUESTION, NULL, message,
-				(char_u *)_("&OK\n&Cancel"), 1, IObuff) == 1)
+			  (char_u *)_("&OK\n&Cancel"), 1, IObuff, FALSE) == 1)
 	    rettv->vval.v_string = vim_strsave(IObuff);
 	else
 	{
diff --git a/src/fileio.c b/src/fileio.c
index fcfb8cd..0c7b00c 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -7008,7 +7008,7 @@
 		    STRCAT(tbuf, mesg2);
 		}
 		if (do_dialog(VIM_WARNING, (char_u *)_("Warning"), tbuf,
-				(char_u *)_("&OK\n&Load File"), 1, NULL) == 2)
+			  (char_u *)_("&OK\n&Load File"), 1, NULL, TRUE) == 2)
 		    reload = TRUE;
 	    }
 	    else
diff --git a/src/gui.c b/src/gui.c
index 89d8d5a..041d633 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -4903,7 +4903,7 @@
 		if (STRLEN(p) > 2000)
 		    STRCPY(p + 2000 - 14, "...(truncated)");
 		(void)do_dialog(VIM_ERROR, (char_u *)_("Error"),
-					      p, (char_u *)_("&Ok"), 1, NULL);
+				       p, (char_u *)_("&Ok"), 1, NULL, FALSE);
 		break;
 	    }
 	ga_clear(&error_ga);
diff --git a/src/gui_athena.c b/src/gui_athena.c
index 7cd08c6..c8d8e98 100644
--- a/src/gui_athena.c
+++ b/src/gui_athena.c
@@ -2117,13 +2117,14 @@
 }
 
     int
-gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield)
+gui_mch_dialog(type, title, message, buttons, dfltbutton, textfield, ex_cmd)
     int		type UNUSED;
     char_u	*title;
     char_u	*message;
     char_u	*buttons;
     int		dfltbutton UNUSED;
     char_u	*textfield;
+    int		ex_cmd UNUSED;
 {
     char_u		*buts;
     char_u		*p, *next;
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index b95f46a..94cebd4 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -1268,7 +1268,8 @@
 	       char_u	*message,   /* message text */
 	       char_u	*buttons,   /* names of buttons */
 	       int	def_but,    /* default button */
-	       char_u	*textfield) /* text for textfield or NULL */
+	       char_u	*textfield, /* text for textfield or NULL */
+	       int	ex_cmd UNUSED)
 {
     GtkWidget	*dialog;
     GtkWidget	*entry = NULL;
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 2fcd8a2..4357c89 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -5583,7 +5583,8 @@
     char_u	*message,
     char_u	*buttons,
     int		dfltbutton,
-    char_u	*textfield)
+    char_u	*textfield,
+    int		ex_cmd)
 {
     Handle	buttonDITL;
     Handle	iconDITL;
diff --git a/src/gui_motif.c b/src/gui_motif.c
index 51e6112..7cac8ee 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -2549,13 +2549,14 @@
 #endif
 
     int
-gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
+gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield, ex_cmd)
     int		type UNUSED;
     char_u	*title;
     char_u	*message;
     char_u	*button_names;
     int		dfltbutton;
     char_u	*textfield;		/* buffer of size IOSIZE */
+    int		ex_cmd UNUSED;
 {
     char_u		*buts;
     char_u		*p, *next;
diff --git a/src/gui_photon.c b/src/gui_photon.c
index 42b1242..d901798 100644
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -1502,7 +1502,8 @@
 	char_u	*message,
 	char_u	*buttons,
 	int	default_button,
-	char_u	*textfield)
+	char_u	*textfield,
+	int	ex_cmd)
 {
     char_u	*str;
     char_u	**button_array;
diff --git a/src/gui_w16.c b/src/gui_w16.c
index 6866784..5ef8c10 100644
--- a/src/gui_w16.c
+++ b/src/gui_w16.c
@@ -1098,7 +1098,8 @@
     char_u	*message,
     char_u	*buttons,
     int		 dfltbutton,
-    char_u	*textfield)
+    char_u	*textfield,
+    int		ex_cmd)
 {
     FARPROC	dp;
     LPWORD	p, pnumitems;
diff --git a/src/gui_w32.c b/src/gui_w32.c
index f3b9c5b..cdb1abb 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -3005,7 +3005,8 @@
     char_u	*message,
     char_u	*buttons,
     int		 dfltbutton,
-    char_u	*textfield)
+    char_u	*textfield,
+    int		ex_cmd)
 {
     WORD	*p, *pdlgtemplate, *pnumitems;
     DWORD	*dwp;
diff --git a/src/gui_xmdlg.c b/src/gui_xmdlg.c
index 1ae755e..73142e2 100644
--- a/src/gui_xmdlg.c
+++ b/src/gui_xmdlg.c
@@ -688,7 +688,7 @@
 	    do_dialog(VIM_ERROR,
 		    (char_u *)_("Error"),
 		    (char_u *)_("Invalid font specification"),
-		    (char_u *)_("&Dismiss"), 1, NULL);
+		    (char_u *)_("&Dismiss"), 1, NULL, FALSE);
 
 	return True;
     }
@@ -807,7 +807,7 @@
 	do_dialog(VIM_ERROR,
 		(char_u *)_("Error"),
 		(char_u *)_("Invalid font specification"),
-		(char_u *)_("&Dismiss"), 1, NULL);
+		(char_u *)_("&Dismiss"), 1, NULL, FALSE);
 	XFreeFontNames(name);
     }
     else
diff --git a/src/memline.c b/src/memline.c
index 0beaf54..410b116 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -4516,7 +4516,7 @@
 				    process_still_running
 					? (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Quit\n&Abort") :
 # endif
-					(char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), 1, NULL);
+					(char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), 1, NULL, FALSE);
 
 # if defined(UNIX) || defined(__EMX__) || defined(VMS)
 			if (process_still_running && choice >= 4)
diff --git a/src/message.c b/src/message.c
index 930fca1..0094725 100644
--- a/src/message.c
+++ b/src/message.c
@@ -3315,7 +3315,7 @@
  * different letter.
  */
     int
-do_dialog(type, title, message, buttons, dfltbutton, textfield)
+do_dialog(type, title, message, buttons, dfltbutton, textfield, ex_cmd)
     int		type UNUSED;
     char_u	*title UNUSED;
     char_u	*message;
@@ -3323,6 +3323,8 @@
     int		dfltbutton;
     char_u	*textfield UNUSED;	/* IObuff for inputdialog(), NULL
 					   otherwise */
+    int		ex_cmd;	    /* when TRUE pressing : accepts default and starts
+			       Ex command */
 {
     int		oldState;
     int		retval = 0;
@@ -3341,7 +3343,7 @@
     if (gui.in_use && vim_strchr(p_go, GO_CONDIALOG) == NULL)
     {
 	c = gui_mch_dialog(type, title, message, buttons, dfltbutton,
-								   textfield);
+							   textfield, ex_cmd);
 	/* avoid a hit-enter prompt without clearing the cmdline */
 	need_wait_return = FALSE;
 	emsg_on_display = FALSE;
@@ -3388,6 +3390,13 @@
 	    default:		/* Could be a hotkey? */
 		if (c < 0)	/* special keys are ignored here */
 		    continue;
+		if (c == ':' && ex_cmd)
+		{
+		    retval = dfltbutton;
+		    ins_char_typebuf(':');
+		    break;
+		}
+
 		/* Make the character lowercase, as chars in "hotkeys" are. */
 		c = MB_TOLOWER(c);
 		retval = 1;
@@ -3661,7 +3670,7 @@
     if (do_dialog(type,
 		title == NULL ? (char_u *)_("Question") : title,
 		message,
-		(char_u *)_("&Yes\n&No"), dflt, NULL) == 1)
+		(char_u *)_("&Yes\n&No"), dflt, NULL, FALSE) == 1)
 	return VIM_YES;
     return VIM_NO;
 }
@@ -3676,7 +3685,7 @@
     switch (do_dialog(type,
 		title == NULL ? (char_u *)_("Question") : title,
 		message,
-		(char_u *)_("&Yes\n&No\n&Cancel"), dflt, NULL))
+		(char_u *)_("&Yes\n&No\n&Cancel"), dflt, NULL, FALSE))
     {
 	case 1: return VIM_YES;
 	case 2: return VIM_NO;
@@ -3695,7 +3704,7 @@
 		title == NULL ? (char_u *)"Question" : title,
 		message,
 		(char_u *)_("&Yes\n&No\nSave &All\n&Discard All\n&Cancel"),
-								  dflt, NULL))
+							   dflt, NULL, FALSE))
     {
 	case 1: return VIM_YES;
 	case 2: return VIM_NO;
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 0b9dfd9..8be2d40 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -593,7 +593,7 @@
 				     gui.starting ? (char_u *)_("Message") :
 #endif
 					     (char_u *)_("Error"),
-				     p, (char_u *)_("&Ok"), 1, NULL);
+				     p, (char_u *)_("&Ok"), 1, NULL, FALSE);
 		break;
 	    }
 	ga_clear(&error_ga);
diff --git a/src/proto/gui_athena.pro b/src/proto/gui_athena.pro
index 353c33b..efc8e40 100644
--- a/src/proto/gui_athena.pro
+++ b/src/proto/gui_athena.pro
@@ -27,5 +27,5 @@
 void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
 Window gui_x11_get_wid __ARGS((void));
 char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_gtk.pro b/src/proto/gui_gtk.pro
index 8b88358..2bff89b 100644
--- a/src/proto/gui_gtk.pro
+++ b/src/proto/gui_gtk.pro
@@ -13,7 +13,7 @@
 void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
 char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
 char_u *gui_mch_browsedir __ARGS((char_u *title, char_u *initdir));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int def_but, char_u *textfield, int ex_cmd));
 void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
 void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
 void gui_mch_find_dialog __ARGS((exarg_T *eap));
diff --git a/src/proto/gui_mac.pro b/src/proto/gui_mac.pro
index ba6e2ad..2010f97 100644
--- a/src/proto/gui_mac.pro
+++ b/src/proto/gui_mac.pro
@@ -81,7 +81,7 @@
 int gui_mch_get_mouse_y __ARGS((void));
 void gui_mch_setmouse __ARGS((int x, int y));
 void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
 char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
 void gui_mch_set_foreground __ARGS((void));
 void gui_mch_show_tabline __ARGS((int showit));
diff --git a/src/proto/gui_motif.pro b/src/proto/gui_motif.pro
index 3e08ec9..e455f01 100644
--- a/src/proto/gui_motif.pro
+++ b/src/proto/gui_motif.pro
@@ -29,7 +29,7 @@
 void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
 Window gui_x11_get_wid __ARGS((void));
 char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield, int ex_cmd));
 void gui_mch_enable_footer __ARGS((int showit));
 void gui_mch_set_footer __ARGS((char_u *s));
 void gui_mch_show_toolbar __ARGS((int showit));
diff --git a/src/proto/gui_photon.pro b/src/proto/gui_photon.pro
index 6a3ff04..0a5041e 100644
--- a/src/proto/gui_photon.pro
+++ b/src/proto/gui_photon.pro
@@ -8,7 +8,7 @@
 void gui_mch_update __ARGS((void));
 int gui_mch_wait_for_chars __ARGS((int wtime));
 char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *default_name, char_u *ext, char_u *initdir, char_u *filter));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int default_button, char_u *textfield, int ex_cmd));
 int gui_mch_get_winpos __ARGS((int *x, int *y));
 void gui_mch_set_winpos __ARGS((int x, int y));
 void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
diff --git a/src/proto/gui_w16.pro b/src/proto/gui_w16.pro
index 0f82c5a..c8cb065 100644
--- a/src/proto/gui_w16.pro
+++ b/src/proto/gui_w16.pro
@@ -74,6 +74,6 @@
 void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
 void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
 void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
 void gui_mch_set_foreground __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_w32.pro b/src/proto/gui_w32.pro
index 657a4c6..49690b0 100644
--- a/src/proto/gui_w32.pro
+++ b/src/proto/gui_w32.pro
@@ -81,7 +81,7 @@
 void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
 void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
 void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
 void gui_mch_set_foreground __ARGS((void));
 void gui_mch_drawsign __ARGS((int row, int col, int typenr));
 void *gui_mch_register_sign __ARGS((char_u *signfile));
diff --git a/src/proto/message.pro b/src/proto/message.pro
index a752ddc..c59a916 100644
--- a/src/proto/message.pro
+++ b/src/proto/message.pro
@@ -64,7 +64,7 @@
 int verbose_open __ARGS((void));
 void give_warning __ARGS((char_u *message, int hl));
 void msg_advance __ARGS((int col));
-int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield));
+int do_dialog __ARGS((int type, char_u *title, char_u *message, char_u *buttons, int dfltbutton, char_u *textfield, int ex_cmd));
 void display_confirm_msg __ARGS((void));
 int vim_dialog_yesno __ARGS((int type, char_u *title, char_u *message, int dflt));
 int vim_dialog_yesnocancel __ARGS((int type, char_u *title, char_u *message, int dflt));
diff --git a/src/version.c b/src/version.c
index abe414b..3f6a8a1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    102,
+/**/
     101,
 /**/
     100,