diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 5ff0d40..3c591d0 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1303,7 +1303,7 @@
     int		ret;
     buf_T	*buf2;
 
-    dialog_msg(buff, _("Save changes to \"%.*s\"?"),
+    dialog_msg(buff, _("Save changes to \"%s\"?"),
 			(buf->b_fname != NULL) ?
 			buf->b_fname : (char_u *)_("Untitled"));
     if (checkall)
diff --git a/src/globals.h b/src/globals.h
index 446717d..c073fcb 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1434,6 +1434,7 @@
 #ifdef FEAT_EX_EXTRA
 EXTERN char_u e_invalpat[]	INIT(=N_("E682: Invalid search pattern or delimiter"));
 #endif
+EXTERN char_u e_bufloaded[]	INIT(=N_("E139: File is loaded in another buffer"));
 
 #ifdef MACOS_X_UNIX
 EXTERN short disallow_gui	INIT(= FALSE);
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index b237925..641f784 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -2241,8 +2241,12 @@
     DialogInfo *di = (DialogInfo *)data;
 
     /* Ignore hitting "Enter" if there is no default button. */
-    if (di->ignore_enter && event->keyval == GDK_Return)
+    if (event->keyval == GDK_Return)
+    {
+	if (!di->ignore_enter)
+	    gtk_dialog_response(di->dialog, GTK_RESPONSE_ACCEPT);
 	return TRUE;
+    }
 
     /* Close the dialog when hitting "Esc". */
     if (event->keyval == GDK_Escape)
@@ -2326,6 +2330,8 @@
     /* GTK_RESPONSE_NONE means the dialog was programmatically destroyed. */
     if (response != GTK_RESPONSE_NONE)
     {
+	if (response == GTK_RESPONSE_ACCEPT)	    /* Enter pressed */
+	    response = def_but;
 	if (textfield != NULL)
 	{
 	    text = (char_u *)gtk_entry_get_text(GTK_ENTRY(entry));
diff --git a/src/option.c b/src/option.c
index 24b709e..1211ce7 100644
--- a/src/option.c
+++ b/src/option.c
@@ -121,6 +121,7 @@
     , PV_SI
     , PV_SN
     , PV_SPELL
+    , PV_SPF
     , PV_SPL
     , PV_STL
     , PV_STS
@@ -234,6 +235,7 @@
 static int	p_swf;
 #ifdef FEAT_SYN_HL
 static char_u	*p_syn;
+static char_u	*p_spf;
 static char_u	*p_spl;
 #endif
 static long	p_ts;
@@ -2029,10 +2031,19 @@
 			    (char_u *)NULL, PV_NONE,
 #endif
 			    {(char_u *)FALSE, (char_u *)0L}},
+    {"spellfile",   "spf",  P_STRING|P_EXPAND|P_ALLOCED|P_VI_DEF|P_SECURE,
+#ifdef FEAT_SYN_HL
+			    (char_u *)&p_spf, PV_SPF,
+			    {(char_u *)"", (char_u *)0L}
+#else
+			    (char_u *)NULL, PV_NONE,
+			    {(char_u *)0L, (char_u *)0L}
+#endif
+			    },
     {"spelllang",   "spl",  P_STRING|P_ALLOCED|P_VI_DEF|P_COMMA|P_RBUF,
 #ifdef FEAT_SYN_HL
 			    (char_u *)&p_spl, PV_SPL,
-			    {(char_u *)"", (char_u *)0L}
+			    {(char_u *)"en", (char_u *)0L}
 #else
 			    (char_u *)NULL, PV_NONE,
 			    {(char_u *)0L, (char_u *)0L}
@@ -4612,6 +4623,7 @@
 #endif
 #ifdef FEAT_SYN_HL
     check_string_option(&buf->b_p_syn);
+    check_string_option(&buf->b_p_spf);
     check_string_option(&buf->b_p_spl);
 #endif
 #ifdef FEAT_SEARCHPATH
@@ -8313,6 +8325,7 @@
 	case PV_SWF:	return (char_u *)&(curbuf->b_p_swf);
 #ifdef FEAT_SYN_HL
 	case PV_SYN:	return (char_u *)&(curbuf->b_p_syn);
+	case PV_SPF:	return (char_u *)&(curbuf->b_p_spf);
 	case PV_SPL:	return (char_u *)&(curbuf->b_p_spl);
 #endif
 	case PV_SW:	return (char_u *)&(curbuf->b_p_sw);
@@ -8623,6 +8636,7 @@
 #ifdef FEAT_SYN_HL
 	    /* Don't copy 'syntax', it must be set */
 	    buf->b_p_syn = empty_option;
+	    buf->b_p_spf = vim_strsave(p_spf);
 	    buf->b_p_spl = vim_strsave(p_spl);
 #endif
 #if defined(FEAT_CINDENT) && defined(FEAT_EVAL)
diff --git a/src/proto/fileio.pro b/src/proto/fileio.pro
index 68594ba..7d59f55 100644
--- a/src/proto/fileio.pro
+++ b/src/proto/fileio.pro
@@ -15,6 +15,7 @@
 int vim_rename __ARGS((char_u *from, char_u *to));
 int check_timestamps __ARGS((int focus));
 int buf_check_timestamp __ARGS((buf_T *buf, int focus));
+void buf_reload __ARGS((buf_T *buf));
 void buf_store_time __ARGS((buf_T *buf, struct stat *st, char_u *fname));
 void write_lnum_adjust __ARGS((linenr_T offset));
 void vim_deltempdir __ARGS((void));
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 4fcb7ba..71d6dbc 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -5,5 +5,7 @@
 void spell_reload __ARGS((void));
 void put_bytes __ARGS((FILE *fd, long_u nr, int len));
 void ex_mkspell __ARGS((exarg_T *eap));
+void ex_spell __ARGS((exarg_T *eap));
+void spell_add_word __ARGS((char_u *word, int len, int bad));
 void init_spell_chartab __ARGS((void));
 /* vim: set ft=c : */
diff --git a/src/structs.h b/src/structs.h
index a45a98e..18915cf 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1341,6 +1341,7 @@
     int		b_p_swf;	/* 'swapfile' */
 #ifdef FEAT_SYN_HL
     char_u	*b_p_syn;	/* 'syntax' */
+    char_u	*b_p_spf;	/* 'spellfile' */
     char_u	*b_p_spl;	/* 'spelllang' */
 #endif
     long	b_p_ts;		/* 'tabstop' */
diff --git a/src/version.h b/src/version.h
index afb4c5f..b1c0abb 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 6)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 6, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 7)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 7, compiled "
