summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eval.c4
-rw-r--r--src/fileio.c2
-rw-r--r--src/gui.c2
-rw-r--r--src/gui_athena.c3
-rw-r--r--src/gui_gtk.c3
-rw-r--r--src/gui_mac.c3
-rw-r--r--src/gui_motif.c3
-rw-r--r--src/gui_photon.c3
-rw-r--r--src/gui_w16.c3
-rw-r--r--src/gui_w32.c3
-rw-r--r--src/gui_xmdlg.c4
-rw-r--r--src/memline.c2
-rw-r--r--src/message.c19
-rw-r--r--src/os_mswin.c2
-rw-r--r--src/proto/gui_athena.pro2
-rw-r--r--src/proto/gui_gtk.pro2
-rw-r--r--src/proto/gui_mac.pro2
-rw-r--r--src/proto/gui_motif.pro2
-rw-r--r--src/proto/gui_photon.pro2
-rw-r--r--src/proto/gui_w16.pro2
-rw-r--r--src/proto/gui_w32.pro2
-rw-r--r--src/proto/message.pro2
-rw-r--r--src/version.c2
23 files changed, 46 insertions, 28 deletions
diff --git a/src/eval.c b/src/eval.c
index a73731198..a46789fdf 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9323,7 +9323,7 @@ f_confirm(argvars, rettv)
if (!error)
rettv->vval.v_number = do_dialog(type, NULL, message, buttons,
- def, NULL);
+ def, NULL, FALSE);
#endif
}
@@ -12744,7 +12744,7 @@ f_inputdialog(argvars, rettv)
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 fcfb8cd30..0c7b00c2c 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -7008,7 +7008,7 @@ buf_check_timestamp(buf, focus)
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 89d8d5a88..041d6339c 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -4903,7 +4903,7 @@ display_errors()
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 7cd08c6e3..c8d8e98df 100644
--- a/src/gui_athena.c
+++ b/src/gui_athena.c
@@ -2117,13 +2117,14 @@ dialog_wm_handler(w, client_data, event, dum)
}
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 b95f46a7f..94cebd471 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -1268,7 +1268,8 @@ gui_mch_dialog(int type, /* type of dialog */
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 2fcd8a209..4357c8925 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -5583,7 +5583,8 @@ gui_mch_dialog(
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 51e6112cc..7cac8ee6a 100644
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -2549,13 +2549,14 @@ create_pixmap_label(parent, name, data, args, arg)
#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 42b124281..d9017989a 100644
--- a/src/gui_photon.c
+++ b/src/gui_photon.c
@@ -1502,7 +1502,8 @@ gui_mch_dialog(
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 68667846b..5ef8c1031 100644
--- a/src/gui_w16.c
+++ b/src/gui_w16.c
@@ -1098,7 +1098,8 @@ gui_mch_dialog(
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 f3b9c5bb6..cdb1abb58 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -3005,7 +3005,8 @@ gui_mch_dialog(
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 1ae755e82..73142e28c 100644
--- a/src/gui_xmdlg.c
+++ b/src/gui_xmdlg.c
@@ -688,7 +688,7 @@ do_choice(Widget w,
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 @@ ok_callback(Widget w UNUSED,
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 0beaf5472..410b1161b 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -4516,7 +4516,7 @@ findswapname(buf, dirp, old_fname)
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 930fca117..009472504 100644
--- a/src/message.c
+++ b/src/message.c
@@ -3315,7 +3315,7 @@ msg_advance(col)
* 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 @@ do_dialog(type, title, message, buttons, dfltbutton, textfield)
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 @@ do_dialog(type, title, message, buttons, dfltbutton, textfield)
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 @@ do_dialog(type, title, message, buttons, dfltbutton, textfield)
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 @@ vim_dialog_yesno(type, title, message, dflt)
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 @@ vim_dialog_yesnocancel(type, title, message, dflt)
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 @@ vim_dialog_yesnoallcancel(type, title, message, dflt)
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 0b9dfd91e..8be2d40af 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -593,7 +593,7 @@ display_errors()
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 353c33b07..efc8e40d3 100644
--- a/src/proto/gui_athena.pro
+++ b/src/proto/gui_athena.pro
@@ -27,5 +27,5 @@ void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
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 8b883582a..2bff89be7 100644
--- a/src/proto/gui_gtk.pro
+++ b/src/proto/gui_gtk.pro
@@ -13,7 +13,7 @@ void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
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 ba6e2ad42..2010f978c 100644
--- a/src/proto/gui_mac.pro
+++ b/src/proto/gui_mac.pro
@@ -81,7 +81,7 @@ int gui_mch_get_mouse_x __ARGS((void));
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 3e08ec9db..e455f0161 100644
--- a/src/proto/gui_motif.pro
+++ b/src/proto/gui_motif.pro
@@ -29,7 +29,7 @@ void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
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 6a3ff04b7..0a5041e50 100644
--- a/src/proto/gui_photon.pro
+++ b/src/proto/gui_photon.pro
@@ -8,7 +8,7 @@ void gui_mch_exit __ARGS((int rc));
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 0f82c5afe..c8cb06590 100644
--- a/src/proto/gui_w16.pro
+++ b/src/proto/gui_w16.pro
@@ -74,6 +74,6 @@ void gui_make_popup __ARGS((char_u *path_name, int mouse_pos));
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 657a4c65b..49690b03e 100644
--- a/src/proto/gui_w32.pro
+++ b/src/proto/gui_w32.pro
@@ -81,7 +81,7 @@ void gui_make_tearoff __ARGS((char_u *path_name));
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 a752ddcf5..c59a9165f 100644
--- a/src/proto/message.pro
+++ b/src/proto/message.pro
@@ -64,7 +64,7 @@ void verbose_stop __ARGS((void));
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 abe414ba0..3f6a8a140 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 102,
+/**/
101,
/**/
100,