updated for version 7.0200
diff --git a/src/eval.c b/src/eval.c
index d29f1a4..8c7049b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -17258,6 +17258,7 @@
     char_u	*name = NULL;
     char_u	*p;
     char_u	*arg;
+    char_u	*line_arg = NULL;
     garray_T	newargs;
     garray_T	newlines;
     int		varargs = FALSE;
@@ -17531,7 +17532,11 @@
 	    break;
     }
 
-    if (*p != NUL && *p != '"' && *p != '\n' && !eap->skip && !did_emsg)
+    /* When there is a line break use what follows for the function body.
+     * Makes 'exe "func Test()\n...\nendfunc"' work. */
+    if (*p == '\n')
+	line_arg = p + 1;
+    else if (*p != NUL && *p != '"' && !eap->skip && !did_emsg)
 	EMSG(_(e_trailing));
 
     /*
@@ -17563,7 +17568,20 @@
     {
 	msg_scroll = TRUE;
 	need_wait_return = FALSE;
-	if (eap->getline == NULL)
+	if (line_arg != NULL)
+	{
+	    /* Use eap->arg, split up in parts by line breaks. */
+	    theline = line_arg;
+	    p = vim_strchr(theline, '\n');
+	    if (p == NULL)
+		line_arg += STRLEN(line_arg);
+	    else
+	    {
+		*p = NUL;
+		line_arg = p + 1;
+	    }
+	}
+	else if (eap->getline == NULL)
 	    theline = getcmdline(':', 0L, indent);
 	else
 	    theline = eap->getline(':', eap->cookie, indent);
@@ -17594,7 +17612,8 @@
 	    /* Check for "endfunction". */
 	    if (checkforcmd(&p, "endfunction", 4) && nesting-- == 0)
 	    {
-		vim_free(theline);
+		if (line_arg == NULL)
+		    vim_free(theline);
 		break;
 	    }
 
@@ -17660,7 +17679,8 @@
 	/* Add the line to the function. */
 	if (ga_grow(&newlines, 1) == FAIL)
 	{
-	    vim_free(theline);
+	    if (line_arg == NULL)
+		vim_free(theline);
 	    goto erret;
 	}
 
@@ -17670,12 +17690,17 @@
 	p = vim_strsave(theline);
 	if (p != NULL)
 	{
-	    vim_free(theline);
+	    if (line_arg == NULL)
+		vim_free(theline);
 	    theline = p;
 	}
 
 	((char_u **)(newlines.ga_data))[newlines.ga_len] = theline;
 	newlines.ga_len++;
+
+	/* Check for end of eap->arg. */
+	if (line_arg != NULL && *line_arg == NUL)
+	    line_arg = NULL;
     }
 
     /* Don't define the function when skipping commands or when an error was
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index dff491a..c6cdc5a 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1811,15 +1811,18 @@
 
 	    /* Use mch_open() to be able to use O_NOFOLLOW and set file
 	     * protection:
-	     * Unix: same as original file, but strip s-bit.
+	     * 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
+	    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
 	    fd = mch_open((char *)tempname,
-		    O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW, 0600);
+			    O_CREAT|O_EXTRA|O_EXCL|O_WRONLY|O_NOFOLLOW, 0600);
 #endif
 	    if (fd < 0)
 		fp_out = NULL;
@@ -3504,8 +3507,11 @@
     /* Tell the diff stuff that this buffer is new and/or needs updating.
      * Also needed when re-editing the same buffer, because unloading will
      * have removed it as a diff buffer. */
-    diff_new_buffer();
-    diff_invalidate();
+    if (curwin->w_p_diff)
+    {
+	diff_buf_add(curbuf);
+	diff_invalidate(curbuf);
+    }
 #endif
 
     if (command == NULL)
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 6571cce..d505bff 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -880,11 +880,13 @@
 EX(CMD_tab,		"tab",		ex_tab,
 			RANGE|NOTADR|COUNT|TRLBAR),
 EX(CMD_tabclose,	"tabclose",	ex_tabclose,
-			BANG|TRLBAR|CMDWIN),
+			RANGE|NOTADR|COUNT|BANG|TRLBAR|CMDWIN),
 EX(CMD_tabedit,		"tabedit",	ex_tabedit,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_tabfind,		"tabfind",	ex_tabedit,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
+EX(CMD_tabonly,		"tabonly",	ex_tabonly,
+			TRLBAR|CMDWIN),
 EX(CMD_tabs,		"tabs",		ex_tabs,
 			TRLBAR|CMDWIN),
 EX(CMD_tcl,		"tcl",		ex_tcl,
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 0e671c8..b2a9327 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -2232,7 +2232,7 @@
 		if (!win_valid(win))
 		    break;
 		win_goto(win);
-		win = win->w_next;
+		win = curwin->w_next;
 	    }
 #endif
 	    else if (eap->cmdidx == CMD_bufdo)
diff --git a/src/globals.h b/src/globals.h
index c6409b9..0cea5c2 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -507,11 +507,12 @@
 
 #ifdef FEAT_WINDOWS
 /*
- * Tab pages are nothing more than alternative topframes.  "first_tabpage"
- * points to the first one in the list, "topframe" is the current one.
+ * Tab pages are alternative topframes.  "first_tabpage" points to the first
+ * one in the list, "curtab" is the current one.
  */
-EXTERN tabpage_T *first_tabpage;
-EXTERN int	  redraw_tabpage INIT(= FALSE);	/* redraw tab pages line */
+EXTERN tabpage_T    *first_tabpage;
+EXTERN tabpage_T    *curtab;
+EXTERN int	    redraw_tabline INIT(= FALSE);  /* need to redraw tabline */
 #endif
 
 /*
diff --git a/src/main.c b/src/main.c
index 1a71be9..31c6f6f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -32,6 +32,11 @@
 /* Maximum number of commands from + or -c arguments. */
 #define MAX_ARG_CMDS 10
 
+/* values for "window_layout" */
+#define WIN_HOR	    1	    /* "-o" horizontally split windows */
+#define	WIN_VER	    2	    /* "-O" vertically split windows */
+#define	WIN_TABS    3	    /* "-p" windows on tab pages */
+
 /* Struct for various parameters passed between main() and other functions. */
 typedef struct
 {
@@ -65,7 +70,7 @@
 #endif
 #ifdef FEAT_WINDOWS
     int		window_count;		/* number of windows to use */
-    int		vert_windows;		/* "-O" used instead of "-o" */
+    int		window_layout;		/* 0, WIN_HOR, WIN_VER or WIN_TABS */
 #endif
 
 #ifdef FEAT_CLIENTSERVER
@@ -189,7 +194,6 @@
 #endif
 #ifdef FEAT_WINDOWS
     params.window_count = -1;
-    params.vert_windows = MAYBE;
 #endif
 
 #ifdef FEAT_TCL
@@ -416,8 +420,8 @@
     {
 	if (params.window_count == -1)
 	    params.window_count = 0;	/* open up to 3 windows */
-	if (params.vert_windows == MAYBE)
-	    params.vert_windows = TRUE;	/* use vertical split */
+	if (params.window_layout == 0)
+	    params.window_layout = WIN_VER;	/* use vertical split */
     }
 #endif
 
@@ -1738,12 +1742,21 @@
 		parmp->no_swap_file = TRUE;
 		break;
 
+	    case 'p':		/* "-p[N]" open N tab pages */
+#ifdef FEAT_WINDOWS
+		/* default is 0: open window for each file */
+		parmp->window_count = get_number_arg((char_u *)argv[0],
+								&argv_idx, 0);
+		parmp->window_layout = WIN_TABS;
+#endif
+		break;
+
 	    case 'o':		/* "-o[N]" open N horizontal split windows */
 #ifdef FEAT_WINDOWS
 		/* default is 0: open window for each file */
 		parmp->window_count = get_number_arg((char_u *)argv[0],
 								&argv_idx, 0);
-		parmp->vert_windows = FALSE;
+		parmp->window_layout = WIN_HOR;
 #endif
 		break;
 
@@ -1752,7 +1765,7 @@
 		/* default is 0: open window for each file */
 		parmp->window_count = get_number_arg((char_u *)argv[0],
 								&argv_idx, 0);
-		parmp->vert_windows = TRUE;
+		parmp->window_layout = WIN_VER;
 #endif
 		break;
 
@@ -2235,6 +2248,9 @@
     mparm_T	*parmp;
 {
 #ifdef FEAT_WINDOWS
+    int		rewind;
+    int		done = 0;
+
     /*
      * Create the number of windows that was requested.
      */
@@ -2246,12 +2262,17 @@
     {
 	/* Don't change the windows if there was a command in .vimrc that
 	 * already split some windows */
-	if (parmp->vert_windows == MAYBE)
-	    parmp->vert_windows = FALSE;
-	if (firstwin->w_next == NULL)
+	if (parmp->window_layout == 0)
+	    parmp->window_layout = WIN_HOR;
+	if (parmp->window_layout == WIN_TABS)
+	{
+	    parmp->window_count = make_tabpages(parmp->window_count);
+	    TIME_MSG("making tab pages");
+	}
+	else if (firstwin->w_next == NULL)
 	{
 	    parmp->window_count = make_windows(parmp->window_count,
-							 parmp->vert_windows);
+					     parmp->window_layout == WIN_VER);
 	    TIME_MSG("making windows");
 	}
 	else
@@ -2284,9 +2305,30 @@
 	++autocmd_no_leave;
 #endif
 #ifdef FEAT_WINDOWS
-	for (curwin = firstwin; curwin != NULL; curwin = W_NEXT(curwin))
-#endif
+	rewind = TRUE;
+	while (done++ < 1000)
 	{
+	    if (rewind)
+	    {
+		if (parmp->window_layout == WIN_TABS)
+		    goto_tabpage(1);
+		else
+		    curwin = firstwin;
+	    }
+	    else if (parmp->window_layout == WIN_TABS)
+	    {
+		if (curtab->tp_next == NULL)
+		    break;
+		goto_tabpage(0);
+	    }
+	    else
+	    {
+		if (curwin->w_next == NULL)
+		    break;
+		curwin = curwin->w_next;
+	    }
+	    rewind = FALSE;
+#endif
 	    curbuf = curwin->w_buffer;
 	    if (curbuf->b_ml.ml_mfp == NULL)
 	    {
@@ -2306,7 +2348,7 @@
 		check_swap_exists_action();
 #endif
 #ifdef FEAT_AUTOCMD
-		curwin = firstwin;	    /* start again */
+		rewind = TRUE;		/* start again */
 #endif
 	    }
 #ifdef FEAT_WINDOWS
@@ -2316,16 +2358,19 @@
 		(void)vgetc();	/* only break the file loading, not the rest */
 		break;
 	    }
-#endif
 	}
+#endif
+#ifdef FEAT_WINDOWS
+	if (parmp->window_layout == WIN_TABS)
+	    goto_tabpage(1);
+	else
+	    curwin = firstwin;
+	curbuf = curwin->w_buffer;
+#endif
 #ifdef FEAT_AUTOCMD
 	--autocmd_no_enter;
 	--autocmd_no_leave;
 #endif
-#ifdef FEAT_WINDOWS
-	curwin = firstwin;
-	curbuf = curwin->w_buffer;
-#endif
     }
 }
 
@@ -2351,9 +2396,18 @@
     arg_idx = 1;
     for (i = 1; i < parmp->window_count; ++i)
     {
-	if (curwin->w_next == NULL)	    /* just checking */
-	    break;
-	win_enter(curwin->w_next, FALSE);
+	if (parmp->window_layout == WIN_TABS)
+	{
+	    if (curtab->tp_next == NULL)	/* just checking */
+		break;
+	    goto_tabpage(0);
+	}
+	else
+	{
+	    if (curwin->w_next == NULL)		/* just checking */
+		break;
+	    win_enter(curwin->w_next, FALSE);
+	}
 
 	/* Only open the file if there is no file in this window yet (that can
 	 * happen when .vimrc contains ":sall") */
@@ -2375,6 +2429,9 @@
 	    break;
 	}
     }
+
+    if (parmp->window_layout == WIN_TABS)
+	goto_tabpage(1);
 # ifdef FEAT_AUTOCMD
     --autocmd_no_enter;
 # endif
@@ -2383,7 +2440,7 @@
     --autocmd_no_leave;
 # endif
     TIME_MSG("editing files in windows");
-    if (parmp->window_count > 1)
+    if (parmp->window_count > 1 && parmp->window_layout != WIN_TABS)
 	win_equal(curwin, FALSE, 'b');	/* adjust heights */
 }
 #endif /* FEAT_WINDOWS */
@@ -2825,6 +2882,7 @@
     main_msg(_("-U <gvimrc>\t\tUse <gvimrc> instead of any .gvimrc"));
 #endif
     main_msg(_("--noplugin\t\tDon't load plugin scripts"));
+    main_msg(_("-p[N]\t\tOpen N tab pages (default: one for each file)"));
     main_msg(_("-o[N]\t\tOpen N windows (default: one for each file)"));
     main_msg(_("-O[N]\t\tLike -o but split vertically"));
     main_msg(_("+\t\t\tStart at end of file"));
diff --git a/src/misc1.c b/src/misc1.c
index fc56c91..bcc43da 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2458,7 +2458,7 @@
 	ml_setflags(curbuf);
 #ifdef FEAT_WINDOWS
 	check_status(curbuf);
-	redraw_tabpage = TRUE;
+	redraw_tabline = TRUE;
 #endif
 #ifdef FEAT_TITLE
 	need_maketitle = TRUE;	    /* set window title later */
@@ -2848,7 +2848,7 @@
 	    save_file_ff(buf);
 #ifdef FEAT_WINDOWS
 	check_status(buf);
-	redraw_tabpage = TRUE;
+	redraw_tabline = TRUE;
 #endif
 #ifdef FEAT_TITLE
 	need_maketitle = TRUE;	    /* set window title later */
diff --git a/src/misc2.c b/src/misc2.c
index 2ff4d5c..680202f 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -962,6 +962,12 @@
 
     ++autocmd_block;	    /* don't want to trigger autocommands here */
 
+#ifdef FEAT_WINDOWS
+    /* close all tabs and windows */
+    do_cmdline_cmd((char_u *)"tabonly!");
+    do_cmdline_cmd((char_u *)"only!");
+#endif
+
 # if defined(FEAT_SYN_HL)
     /* Free all spell info. */
     spell_free_all();
@@ -1012,7 +1018,7 @@
     free_tag_stuff();
     free_cd_dir();
     set_expr_line(NULL);
-    diff_clear();
+    diff_clear(curtab);
     clear_sb_text();	      /* free any scrollback text */
 
     /* Free some global vars. */
@@ -2792,7 +2798,7 @@
 #ifdef FEAT_WINDOWS
     /* This may cause the buffer to become (un)modified. */
     check_status(curbuf);
-    redraw_tabpage = TRUE;
+    redraw_tabline = TRUE;
 #endif
 #ifdef FEAT_TITLE
     need_maketitle = TRUE;	    /* set window title later */
diff --git a/src/proto/window.pro b/src/proto/window.pro
index ae6aa63..7fa3572 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -7,7 +7,6 @@
 void win_move_after __ARGS((win_T *win1, win_T *win2));
 void win_equal __ARGS((win_T *next_curwin, int current, int dir));
 void close_windows __ARGS((buf_T *buf, int keep_curwin));
-int last_window __ARGS((void));
 void win_close __ARGS((win_T *win, int free_buf));
 void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp));
 void win_free_all __ARGS((void));
@@ -16,6 +15,7 @@
 int win_alloc_first __ARGS((void));
 void win_init_size __ARGS((void));
 int win_new_tabpage __ARGS((void));
+int make_tabpages __ARGS((int maxcount));
 int valid_tabpage __ARGS((tabpage_T *tpc));
 tabpage_T *find_tabpage __ARGS((int n));
 void goto_tabpage __ARGS((int n));
diff --git a/src/screen.c b/src/screen.c
index f9ed5e1..928b1b0 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -394,7 +394,7 @@
 	    }
 	    redraw_cmdline = TRUE;
 #ifdef FEAT_WINDOWS
-	    redraw_tabpage = TRUE;
+	    redraw_tabline = TRUE;
 #endif
 	}
 	msg_scrolled = 0;
@@ -476,7 +476,7 @@
 
 #ifdef FEAT_WINDOWS
     /* Redraw the tab pages line if needed. */
-    if (redraw_tabpage || type >= NOT_VALID)
+    if (redraw_tabline || type >= NOT_VALID)
 	draw_tabpage();
 #endif
 
@@ -706,7 +706,7 @@
 
 #ifdef FEAT_WINDOWS
     /* When the screen was cleared redraw the tab pages line. */
-    if (redraw_tabpage)
+    if (redraw_tabline)
 	draw_tabpage();
 
     if (wp->w_redr_status
@@ -4965,7 +4965,7 @@
     for (wp = firstwin; wp; wp = wp->w_next)
 	if (wp->w_redr_status)
 	    win_redr_status(wp);
-    if (redraw_tabpage)
+    if (redraw_tabline)
 	draw_tabpage();
 }
 #endif
@@ -7084,7 +7084,7 @@
     win_rest_invalid(firstwin);
     redraw_cmdline = TRUE;
 #ifdef FEAT_WINDOWS
-    redraw_tabpage = TRUE;
+    redraw_tabline = TRUE;
 #endif
     if (must_redraw == CLEAR)	/* no need to clear again */
 	must_redraw = NOT_VALID;
@@ -8463,7 +8463,7 @@
     tabpage_T	*tp;
     int		tabwidth;
     int		col = 0;
-    int		scol;
+    int		scol = 0;
     int		had_current = FALSE;
     int		attr;
     win_T	*wp;
@@ -8475,8 +8475,9 @@
     int		attr_sel = hl_attr(HLF_TPS);
     int		attr_nosel = hl_attr(HLF_TP);
     int		attr_fill = hl_attr(HLF_TPF);
+    char_u	*p;
 
-    redraw_tabpage = FALSE;
+    redraw_tabline = FALSE;
 
     if (tabpageline_height() < 1)
 	return;
@@ -8548,11 +8549,15 @@
 							      MAXPATHL, TRUE);
 	trans_characters(NameBuff, MAXPATHL);
 	len = STRLEN(NameBuff);
+	p = NameBuff;
 	if (len > scol - col + tabwidth - 1) /* TODO: multi-byte chars */
+	{
+	    p += len - (scol - col + tabwidth - 1);
 	    len = scol - col + tabwidth - 1;
+	}
 	if (len > 0)
 	{
-	    screen_puts_len(NameBuff, len, 0, col, attr);
+	    screen_puts_len(p, len, 0, col, attr);
 	    col += len;
 	}
 	screen_putchar(' ', 0, col++, attr);
diff --git a/src/search.c b/src/search.c
index 5531fb6..d506344 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4938,7 +4938,7 @@
 
 #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
 		if (g_do_tagpreview != 0
-			&& curwin != curwin_save && win_valid(curwin_save))
+			   && curwin != curwin_save && win_valid(curwin_save))
 		{
 		    /* Return cursor to where we were */
 		    validate_cursor();
diff --git a/src/structs.h b/src/structs.h
index 6153099..fac1785 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1526,6 +1526,60 @@
 
 };
 
+
+#ifdef FEAT_DIFF
+/*
+ * Stuff for diff mode.
+ */
+# define DB_COUNT 4	/* up to four buffers can be diff'ed */
+
+/*
+ * Each diffblock defines where a block of lines starts in each of the buffers
+ * and how many lines it occupies in that buffer.  When the lines are missing
+ * in the buffer the df_count[] is zero.  This is all counted in
+ * buffer lines.
+ * There is always at least one unchanged line in between the diffs.
+ * Otherwise it would have been included in the diff above or below it.
+ * df_lnum[] + df_count[] is the lnum below the change.  When in one buffer
+ * lines have been inserted, in the other buffer df_lnum[] is the line below
+ * the insertion and df_count[] is zero.  When appending lines at the end of
+ * the buffer, df_lnum[] is one beyond the end!
+ * This is using a linked list, because the number of differences is expected
+ * to be reasonable small.  The list is sorted on lnum.
+ */
+typedef struct diffblock_S diff_T;
+struct diffblock_S
+{
+    diff_T	*df_next;
+    linenr_T	df_lnum[DB_COUNT];	/* line number in buffer */
+    linenr_T	df_count[DB_COUNT];	/* nr of inserted/changed lines */
+};
+#endif
+
+/*
+ * Tab pages point to the top frame of each tab page.
+ * Note: Most values are NOT valid for the current tab page!  Use "curwin",
+ * "firstwin", etc. for that.  "tp_topframe" is always valid and can be
+ * compared against "topframe" to find the current tab page.
+ */
+typedef struct tabpage_S tabpage_T;
+struct tabpage_S
+{
+    tabpage_T	    *tp_next;	    /* next tabpage or NULL */
+    frame_T	    *tp_topframe;   /* topframe for the windows */
+    win_T	    *tp_curwin;	    /* current window in this Tab page */
+    win_T	    *tp_prevwin;    /* previous window in this Tab page */
+    win_T	    *tp_firstwin;   /* first window in this Tab page */
+    win_T	    *tp_lastwin;    /* last window in this Tab page */
+    long	    tp_old_Rows;    /* Rows when Tab page was left */
+    long	    tp_old_Columns; /* Columns when Tab page was left */
+#ifdef FEAT_DIFF
+    diff_T	    *tp_first_diff;
+    buf_T	    *(tp_diffbuf[DB_COUNT]);
+    int		    tp_diff_invalid;	/* list of diffs is outdated */
+#endif
+};
+
 /*
  * Structure to cache info for displayed lines in w_lines[].
  * Each logical line has one entry.
@@ -1550,22 +1604,6 @@
 } wline_T;
 
 /*
- * Tab pages point to the top frame of each tab page.
- */
-typedef struct tabpage_S tabpage_T;
-struct tabpage_S
-{
-    tabpage_T	    *tp_next;	    /* next tabpage or NULL */
-    frame_T	    *tp_topframe;   /* topframe for the windows */
-    win_T	    *tp_curwin;	    /* current window in this Tab page */
-    win_T	    *tp_prevwin;    /* previous window in this Tab page */
-    win_T	    *tp_firstwin;   /* first window in this Tab page */
-    win_T	    *tp_lastwin;    /* last window in this Tab page */
-    long	    tp_old_Rows;    /* Rows when Tab page was left */
-    long	    tp_old_Columns; /* Columns when Tab page was left */
-};
-
-/*
  * Windows are kept in a tree of frames.  Each frame has a column (FR_COL)
  * or row (FR_ROW) layout or is a leaf, which has a window.
  */
diff --git a/src/version.h b/src/version.h
index b00a9a1..80a3f61 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 (2006 Feb 16)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 16, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 17)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Feb 17, compiled "