updated for version 7.2a
diff --git a/src/INSTALL b/src/INSTALL
index 2269e41..210d773 100644
--- a/src/INSTALL
+++ b/src/INSTALL
@@ -14,6 +14,7 @@
 See INSTALLmac.txt              for Macintosh
 See INSTALLpc.txt               for PC (MS-DOS, Windows 95/98/NT/XP)
 See INSTALLvms.txt              for VMS
+See INSTALLx.txt		for cross-compiling on Unix
 See ../runtime/doc/os_390.txt   for OS/390 Unix
 See ../runtime/doc/os_beos.txt  for BeBox
 
diff --git a/src/edit.c b/src/edit.c
index fb17eec..e04c720 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -9300,7 +9300,7 @@
 	    i = cursor->col - fpos.col;
 	    if (i > 0)
 	    {
-		mch_memmove(ptr, ptr + i, STRLEN(ptr + i) + 1);
+		STRMOVE(ptr, ptr + i);
 		/* correct replace stack. */
 		if ((State & REPLACE_FLAG)
 #ifdef FEAT_VREPLACE
diff --git a/src/ops.c b/src/ops.c
index ba774b8..d79d75d 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -516,7 +516,7 @@
 	copy_spaces(newp + bd.textcol + i, (size_t)j);
 
 	/* the end */
-	mch_memmove(newp + STRLEN(newp), midp, (size_t)STRLEN(midp) + 1);
+	STRMOVE(newp + STRLEN(newp), midp);
     }
     /* replace the line */
     ml_replace(curwin->w_cursor.lnum, newp, FALSE);
@@ -616,7 +616,7 @@
 
 	if (spaces > 0)
 	    offset += count;
-	mch_memmove(newp + offset, oldp, (size_t)(STRLEN(oldp) + 1));
+	STRMOVE(newp + offset, oldp);
 
 	ml_replace(lnum, newp, FALSE);
 
@@ -1759,8 +1759,7 @@
 				     (size_t)(bd.startspaces + bd.endspaces));
 	    /* copy the part after the deleted part */
 	    oldp += bd.textcol + bd.textlen;
-	    mch_memmove(newp + bd.textcol + bd.startspaces + bd.endspaces,
-						      oldp, STRLEN(oldp) + 1);
+	    STRMOVE(newp + bd.textcol + bd.startspaces + bd.endspaces, oldp);
 	    /* replace the line */
 	    ml_replace(lnum, newp, FALSE);
 	}
@@ -2081,7 +2080,7 @@
 		/* insert post-spaces */
 		copy_spaces(newp + STRLEN(newp), (size_t)bd.endspaces);
 		/* copy the part after the changed part */
-		mch_memmove(newp + STRLEN(newp), oldp, STRLEN(oldp) + 1);
+		STRMOVE(newp + STRLEN(newp), oldp);
 	    }
 	    /* replace the line */
 	    ml_replace(curwin->w_cursor.lnum, newp, FALSE);
@@ -2696,7 +2695,7 @@
 			mch_memmove(newp + offset, ins_text, (size_t)ins_len);
 			offset += ins_len;
 			oldp += bd.textcol;
-			mch_memmove(newp + offset, oldp, STRLEN(oldp) + 1);
+			STRMOVE(newp + offset, oldp);
 			ml_replace(linenr, newp, FALSE);
 		    }
 		}
@@ -3662,7 +3661,7 @@
 		    mch_memmove(ptr, y_array[0], (size_t)yanklen);
 		    ptr += yanklen;
 		}
-		mch_memmove(ptr, oldp + col, STRLEN(oldp + col) + 1);
+		STRMOVE(ptr, oldp + col);
 		ml_replace(lnum, newp, FALSE);
 		/* Put cursor on last putted char. */
 		curwin->w_cursor.col += (colnr_T)(totlen - 1);
diff --git a/src/option.c b/src/option.c
index 885c547..8543b48 100644
--- a/src/option.c
+++ b/src/option.c
@@ -2846,7 +2846,6 @@
 #ifdef FEAT_SCROLLBIND
 static char *(p_scbopt_values[]) = {"ver", "hor", "jump", NULL};
 #endif
-static char *(p_swb_values[]) = {"useopen", "usetab", "split", NULL};
 static char *(p_debug_values[]) = {"msg", "throw", "beep", NULL};
 #ifdef FEAT_VERTSPLIT
 static char *(p_ead_values[]) = {"both", "ver", "hor", NULL};
@@ -3276,20 +3275,8 @@
     }
 # else
 #  ifdef MACOS_CONVERT
-    if (mch_getenv((char_u *)"LANG") == NULL)
-    {
-	char	buf[20];
-	if (LocaleRefGetPartString(NULL,
-		    kLocaleLanguageMask | kLocaleLanguageVariantMask |
-		    kLocaleRegionMask | kLocaleRegionVariantMask,
-		    sizeof buf, buf) == noErr && *buf)
-	{
-	    vim_setenv((char_u *)"LANG", (char_u *)buf);
-#   ifdef HAVE_LOCALE_H
-	    setlocale(LC_ALL, "");
-#   endif
-	}
-    }
+    /* Moved to os_mac_conv.c to avoid dependency problems. */
+    mac_lang_init();
 #  endif
 # endif
 
@@ -4599,8 +4586,7 @@
 				else
 				{
 				    i = (int)STRLEN(newval);
-				    mch_memmove(newval + i + comma, origval,
-							  STRLEN(origval) + 1);
+				    STRMOVE(newval + i + comma, origval);
 				}
 				if (comma)
 				    newval[i] = ',';
@@ -4629,8 +4615,7 @@
 					    ++i;
 					}
 				    }
-				    mch_memmove(newval + (s - origval), s + i,
-							   STRLEN(s + i) + 1);
+				    STRMOVE(newval + (s - origval), s + i);
 				}
 			    }
 
@@ -4641,7 +4626,7 @@
 				    if ((!(flags & P_COMMA) || *s != ',')
 					    && vim_strchr(s + 1, *s) != NULL)
 				    {
-					mch_memmove(s, s + 1, STRLEN(s));
+					STRMOVE(s, s + 1);
 					--s;
 				    }
 			    }
@@ -6230,7 +6215,7 @@
     /* 'switchbuf' */
     else if (varp == &p_swb)
     {
-	if (check_opt_strings(p_swb, p_swb_values, TRUE) != OK)
+	if (opt_strings_flags(p_swb, p_swb_values, &swb_flags, TRUE) != OK)
 	    errmsg = e_invarg;
     }
 
@@ -7183,7 +7168,7 @@
 	}
 	/* remove 's' from p_shm */
 	else if (!p_terse && p != NULL)
-	    mch_memmove(p, p + 1, STRLEN(p));
+	    STRMOVE(p, p + 1);
     }
 
     /* when 'paste' is set or reset also change other options */
@@ -8177,7 +8162,8 @@
 	{
 #ifdef FEAT_CRYPT
 	    /* never return the value of the crypt key */
-	    if ((char_u **)varp == &curbuf->b_p_key)
+	    if ((char_u **)varp == &curbuf->b_p_key
+						&& **(char_u **)(varp) != NUL)
 		*stringval = vim_strsave((char_u *)"*****");
 	    else
 #endif
@@ -10032,7 +10018,7 @@
 		&& (options[expand_option_idx].flags & P_EXPAND)
 		&& vim_isfilec(var[2])
 		&& (var[2] != '\\' || (var == buf && var[4] != '\\')))
-	    mch_memmove(var, var + 1, STRLEN(var));
+	    STRMOVE(var, var + 1);
 #endif
 
     *file[0] = buf;
diff --git a/src/option.h b/src/option.h
index 3818bcd..00374d7 100644
--- a/src/option.h
+++ b/src/option.h
@@ -742,6 +742,14 @@
 EXTERN char_u	*p_su;		/* 'suffixes' */
 EXTERN char_u	*p_sws;		/* 'swapsync' */
 EXTERN char_u	*p_swb;		/* 'switchbuf' */
+EXTERN unsigned	swb_flags;
+#ifdef IN_OPTION_C
+static char *(p_swb_values[]) = {"useopen", "usetab", "split", "newtab", NULL};
+#endif
+#define SWB_USEOPEN		0x001
+#define SWB_USETAB		0x002
+#define SWB_SPLIT		0x004
+#define SWB_NEWTAB		0x008
 EXTERN int	p_tbs;		/* 'tagbsearch' */
 EXTERN long	p_tl;		/* 'taglength' */
 EXTERN int	p_tr;		/* 'tagrelative' */
diff --git a/src/po/ja.sjis.po b/src/po/ja.sjis.po
index 96c2037..9b9ea23 100644
--- a/src/po/ja.sjis.po
+++ b/src/po/ja.sjis.po
@@ -3,16 +3,17 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-# MURAOKA Taro <koron@tka.att.ne.jp>, 2001-6.
-# Last Change: 18-Apr-2006.
+# MURAOKA Taro <koron.kaoriya@gmail.com>, 2001-8.
+# Last Change: 31-May-2008.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim 7.0\n"
-"POT-Creation-Date: 2006-04-18 11:00+0900\n"
-"PO-Revision-Date: 2006-04-18 11:30+0900\n"
-"Last-Translator: MURAOKA Taro <koron@tka.att.ne.jp>\n"
-"Language-Team: MURAOKA Taro <koron@tka.att.ne.jp>\n"
+"Project-Id-Version: Vim 7.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-05-31 22:00+0900\n"
+"PO-Revision-Date: 2008-05-31 22:30+0900\n"
+"Last-Translator: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
+"Language-Team: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=cp932\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -114,12 +115,15 @@
 msgid "[readonly]"
 msgstr "[“Ǎžê—p]"
 
+#, c-format
 msgid "1 line --%d%%--"
 msgstr "1 s --%d%%--"
 
+#, c-format
 msgid "%ld lines --%d%%--"
 msgstr "%ld s --%d%%--"
 
+#, c-format
 msgid "line %ld of %ld --%d%%-- col "
 msgstr "s %ld (‘S‘Ì %ld) --%d%%-- col "
 
@@ -145,6 +149,7 @@
 msgid "Top"
 msgstr "æ“ª"
 
+#, c-format
 msgid ""
 "\n"
 "# Buffer list:\n"
@@ -189,6 +194,9 @@
 msgid "E99: Current buffer is not in diff mode"
 msgstr "E99: Œ»Ý‚̃oƒbƒtƒ@‚͍·•ªƒ‚[ƒh‚ł͂ ‚è‚Ü‚¹‚ñ"
 
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: ·•ªƒ‚[ƒh‚Å‚ ‚鑼‚̃oƒbƒtƒ@‚͕ύX‰Â”\\‚Å‚·"
+
 msgid "E100: No other buffer in diff mode"
 msgstr "E100: ·•ªƒ‚[ƒh‚Å‚ ‚鑼‚̃oƒbƒtƒ@‚Í‚ ‚è‚Ü‚¹‚ñ"
 
@@ -216,6 +224,9 @@
 msgid "E105: Using :loadkeymap not in a sourced file"
 msgstr "E105: :source ‚Ŏ捞‚Þƒtƒ@ƒCƒ‹ˆÈŠO‚Å‚Í :loadkeymap ‚ðŽg‚¦‚Ü‚¹‚ñ"
 
+msgid "E791: Empty keymap entry"
+msgstr "E791: ‹ó‚̃L[ƒ}ƒbƒvƒGƒ“ƒgƒŠ"
+
 msgid " Keyword completion (^N^P)"
 msgstr " ƒL[ƒ[ƒh•⊮ (^N^P)"
 
@@ -282,6 +293,7 @@
 msgid "Scanning: %s"
 msgstr "ƒXƒLƒƒƒ“’†: %s"
 
+#, c-format
 msgid "Scanning tags."
 msgstr "ƒ^ƒO‚ðƒXƒLƒƒƒ“’†."
 
@@ -338,7 +350,7 @@
 msgstr "E713: Ž«‘Œ^‚É‹ó‚̃L[‚ðŽg‚¤‚±‚Ƃ͂ł«‚Ü‚¹‚ñ"
 
 msgid "E714: List required"
-msgstr "E471: ƒŠƒXƒgŒ^‚ª•K—v‚Å‚·"
+msgstr "E714: ƒŠƒXƒgŒ^‚ª•K—v‚Å‚·"
 
 msgid "E715: Dictionary required"
 msgstr "E715: Ž«‘Œ^‚ª•K—v‚Å‚·"
@@ -613,6 +625,10 @@
 msgstr "E706: •ϐ”‚ÌŒ^‚ªˆê’v‚µ‚Ü‚¹‚ñ: %s"
 
 #, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: •ϐ” %s ‚ðíœ‚Å‚«‚Ü‚¹‚ñ"
+
+#, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: ’l‚ªƒƒbƒN‚³‚ê‚Ä‚¢‚Ü‚·: %s"
 
@@ -678,6 +694,7 @@
 msgid "E133: :return not inside a function"
 msgstr "E133: ŠÖ”ŠO‚É :return ‚ª‚ ‚è‚Ü‚µ‚½"
 
+#, c-format
 msgid ""
 "\n"
 "# global variables:\n"
@@ -744,6 +761,7 @@
 msgid " FAILED"
 msgstr " ޏ”s"
 
+#. avoid a wait_return for this message, it's annoying
 #, c-format
 msgid "E137: Viminfo file is not writable: %s"
 msgstr "E137: viminfoƒtƒ@ƒCƒ‹‚ª‘ž‚݂ł«‚Ü‚¹‚ñ: %s"
@@ -761,6 +779,7 @@
 msgid "# This viminfo file was generated by Vim %s.\n"
 msgstr "# ‚±‚Ì viminfo ƒtƒ@ƒCƒ‹‚Í Vim %s ‚É‚æ‚Á‚ж¬‚³‚ê‚Ü‚µ‚½.\n"
 
+#, c-format
 msgid ""
 "# You may edit it if you're careful!\n"
 "\n"
@@ -768,6 +787,7 @@
 "# •ύX‚·‚éÛ‚ɂ͏\\•ª’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢!\n"
 "\n"
 
+#, c-format
 msgid "# Value of 'encoding' when this file was written\n"
 msgstr "# ‚±‚̃tƒ@ƒCƒ‹‚ª‘‚©‚ê‚½Žž‚Ì 'encoding' ‚Ì’l\n"
 
@@ -810,6 +830,20 @@
 "\"%s\" ‚É‚Í 'readonly' ƒIƒvƒVƒ‡ƒ“‚ªÝ’肳‚ê‚Ä‚¢‚Ü‚·.\n"
 "ã‘‚«‹­§‚ð‚µ‚Ü‚·‚©?"
 
+#, c-format
+msgid ""
+"File permissions of \"%s\" are read-only.\n"
+"It may still be possible to write it.\n"
+"Do you wish to try?"
+msgstr ""
+"ƒtƒ@ƒCƒ‹ \"%s\" ‚̃p[ƒ~ƒbƒVƒ‡ƒ“‚ª“Ǎžê—p‚Å‚·.\n"
+"‚»‚ê‚Å‚à‹°‚ç‚­‘‚«ž‚Þ‚±‚Ƃ͉”\\‚Å‚·.\n"
+"Œp‘±‚µ‚Ü‚·‚©?"
+
+#, c-format
+msgid "E505: \"%s\" is read-only (add ! to override)"
+msgstr "E505: \"%s\" ‚͓Ǎžê—p‚Å‚· (‹­§‘ž‚É‚Í ! ‚ð’ljÁ)"
+
 msgid "Edit File"
 msgstr "ƒtƒ@ƒCƒ‹‚ð•ҏW"
 
@@ -864,6 +898,7 @@
 msgid "Pattern found in every line: %s"
 msgstr "ƒpƒ^[ƒ“‚ª‘S‚Ă̍s‚ł݂‚©‚è‚Ü‚µ‚½: %s"
 
+#, c-format
 msgid ""
 "\n"
 "# Last Substitute String:\n"
@@ -1207,10 +1242,10 @@
 msgid "Append File"
 msgstr "’ljÁƒtƒ@ƒCƒ‹"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
-"E747: ƒoƒbƒtƒ@‚ªC³‚³‚ê‚Ä‚¢‚é‚Ì‚Å, ƒfƒBƒŒƒNƒgƒŠ‚ð•ύX‚Å‚«‚Ü‚¹‚ñ (! "
-"‚ð’ljÁ‚ŏ㏑)"
+"E747: ƒoƒbƒtƒ@‚ªC³‚³‚ê‚Ä‚¢‚é‚Ì‚Å, ƒfƒBƒŒƒNƒgƒŠ‚ð•ύX‚Å‚«‚Ü‚¹‚ñ (! ‚ð’ljÁ‚Å"
+"ã‘)"
 
 msgid "E186: No previous directory"
 msgstr "E186: ‘O‚̃fƒBƒŒƒNƒgƒŠ‚Í‚ ‚è‚Ü‚¹‚ñ"
@@ -1446,6 +1481,9 @@
 msgid "is not a file"
 msgstr " ‚̓tƒ@ƒCƒ‹‚ł͂ ‚è‚Ü‚¹‚ñ"
 
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr " ‚̓fƒoƒCƒX‚Å‚· ('opendevice' ƒIƒvƒVƒ‡ƒ“‚ʼnñ”ð‚Å‚«‚Ü‚·)"
+
 msgid "[New File]"
 msgstr "[Vƒtƒ@ƒCƒ‹]"
 
@@ -1483,6 +1521,9 @@
 msgid "[socket]"
 msgstr "[ƒ\\ƒPƒbƒg]"
 
+msgid "[character special]"
+msgstr "[ƒLƒƒƒ‰ƒNƒ^EƒfƒoƒCƒX]"
+
 msgid "[RO]"
 msgstr "[“ǐê]"
 
@@ -1543,6 +1584,9 @@
 msgid "is not a file or writable device"
 msgstr "‚̓tƒ@ƒCƒ‹‚Å‚à‘ž‚݉”\\ƒfƒoƒCƒX‚Å‚à‚ ‚è‚Ü‚¹‚ñ"
 
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "'opendevice' ƒIƒvƒVƒ‡ƒ“‚É‚æ‚èƒfƒoƒCƒX‚ւ̏‘‚«ž‚݂͂ł«‚Ü‚¹‚ñ"
+
 msgid "is read-only (add ! to override)"
 msgstr "‚͓Ǎžê—p‚Å‚· (‹­§‘ž‚É‚Í ! ‚ð’ljÁ)"
 
@@ -2151,6 +2195,7 @@
 msgid "No text to be printed"
 msgstr "ˆóü‚·‚éƒeƒLƒXƒg‚ª‚ ‚è‚Ü‚¹‚ñ"
 
+#, c-format
 msgid "Printing page %d (%d%%)"
 msgstr "ˆóü’†: ƒy[ƒW %d (%d%%)"
 
@@ -2290,15 +2335,15 @@
 msgid "cs_create_connection exec failed"
 msgstr "cs_create_connection ‚ÌŽÀs‚ÉŽ¸”s‚µ‚Ü‚µ‚½"
 
-msgid "E623: Could not spawn cscope process"
-msgstr "E623: cscopeƒvƒƒZƒX‚ð‹N“®‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½"
-
 msgid "cs_create_connection: fdopen for to_fp failed"
 msgstr "cs_create_connection: to_fp ‚Ì fdopen ‚ÉŽ¸”s‚µ‚Ü‚µ‚½"
 
 msgid "cs_create_connection: fdopen for fr_fp failed"
 msgstr "cs_create_connection: fr_fp ‚Ì fdopen ‚ÉŽ¸”s‚µ‚Ü‚µ‚½"
 
+msgid "E623: Could not spawn cscope process"
+msgstr "E623: cscopeƒvƒƒZƒX‚ð‹N“®‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½"
+
 msgid "E567: no cscope connections"
 msgstr "E567: cscopeÚ‘±‚ÉŽ¸”s‚µ‚Ü‚µ‚½"
 
@@ -2373,8 +2418,8 @@
 "???: Sorry, this command is disabled, the MzScheme library could not be "
 "loaded."
 msgstr ""
-"???: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·, ‚²‚ß‚ñ‚È‚³‚¢: MzScheme "
-"ƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½."
+"???: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·, ‚²‚ß‚ñ‚È‚³‚¢: MzScheme ƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü"
+"‚¹‚ñ‚Å‚µ‚½."
 
 msgid "invalid expression"
 msgstr "–³Œø‚ÈŽ®‚Å‚·"
@@ -2427,25 +2472,12 @@
 msgid "not allowed in the Vim sandbox"
 msgstr "ƒTƒ“ƒhƒ{ƒbƒNƒX‚ł͋–‚³‚ê‚Ü‚¹‚ñ"
 
-#, c-format
-msgid "E370: Could not load library %s"
-msgstr "E370: ƒ‰ƒCƒuƒ‰ƒŠ %s ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½"
-
-msgid "Sorry, this command is disabled: the Perl library could not be loaded."
-msgstr ""
-"‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·, ‚²‚ß‚ñ‚È‚³‚¢: Perlƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½."
-
-msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
-msgstr ""
-"E299: ƒTƒ“ƒhƒ{ƒbƒNƒX‚Å‚Í Safe "
-"ƒ‚ƒWƒ…[ƒ‹‚ðŽg—p‚µ‚È‚¢PerlƒXƒNƒŠƒvƒg‚͋ւ¶‚ç‚ê‚Ä‚¢‚Ü‚·"
-
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
 "loaded."
 msgstr ""
-"E263: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·,‚²‚ß‚ñ‚È‚³‚¢: "
-"Pythonƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½."
+"E263: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·,‚²‚ß‚ñ‚È‚³‚¢: Pythonƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ"
+"‚Å‚µ‚½."
 
 # Added at 07-Feb-2004.
 msgid "E659: Cannot invoke Python recursively"
@@ -2512,11 +2544,11 @@
 msgid ""
 "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
 msgstr ""
-"E266: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·,‚²‚ß‚ñ‚È‚³‚¢: "
-"Rubyƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½."
+"E266: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·,‚²‚ß‚ñ‚È‚³‚¢: Rubyƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å"
+"‚µ‚½."
 
 msgid "E267: unexpected return"
-msgstr "E265: —\\Šú‚¹‚Ê return ‚Å‚·"
+msgstr "E267: —\\Šú‚¹‚Ê return ‚Å‚·"
 
 msgid "E268: unexpected next"
 msgstr "E268: —\\Šú‚¹‚Ê next ‚Å‚·"
@@ -2595,8 +2627,8 @@
 "Cannot connect to SNiFF+. Check environment (sniffemacs must be found in "
 "$PATH).\n"
 msgstr ""
-"SNiFF+‚ɐڑ±‚Å‚«‚Ü‚¹‚ñ. ŠÂ‹«‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢(sniffemacs ‚ª $PATH "
-"‚ɂȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñ).\n"
+"SNiFF+‚ɐڑ±‚Å‚«‚Ü‚¹‚ñ. ŠÂ‹«‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢(sniffemacs ‚ª $PATH ‚ɂȂ¯"
+"‚ê‚΂Ȃè‚Ü‚¹‚ñ).\n"
 
 msgid "E274: Sniff: Error during read. Disconnected"
 msgstr "E274: Sniff: “Ǎž’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½. Ø’f‚µ‚Ü‚µ‚½"
@@ -2660,8 +2692,8 @@
 
 msgid "cannot create buffer/window command: object is being deleted"
 msgstr ""
-"ƒoƒbƒtƒ@/ƒEƒBƒ“ƒhƒEì¬ƒRƒ}ƒ“ƒh‚ðì¬‚Å‚«‚Ü‚¹‚ñ: "
-"ƒIƒuƒWƒFƒNƒg‚ªÁ‹Ž‚³‚ê‚Ä‚¢‚Ü‚µ‚½"
+"ƒoƒbƒtƒ@/ƒEƒBƒ“ƒhƒEì¬ƒRƒ}ƒ“ƒh‚ðì¬‚Å‚«‚Ü‚¹‚ñ: ƒIƒuƒWƒFƒNƒg‚ªÁ‹Ž‚³‚ê‚Ä‚¢‚Ü"
+"‚µ‚½"
 
 msgid ""
 "cannot register callback command: buffer/window is already being deleted"
@@ -2670,27 +2702,27 @@
 
 #. This should never happen.  Famous last word?
 msgid ""
-"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to "
-"vim-dev@vim.org"
+"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
+"org"
 msgstr ""
 "E280: TCL ’v–½“IƒGƒ‰[: reflist ‰˜õ!? vim-dev@vim.org ‚É•ñ‚µ‚Ä‚­‚¾‚³‚¢"
 
 msgid "cannot register callback command: buffer/window reference not found"
 msgstr ""
-"ƒR[ƒ‹ƒoƒbƒNƒRƒ}ƒ“ƒh‚ð“o˜^‚Å‚«‚Ü‚¹‚ñ: "
-"ƒoƒbƒtƒ@/ƒEƒBƒ“ƒhƒE‚ÌŽQÆ‚ª‚݂‚©‚è‚Ü‚¹‚ñ"
+"ƒR[ƒ‹ƒoƒbƒNƒRƒ}ƒ“ƒh‚ð“o˜^‚Å‚«‚Ü‚¹‚ñ: ƒoƒbƒtƒ@/ƒEƒBƒ“ƒhƒE‚ÌŽQÆ‚ª‚݂‚©‚è‚Ü‚¹"
+"‚ñ"
 
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
 msgstr ""
-"E571: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·,‚²‚ß‚ñ‚È‚³‚¢: "
-"Tclƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½."
+"E571: ‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·,‚²‚ß‚ñ‚È‚³‚¢: Tclƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å"
+"‚µ‚½."
 
 msgid ""
 "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"
 msgstr ""
-"E281: TCL ƒGƒ‰[: I—¹ƒR[ƒh‚ª®”’l‚ł͂ ‚è‚Ü‚¹‚ñ!? vim-dev@vim.org "
-"‚É•ñ‚µ‚Ä‚­‚¾‚³‚¢"
+"E281: TCL ƒGƒ‰[: I—¹ƒR[ƒh‚ª®”’l‚ł͂ ‚è‚Ü‚¹‚ñ!? vim-dev@vim.org ‚É•ñ‚µ"
+"‚Ä‚­‚¾‚³‚¢"
 
 #, c-format
 msgid "E572: exit code %d"
@@ -2801,8 +2833,12 @@
 "\n"
 "   ‚à‚µ‚­‚Í:"
 
-msgid "where case is ignored prepend / to make flag upper case"
-msgstr "‘å•¶Žš¬•¶Žš‚Í–³Ž‹‚³‚ê‚Ü‚· / ƒtƒ‰ƒO‚Í‘å•¶Žš‚É‚µ‚Ä‚­‚¾‚³‚¢"
+msgid ""
+"\n"
+"Where case is ignored prepend / to make flag upper case"
+msgstr ""
+"\n"
+"‘召•¶Žš‚ª–³Ž‹‚³‚ê‚éê‡‚Í‘å•¶Žš‚É‚·‚邽‚ß‚É / ‚ð‘O’u‚µ‚Ä‚­‚¾‚³‚¢"
 
 msgid ""
 "\n"
@@ -2870,8 +2906,8 @@
 msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'"
 msgstr "-N\t\t\tVi”ñŒÝŠ·ƒ‚[ƒh: 'nocompatible"
 
-msgid "-V[N]\t\tVerbose level"
-msgstr "-V[N]\t\tVerbose ƒŒƒxƒ‹"
+msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]"
+msgstr "-V[N][fname]\t\tƒƒOo—͐ݒè [ƒŒƒxƒ‹ N] [ƒƒOƒtƒ@ƒCƒ‹–¼ fname]"
 
 msgid "-D\t\t\tDebugging mode"
 msgstr "-D\t\t\tƒfƒoƒbƒOƒ‚[ƒh"
@@ -2971,8 +3007,11 @@
 "--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-tab[-wait][-silent] <files>  As --remote but use tab page per file"
+msgstr ""
+"--remote-tab[-wait][-silent] <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—¹‚·‚é"
@@ -3097,6 +3136,9 @@
 msgid "-P <parent title>\tOpen Vim inside parent application"
 msgstr "-P <e‚̃^ƒCƒgƒ‹>\tVim‚ðeƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì’†‚Å‹N“®‚·‚é"
 
+msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
+msgstr "--windowid <HWND>\tˆÙ‚È‚éWin32 widget‚Ì“à•”‚ÉVim‚ðŠJ‚­"
+
 msgid "No display"
 msgstr "ƒfƒBƒXƒvƒŒƒC‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ"
 
@@ -3149,6 +3191,7 @@
 "\n"
 "•ύX   s    —ñ  ƒeƒLƒXƒg"
 
+#, c-format
 msgid ""
 "\n"
 "# File marks:\n"
@@ -3157,6 +3200,7 @@
 "# ƒtƒ@ƒCƒ‹ƒ}[ƒN:\n"
 
 #. Write the jumplist with -'
+#, c-format
 msgid ""
 "\n"
 "# Jumplist (newest first):\n"
@@ -3164,6 +3208,7 @@
 "\n"
 "# ƒWƒƒƒ“ƒvƒŠƒXƒg (V‚µ‚¢‚à‚Ì‚ªæ):\n"
 
+#, c-format
 msgid ""
 "\n"
 "# History of marks within files (newest to oldest):\n"
@@ -3289,6 +3334,9 @@
 ",\n"
 "‚à‚µ‚­‚̓tƒ@ƒCƒ‹‚ª‘¹‚µ‚Ä‚¢‚Ü‚·."
 
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " ‚Í‘¹‚µ‚Ä‚¢‚Ü‚· (ƒy[ƒWƒTƒCƒY‚ªÅ¬’l‚ð‰º‰ñ‚Á‚Ä‚¢‚Ü‚·).\n"
+
 #, c-format
 msgid "Using swap file \"%s\""
 msgstr "ƒXƒƒbƒvƒtƒ@ƒCƒ‹ \"%s\" ‚ðŽg—p’†"
@@ -3629,6 +3677,10 @@
 msgid "E329: No menu \"%s\""
 msgstr "E329: \"%s\" ‚Æ‚¢‚¤ƒƒjƒ…[‚Í‚ ‚è‚Ü‚¹‚ñ"
 
+#. Only a mnemonic or accelerator is not valid.
+msgid "E792: Empty menu name"
+msgstr "E792: ƒƒjƒ…[–¼‚ª‹ó‚Å‚·"
+
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: ƒƒjƒ…[ƒpƒX‚̓Tƒuƒƒjƒ…[‚𐶂¶‚é‚ׂ«‚ł͂ ‚è‚Ü‚¹‚ñ"
 
@@ -3680,7 +3732,7 @@
 msgstr "E354: –³Œø‚ȃŒƒWƒXƒ^–¼: '%s'"
 
 msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
-msgstr "“ú–{ŒêƒƒbƒZ[ƒW–|–ó/ŠÄC: ‘º‰ª ‘¾˜Y <koron@tka.att.ne.jp>"
+msgstr "“ú–{ŒêƒƒbƒZ[ƒW–|–ó/ŠÄC: ‘º‰ª ‘¾˜Y <koron.kaoriya@gmail.com>"
 
 msgid "Interrupt: "
 msgstr "Š„ž‚Ý: "
@@ -3776,6 +3828,7 @@
 msgid "Vim: Finished.\n"
 msgstr "Vim: I—¹‚µ‚Ü‚µ‚½.\n"
 
+#, c-format
 msgid "ERROR: "
 msgstr "ƒGƒ‰[: "
 
@@ -3839,8 +3892,8 @@
 "E343: Invalid path: '**[number]' must be at the end of the path or be "
 "followed by '%s'."
 msgstr ""
-"E343: –³Œø‚ȃpƒX‚Å‚·: '**[”’l]' ‚Ípath‚̍Ōォ '%s' "
-"‚ª‘±‚¢‚ĂȂ¢‚Æ‚¢‚¯‚Ü‚¹‚ñ."
+"E343: –³Œø‚ȃpƒX‚Å‚·: '**[”’l]' ‚Ípath‚̍Ōォ '%s' ‚ª‘±‚¢‚ĂȂ¢‚Æ‚¢‚¯‚Ü‚¹"
+"‚ñ."
 
 #, c-format
 msgid "E344: Can't find directory \"%s\" in cdpath"
@@ -3984,6 +4037,7 @@
 msgid "Illegal register name"
 msgstr "•s³‚ȃŒƒWƒXƒ^–¼"
 
+#, c-format
 msgid ""
 "\n"
 "# Registers:\n"
@@ -4140,6 +4194,13 @@
 msgid "E355: Unknown option: %s"
 msgstr "E355: –¢’m‚̃IƒvƒVƒ‡ƒ“‚Å‚·: %s"
 
+#. There's another character after zeros or the string
+#. * is empty.  In both cases, we are trying to set a
+#. * num option using a string.
+#, c-format
+msgid "E521: Number required: &%s = '%s'"
+msgstr "E521: ”Žš‚ª•K—v‚Å‚·: &%s = '%s'"
+
 msgid ""
 "\n"
 "--- Terminal codes ---"
@@ -4270,6 +4331,7 @@
 msgid "Vim: Caught deadly signal %s\n"
 msgstr "Vim: ’v–½“IƒVƒOƒiƒ‹ %s ‚ðŒŸ’m‚µ‚Ü‚µ‚½\n"
 
+#, c-format
 msgid "Vim: Caught deadly signal\n"
 msgstr "Vim: ’v–½“IƒVƒOƒiƒ‹‚ðŒŸ’m‚µ‚Ü‚µ‚½\n"
 
@@ -4292,6 +4354,20 @@
 
 msgid ""
 "\n"
+"Could not get security context for "
+msgstr ""
+"\n"
+"ƒZƒLƒ…ƒŠƒeƒBƒRƒ“ƒeƒLƒXƒg‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ "
+
+msgid ""
+"\n"
+"Could not set security context for "
+msgstr ""
+"\n"
+"ƒZƒLƒ…ƒŠƒeƒBƒRƒ“ƒeƒLƒXƒg‚ðÝ’è‚Å‚«‚Ü‚¹‚ñ "
+
+msgid ""
+"\n"
 "Cannot execute shell "
 msgstr ""
 "\n"
@@ -4399,21 +4475,26 @@
 msgid "Vim Warning"
 msgstr "Vim‚ÌŒx"
 
+#, c-format
 msgid "E372: Too many %%%c in format string"
 msgstr "E372: ƒtƒH[ƒ}ƒbƒg•¶Žš—ñ‚É %%%c ‚ª‘½‰ß‚¬‚Ü‚·"
 
+#, c-format
 msgid "E373: Unexpected %%%c in format string"
 msgstr "E373: ƒtƒH[ƒ}ƒbƒg•¶Žš—ñ‚É—\\Šú‚¹‚Ê %%%c ‚ª‚ ‚è‚Ü‚µ‚½"
 
 msgid "E374: Missing ] in format string"
 msgstr "E374: ƒtƒH[ƒ}ƒbƒg•¶Žš—ñ‚É ] ‚ª‚ ‚è‚Ü‚¹‚ñ"
 
+#, c-format
 msgid "E375: Unsupported %%%c in format string"
 msgstr "E375: ƒtƒH[ƒ}ƒbƒg•¶Žš—ñ‚Å‚Í %%%c ‚̓Tƒ|[ƒg‚³‚ê‚Ü‚¹‚ñ"
 
+#, c-format
 msgid "E376: Invalid %%%c in format string prefix"
 msgstr "E376: ƒtƒH[ƒ}ƒbƒg•¶Žš—ñ‚Ì‘O’u‚É–³Œø‚È %%%c ‚ª‚ ‚è‚Ü‚·"
 
+#, c-format
 msgid "E377: Invalid %%%c in format string"
 msgstr "E377: ƒtƒH[ƒ}ƒbƒg•¶Žš—ñ‚É–³Œø‚È %%%c ‚ª‚ ‚è‚Ü‚·"
 
@@ -4459,6 +4540,10 @@
 msgid "E777: String or List expected"
 msgstr "E777: •¶Žš—ñ‚©ƒŠƒXƒg‚ª•K—v‚Å‚·"
 
+#, c-format
+msgid "E369: invalid item in %s%%[]"
+msgstr "E369: –³Œø‚ȍ€–Ú‚Å‚·: %s%%[]"
+
 msgid "E339: Pattern too long"
 msgstr "E339: ƒpƒ^[ƒ“‚ª’·‰ß‚¬‚Ü‚·"
 
@@ -4472,6 +4557,7 @@
 msgid "E52: Unmatched \\z("
 msgstr "E52: \\z( ‚ª’ނ荇‚Á‚Ä‚¢‚Ü‚¹‚ñ"
 
+#, c-format
 msgid "E53: Unmatched %s%%("
 msgstr "E53: %s%%( ‚ª’ނ荇‚Á‚Ä‚¢‚Ü‚¹‚ñ"
 
@@ -4524,17 +4610,21 @@
 msgstr "E68: \\z ‚ÌŒã‚É•s³‚È•¶Žš‚ª‚ ‚è‚Ü‚µ‚½"
 
 #
+#, c-format
 msgid "E69: Missing ] after %s%%["
 msgstr "E69: %s%%[ ‚ÌŒã‚É ] ‚ª‚ ‚è‚Ü‚¹‚ñ"
 
+#, c-format
 msgid "E70: Empty %s%%[]"
 msgstr "E70: %s%%[] ‚ª‹ó‚Å‚·"
 
 #
+#, c-format
 msgid "E678: Invalid character after %s%%[dxouU]"
 msgstr "E678: %s%%[dxouU] ‚ÌŒã‚É•s³‚È•¶Žš‚ª‚ ‚è‚Ü‚µ‚½"
 
 #
+#, c-format
 msgid "E71: Invalid character after %s%%"
 msgstr "E71: %s%% ‚ÌŒã‚É•s³‚È•¶Žš‚ª‚ ‚è‚Ü‚µ‚½"
 
@@ -4752,16 +4842,16 @@
 "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"%s ‚Ì %d s–Ú‚Ì PFX €–Ú‚ÌŒã‚Ì COMPOUNDFORBIDFLAG "
-"‚Ì’è‹`‚ÍŒë‚Á‚½Œ‹‰Ê‚𐶂¶‚邱‚Æ‚ª‚ ‚è‚Ü‚·"
+"%s ‚Ì %d s–Ú‚Ì PFX €–Ú‚ÌŒã‚Ì COMPOUNDFORBIDFLAG ‚Ì’è‹`‚ÍŒë‚Á‚½Œ‹‰Ê‚𐶂¶‚é"
+"‚±‚Æ‚ª‚ ‚è‚Ü‚·"
 
 #, c-format
 msgid ""
 "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"%s ‚Ì %d s–Ú‚Ì PFX €–Ú‚ÌŒã‚Ì COMPOUNDPERMITFLAG "
-"‚Ì’è‹`‚ÍŒë‚Á‚½Œ‹‰Ê‚𐶂¶‚邱‚Æ‚ª‚ ‚è‚Ü‚·"
+"%s ‚Ì %d s–Ú‚Ì PFX €–Ú‚ÌŒã‚Ì COMPOUNDPERMITFLAG ‚Ì’è‹`‚ÍŒë‚Á‚½Œ‹‰Ê‚𐶂¶‚é"
+"‚±‚Æ‚ª‚ ‚è‚Ü‚·"
 
 #, c-format
 msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
@@ -4920,6 +5010,7 @@
 msgid "Ignored %d words with non-ASCII characters"
 msgstr "”ñASCII•¶Žš‚ðŠÜ‚Þ %d ŒÂ‚Ì’PŒê‚𖳎‹‚µ‚Ü‚µ‚½"
 
+#, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
 msgstr "ƒm[ƒh %d ŒÂ(‘S %d ŒÂ’†) ‚ðˆ³k‚µ‚Ü‚µ‚½; Žc‚è %d (%d%%)"
 
@@ -4991,6 +5082,7 @@
 msgid "Sorry, only %ld suggestions"
 msgstr "Žc”O‚Å‚·‚ª, C³Œó•â‚Í %ld ŒÂ‚µ‚©‚ ‚è‚Ü‚¹‚ñ"
 
+#. for when 'cmdheight' > 1
 #. avoid more prompt
 #, c-format
 msgid "Change \"%.*s\" to:"
@@ -5396,6 +5488,9 @@
 msgid "%ld seconds ago"
 msgstr "%ld •bŒo‰ß‚µ‚Ä‚¢‚Ü‚·"
 
+msgid "E790: undojoin is not allowed after undo"
+msgstr "E790: undo ‚Ì’¼Œã‚É undojoin ‚͂ł«‚Ü‚¹‚ñ"
+
 msgid "E439: undo list corrupt"
 msgstr "E439: ƒAƒ“ƒhƒDƒŠƒXƒg‚ª‰ó‚ê‚Ä‚¢‚Ü‚·"
 
@@ -5412,6 +5507,13 @@
 
 msgid ""
 "\n"
+"MS-Windows 64 bit GUI version"
+msgstr ""
+"\n"
+"MS-Windows 64 ƒrƒbƒg GUI ”Å"
+
+msgid ""
+"\n"
 "MS-Windows 32 bit GUI version"
 msgstr ""
 "\n"
@@ -5727,6 +5829,19 @@
 msgid "E447: Can't find file \"%s\" in path"
 msgstr "E447: path‚É‚Í \"%s\" ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚¹‚ñ"
 
+#, c-format
+msgid "E370: Could not load library %s"
+msgstr "E370: ƒ‰ƒCƒuƒ‰ƒŠ %s ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½"
+
+msgid "Sorry, this command is disabled: the Perl library could not be loaded."
+msgstr ""
+"‚±‚̃Rƒ}ƒ“ƒh‚Í–³Œø‚Å‚·, ‚²‚ß‚ñ‚È‚³‚¢: Perlƒ‰ƒCƒuƒ‰ƒŠ‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½."
+
+msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
+msgstr ""
+"E299: ƒTƒ“ƒhƒ{ƒbƒNƒX‚Å‚Í Safe ƒ‚ƒWƒ…[ƒ‹‚ðŽg—p‚µ‚È‚¢PerlƒXƒNƒŠƒvƒg‚͋ւ¶‚ç‚ê"
+"‚Ä‚¢‚Ü‚·"
+
 msgid "Edit with &multiple Vims"
 msgstr "•¡”‚ÌVim‚ŕҏW‚·‚é (&M)"
 
@@ -5739,6 +5854,7 @@
 msgid "Edit with &Vim"
 msgstr "Vim‚ŕҏW‚·‚é (&V)"
 
+#. Now concatenate
 msgid "Edit with existing Vim - "
 msgstr "Šù‘¶‚ÌVim‚ŕҏW‚·‚é - "
 
@@ -5994,8 +6110,8 @@
 msgstr "E46: “ÇŽæê—p•ϐ” \"%s\" ‚ɂ͒l‚ðÝ’è‚Å‚«‚Ü‚¹‚ñ"
 
 #, c-format
-msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: ƒTƒ“ƒhƒ{ƒbƒNƒX‚ł͕ϐ” \"%s\" ‚É’l‚ðÝ’è‚Å‚«‚Ü‚¹‚ñ"
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: ƒTƒ“ƒhƒ{ƒbƒNƒX‚ł͕ϐ” \"%s\" ‚É’l‚ðÝ’è‚Å‚«‚Ü‚¹‚ñ"
 
 msgid "E47: Error while reading errorfile"
 msgstr "E47: ƒGƒ‰[ƒtƒ@ƒCƒ‹‚̓Ǎž’†‚ɃGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½"
@@ -6079,7 +6195,6 @@
 msgid "E749: empty buffer"
 msgstr "E749: ƒoƒbƒtƒ@‚ª‹ó‚Å‚·"
 
-#
 msgid "E682: Invalid search pattern or delimiter"
 msgstr "E682: ŒŸõƒpƒ^[ƒ“‚©‹æØ‚è‹L†‚ª•s³‚Å‚·"
 
diff --git a/src/po/no.po b/src/po/no.po
index 9853eb5..d01dc93 100644
--- a/src/po/no.po
+++ b/src/po/no.po
@@ -1249,7 +1249,7 @@
 msgid "Append File"
 msgstr "Legg til fil"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
 "E747: Kan ikke skifte katalog, bufferen er forandret (legg til ! for å "
 "overstyre)"
@@ -1492,8 +1492,8 @@
 msgid "is not a file"
 msgstr "er ikke en fil"
 
-msgid "is a device (disabled with 'opendevice' option"
-msgstr "er en enhet (frakoblet med 'opendevice'-valg"
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr "er en enhet (frakoblet med 'opendevice'-valg)"
 
 msgid "[New File]"
 msgstr "[Ny fil]"
@@ -4742,7 +4742,7 @@
 msgstr "E759: Formateringsfeil i stavefil"
 
 msgid "E758: Truncated spell file"
-msgstr "E237: Valg av skriver feilet"
+msgstr "E758: Valg av skriver feilet"
 
 #, c-format
 msgid "Trailing text in %s line %d: %s"
@@ -5034,7 +5034,7 @@
 
 #, c-format
 msgid "E765: 'spellfile' does not have %ld entries"
-msgstr "E764: 'spellfile' har ikke %ld poster"
+msgstr "E765: 'spellfile' har ikke %ld poster"
 
 #, c-format
 msgid "Word removed from %s"
@@ -6168,7 +6168,7 @@
 msgstr "E749: Tom buffer"
 
 msgid "E682: Invalid search pattern or delimiter"
-msgstr "E683: Ugyldig søkestreng eller skilletegn"
+msgstr "E682: Ugyldig søkestreng eller skilletegn"
 
 msgid "E139: File is loaded in another buffer"
 msgstr "E139: Filen er lastet i en annen buffer"
diff --git a/src/po/zh_CN.cp936.po b/src/po/zh_CN.cp936.po
index 591839f..96b2527 100644
--- a/src/po/zh_CN.cp936.po
+++ b/src/po/zh_CN.cp936.po
@@ -1207,7 +1207,7 @@
 msgid "Append File"
 msgstr "×·¼ÓÎļþ"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr "E747: ²»ÄܸıäĿ¼£¬»º³åÇøÒÑÐÞ¸Ä (Çë¼Ó ! Ç¿ÖÆÖ´ÐÐ)"
 
 msgid "E186: No previous directory"
diff --git a/src/popupmnu.c b/src/popupmnu.c
index 1d747a6..fcc7d85 100644
--- a/src/popupmnu.c
+++ b/src/popupmnu.c
@@ -56,7 +56,7 @@
     int		i;
     int		top_clear;
     int		row;
-    int		height;
+    int		context_lines;
     int		col;
     int		above_row = cmdline_row;
     int		redo_count = 0;
@@ -73,8 +73,7 @@
     validate_cursor_col();
     pum_array = NULL;
 
-    row = curwin->w_cline_row + W_WINROW(curwin);
-    height = curwin->w_cline_height;
+    row = curwin->w_wrow + W_WINROW(curwin);
 
     if (firstwin->w_p_pvw)
 	top_clear = firstwin->w_height;
@@ -99,19 +98,26 @@
 
     /* Put the pum below "row" if possible.  If there are few lines decide on
      * where there is more room. */
-    if (row >= above_row - pum_height
-			      && row > (above_row - top_clear - height) / 2)
+    if (row  + 2 >= above_row - pum_height
+					 && row > (above_row - top_clear) / 2)
     {
 	/* pum above "row" */
-	if (row >= size)
+
+	/* Leave two lines of context if possible */
+	if (curwin->w_wrow - curwin->w_cline_row >= 2)
+	    context_lines = 2;
+	else
+	    context_lines = curwin->w_wrow - curwin->w_cline_row;
+
+	if (row >= size + context_lines)
 	{
-	    pum_row = row - size;
+	    pum_row = row - size - context_lines;
 	    pum_height = size;
 	}
 	else
 	{
 	    pum_row = 0;
-	    pum_height = row;
+	    pum_height = row - context_lines;
 	}
 	if (p_ph > 0 && pum_height > p_ph)
 	{
@@ -122,7 +128,15 @@
     else
     {
 	/* pum below "row" */
-	pum_row = row + height;
+
+	/* Leave two lines of context if possible */
+	if (curwin->w_cline_row + curwin->w_cline_height - curwin->w_wrow >= 3)
+	    context_lines = 3;
+	else
+	    context_lines = curwin->w_cline_row
+				+ curwin->w_cline_height - curwin->w_wrow;
+
+	pum_row = row + context_lines;
 	if (size > above_row - pum_row)
 	    pum_height = above_row - pum_row;
 	else
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index 735565a..36193bb 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -19,6 +19,7 @@
 void mch_settitle __ARGS((char_u *title, char_u *icon));
 void mch_restore_title __ARGS((int which));
 int vim_is_xterm __ARGS((char_u *name));
+int use_xterm_like_mouse __ARGS((char_u *name));
 int use_xterm_mouse __ARGS((void));
 int vim_is_iris __ARGS((char_u *name));
 int vim_is_vt300 __ARGS((char_u *name));
diff --git a/src/structs.h b/src/structs.h
index d6a8f72..31c3dfc 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1005,6 +1005,7 @@
 #else
 typedef int	varnumber_T;
 #endif
+typedef double	float_T;
 
 typedef struct listvar_S list_T;
 typedef struct dictvar_S dict_T;
@@ -1019,6 +1020,9 @@
     union
     {
 	varnumber_T	v_number;	/* number value */
+#ifdef FEAT_FLOAT
+	float_T		v_float;	/* floating number value */
+#endif
 	char_u		*v_string;	/* string value (can be NULL!) */
 	list_T		*v_list;	/* list value (can be NULL!) */
 	dict_T		*v_dict;	/* dict value (can be NULL!) */
@@ -1032,6 +1036,7 @@
 #define VAR_FUNC    3	/* "v_string" is function name */
 #define VAR_LIST    4	/* "v_list" is used */
 #define VAR_DICT    5	/* "v_dict" is used */
+#define VAR_FLOAT   6	/* "v_float" is used */
 
 /* Values for "v_lock". */
 #define VAR_LOCKED  1	/* locked with lock(), can use unlock() */
diff --git a/src/vim.rc b/src/vim.rc
index affdb9a..e9ecd64 100644
--- a/src/vim.rc
+++ b/src/vim.rc
@@ -52,7 +52,7 @@
 // Type Library
 //
 #ifdef FEAT_OLE
- 1 TYPELIB "VIM.TLB"
+ 1 TYPELIB "vim.tlb"
 #endif
 
 //
@@ -91,7 +91,7 @@
 	VALUE "FileDescription",	"Vi Improved - A Text Editor\0"
 	VALUE "FileVersion",		VIM_VERSION_MAJOR_STR ", " VIM_VERSION_MINOR_STR ", " VIM_VERSION_BUILD_STR ", " VIM_VERSION_PATCHLEVEL_STR  "\0"
 	VALUE "InternalName",		"VIM\0"
-	VALUE "LegalCopyright",		"Copyright \251 1996-2005\0"
+	VALUE "LegalCopyright",		"Copyright \251 1996-2008\0"
 	VALUE "LegalTrademarks",	"Vim\0"
 	VALUE "OriginalFilename",	"VIM.EXE\0"
 	VALUE "ProductName",		"Vim\0"