updated for version 7.0224
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 37cef12..e77d05a 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1811,6 +1811,15 @@
 
 	if (tempname != NULL)
 	{
+#ifdef VMS
+	    /* fdopen() fails for some reason */
+	    if (fp_out == NULL)
+	    {
+		umask_save = umask(077);
+		fp_out = mch_fopen((char *)tempname, WRITEBIN);
+		(void)umask(umask_save);
+	    }
+#else
 	    int	fd;
 
 	    /* Use mch_open() to be able to use O_NOFOLLOW and set file
@@ -1818,20 +1827,21 @@
 	     * Unix: same as original file, but strip s-bit.  Reset umask to
 	     * avoid it getting in the way.
 	     * Others: r&w for user only. */
-#ifdef UNIX
+# ifdef UNIX
 	    umask_save = umask(0);
 	    fd = mch_open((char *)tempname,
 		    O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW,
 				       (int)((st_old.st_mode & 0777) | 0600));
 	    (void)umask(umask_save);
-#else
+# else
 	    fd = mch_open((char *)tempname,
 			    O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW, 0600);
-#endif
+# endif
 	    if (fd < 0)
 		fp_out = NULL;
 	    else
 		fp_out = fdopen(fd, WRITEBIN);
+#endif /* VMS */
 
 	    /*
 	     * If we can't create in the same directory, try creating a
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 476ffa0..b5ae8f8 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -331,6 +331,8 @@
 			BANG|RANGE|DFLALL|WHOLEFOLD|EXTRA),
 EX(CMD_edit,		"edit",		ex_edit,
 			BANG|FILE1|EDITCMD|ARGOPT|TRLBAR),
+EX(CMD_earlier,		"earlier",	ex_later,
+			TRLBAR|EXTRA|NOSPC|CMDWIN),
 EX(CMD_echo,		"echo",		ex_echo,
 			EXTRA|NOTRLCOM|SBOXOK|CMDWIN),
 EX(CMD_echoerr,		"echoerr",	ex_execute,
@@ -489,6 +491,8 @@
 			RANGE|NOTADR|WORD1|TRLBAR),
 EX(CMD_laddfile,	"laddfile",	ex_cfile,
 			TRLBAR|FILE1),
+EX(CMD_later,		"later",	ex_later,
+			TRLBAR|EXTRA|NOSPC|CMDWIN),
 EX(CMD_lbuffer,		"lbuffer",	ex_cbuffer,
 			RANGE|NOTADR|WORD1|TRLBAR),
 EX(CMD_lcd,		"lcd",		ex_cd,