diff --git a/src/eval.c b/src/eval.c
index cdc2f5f..aa39350 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -7931,7 +7931,7 @@
 }
 
 /*
- * return 0 for not writable, 1 for writable file, 2 for a dir which we have
+ * Return 0 for not writable, 1 for writable file, 2 for a dir which we have
  * rights to write into.
  */
     static void
@@ -7939,34 +7939,7 @@
     typval_T	*argvars;
     typval_T	*rettv;
 {
-    char_u	*p;
-    int		retval = 0;
-#if defined(UNIX) || defined(VMS)
-    int		perm = 0;
-#endif
-
-    p = get_tv_string(&argvars[0]);
-#if defined(UNIX) || defined(VMS)
-    perm = mch_getperm(p);
-#endif
-#ifndef MACOS_CLASSIC /* TODO: get either mch_writable or mch_access */
-    if (
-# ifdef WIN3264
-	    mch_writable(p) &&
-# else
-# if defined(UNIX) || defined(VMS)
-	    (perm & 0222) &&
-#  endif
-# endif
-	    mch_access((char *)p, W_OK) == 0
-       )
-#endif
-    {
-	++retval;
-	if (mch_isdir(p))
-	    ++retval;
-    }
-    rettv->vval.v_number = retval;
+    rettv->vval.v_number = filewritable(get_tv_string(&argvars[0]));
 }
 
 static void findfilendir __ARGS((typval_T *argvars, typval_T *rettv, int dir));
@@ -9492,6 +9465,9 @@
 	"netbeans_intg",
 #endif
 #ifdef FEAT_SYN_HL
+	"spell",
+#endif
+#ifdef FEAT_SYN_HL
 	"syntax",
 #endif
 #if defined(USE_SYSTEM) || !defined(UNIX)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index bf04185..4e2d29f 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2433,7 +2433,7 @@
 	{
 	    /* Overwriting a file that is loaded in another buffer is not a
 	     * good idea. */
-	    EMSG(_("E139: File is loaded in another buffer"));
+	    EMSG(_(e_bufloaded));
 	    goto theend;
 	}
     }
@@ -2591,7 +2591,7 @@
 	{
 	    char_u	buff[IOSIZE];
 
-	    dialog_msg(buff, _("Overwrite existing file \"%.*s\"?"), fname);
+	    dialog_msg(buff, _("Overwrite existing file \"%s\"?"), fname);
 	    if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) != VIM_YES)
 		return FAIL;
 	    eap->forceit = TRUE;
@@ -2721,7 +2721,7 @@
 	{
 	    char_u	buff[IOSIZE];
 
-	    dialog_msg(buff, _("'readonly' option is set for \"%.*s\".\nDo you wish to write anyway?"),
+	    dialog_msg(buff, _("'readonly' option is set for \"%s\".\nDo you wish to write anyway?"),
 		    buf->b_fname);
 
 	    if (vim_dialog_yesno(VIM_QUESTION, NULL, buff, 2) == VIM_YES)
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index eb11fb9..9289d38 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -757,6 +757,10 @@
 			RANGE|DFLALL|WHOLEFOLD|BANG|EXTRA|NOTRLCOM|MODIFY),
 EX(CMD_split,		"split",	ex_splitview,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
+EX(CMD_spellgood,	"spellgood",	ex_spell,
+			NEEDARG|EXTRA|TRLBAR),
+EX(CMD_spellwrong,	"spellwrong",	ex_spell,
+			NEEDARG|EXTRA|TRLBAR),
 EX(CMD_sprevious,	"sprevious",	ex_previous,
 			EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_srewind,		"srewind",	ex_rewind,
diff --git a/src/proto/misc2.pro b/src/proto/misc2.pro
index f9aab8d..365f2ea 100644
--- a/src/proto/misc2.pro
+++ b/src/proto/misc2.pro
@@ -92,4 +92,5 @@
 void sort_strings __ARGS((char_u **files, int count));
 int pathcmp __ARGS((const char *p, const char *q, int maxlen));
 char_u *parse_list_options __ARGS((char_u *option_str, option_table_T *table, int table_size));
+int filewritable __ARGS((char_u *fname));
 /* vim: set ft=c : */
