updated for version 7.0c02
diff --git a/src/Makefile b/src/Makefile
index 15d954d..ea1462a 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1524,6 +1524,7 @@
 	$(TCL_PRO)
 
 ICON_APP = gui_mac.icns
+ICON_DOCTXT = doc-txt.icns
 
 PRO_MANUAL = os_amiga.pro os_msdos.pro os_win16.pro os_win32.pro \
 	os_mswin.pro os_beos.pro os_vms.pro os_riscos.pro $(PERL_PRO)
@@ -2163,7 +2164,7 @@
 	cd $(SHADOWDIR)/xxd; ln -s ../../xxd/*.[ch] ../../xxd/Make* .
 	if test -f $(ICON_APP); then \
 		cd $(SHADOWDIR); \
-		ln -s ../$(ICON_APP) ../os_mac.rsr.hqx ../dehqx.py .; \
+		ln -s ../$(ICON_APP) ../$(ICON_DOCTXT) ../os_mac.rsr.hqx ../dehqx.py .; \
 	fi
 	mkdir $(SHADOWDIR)/testdir
 	cd $(SHADOWDIR)/testdir; ln -s ../../testdir/Makefile \
@@ -2528,7 +2529,7 @@
 		-DAPP_VER=$(VERSION) -DICON_APP=$(ICON_APP)
 
 ### Icons
-ICONS = $(RESDIR)/$(ICON_APP)
+ICONS = $(RESDIR)/$(ICON_APP) $(RESDIR)/$(ICON_DOCTXT)
 
 # If you uncomment the following lines the *.icns in the src directory will be
 # detected by this Makefile automatically, and used for Vim.
diff --git a/src/auto/configure b/src/auto/configure
index f1178f8..2eea4af 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -3395,6 +3395,8 @@
 		if test x$prefix = xNONE; then
 	  prefix=/Applications
 	fi
+
+		datadir='${prefix}/Vim.app/Contents/Resources'
       fi
     fi
   fi
diff --git a/src/configure.in b/src/configure.in
index 2568fc3..2a71f42 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -165,6 +165,9 @@
 	if test x$prefix = xNONE; then
 	  prefix=/Applications
 	fi
+
+	dnl Sorry for the hard coded default
+	datadir='${prefix}/Vim.app/Contents/Resources'
       fi
     fi
   fi
diff --git a/src/doc-txt.icns b/src/doc-txt.icns
new file mode 100644
index 0000000..bcd11d6
--- /dev/null
+++ b/src/doc-txt.icns
Binary files differ
diff --git a/src/edit.c b/src/edit.c
index c22bb39..5159a34 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -726,8 +726,8 @@
 		    continue;
 		}
 
-		/* Pressing Enter selects the current match. */
-		if (c == CAR || c == K_KENTER || c == NL)
+		/* Pressing CTRL-Y selects the current match. */
+		if (c == Ctrl_Y)
 		{
 		    ins_compl_delete();
 		    ins_compl_insert();
@@ -3274,11 +3274,23 @@
 
 	    auto_format(FALSE, TRUE);
 
-	    /* if the popup menu is displayed hitting Enter means accepting
+	    /* If the popup menu is displayed pressing CTRL-Y means accepting
 	     * the selection without inserting anything. */
-	    if ((c == CAR || c == K_KENTER || c == NL) && pum_visible())
+	    if (c == Ctrl_Y && pum_visible())
 		retval = TRUE;
 
+	    /* CTRL-E means completion is Ended, go back to the typed text. */
+	    if (c == Ctrl_E)
+	    {
+		ins_compl_delete();
+		if (compl_leader != NULL)
+		    ins_bytes(compl_leader + curwin->w_cursor.col - compl_col);
+		else if (compl_first_match != NULL)
+		    ins_bytes(compl_first_match->cp_str
+					  + curwin->w_cursor.col - compl_col);
+		retval = TRUE;
+	    }
+
 	    ins_compl_free();
 	    compl_started = FALSE;
 	    compl_matches = 0;
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index e0c82c3..9e89392 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3240,6 +3240,7 @@
 		    buf_copy_options(buf, BCO_ENTER);
 
 		/* close the link to the current buffer */
+		u_sync();
 		close_buffer(curwin, curbuf,
 				      (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
 
@@ -5185,7 +5186,8 @@
  * Return TRUE when it was created.
  */
     int
-prepare_tagpreview()
+prepare_tagpreview(undo_sync)
+    int		undo_sync;	/* sync undo when leaving the window */
 {
     win_T	*wp;
 
@@ -5202,7 +5204,7 @@
 	    if (wp->w_p_pvw)
 		break;
 	if (wp != NULL)
-	    win_enter(wp, TRUE);
+	    win_enter(wp, undo_sync);
 	else
 	{
 	    /*
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 0acc3db..420f16c 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -1066,6 +1066,11 @@
 	    else
 		alist_add(&global_alist, p, 2);
 	}
+
+	/* Change directory to the location of the first file. */
+	if (GARGCOUNT > 0 && vim_chdirfile(alist_name(&GARGLIST[0])) == OK)
+	    shorten_fnames(TRUE);
+
 	goto finished;
     }
 
diff --git a/src/gui_w48.c b/src/gui_w48.c
index c4ce0bc..8b4684a 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -1121,8 +1121,7 @@
 	    top = TOOLBAR_BUTTON_HEIGHT + TOOLBAR_BORDER_HEIGHT;
 #endif
 
-	GetWindowRect(s_hwnd, &rect);
-	SetRect(&rect, 0, top, rect.right, TABLINE_HEIGHT);
+	SetRect(&rect, 0, top, w, TABLINE_HEIGHT);
 	TabCtrl_AdjustRect(s_tabhwnd, TRUE, &rect);
 	MoveWindow(s_tabhwnd, 0, top, rect.right, rect.bottom, TRUE);
     }
diff --git a/src/main.c b/src/main.c
index aff8b3f..32f9115 100644
--- a/src/main.c
+++ b/src/main.c
@@ -449,7 +449,24 @@
      * message box.  isatty(2) returns TRUE anyway, thus we need to check the
      * name to know we're not started from a terminal. */
     if (gui.starting && (!isatty(2) || strcmp("/dev/console", ttyname(2)) == 0))
+    {
 	params.want_full_screen = FALSE;
+
+	/* Avoid always using "/" as the current directory.  Note that when
+	 * started from Finder the arglist will be filled later in
+	 * HandleODocAE() and "fname" will be NULL. */
+	if (getcwd((char *)NameBuff, MAXPATHL) != NULL
+						&& STRCMP(NameBuff, "/") == 0)
+	{
+	    if (fname != NULL)
+		(void)vim_chdirfile(fname);
+	    else
+	    {
+		expand_env((char_u *)"$HOME", NameBuff, MAXPATHL);
+		vim_chdir(NameBuff);
+	    }
+	}
+    }
 #endif
 
     /*
diff --git a/src/po/ja.po b/src/po/ja.po
index e46f585..db6bedd 100644
--- a/src/po/ja.po
+++ b/src/po/ja.po
@@ -4,13 +4,13 @@
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
 # MURAOKA Taro <koron@tka.att.ne.jp>, 2001-6.
-# Last Change: 05-Feb-2006.
+# Last Change: 28-Mar-2006.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Vim 7.0\n"
-"POT-Creation-Date: 2006-02-04 22:44+0900\n"
-"PO-Revision-Date: 2006-02-05 00:10+0900\n"
+"POT-Creation-Date: 2006-03-28 20:12+0900\n"
+"PO-Revision-Date: 2006-03-28 21:10+0900\n"
 "Last-Translator: MURAOKA Taro <koron@tka.att.ne.jp>\n"
 "Language-Team: MURAOKA Taro <koron@tka.att.ne.jp>\n"
 "MIME-Version: 1.0\n"
@@ -130,7 +130,7 @@
 msgid "help"
 msgstr "¥Ø¥ë¥×"
 
-msgid "[help]"
+msgid "[Help]"
 msgstr "[¥Ø¥ë¥×]"
 
 msgid "[Preview]"
@@ -155,8 +155,8 @@
 msgid "[Location List]"
 msgstr "[¾ì½ê¥ê¥¹¥È]"
 
-msgid "[Error List]"
-msgstr "[¥¨¥é¡¼¥ê¥¹¥È]"
+msgid "[Quickfix List]"
+msgstr "[Quickfix¥ê¥¹¥È]"
 
 msgid ""
 "\n"
@@ -489,6 +489,9 @@
 msgid "E699: Too many arguments"
 msgstr "E699: ¤¬Â¿²á¤®¤Þ¤¹"
 
+msgid "E785: complete() can only be used in Insert mode"
+msgstr "E785: complete() ¤ÏÁÞÆþ¥â¡¼¥É¤Ç¤·¤«ÍøÍѤǤ­¤Þ¤»¤ó"
+
 #.
 #. * Yes this is ugly, I don't particularly like it either.  But doing it
 #. * this way has the compelling advantage that translations need not to
@@ -1021,6 +1024,21 @@
 msgid "finished sourcing %s"
 msgstr "%s ¤Î¼è¹þ¤ò´°Î»"
 
+msgid "modeline"
+msgstr "¥â¡¼¥É¹Ô"
+
+msgid "--cmd argument"
+msgstr "--cmd °ú¿ô"
+
+msgid "-c argument"
+msgstr "-c °ú¿ô"
+
+msgid "environment variable"
+msgstr "´Ä¶­ÊÑ¿ô"
+
+msgid "error handler"
+msgstr "¥¨¥é¡¼¥Ï¥ó¥É¥é"
+
 msgid "W15: Warning: Wrong line separator, ^M may be missing"
 msgstr "W15: ·Ù¹ð: ¹Ô¶èÀÚ¤¬ÉÔÀµ¤Ç¤¹. ^M ¤¬¤Ê¤¤¤Î¤Ç¤·¤ç¤¦"
 
@@ -1151,9 +1169,19 @@
 msgid "Greetings, Vim user!"
 msgstr "Vim »È¤¤¤µ¤ó¡¢¤ä¤¢!"
 
+msgid "E784: Cannot close last tab page"
+msgstr "E784: ºÇ¸å¤Î¥¿¥Ö¥Ú¡¼¥¸¤òÊĤ¸¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
+
+msgid "Already only one tab page"
+msgstr "´û¤Ë¥¿¥Ö¥Ú¡¼¥¸¤Ï1¤Ä¤·¤«¤¢¤ê¤Þ¤»¤ó"
+
 msgid "Edit File in new window"
 msgstr "¿·¤·¤¤¥¦¥£¥ó¥É¥¦¤Ç¥Õ¥¡¥¤¥ë¤òÊÔ½¸¤·¤Þ¤¹"
 
+#, c-format
+msgid "Tab page %d"
+msgstr "¥¿¥Ö¥Ú¡¼¥¸ %d"
+
 msgid "No swap file"
 msgstr "¥¹¥ï¥Ã¥×¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó"
 
@@ -1908,6 +1936,15 @@
 msgid "Vim: Received \"die\" request from session manager\n"
 msgstr "Vim: ¥»¥Ã¥·¥ç¥ó¥Þ¥Í¡¼¥¸¥ã¤«¤é \"die\" Í×µá¤ò¼õ¤±¼è¤ê¤Þ¤·¤¿\n"
 
+msgid "Close"
+msgstr "ÊĤ¸¤ë"
+
+msgid "New tab"
+msgstr "¿·µ¬¥¿¥Ö¥Ú¡¼¥¸"
+
+msgid "Open Tab..."
+msgstr "¥¿¥Ö¥Ú¡¼¥¸¤ò³«¤¯..."
+
 msgid "Vim: Main window unexpectedly destroyed\n"
 msgstr "Vim: ¥á¥¤¥ó¥¦¥£¥ó¥É¥¦¤¬ÉÔ°Õ¤ËÇ˲õ¤µ¤ì¤Þ¤·¤¿\n"
 
@@ -1979,6 +2016,12 @@
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: MDI¥¢¥×¥ê¤ÎÃæ¤Ç¤Ï¥¦¥£¥ó¥É¥¦¤ò³«¤±¤Þ¤»¤ó"
 
+msgid "Close tab"
+msgstr "¥¿¥Ö¥Ú¡¼¥¸¤òÊĤ¸¤ë"
+
+msgid "Open tab..."
+msgstr "¥¿¥Ö¥Ú¡¼¥¸¤ò³«¤¯"
+
 msgid "Find string (use '\\\\' to find  a '\\')"
 msgstr "¸¡º÷ʸ»úÎó ('\\' ¤ò¸¡º÷¤¹¤ë¤Ë¤Ï '\\\\')"
 
@@ -2055,10 +2098,6 @@
 msgid "Show size in Points"
 msgstr "¥µ¥¤¥º¤ò¥Ý¥¤¥ó¥È¤Çɽ¼¨¤¹¤ë"
 
-# msgid " BLOCK"
-# msgstr " ¥Ö¥í¥Ã¥¯"
-# msgid " LINE"
-# msgstr " ¹Ô"
 msgid "Encoding:"
 msgstr "¥¨¥ó¥³¡¼¥É:"
 
@@ -2658,8 +2697,6 @@
 msgid "Attempt to open script file again: \""
 msgstr "¥¹¥¯¥ê¥×¥È¥Õ¥¡¥¤¥ë¤òºÆ¤Ó³«¤¤¤Æ¤ß¤Þ¤¹: \""
 
-# msgid "\"\n"
-# msgstr "\"\n"
 msgid "Cannot open for reading: \""
 msgstr "ÆÉ¹þÍѤȤ·¤Æ³«¤±¤Þ¤»¤ó"
 
@@ -2835,6 +2872,9 @@
 msgid "--noplugin\t\tDon't load plugin scripts"
 msgstr "--noplugin\t\t¥×¥é¥°¥¤¥ó¥¹¥¯¥ê¥×¥È¤ò¥í¡¼¥É¤·¤Ê¤¤"
 
+msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
+msgstr "-p[N]\t\tN ¸Ä¥¿¥Ö¥Ú¡¼¥¸¤ò³«¤¯(¾ÊάÃÍ: ¥Õ¥¡¥¤¥ë¤Ë¤Ä¤­1¸Ä)"
+
 msgid "-o[N]\t\tOpen N windows (default: one for each file)"
 msgstr "-o[N]\t\tN ¸Ä¥¦¥£¥ó¥É¥¦¤ò³«¤¯(¾ÊάÃÍ: ¥Õ¥¡¥¤¥ë¤Ë¤Ä¤­1¸Ä)"
 
@@ -2888,6 +2928,9 @@
 "--remote-wait-silent <files>  Same, don't complain if there is no server"
 msgstr "--remote-wait-silent <files>  Ʊ¾å, ¥µ¡¼¥Ð¤¬Ìµ¤¯¤Æ¤â·Ù¹ðʸ¤ò½ÐÎϤ·¤Ê¤¤"
 
+msgid "--remote-tab <files>  As --remote but open tab page for each file"
+msgstr "--remote-tab <files>  --remote¤Ç¥Õ¥¡¥¤¥ë1¤Ä¤Ë¤Ä¤­1¤Ä¤Î¥¿¥Ö¥Ú¡¼¥¸¤ò³«¤¯"
+
 msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit"
 msgstr "--remote-send <keys>\tVim¥µ¡¼¥Ð¤Ë <keys> ¤òÁ÷¿®¤·¤Æ½ªÎ»¤¹¤ë"
 
@@ -3011,8 +3054,6 @@
 msgid "-P <parent title>\tOpen Vim inside parent application"
 msgstr "-P <¿Æ¤Î¥¿¥¤¥È¥ë>\tVim¤ò¿Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÃæ¤Çµ¯Æ°¤¹¤ë"
 
-# msgid "--help\t\tShow Gnome arguments"
-# msgstr "--help\t\tGNOME¤Î°ú¿ô¤ò¸«¤»¤ë"
 msgid "No display"
 msgstr "¥Ç¥£¥¹¥×¥ì¥¤¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
@@ -4146,6 +4187,9 @@
 msgid "...(truncated)"
 msgstr "...(¾Êά)"
 
+msgid "Message"
+msgstr "¥á¥Ã¥»¡¼¥¸"
+
 msgid "'columns' is not 80, cannot execute external commands"
 msgstr "'columns' ¤¬80¤Ç¤Ï¤Ê¤¤¤¿¤á, ³°Éô¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤Ç¤­¤Þ¤»¤ó"
 
@@ -4517,10 +4561,6 @@
 msgid " SELECT BLOCK"
 msgstr " ¶ë·ÁÁªÂò"
 
-# msgid " BLOCK"
-# msgstr " ¥Ö¥í¥Ã¥¯"
-# msgid " LINE"
-# msgstr " ¹Ô"
 msgid "recording"
 msgstr "µ­Ï¿Ãæ"
 
@@ -4562,6 +4602,10 @@
 msgid "Scanning included file: %s"
 msgstr "¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¥¹¥­¥ã¥óÃæ: %s"
 
+#, c-format
+msgid "Searching included file %s"
+msgstr "¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¥¹¥­¥ã¥óÃæ %s"
+
 msgid "E387: Match is on current line"
 msgstr "E387: ¸½ºß¹Ô¤Ë³ºÅö¤¬¤¢¤ê¤Þ¤¹"
 
@@ -4654,8 +4698,8 @@
 msgstr "%s Æâ¤Î %d ¹ÔÌܤ˥ե饰¤ÎÆó½Å»ÈÍѤ¬¤¢¤ê¤Þ¤¹: %s"
 
 #, c-format
-msgid "Wrong COMPOUNDMAX value in %s line %d: %s"
-msgstr "%s ¤Î %d ¹ÔÌܤΠCOMPOUNDMAX ¤ÎÃͤ˸í¤ê¤¬¤¢¤ê¤Þ¤¹: %s"
+msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
+msgstr "%s ¤Î %d ¹ÔÌܤΠCOMPOUNDWORDMAX ¤ÎÃͤ˸í¤ê¤¬¤¢¤ê¤Þ¤¹: %s"
 
 #, c-format
 msgid "Wrong COMPOUNDMIN value in %s line %d: %s"
@@ -4666,6 +4710,10 @@
 msgstr "%s ¤Î %d ¹ÔÌܤΠCOMPOUNDSYLMAX ¤ÎÃͤ˸í¤ê¤¬¤¢¤ê¤Þ¤¹: %s"
 
 #, c-format
+msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"
+msgstr "%s ¤Î %d ¹ÔÌܤΠCHECKCOMPOUNDPATTERN ¤ÎÃͤ˸í¤ê¤¬¤¢¤ê¤Þ¤¹: %s"
+
+#, c-format
 msgid "Different combining flag in continued affix block in %s line %d: %s"
 msgstr ""
 "%s ¤Î %d ¹ÔÌܤΠϢ³ affix ¥Ö¥í¥Ã¥¯¤Î¥Õ¥é¥°¤ÎÁȹ礻¤Ë°ã¤¤¤¬¤¢¤ê¤Þ¤¹: %s"
@@ -4676,10 +4724,10 @@
 
 #, c-format
 msgid ""
-"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND in %s line %d: "
-"%s"
+"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
+"line %d: %s"
 msgstr ""
-"%s ¤Î %d ¹ÔÌܤΠaffix ¤Ï BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND "
+"%s ¤Î %d ¹ÔÌܤΠaffix ¤Ï BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST "
 "¤Ë»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤: %s"
 
 #, c-format
@@ -4691,6 +4739,10 @@
 msgstr "%s ¤Î %d ¹ÔÌܤΠ¾ò·ï¤Ï²õ¤ì¤Æ¤¤¤Þ¤¹: %s"
 
 #, c-format
+msgid "Affix flags ignored when PFXPOSTPONE used in %s line %d: %s"
+msgstr "PFXPOSTPONE¤¬»ØÄꤵ¤ì¤¿¤Î¤Ç %s ¤Î %d ¹ÔÌܤΠaffix ¥Õ¥é¥°¤ò̵»ë¤·¤Þ¤·¤¿: %s"
+
+#, c-format
 msgid "Expected REP(SAL) count in %s line %d"
 msgstr "%s ¤Î %d ¹ÔÌÜ¤Ë¤Ï REP(SAL) ¤Î²ó¿ô¤¬É¬ÍפǤ¹"
 
@@ -4780,7 +4832,7 @@
 
 #, c-format
 msgid "/encoding= line after word ignored in %s line %d: %s"
-msgstr "%s ¡ós ¤Î %d ¹ÔÌܤΠñ¸ì¤Î¸å¤Î /encoding= ¹Ô¤ò̵»ë¤·¤Þ¤·¤¿: %s"
+msgstr "%s ¤Î %d ¹ÔÌܤΠñ¸ì¤Î¸å¤Î /encoding= ¹Ô¤ò̵»ë¤·¤Þ¤·¤¿: %s"
 
 #, c-format
 msgid "Duplicate /regions= line ignored in %s line %d: %s"
@@ -4859,6 +4911,14 @@
 msgid "E765: 'spellfile' does not have %ld entries"
 msgstr "E765: 'spellfile' ¤Ë¤Ï %ld ¸Ä¤Î¥¨¥ó¥È¥ê¤Ï¤¢¤ê¤Þ¤»¤ó"
 
+#, c-format
+msgid "Word removed from %s"
+msgstr "%s ¤«¤éñ¸ì¤¬ºï½ü¤µ¤ì¤Þ¤·¤¿"
+
+#, c-format
+msgid "Word added to %s"
+msgstr "%s ¤Ëñ¸ì¤¬Äɲ䵤ì¤Þ¤·¤¿"
+
 msgid "E763: Word characters differ between spell files"
 msgstr "E763: ñ¸ì¤Îʸ»ú¤¬¥¹¥Ú¥ë¥Õ¥¡¥¤¥ë¤È°Û¤Ê¤ê¤Þ¤¹"
 
@@ -5223,15 +5283,52 @@
 msgid "No undo possible; continue anyway"
 msgstr "²Äǽ¤Ê¥¢¥ó¥É¥¥¤Ï¤¢¤ê¤Þ¤»¤ó: ¤È¤ê¤¢¤¨¤ºÂ³¤±¤Þ¤¹"
 
+msgid "Already at oldest change"
+msgstr "´û¤Ë°ìÈָŤ¤Êѹ¹¤Ç¤¹"
+
+msgid "Already at newest change"
+msgstr "´û¤Ë°ìÈÖ¿·¤·¤¤Êѹ¹¤Ç¤¹"
+
+#, c-format
+msgid "Undo number %ld not found"
+msgstr "¥¢¥ó¥É¥¥ÈÖ¹æ %ld ¤¬¤ß¤Ä¤«¤ê¤Þ¤»¤ó"
+
 msgid "E438: u_undo: line numbers wrong"
 msgstr "E438: u_undo: ¹ÔÈֹ椬´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹"
 
-msgid "1 change"
-msgstr "1 ²Õ½êÊѹ¹¤·¤Þ¤·¤¿"
+msgid "more line"
+msgstr "¹Ô Äɲä·¤Þ¤·¤¿"
+
+msgid "¹Ô¤¢¤ê¤Þ¤¹"
+msgstr "¹Ô Äɲä·¤Þ¤·¤¿"
+
+msgid "line less"
+msgstr "¹Ô ºï½ü¤·¤Þ¤·¤¿"
+
+msgid "fewer lines"
+msgstr "¹Ô ºï½ü¤·¤Þ¤·¤¿"
+
+msgid "change"
+msgstr "²Õ½êÊѹ¹¤·¤Þ¤·¤¿"
+
+msgid "changes"
+msgstr "²Õ½êÊѹ¹¤·¤Þ¤·¤¿"
 
 #, c-format
-msgid "%ld changes"
-msgstr "%ld ²Õ½êÊѹ¹¤·¤Þ¤·¤¿"
+msgid "%ld %s; %s #%ld  %s"
+msgstr "%ld %s; %s #%ld  %s"
+
+msgid "before"
+msgstr "Á°Êý"
+
+msgid "after"
+msgstr "¸åÊý"
+
+msgid "Nothing to undo"
+msgstr "¥¢¥ó¥É¥¥Âоݤ¬¤¢¤ê¤Þ¤»¤ó"
+
+msgid "number changes  time"
+msgstr "ÈÖ¹æ   Êѹ¹     »þ¹ï"
 
 msgid "E439: undo list corrupt"
 msgstr "E439: ¥¢¥ó¥É¥¥¥ê¥¹¥È¤¬²õ¤ì¤Æ¤¤¤Þ¤¹"
@@ -5564,6 +5661,33 @@
 msgid "E447: Can't find file \"%s\" in path"
 msgstr "E447: path¤Ë¤Ï \"%s\" ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó"
 
+msgid "Edit with &multiple Vims"
+msgstr "Ê£¿ô¤ÎVim¤ÇÊÔ½¸¤¹¤ë (&M)"
+
+msgid "Edit with single &Vim"
+msgstr "1¤Ä¤ÎVim¤ÇÊÔ½¸¤¹¤ë (&V)"
+
+msgid "Diff with Vim"
+msgstr "Vim¤Çº¹Ê¬¤ò¸«¤ë"
+
+msgid "Edit with &Vim"
+msgstr "Vim¤ÇÊÔ½¸¤¹¤ë (&V)"
+
+msgid "Edit with existing Vim - "
+msgstr "´û¸¤ÎVim¤ÇÊÔ½¸¤¹¤ë - "
+
+msgid "Edits the selected file(s) with Vim"
+msgstr "ÁªÂò¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤òVim¤ÇÊÔ½¸¤¹¤ë"
+
+msgid "Error creating process: Check if gvim is in your path!"
+msgstr "µ¯Æ°¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: gvim ¤Ø¤Î¥Ñ¥¹¤¬Àµ¤·¤¯ÀßÄꤵ¤ì¤Æ¤¤¤ë¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤!"
+
+msgid "gvimext.dll error"
+msgstr "gvimext.dll ¥¨¥é¡¼"
+
+msgid "Path length too long!"
+msgstr "¥Ñ¥¹¤¬Ä¹²á¤®¤Þ¤¹!"
+
 msgid "--No lines in buffer--"
 msgstr "--¥Ð¥Ã¥Õ¥¡¤Ë¹Ô¤¬¤¢¤ê¤Þ¤»¤ó--"
 
diff --git a/src/po/ja.sjis.po b/src/po/ja.sjis.po
index 411fc3f..f663ea2 100644
--- a/src/po/ja.sjis.po
+++ b/src/po/ja.sjis.po
@@ -4,13 +4,13 @@
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
 # MURAOKA Taro <koron@tka.att.ne.jp>, 2001-6.
-# Last Change: 05-Feb-2006.
+# Last Change: 28-Mar-2006.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Vim 7.0\n"
-"POT-Creation-Date: 2006-02-04 22:44+0900\n"
-"PO-Revision-Date: 2006-02-05 00:10+0900\n"
+"POT-Creation-Date: 2006-03-28 20:12+0900\n"
+"PO-Revision-Date: 2006-03-28 21:10+0900\n"
 "Last-Translator: MURAOKA Taro <koron@tka.att.ne.jp>\n"
 "Language-Team: MURAOKA Taro <koron@tka.att.ne.jp>\n"
 "MIME-Version: 1.0\n"
@@ -130,7 +130,7 @@
 msgid "help"
 msgstr "ƒwƒ‹ƒv"
 
-msgid "[help]"
+msgid "[Help]"
 msgstr "[ƒwƒ‹ƒv]"
 
 msgid "[Preview]"
@@ -155,8 +155,8 @@
 msgid "[Location List]"
 msgstr "[êŠƒŠƒXƒg]"
 
-msgid "[Error List]"
-msgstr "[ƒGƒ‰[ƒŠƒXƒg]"
+msgid "[Quickfix List]"
+msgstr "[QuickfixƒŠƒXƒg]"
 
 msgid ""
 "\n"
@@ -489,6 +489,9 @@
 msgid "E699: Too many arguments"
 msgstr "E699: ‚ª‘½‰ß‚¬‚Ü‚·"
 
+msgid "E785: complete() can only be used in Insert mode"
+msgstr "E785: complete() ‚Í‘}“üƒ‚[ƒh‚Å‚µ‚©—˜—p‚Å‚«‚Ü‚¹‚ñ"
+
 #.
 #. * Yes this is ugly, I don't particularly like it either.  But doing it
 #. * this way has the compelling advantage that translations need not to
@@ -1021,6 +1024,21 @@
 msgid "finished sourcing %s"
 msgstr "%s ‚̎捞‚ðŠ®—¹"
 
+msgid "modeline"
+msgstr "ƒ‚[ƒhs"
+
+msgid "--cmd argument"
+msgstr "--cmd ˆø”"
+
+msgid "-c argument"
+msgstr "-c ˆø”"
+
+msgid "environment variable"
+msgstr "ŠÂ‹«•ϐ”"
+
+msgid "error handler"
+msgstr "ƒGƒ‰[ƒnƒ“ƒhƒ‰"
+
 msgid "W15: Warning: Wrong line separator, ^M may be missing"
 msgstr "W15: Œx: s‹æØ‚ª•s³‚Å‚·. ^M ‚ª‚È‚¢‚̂łµ‚傤"
 
@@ -1151,9 +1169,19 @@
 msgid "Greetings, Vim user!"
 msgstr "Vim Žg‚¢‚³‚ñA‚â‚ !"
 
+msgid "E784: Cannot close last tab page"
+msgstr "E784: ÅŒã‚̃^ƒuƒy[ƒW‚ð•‚¶‚邱‚Ƃ͂ł«‚Ü‚¹‚ñ"
+
+msgid "Already only one tab page"
+msgstr "Šù‚Ƀ^ƒuƒy[ƒW‚Í1‚‚µ‚©‚ ‚è‚Ü‚¹‚ñ"
+
 msgid "Edit File in new window"
 msgstr "V‚µ‚¢ƒEƒBƒ“ƒhƒE‚Ńtƒ@ƒCƒ‹‚ð•ҏW‚µ‚Ü‚·"
 
+#, c-format
+msgid "Tab page %d"
+msgstr "ƒ^ƒuƒy[ƒW %d"
+
 msgid "No swap file"
 msgstr "ƒXƒƒbƒvƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚¹‚ñ"
 
@@ -1908,6 +1936,15 @@
 msgid "Vim: Received \"die\" request from session manager\n"
 msgstr "Vim: ƒZƒbƒVƒ‡ƒ“ƒ}ƒl[ƒWƒƒ‚©‚ç \"die\" —v‹‚ðŽó‚¯Žæ‚è‚Ü‚µ‚½\n"
 
+msgid "Close"
+msgstr "•‚¶‚é"
+
+msgid "New tab"
+msgstr "V‹Kƒ^ƒuƒy[ƒW"
+
+msgid "Open Tab..."
+msgstr "ƒ^ƒuƒy[ƒW‚ðŠJ‚­..."
+
 msgid "Vim: Main window unexpectedly destroyed\n"
 msgstr "Vim: ƒƒCƒ“ƒEƒBƒ“ƒhƒE‚ª•sˆÓ‚É”j‰ó‚³‚ê‚Ü‚µ‚½\n"
 
@@ -1979,6 +2016,12 @@
 msgid "E672: Unable to open window inside MDI application"
 msgstr "E672: MDIƒAƒvƒŠ‚Ì’†‚ł̓EƒBƒ“ƒhƒE‚ðŠJ‚¯‚Ü‚¹‚ñ"
 
+msgid "Close tab"
+msgstr "ƒ^ƒuƒy[ƒW‚ð•‚¶‚é"
+
+msgid "Open tab..."
+msgstr "ƒ^ƒuƒy[ƒW‚ðŠJ‚­"
+
 msgid "Find string (use '\\\\' to find  a '\\')"
 msgstr "ŒŸõ•¶Žš—ñ ('\\' ‚ðŒŸõ‚·‚é‚É‚Í '\\\\')"
 
@@ -2055,10 +2098,6 @@
 msgid "Show size in Points"
 msgstr "ƒTƒCƒY‚ðƒ|ƒCƒ“ƒg‚Å•\\ަ‚·‚é"
 
-# msgid " BLOCK"
-# msgstr " ƒuƒƒbƒN"
-# msgid " LINE"
-# msgstr " s"
 msgid "Encoding:"
 msgstr "ƒGƒ“ƒR[ƒh:"
 
@@ -2658,8 +2697,6 @@
 msgid "Attempt to open script file again: \""
 msgstr "ƒXƒNƒŠƒvƒgƒtƒ@ƒCƒ‹‚ðÄ‚ÑŠJ‚¢‚Ă݂܂·: \""
 
-# msgid "\"\n"
-# msgstr "\"\n"
 msgid "Cannot open for reading: \""
 msgstr "“Ǎž—p‚Æ‚µ‚ÄŠJ‚¯‚Ü‚¹‚ñ"
 
@@ -2835,6 +2872,9 @@
 msgid "--noplugin\t\tDon't load plugin scripts"
 msgstr "--noplugin\t\tƒvƒ‰ƒOƒCƒ“ƒXƒNƒŠƒvƒg‚ðƒ[ƒh‚µ‚È‚¢"
 
+msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
+msgstr "-p[N]\t\tN ŒÂƒ^ƒuƒy[ƒW‚ðŠJ‚­(È—ª’l: ƒtƒ@ƒCƒ‹‚ɂ‚«1ŒÂ)"
+
 msgid "-o[N]\t\tOpen N windows (default: one for each file)"
 msgstr "-o[N]\t\tN ŒÂƒEƒBƒ“ƒhƒE‚ðŠJ‚­(È—ª’l: ƒtƒ@ƒCƒ‹‚ɂ‚«1ŒÂ)"
 
@@ -2888,6 +2928,9 @@
 "--remote-wait-silent <files>  Same, don't complain if there is no server"
 msgstr "--remote-wait-silent <files>  “¯ã, ƒT[ƒo‚ª–³‚­‚Ä‚àŒx•¶‚ðo—Í‚µ‚È‚¢"
 
+msgid "--remote-tab <files>  As --remote but open tab page for each file"
+msgstr "--remote-tab <files>  --remote‚Ńtƒ@ƒCƒ‹1‚‚ɂ‚«1‚‚̃^ƒuƒy[ƒW‚ðŠJ‚­"
+
 msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit"
 msgstr "--remote-send <keys>\tVimƒT[ƒo‚É <keys> ‚𑗐M‚µ‚ďI—¹‚·‚é"
 
@@ -3011,8 +3054,6 @@
 msgid "-P <parent title>\tOpen Vim inside parent application"
 msgstr "-P <e‚̃^ƒCƒgƒ‹>\tVim‚ðeƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì’†‚Å‹N“®‚·‚é"
 
-# msgid "--help\t\tShow Gnome arguments"
-# msgstr "--help\t\tGNOME‚̈ø”‚ðŒ©‚¹‚é"
 msgid "No display"
 msgstr "ƒfƒBƒXƒvƒŒƒC‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ"
 
@@ -4146,6 +4187,9 @@
 msgid "...(truncated)"
 msgstr "...(È—ª)"
 
+msgid "Message"
+msgstr "ƒƒbƒZ[ƒW"
+
 msgid "'columns' is not 80, cannot execute external commands"
 msgstr "'columns' ‚ª80‚ł͂Ȃ¢‚½‚ß, ŠO•”ƒRƒ}ƒ“ƒh‚ðŽÀs‚Å‚«‚Ü‚¹‚ñ"
 
@@ -4517,10 +4561,6 @@
 msgid " SELECT BLOCK"
 msgstr " ‹éŒ`‘I‘ð"
 
-# msgid " BLOCK"
-# msgstr " ƒuƒƒbƒN"
-# msgid " LINE"
-# msgstr " s"
 msgid "recording"
 msgstr "‹L˜^’†"
 
@@ -4562,6 +4602,10 @@
 msgid "Scanning included file: %s"
 msgstr "ƒCƒ“ƒNƒ‹[ƒh‚³‚ꂽƒtƒ@ƒCƒ‹‚ðƒXƒLƒƒƒ“’†: %s"
 
+#, c-format
+msgid "Searching included file %s"
+msgstr "ƒCƒ“ƒNƒ‹[ƒh‚³‚ꂽƒtƒ@ƒCƒ‹‚ðƒXƒLƒƒƒ“’† %s"
+
 msgid "E387: Match is on current line"
 msgstr "E387: Œ»Ýs‚ÉŠY“–‚ª‚ ‚è‚Ü‚·"
 
@@ -4654,8 +4698,8 @@
 msgstr "%s “à‚Ì %d s–ڂɃtƒ‰ƒO‚Ì“ñdŽg—p‚ª‚ ‚è‚Ü‚·: %s"
 
 #, c-format
-msgid "Wrong COMPOUNDMAX value in %s line %d: %s"
-msgstr "%s ‚Ì %d s–Ú‚Ì COMPOUNDMAX ‚Ì’l‚ÉŒë‚肪‚ ‚è‚Ü‚·: %s"
+msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
+msgstr "%s ‚Ì %d s–Ú‚Ì COMPOUNDWORDMAX ‚Ì’l‚ÉŒë‚肪‚ ‚è‚Ü‚·: %s"
 
 #, c-format
 msgid "Wrong COMPOUNDMIN value in %s line %d: %s"
@@ -4666,6 +4710,10 @@
 msgstr "%s ‚Ì %d s–Ú‚Ì COMPOUNDSYLMAX ‚Ì’l‚ÉŒë‚肪‚ ‚è‚Ü‚·: %s"
 
 #, c-format
+msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s"
+msgstr "%s ‚Ì %d s–Ú‚Ì CHECKCOMPOUNDPATTERN ‚Ì’l‚ÉŒë‚肪‚ ‚è‚Ü‚·: %s"
+
+#, c-format
 msgid "Different combining flag in continued affix block in %s line %d: %s"
 msgstr ""
 "%s ‚Ì %d s–Ú‚Ì ˜A‘± affix ƒuƒƒbƒN‚̃tƒ‰ƒO‚Ì‘g‡‚¹‚ɈႢ‚ª‚ ‚è‚Ü‚·: %s"
@@ -4676,10 +4724,10 @@
 
 #, c-format
 msgid ""
-"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND in %s line %d: "
-"%s"
+"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
+"line %d: %s"
 msgstr ""
-"%s ‚Ì %d s–Ú‚Ì affix ‚Í BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND "
+"%s ‚Ì %d s–Ú‚Ì affix ‚Í BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST "
 "‚ÉŽg—p‚µ‚Ä‚­‚¾‚³‚¢: %s"
 
 #, c-format
@@ -4691,6 +4739,10 @@
 msgstr "%s ‚Ì %d s–Ú‚Ì ðŒ‚͉ó‚ê‚Ä‚¢‚Ü‚·: %s"
 
 #, c-format
+msgid "Affix flags ignored when PFXPOSTPONE used in %s line %d: %s"
+msgstr "PFXPOSTPONE‚ªŽw’肳‚ꂽ‚̂Š%s ‚Ì %d s–Ú‚Ì affix ƒtƒ‰ƒO‚𖳎‹‚µ‚Ü‚µ‚½: %s"
+
+#, c-format
 msgid "Expected REP(SAL) count in %s line %d"
 msgstr "%s ‚Ì %d s–Ú‚É‚Í REP(SAL) ‚̉ñ”‚ª•K—v‚Å‚·"
 
@@ -4780,7 +4832,7 @@
 
 #, c-format
 msgid "/encoding= line after word ignored in %s line %d: %s"
-msgstr "%s “s ‚Ì %d s–Ú‚Ì ’PŒê‚ÌŒã‚Ì /encoding= s‚𖳎‹‚µ‚Ü‚µ‚½: %s"
+msgstr "%s ‚Ì %d s–Ú‚Ì ’PŒê‚ÌŒã‚Ì /encoding= s‚𖳎‹‚µ‚Ü‚µ‚½: %s"
 
 #, c-format
 msgid "Duplicate /regions= line ignored in %s line %d: %s"
@@ -4859,6 +4911,14 @@
 msgid "E765: 'spellfile' does not have %ld entries"
 msgstr "E765: 'spellfile' ‚É‚Í %ld ŒÂ‚̃Gƒ“ƒgƒŠ‚Í‚ ‚è‚Ü‚¹‚ñ"
 
+#, c-format
+msgid "Word removed from %s"
+msgstr "%s ‚©‚ç’PŒê‚ªíœ‚³‚ê‚Ü‚µ‚½"
+
+#, c-format
+msgid "Word added to %s"
+msgstr "%s ‚É’PŒê‚ª’ljÁ‚³‚ê‚Ü‚µ‚½"
+
 msgid "E763: Word characters differ between spell files"
 msgstr "E763: ’PŒê‚Ì•¶Žš‚ªƒXƒyƒ‹ƒtƒ@ƒCƒ‹‚ƈقȂè‚Ü‚·"
 
@@ -5223,15 +5283,52 @@
 msgid "No undo possible; continue anyway"
 msgstr "‰Â”\\‚ȃAƒ“ƒhƒD‚Í‚ ‚è‚Ü‚¹‚ñ: ‚Ƃ肠‚¦‚¸‘±‚¯‚Ü‚·"
 
+msgid "Already at oldest change"
+msgstr "Šù‚Ɉê”Ԍ¢•ύX‚Å‚·"
+
+msgid "Already at newest change"
+msgstr "Šù‚Ɉê”ԐV‚µ‚¢•ύX‚Å‚·"
+
+#, c-format
+msgid "Undo number %ld not found"
+msgstr "ƒAƒ“ƒhƒD”ԍ† %ld ‚ª‚݂‚©‚è‚Ü‚¹‚ñ"
+
 msgid "E438: u_undo: line numbers wrong"
 msgstr "E438: u_undo: s”ԍ†‚ªŠÔˆá‚Á‚Ä‚¢‚Ü‚·"
 
-msgid "1 change"
-msgstr "1 ‰ÓŠ•ύX‚µ‚Ü‚µ‚½"
+msgid "more line"
+msgstr "s ’ljÁ‚µ‚Ü‚µ‚½"
+
+msgid "s‚ ‚è‚Ü‚·"
+msgstr "s ’ljÁ‚µ‚Ü‚µ‚½"
+
+msgid "line less"
+msgstr "s íœ‚µ‚Ü‚µ‚½"
+
+msgid "fewer lines"
+msgstr "s íœ‚µ‚Ü‚µ‚½"
+
+msgid "change"
+msgstr "‰ÓŠ•ύX‚µ‚Ü‚µ‚½"
+
+msgid "changes"
+msgstr "‰ÓŠ•ύX‚µ‚Ü‚µ‚½"
 
 #, c-format
-msgid "%ld changes"
-msgstr "%ld ‰ÓŠ•ύX‚µ‚Ü‚µ‚½"
+msgid "%ld %s; %s #%ld  %s"
+msgstr "%ld %s; %s #%ld  %s"
+
+msgid "before"
+msgstr "‘O•û"
+
+msgid "after"
+msgstr "Œã•û"
+
+msgid "Nothing to undo"
+msgstr "ƒAƒ“ƒhƒD‘Ώۂª‚ ‚è‚Ü‚¹‚ñ"
+
+msgid "number changes  time"
+msgstr "”ԍ†   •ύX     Žž"
 
 msgid "E439: undo list corrupt"
 msgstr "E439: ƒAƒ“ƒhƒDƒŠƒXƒg‚ª‰ó‚ê‚Ä‚¢‚Ü‚·"
@@ -5564,6 +5661,33 @@
 msgid "E447: Can't find file \"%s\" in path"
 msgstr "E447: path‚É‚Í \"%s\" ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚¹‚ñ"
 
+msgid "Edit with &multiple Vims"
+msgstr "•¡”‚ÌVim‚ŕҏW‚·‚é (&M)"
+
+msgid "Edit with single &Vim"
+msgstr "1‚‚ÌVim‚ŕҏW‚·‚é (&V)"
+
+msgid "Diff with Vim"
+msgstr "Vim‚ō·•ª‚ðŒ©‚é"
+
+msgid "Edit with &Vim"
+msgstr "Vim‚ŕҏW‚·‚é (&V)"
+
+msgid "Edit with existing Vim - "
+msgstr "Šù‘¶‚ÌVim‚ŕҏW‚·‚é - "
+
+msgid "Edits the selected file(s) with Vim"
+msgstr "‘I‘ð‚³‚ê‚½ƒtƒ@ƒCƒ‹‚ðVim‚ŕҏW‚·‚é"
+
+msgid "Error creating process: Check if gvim is in your path!"
+msgstr "‹N“®‚ÉŽ¸”s‚µ‚Ü‚µ‚½: gvim ‚ւ̃pƒX‚ª³‚µ‚­Ý’肳‚ê‚Ä‚¢‚é‚©Šm”F‚µ‚Ä‚­‚¾‚³‚¢!"
+
+msgid "gvimext.dll error"
+msgstr "gvimext.dll ƒGƒ‰["
+
+msgid "Path length too long!"
+msgstr "ƒpƒX‚ª’·‰ß‚¬‚Ü‚·!"
+
 msgid "--No lines in buffer--"
 msgstr "--ƒoƒbƒtƒ@‚ɍs‚ª‚ ‚è‚Ü‚¹‚ñ--"
 
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 861e74c..9f1fae4 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -401,8 +401,11 @@
 	}
 
 #if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
-	/* Show extra info in the preview window if there is something and
-	 * 'completeopt' contains "preview". */
+	/*
+	 * Show extra info in the preview window if there is something and
+	 * 'completeopt' contains "preview".
+	 * NOTE: Be very careful not to sync undo!
+	 */
 	if (pum_array[pum_selected].pum_info != NULL
 					    && vim_strchr(p_cot, 'p') != NULL)
 	{
@@ -411,7 +414,7 @@
 
 	    /* Open a preview window.  3 lines by default. */
 	    g_do_tagpreview = 3;
-	    resized = prepare_tagpreview();
+	    resized = prepare_tagpreview(FALSE);
 	    g_do_tagpreview = 0;
 
 	    if (curwin->w_p_pvw)
@@ -496,7 +499,7 @@
 			update_screen(0);
 			pum_do_redraw = FALSE;
 
-			if (win_valid(curwin_save))
+			if (!resized && win_valid(curwin_save))
 			    win_enter(curwin_save, TRUE);
 
 			/* May need to update the screen again when there are
diff --git a/src/proto/ex_cmds.pro b/src/proto/ex_cmds.pro
index 84741c4..4382e65 100644
--- a/src/proto/ex_cmds.pro
+++ b/src/proto/ex_cmds.pro
@@ -1,59 +1,59 @@
 /* ex_cmds.c */
-extern void do_ascii __ARGS((exarg_T *eap));
-extern void ex_align __ARGS((exarg_T *eap));
-extern void ex_sort __ARGS((exarg_T *eap));
-extern void ex_retab __ARGS((exarg_T *eap));
-extern int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
-extern void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
-extern void free_prev_shellcmd __ARGS((void));
-extern void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
-extern void do_shell __ARGS((char_u *cmd, int flags));
-extern char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
-extern void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
-extern int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
-extern int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
-extern void write_viminfo __ARGS((char_u *file, int forceit));
-extern int viminfo_readline __ARGS((vir_T *virp));
-extern char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
-extern void viminfo_writestring __ARGS((FILE *fd, char_u *p));
-extern void do_fixdel __ARGS((exarg_T *eap));
-extern void print_line_no_prefix __ARGS((linenr_T lnum, int use_number, int list));
-extern void print_line __ARGS((linenr_T lnum, int use_number, int list));
-extern void ex_file __ARGS((exarg_T *eap));
-extern void ex_update __ARGS((exarg_T *eap));
-extern void ex_write __ARGS((exarg_T *eap));
-extern int do_write __ARGS((exarg_T *eap));
-extern void ex_wnext __ARGS((exarg_T *eap));
-extern void do_wqall __ARGS((exarg_T *eap));
-extern int not_writing __ARGS((void));
-extern int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
-extern int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
-extern void ex_append __ARGS((exarg_T *eap));
-extern void ex_change __ARGS((exarg_T *eap));
-extern void ex_z __ARGS((exarg_T *eap));
-extern int check_restricted __ARGS((void));
-extern int check_secure __ARGS((void));
-extern void do_sub __ARGS((exarg_T *eap));
-extern int do_sub_msg __ARGS((int count_only));
-extern void ex_global __ARGS((exarg_T *eap));
-extern void global_exe __ARGS((char_u *cmd));
-extern int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
-extern void write_viminfo_sub_string __ARGS((FILE *fp));
-extern void free_old_sub __ARGS((void));
-extern int prepare_tagpreview __ARGS((void));
-extern void ex_help __ARGS((exarg_T *eap));
-extern char_u *check_help_lang __ARGS((char_u *arg));
-extern int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case));
-extern int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang));
-extern void fix_help_buffer __ARGS((void));
-extern void ex_exusage __ARGS((exarg_T *eap));
-extern void ex_viusage __ARGS((exarg_T *eap));
-extern void ex_helptags __ARGS((exarg_T *eap));
-extern void ex_sign __ARGS((exarg_T *eap));
-extern void sign_gui_started __ARGS((void));
-extern int sign_get_attr __ARGS((int typenr, int line));
-extern char_u *sign_get_text __ARGS((int typenr));
-extern void *sign_get_image __ARGS((int typenr));
-extern char_u *sign_typenr2name __ARGS((int typenr));
-extern void ex_drop __ARGS((exarg_T *eap));
+void do_ascii __ARGS((exarg_T *eap));
+void ex_align __ARGS((exarg_T *eap));
+void ex_sort __ARGS((exarg_T *eap));
+void ex_retab __ARGS((exarg_T *eap));
+int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
+void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
+void free_prev_shellcmd __ARGS((void));
+void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
+void do_shell __ARGS((char_u *cmd, int flags));
+char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
+int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
+void write_viminfo __ARGS((char_u *file, int forceit));
+int viminfo_readline __ARGS((vir_T *virp));
+char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
+void viminfo_writestring __ARGS((FILE *fd, char_u *p));
+void do_fixdel __ARGS((exarg_T *eap));
+void print_line_no_prefix __ARGS((linenr_T lnum, int use_number, int list));
+void print_line __ARGS((linenr_T lnum, int use_number, int list));
+void ex_file __ARGS((exarg_T *eap));
+void ex_update __ARGS((exarg_T *eap));
+void ex_write __ARGS((exarg_T *eap));
+int do_write __ARGS((exarg_T *eap));
+void ex_wnext __ARGS((exarg_T *eap));
+void do_wqall __ARGS((exarg_T *eap));
+int not_writing __ARGS((void));
+int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
+int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
+void ex_append __ARGS((exarg_T *eap));
+void ex_change __ARGS((exarg_T *eap));
+void ex_z __ARGS((exarg_T *eap));
+int check_restricted __ARGS((void));
+int check_secure __ARGS((void));
+void do_sub __ARGS((exarg_T *eap));
+int do_sub_msg __ARGS((int count_only));
+void ex_global __ARGS((exarg_T *eap));
+void global_exe __ARGS((char_u *cmd));
+int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+void write_viminfo_sub_string __ARGS((FILE *fp));
+void free_old_sub __ARGS((void));
+int prepare_tagpreview __ARGS((int undo_sync));
+void ex_help __ARGS((exarg_T *eap));
+char_u *check_help_lang __ARGS((char_u *arg));
+int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case));
+int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang));
+void fix_help_buffer __ARGS((void));
+void ex_exusage __ARGS((exarg_T *eap));
+void ex_viusage __ARGS((exarg_T *eap));
+void ex_helptags __ARGS((exarg_T *eap));
+void ex_sign __ARGS((exarg_T *eap));
+void sign_gui_started __ARGS((void));
+int sign_get_attr __ARGS((int typenr, int line));
+char_u *sign_get_text __ARGS((int typenr));
+void *sign_get_image __ARGS((int typenr));
+char_u *sign_typenr2name __ARGS((int typenr));
+void ex_drop __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
diff --git a/src/proto/gui_mac.pro b/src/proto/gui_mac.pro
index c640351..c943b08 100644
--- a/src/proto/gui_mac.pro
+++ b/src/proto/gui_mac.pro
@@ -28,7 +28,7 @@
 void gui_mch_set_winsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
 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));
+void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height, int direction));
 void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
 void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
 void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
diff --git a/src/search.c b/src/search.c
index 145f6c8..41f38a3 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4927,7 +4927,7 @@
 		    if (g_do_tagpreview != 0)
 		    {
 			curwin_save = curwin;
-			prepare_tagpreview();
+			prepare_tagpreview(TRUE);
 		    }
 #endif
 		    if (action == ACTION_SPLIT)
diff --git a/src/tag.c b/src/tag.c
index 6c8888c..a9ac537 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -3101,7 +3101,7 @@
 	     * Make the preview window the current window.
 	     * Open a preview window when needed.
 	     */
-	    prepare_tagpreview();
+	    prepare_tagpreview(TRUE);
 	}
     }
 
diff --git a/src/version.h b/src/version.h
index 3b06de9..ce5c971 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70c"
 #define VIM_VERSION_SHORT	"7.0c"
-#define VIM_VERSION_MEDIUM	"7.0c01 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0c01 BETA (2006 Mar 27)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0c01 BETA (2006 Mar 27, compiled "
+#define VIM_VERSION_MEDIUM	"7.0c02 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0c02 BETA (2006 Mar 28)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0c02 BETA (2006 Mar 28, compiled "