updated for version 7.2a
diff --git a/src/GvimExt/GvimExt.reg b/src/GvimExt/GvimExt.reg
index 7f7bfee..02b1747 100644
--- a/src/GvimExt/GvimExt.reg
+++ b/src/GvimExt/GvimExt.reg
@@ -15,6 +15,6 @@
 [HKEY_LOCAL_MACHINE\Software\Vim\Gvim]
    "path"="gvim.exe"
 
-[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.1]
-   "DisplayName"="Vim 7.1: Edit with Vim popup menu entry"
+[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.2a]
+   "DisplayName"="Vim 7.2a: Edit with Vim popup menu entry"
    "UninstallString"="uninstal.exe"
diff --git a/src/Makefile b/src/Makefile
index 44c9c6f..cca2eef 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -48,7 +48,9 @@
 #	- Uncomment the line with --disable-acl to disable ACL support even
 #	  though your system supports it.
 #	- Uncomment the line with --disable-gpm to disable gpm support
-#	  even though you have gpm libraries and includes
+#	  even though you have gpm libraries and includes.
+#	- Uncomment the line with --disable-sysmouse to disable sysmouse
+#	  support even though you have /dev/sysmouse and includes.
 #	- Uncomment one of the lines with CFLAGS and/or CC if you have
 #	  something very special or want to tune the optimizer.
 #	- Search for the name of your system to see if it needs anything
@@ -447,9 +449,14 @@
 
 # gpm - For mouse support on Linux console via gpm
 # Uncomment this when you do not want to include gpm support, even
-# though you have gpm libraries and includes
+# though you have gpm libraries and includes.
 #CONF_OPT_GPM = --disable-gpm
 
+# sysmouse - For mouse support on FreeBSD and DragonFly console via sysmouse
+# Uncomment this when you do not want do include sysmouse support, even
+# though you have /dev/sysmouse and includes.
+#CONF_OPT_SYSMOUSE = --disable-sysmouse
+
 # FEATURES - For creating Vim with more or less features
 # Uncomment one of these lines when you want to include few to many features.
 # The default is "normal".
@@ -535,6 +542,10 @@
 
 # PURIFY - remove the # to use the "purify" program (hoi Nia++!)
 #PURIFY = purify
+
+# NBDEBUG - debugging the netbeans interface.
+#EXTRA_DEFS = -DNBDEBUG
+
 # }}}
 
 # LINT - for running lint
@@ -888,7 +899,7 @@
 
 ### Vim version (adjusted by a script)
 VIMMAJOR = 7
-VIMMINOR = 1
+VIMMINOR = 2a
 
 ### Location of Vim files (should not need to be changed, and  {{{1
 ### some things might not work when they are changed!)
@@ -1219,7 +1230,7 @@
 CARBONGUI_LIBS_DIR =
 CARBONGUI_LIBS1	= -framework Carbon
 CARBONGUI_LIBS2	=
-CARBONGUI_INSTALL = install_macosx install_gui_extra
+CARBONGUI_INSTALL = install_macosx
 CARBONGUI_TARGETS =
 CARBONGUI_MAN_TARGETS =
 CARBONGUI_TESTTARGET = gui
@@ -1566,7 +1577,8 @@
 		$(CONF_OPT_OUTPUT) $(CONF_OPT_GPM) $(CONF_OPT_WORKSHOP) \
 		$(CONF_OPT_SNIFF) $(CONF_OPT_FEAT) $(CONF_TERM_LIB) \
 		$(CONF_OPT_COMPBY) $(CONF_OPT_ACL)  $(CONF_OPT_NETBEANS) \
-		$(CONF_ARGS) $(CONF_OPT_MZSCHEME) $(CONF_OPT_PLTHOME)
+		$(CONF_ARGS) $(CONF_OPT_MZSCHEME) $(CONF_OPT_PLTHOME) \
+		$(CONF_OPT_SYSMOUSE)
 
 # Use "make reconfig" to rerun configure without cached values.
 # When config.h changes, most things will be recompiled automatically.
@@ -2580,7 +2592,7 @@
 	ln -s `pwd`/../runtime $(RESDIR)/vim
 # Copy rgb.txt, Mac doesn't always have X11
 	$(INSTALL_DATA) $(SCRIPTSOURCE)/rgb.txt $(DESTDIR)$(prefix)/$(RESDIR)/vim/runtime
-# TODO: Create the vimtutor application.
+# TODO: Create the vimtutor and/or gvimtutor application.
 
 gui_bundle: $(RESDIR) bundle-dir bundle-executable bundle-info bundle-resource \
 	bundle-language
@@ -2759,7 +2771,7 @@
 objects/os_unix.o: os_unix.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
   ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
   gui_beval.h proto/gui_beval.pro ex_cmds.h proto.h globals.h farsi.h \
-  arabic.h if_mzsch.h os_unixx.h
+  arabic.h os_unixx.h
 objects/pathdef.o: auto/pathdef.c ./vim.h ./auto/config.h ./feature.h ./os_unix.h \
   ./auto/osdef.h ./ascii.h ./keymap.h ./term.h ./macros.h ./option.h \
   ./structs.h ./regexp.h ./gui.h ./gui_beval.h proto/gui_beval.pro \
diff --git a/src/feature.h b/src/feature.h
index 734f6e6..a96a3d1 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -35,7 +35,7 @@
  * +small		few features enabled, as basic as possible
  * +normal		A default selection of features enabled
  * +big			many features enabled, as rich as possible.
- * +huge		all possible featues enabled.
+ * +huge		all possible features enabled.
  *
  * When +small is used, +tiny is also included.  +normal implies +small, etc.
  */
@@ -376,9 +376,13 @@
 /*
  * +eval		Built-in script language and expression evaluation,
  *			":let", ":if", etc.
+ * +float		Floating point variables.
  */
 #ifdef FEAT_NORMAL
 # define FEAT_EVAL
+# if defined(HAVE_FLOAT_FUNCS) || defined(WIN3264) || defined(MACOS)
+#  define FEAT_FLOAT
+# endif
 #endif
 
 /*
@@ -1010,6 +1014,8 @@
  * +mouse_gpm		Unix only: Include code for Linux console mouse
  *			handling.
  * +mouse_pterm		PTerm mouse support for QNX
+ * +mouse_sysmouse	Unix only: Include code for FreeBSD and DragonFly
+ *			console mouse handling.
  * +mouse		Any mouse support (any of the above enabled).
  */
 /* OS/2 and Amiga console have no mouse support */
@@ -1034,11 +1040,17 @@
 #if defined(FEAT_NORMAL) && defined(HAVE_GPM)
 # define FEAT_MOUSE_GPM
 #endif
+
+#if defined(FEAT_NORMAL) && defined(HAVE_SYSMOUSE)
+# define FEAT_SYSMOUSE
+#endif
 /* Define FEAT_MOUSE when any of the above is defined or FEAT_GUI. */
-#if !defined(FEAT_MOUSE_TTY) && (defined(FEAT_MOUSE_XTERM) \
-	|| defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \
-	|| defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \
-	|| defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM))
+#if !defined(FEAT_MOUSE_TTY) \
+	&& (defined(FEAT_MOUSE_XTERM) \
+	    || defined(FEAT_MOUSE_NET) || defined(FEAT_MOUSE_DEC) \
+	    || defined(DOS_MOUSE) || defined(FEAT_MOUSE_GPM) \
+	    || defined(FEAT_MOUSE_JSB) || defined(FEAT_MOUSE_PTERM) \
+	    || defined(FEAT_SYSMOUSE))
 # define FEAT_MOUSE_TTY		/* include non-GUI mouse support */
 #endif
 #if !defined(FEAT_MOUSE) && (defined(FEAT_MOUSE_TTY) || defined(FEAT_GUI))
diff --git a/src/fileio.c b/src/fileio.c
index de123a0..b97e38f 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -21,10 +21,6 @@
 
 #include "vim.h"
 
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
 #ifdef __TANDEM
 # include <limits.h>		/* for SSIZE_MAX */
 #endif
@@ -4702,7 +4698,7 @@
 	 * front of the file name. */
 	if (errnum != NULL)
 	{
-	    mch_memmove(IObuff + numlen, IObuff, STRLEN(IObuff) + 1);
+	    STRMOVE(IObuff + numlen, IObuff);
 	    mch_memmove(IObuff, errnum, (size_t)numlen);
 	}
 	STRCAT(IObuff, errmsg);
@@ -5976,7 +5972,7 @@
 #endif
 				)
     {
-	mch_memmove(e + 1, e, STRLEN(e) + 1);
+	STRMOVE(e + 1, e);
 #ifdef RISCOS
 	*e = '/';
 #else
@@ -6593,7 +6589,8 @@
 	buf_reload(buf, orig_mode);
 
 #ifdef FEAT_AUTOCMD
-    if (buf_valid(buf))
+    /* Trigger FileChangedShell when the file was changed in any way. */
+    if (buf_valid(buf) && retval != 0)
 	(void)apply_autocmds(EVENT_FILECHANGEDSHELLPOST,
 				      buf->b_fname, buf->b_fname, FALSE, buf);
 #endif
diff --git a/src/globals.h b/src/globals.h
index 469801b..b31e054 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -168,6 +168,8 @@
 EXTERN int	info_message INIT(= FALSE); /* printing informative message */
 EXTERN int      msg_hist_off INIT(= FALSE); /* don't add messages to history */
 #ifdef FEAT_EVAL
+EXTERN int	need_clr_eos INIT(= FALSE); /* need to clear text before
+					       displaying a message. */
 EXTERN int	emsg_skip INIT(= 0);	    /* don't display errors for
 					       expression that is skipped */
 EXTERN int	emsg_severe INIT(= FALSE);   /* use message of next of several
@@ -1172,7 +1174,7 @@
 EXTERN int	no_hlsearch INIT(= FALSE);
 #endif
 
-#ifdef FEAT_BEVAL
+#if defined(FEAT_BEVAL) && !defined(NO_X11_INCLUDES)
 EXTERN BalloonEval	*balloonEval INIT(= NULL);
 # if defined(FEAT_NETBEANS_INTG) || defined(FEAT_SUN_WORKSHOP)
 EXTERN int bevalServers INIT(= 0);
diff --git a/src/gui.c b/src/gui.c
index 1e8ad84..09c3027 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -3497,7 +3497,7 @@
 	    if (modified)
 		STRCAT(buf, "+");
 	    STRCAT(buf, " ");
-	    mch_memmove(NameBuff + STRLEN(buf), NameBuff, STRLEN(NameBuff) + 1);
+	    STRMOVE(NameBuff + STRLEN(buf), NameBuff);
 	    mch_memmove(NameBuff, buf, STRLEN(buf));
 	}
     }
diff --git a/src/gui.h b/src/gui.h
index e4ee182..875b5e4 100644
--- a/src/gui.h
+++ b/src/gui.h
@@ -425,7 +425,7 @@
 #endif	/* FEAT_GUI_GTK */
 
 #if defined(FEAT_GUI_TABLINE) \
- 	&& (defined(FEAT_GUI_W32) || defined(FEAT_GUI_MOTIF) \
+	&& (defined(FEAT_GUI_W32) || defined(FEAT_GUI_MOTIF) \
                  || defined(FEAT_GUI_MAC))
     int		tabline_height;
 #endif
diff --git a/src/gui_athena.c b/src/gui_athena.c
index df1367f..c86703e 100644
--- a/src/gui_athena.c
+++ b/src/gui_athena.c
@@ -2245,7 +2245,7 @@
 	for (next = p; *next; ++next)
 	{
 	    if (*next == DLG_HOTKEY_CHAR)
-		mch_memmove(next, next + 1, STRLEN(next));
+		STRMOVE(next, next + 1);
 	    if (*next == DLG_BUTTON_SEP)
 	    {
 		*next++ = NUL;
diff --git a/src/mbyte.c b/src/mbyte.c
index 6ab73f2..4e90593 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -2940,7 +2940,7 @@
 		    && dbcs_screen_head_off(ScreenLines + LineOffset[row],
 					 ScreenLines + LineOffset[row] + col))
 		|| (enc_utf8 && ScreenLines[LineOffset[row] + col] == 0)))
-	--col;
+	return col - 1;
     return col;
 }
 # endif
@@ -3008,31 +3008,31 @@
 
 	/* Change "microsoft-cp" to "cp".  Used in some spell files. */
 	if (STRNCMP(p, "microsoft-cp", 12) == 0)
-	    mch_memmove(p, p + 10, STRLEN(p + 10) + 1);
+	    STRMOVE(p, p + 10);
 
 	/* "iso8859" -> "iso-8859" */
 	if (STRNCMP(p, "iso8859", 7) == 0)
 	{
-	    mch_memmove(p + 4, p + 3, STRLEN(p + 2));
+	    STRMOVE(p + 4, p + 3);
 	    p[3] = '-';
 	}
 
 	/* "iso-8859n" -> "iso-8859-n" */
 	if (STRNCMP(p, "iso-8859", 8) == 0 && p[8] != '-')
 	{
-	    mch_memmove(p + 9, p + 8, STRLEN(p + 7));
+	    STRMOVE(p + 9, p + 8);
 	    p[8] = '-';
 	}
 
 	/* "latin-N" -> "latinN" */
 	if (STRNCMP(p, "latin-", 6) == 0)
-	    mch_memmove(p + 5, p + 6, STRLEN(p + 5));
+	    STRMOVE(p + 5, p + 6);
 
 	if (enc_canon_search(p) >= 0)
 	{
 	    /* canonical name can be used unmodified */
 	    if (p != r)
-		mch_memmove(r, p, STRLEN(p) + 1);
+		STRMOVE(r, p);
 	}
 	else if ((i = enc_alias_search(p)) >= 0)
 	{
@@ -3692,7 +3692,11 @@
     preedit_start_col = MAXCOL;
     xim_has_preediting = FALSE;
 
+#if 0
+    /* Removal of this line suggested by Takuhiro Nishioka.  Fixes that IM was
+     * switched off unintentionally. */
     im_is_active = FALSE;
+#endif
     gui_update_cursor(TRUE, FALSE);
     im_show_info();
 }
@@ -4144,6 +4148,7 @@
 	 * committed while we're processing one of these keys, we can ignore
 	 * that commit and go ahead & process it ourselves.  That way we can
 	 * still distinguish keypad keys for use in mappings.
+	 * Also add GDK_space to make <S-Space> work.
 	 */
 	switch (event->keyval)
 	{
@@ -4163,6 +4168,7 @@
 	    case GDK_KP_7:	  xim_expected_char = '7';  break;
 	    case GDK_KP_8:	  xim_expected_char = '8';  break;
 	    case GDK_KP_9:	  xim_expected_char = '9';  break;
+	    case GDK_space:	  xim_expected_char = ' ';  break;
 	    default:		  xim_expected_char = NUL;
 	}
 	xim_ignored_char = FALSE;
diff --git a/src/msvc2008.bat b/src/msvc2008.bat
new file mode 100644
index 0000000..55155f8
--- /dev/null
+++ b/src/msvc2008.bat
@@ -0,0 +1,5 @@
+rem To be used on MS-Windows for Visual C++ 2008 Express Edition
+rem   aka Microsoft Visual Studio 9.0.
+rem See INSTALLpc.txt for information.
+
+call "%VS90COMNTOOLS%%vsvars32.bat"
diff --git a/src/os_unix.c b/src/os_unix.c
index 4c3f39f..ef73270 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -35,10 +35,6 @@
 # include "if_mzsch.h"
 #endif
 
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
 #include "os_unixx.h"	    /* unix includes for os_unix.c only */
 
 #ifdef USE_XSMP
@@ -92,6 +88,15 @@
 static int mch_gpm_process __ARGS((void));
 #endif
 
+#ifdef FEAT_SYSMOUSE
+# include <sys/consio.h>
+# include <sys/fbio.h>
+
+static int sysmouse_open __ARGS((void));
+static void sysmouse_close __ARGS((void));
+static RETSIGTYPE sig_sysmouse __ARGS(SIGPROTOARG);
+#endif
+
 /*
  * end of autoconf section. To be extended...
  */
@@ -289,7 +294,8 @@
 #ifdef SIGUSR1
     {SIGUSR1,	    "USR1",	TRUE},
 #endif
-#ifdef SIGUSR2
+#if defined(SIGUSR2) && !defined(FEAT_SYSMOUSE)
+    /* Used for sysmouse handling */
     {SIGUSR2,	    "USR2",	TRUE},
 #endif
 #ifdef SIGINT
@@ -2055,6 +2061,21 @@
 		|| STRCMP(name, "builtin_xterm") == 0);
 }
 
+#if defined(FEAT_MOUSE_XTERM) || defined(PROTO)
+/*
+ * Return TRUE if "name" appears to be that of a terminal
+ * known to support the xterm-style mouse protocol.
+ * Relies on term_is_xterm having been set to its correct value.
+ */
+    int
+use_xterm_like_mouse(name)
+    char_u *name;
+{
+    return (name != NULL
+	    && (term_is_xterm || STRNICMP(name, "screen", 6) == 0));
+}
+#endif
+
 #if defined(FEAT_MOUSE_TTY) || defined(PROTO)
 /*
  * Return non-zero when using an xterm mouse, according to 'ttymouse'.
@@ -2279,10 +2300,10 @@
     char_u	*p;
     int		retval = OK;
 #ifdef __CYGWIN__
-    char_u	posix_fname[MAX_PATH];
+    char_u	posix_fname[MAXPATHL];	/* Cygwin docs mention MAX_PATH, but
+					   it's not always defined */
 #endif
 
-
 #ifdef VMS
     fname = vms_fixfilename(fname);
 #endif
@@ -3255,6 +3276,22 @@
     }
 # endif
 
+# ifdef FEAT_SYSMOUSE
+    else
+    {
+	if (on)
+	{
+	    if (sysmouse_open() == OK)
+		ison = TRUE;
+	}
+	else
+	{
+	    sysmouse_close();
+	    ison = FALSE;
+	}
+    }
+# endif
+
 # ifdef FEAT_MOUSE_JSB
     else
     {
@@ -3342,6 +3379,15 @@
 	set_mouse_termcode(KS_MOUSE, (char_u *)IF_EB("\033MG", ESC_STR "MG"));
 # endif
 
+# ifdef FEAT_SYSMOUSE
+    if (!use_xterm_mouse()
+#  ifdef FEAT_GUI
+	    && !gui.in_use
+#  endif
+	    )
+	set_mouse_termcode(KS_MOUSE, (char_u *)IF_EB("\033MS", ESC_STR "MS"));
+# endif
+
 # ifdef FEAT_MOUSE_JSB
     /* conflicts with xterm mouse: "\033[" and "\033[M" ??? */
     if (!use_xterm_mouse()
@@ -5170,7 +5216,7 @@
     static int	did_find_nul = FALSE;
     int		ampersent = FALSE;
 		/* vimglob() function to define for Posix shell */
-    static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo -n \"$1\"; echo; shift; done }; vimglob >";
+    static char *sh_vimglob_func = "vimglob() { while [ $# -ge 1 ]; do echo \"$1\"; shift; done }; vimglob >";
 
     *num_file = 0;	/* default: no files found */
     *file = NULL;
@@ -5811,7 +5857,6 @@
 
 /*
  * Closes connection to gpm
- * returns non-zero if connection successfully closed
  */
     static void
 gpm_close()
@@ -5906,6 +5951,114 @@
 }
 #endif /* FEAT_MOUSE_GPM */
 
+#ifdef FEAT_SYSMOUSE
+/*
+ * Initialize connection with sysmouse.
+ * Let virtual console inform us with SIGUSR2 for pending sysmouse
+ * output, any sysmouse output than will be processed via sig_sysmouse().
+ * Return OK if succeeded, FAIL if failed.
+ */
+    static int
+sysmouse_open()
+{
+    struct mouse_info   mouse;
+
+    mouse.operation = MOUSE_MODE;
+    mouse.u.mode.mode = 0;
+    mouse.u.mode.signal = SIGUSR2;
+    if (ioctl(1, CONS_MOUSECTL, &mouse) != -1)
+    {
+	signal(SIGUSR2, (RETSIGTYPE (*)())sig_sysmouse);
+	mouse.operation = MOUSE_SHOW;
+	ioctl(1, CONS_MOUSECTL, &mouse);
+	return OK;
+    }
+    return FAIL;
+}
+
+/*
+ * Stop processing SIGUSR2 signals, and also make sure that
+ * virtual console do not send us any sysmouse related signal.
+ */
+    static void
+sysmouse_close()
+{
+    struct mouse_info	mouse;
+
+    signal(SIGUSR2, restricted ? SIG_IGN : SIG_DFL);
+    mouse.operation = MOUSE_MODE;
+    mouse.u.mode.mode = 0;
+    mouse.u.mode.signal = 0;
+    ioctl(1, CONS_MOUSECTL, &mouse);
+}
+
+/*
+ * Gets info from sysmouse and adds special keys to input buf.
+ */
+/* ARGSUSED */
+    static RETSIGTYPE
+sig_sysmouse SIGDEFARG(sigarg)
+{
+    struct mouse_info	mouse;
+    struct video_info	video;
+    char_u		string[6];
+    int			row, col;
+    int			button;
+    int			buttons;
+    static int		oldbuttons = 0;
+
+#ifdef FEAT_GUI
+    /* Don't put events in the input queue now. */
+    if (hold_gui_events)
+	return;
+#endif
+
+    mouse.operation = MOUSE_GETINFO;
+    if (ioctl(1, FBIO_GETMODE, &video.vi_mode) != -1
+	    && ioctl(1, FBIO_MODEINFO, &video) != -1
+	    && ioctl(1, CONS_MOUSECTL, &mouse) != -1
+	    && video.vi_cheight > 0 && video.vi_cwidth > 0)
+    {
+	row = mouse.u.data.y / video.vi_cheight;
+	col = mouse.u.data.x / video.vi_cwidth;
+	buttons = mouse.u.data.buttons;
+	string[0] = ESC; /* Our termcode */
+	string[1] = 'M';
+	string[2] = 'S';
+	if (oldbuttons == buttons && buttons != 0)
+	{
+	    button = MOUSE_DRAG;
+	}
+	else
+	{
+	    switch (buttons)
+	    {
+		case 0:
+		    button = MOUSE_RELEASE;
+		    break;
+		case 1:
+		    button = MOUSE_LEFT;
+		    break;
+		case 2:
+		    button = MOUSE_MIDDLE;
+		    break;
+		case 4:
+		    button = MOUSE_RIGHT;
+		    break;
+		default:
+		    return;
+	    }
+	    oldbuttons = buttons;
+	}
+	string[3] = (char_u)(button);
+	string[4] = (char_u)(col + ' ' + 1);
+	string[5] = (char_u)(row + ' ' + 1);
+	add_to_input_buf(string, 6);
+    }
+    return;
+}
+#endif /* FEAT_SYSMOUSE */
+
 #if defined(FEAT_LIBCALL) || defined(PROTO)
 typedef char_u * (*STRPROCSTR)__ARGS((char_u *));
 typedef char_u * (*INTPROCSTR)__ARGS((int));
diff --git a/src/os_win32.c b/src/os_win32.c
index 54837ec..99523b7 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -27,9 +27,6 @@
 # include "if_mzsch.h"
 #endif
 
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
 #include <sys/types.h>
 #include <errno.h>
 #include <signal.h>
diff --git a/src/os_win32.h b/src/os_win32.h
index 15e6160..b57ee23 100644
--- a/src/os_win32.h
+++ b/src/os_win32.h
@@ -28,6 +28,9 @@
 #ifndef HAVE_STRING_H
 # define HAVE_STRING_H
 #endif
+#ifndef HAVE_MATH_H
+# define HAVE_MATH_H
+#endif
 #define HAVE_STRCSPN
 #ifndef __GNUC__
 #define HAVE_STRICMP
diff --git a/src/po/Make_cyg.mak b/src/po/Make_cyg.mak
index 15258f4..26a8168 100644
--- a/src/po/Make_cyg.mak
+++ b/src/po/Make_cyg.mak
@@ -18,7 +18,9 @@
 		cs.cp1250 \
 		de \
 		en_GB \
+		eo \
 		es \
+		fi \
 		fr \
 		ga \
 		it \
@@ -48,7 +50,9 @@
 		cs.mo \
 		de.mo \
 		en_GB.mo \
+		eo.mo \
 		es.mo \
+		fi.mo \
 		fr.mo \
 		ga.mo \
 		it.mo \
diff --git a/src/po/Makefile b/src/po/Makefile
index d30d72f..2b7eae0 100644
--- a/src/po/Makefile
+++ b/src/po/Makefile
@@ -10,7 +10,9 @@
 		cs \
 		de \
 		en_GB \
+		eo \
 		es \
+		fi \
 		fr \
 		ga \
 		it \
@@ -34,7 +36,9 @@
 		cs.mo \
 		de.mo \
 		en_GB.mo \
+		eo.mo \
 		es.mo \
+		fi.mo \
 		fr.mo \
 		ga.mo \
 		it.mo \
@@ -68,7 +72,9 @@
 		cs.ck \
 		de.ck \
 		en_GB.ck \
+		eo.ck \
 		es.ck \
+		fi.ck \
 		fr.ck \
 		ga.ck \
 		it.ck \
@@ -199,8 +205,8 @@
 # Convert uk.po to create uk.cp1251.po.
 uk.cp1251.po: uk.po
 	rm -f uk.cp1251.po
-	iconv -f koi8-u -t cp1251 uk.po | \
-		sed -e 's/charset=koi8-u/charset=cp1251/' -e 's/# Original translations/# Generated from uk.po, DO NOT EDIT/' > uk.cp1251.po
+	iconv -f utf-8 -t cp1251 uk.po | \
+		sed -e 's/charset=utf-8/charset=cp1251/' -e 's/# Original translations/# Generated from uk.po, DO NOT EDIT/' > uk.cp1251.po
 
 prefixcheck:
 	@if test "x" = "x$(prefix)"; then \
diff --git a/src/po/ja.po b/src/po/ja.po
index 9549c24..0538940 100644
--- a/src/po/ja.po
+++ b/src/po/ja.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=euc-jp\n"
 "Content-Transfer-Encoding: 8-bit\n"
@@ -114,12 +115,15 @@
 msgid "[readonly]"
 msgstr "[ÆÉ¹þÀìÍÑ]"
 
+#, c-format
 msgid "1 line --%d%%--"
 msgstr "1 ¹Ô --%d%%--"
 
+#, c-format
 msgid "%ld lines --%d%%--"
 msgstr "%ld ¹Ô --%d%%--"
 
+#, c-format
 msgid "line %ld of %ld --%d%%-- col "
 msgstr "¹Ô %ld (Á´ÂÎ %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: ¸½ºß¤Î¥Ð¥Ã¥Õ¥¡¤Ïº¹Ê¬¥â¡¼¥É¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
+msgid "E793: No other buffer in diff mode is modifiable"
+msgstr "E793: º¹Ê¬¥â¡¼¥É¤Ç¤¢¤ë¾¤Î¥Ð¥Ã¥Õ¥¡¤ÏÊѹ¹²Äǽ¤Ç¤¹"
+
 msgid "E100: No other buffer in diff mode"
 msgstr "E100: º¹Ê¬¥â¡¼¥É¤Ç¤¢¤ë¾¤Î¥Ð¥Ã¥Õ¥¡¤Ï¤¢¤ê¤Þ¤»¤ó"
 
@@ -216,6 +224,9 @@
 msgid "E105: Using :loadkeymap not in a sourced file"
 msgstr "E105: :source ¤Ç¼è¹þ¤à¥Õ¥¡¥¤¥ë°Ê³°¤Ç¤Ï :loadkeymap ¤ò»È¤¨¤Þ¤»¤ó"
 
+msgid "E791: Empty keymap entry"
+msgstr "E791: ¶õ¤Î¥­¡¼¥Þ¥Ã¥×¥¨¥ó¥È¥ê"
+
 msgid " Keyword completion (^N^P)"
 msgstr " ¥­¡¼¥ï¡¼¥ÉÊä´° (^N^P)"
 
@@ -282,6 +293,7 @@
 msgid "Scanning: %s"
 msgstr "¥¹¥­¥ã¥óÃæ: %s"
 
+#, c-format
 msgid "Scanning tags."
 msgstr "¥¿¥°¤ò¥¹¥­¥ã¥óÃæ."
 
@@ -338,7 +350,7 @@
 msgstr "E713: ¼­½ñ·¿¤Ë¶õ¤Î¥­¡¼¤ò»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó"
 
 msgid "E714: List required"
-msgstr "E471: ¥ê¥¹¥È·¿¤¬É¬ÍפǤ¹"
+msgstr "E714: ¥ê¥¹¥È·¿¤¬É¬ÍפǤ¹"
 
 msgid "E715: Dictionary required"
 msgstr "E715: ¼­½ñ·¿¤¬É¬ÍפǤ¹"
@@ -613,6 +625,10 @@
 msgstr "E706: ÊÑ¿ô¤Î·¿¤¬°ìÃפ·¤Þ¤»¤ó: %s"
 
 #, c-format
+msgid "E795: Cannot delete variable %s"
+msgstr "E795: ÊÑ¿ô %s ¤òºï½ü¤Ç¤­¤Þ¤»¤ó"
+
+#, c-format
 msgid "E741: Value is locked: %s"
 msgstr "E741: Ãͤ¬¥í¥Ã¥¯¤µ¤ì¤Æ¤¤¤Þ¤¹: %s"
 
@@ -678,6 +694,7 @@
 msgid "E133: :return not inside a function"
 msgstr "E133: ´Ø¿ô³°¤Ë :return ¤¬¤¢¤ê¤Þ¤·¤¿"
 
+#, c-format
 msgid ""
 "\n"
 "# global variables:\n"
@@ -744,6 +761,7 @@
 msgid " FAILED"
 msgstr " ¼ºÇÔ"
 
+#. avoid a wait_return for this message, it's annoying
 #, c-format
 msgid "E137: Viminfo file is not writable: %s"
 msgstr "E137: viminfo¥Õ¥¡¥¤¥ë¤¬½ñ¹þ¤ß¤Ç¤­¤Þ¤»¤ó: %s"
@@ -761,6 +779,7 @@
 msgid "# This viminfo file was generated by Vim %s.\n"
 msgstr "# ¤³¤Î viminfo ¥Õ¥¡¥¤¥ë¤Ï Vim %s ¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤Þ¤·¤¿.\n"
 
+#, c-format
 msgid ""
 "# You may edit it if you're careful!\n"
 "\n"
@@ -768,6 +787,7 @@
 "# Êѹ¹¤¹¤ëºÝ¤Ë¤Ï½½Ê¬Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤!\n"
 "\n"
 
+#, c-format
 msgid "# Value of 'encoding' when this file was written\n"
 msgstr "# ¤³¤Î¥Õ¥¡¥¤¥ë¤¬½ñ¤«¤ì¤¿»þ¤Î 'encoding' ¤ÎÃÍ\n"
 
@@ -810,6 +830,20 @@
 "\"%s\" ¤Ë¤Ï 'readonly' ¥ª¥×¥·¥ç¥ó¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹.\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 ""
+"¥Õ¥¡¥¤¥ë \"%s\" ¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤¬ÆÉ¹þÀìÍѤǤ¹.\n"
+"¤½¤ì¤Ç¤â¶²¤é¤¯½ñ¤­¹þ¤à¤³¤È¤Ï²Äǽ¤Ç¤¹.\n"
+"·Ñ³¤·¤Þ¤¹¤«?"
+
+#, c-format
+msgid "E505: \"%s\" is read-only (add ! to override)"
+msgstr "E505: \"%s\" ¤ÏÆÉ¹þÀìÍѤǤ¹ (¶¯À©½ñ¹þ¤Ë¤Ï ! ¤òÄɲÃ)"
+
 msgid "Edit File"
 msgstr "¥Õ¥¡¥¤¥ë¤òÊÔ½¸"
 
@@ -864,6 +898,7 @@
 msgid "Pattern found in every line: %s"
 msgstr "¥Ñ¥¿¡¼¥ó¤¬Á´¤Æ¤Î¹Ô¤Ç¤ß¤Ä¤«¤ê¤Þ¤·¤¿: %s"
 
+#, c-format
 msgid ""
 "\n"
 "# Last Substitute String:\n"
@@ -1207,10 +1242,10 @@
 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: ¥Ð¥Ã¥Õ¥¡¤¬½¤Àµ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç, ¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó (! "
-"¤òÄɲäǾå½ñ)"
+"E747: ¥Ð¥Ã¥Õ¥¡¤¬½¤Àµ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç, ¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤Ç¤­¤Þ¤»¤ó (! ¤òÄɲäÇ"
+"¾å½ñ)"
 
 msgid "E186: No previous directory"
 msgstr "E186: Á°¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤¢¤ê¤Þ¤»¤ó"
@@ -1446,6 +1481,9 @@
 msgid "is not a file"
 msgstr " ¤Ï¥Õ¥¡¥¤¥ë¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr " ¤Ï¥Ç¥Ð¥¤¥¹¤Ç¤¹ ('opendevice' ¥ª¥×¥·¥ç¥ó¤Ç²óÈò¤Ç¤­¤Þ¤¹)"
+
 msgid "[New File]"
 msgstr "[¿·¥Õ¥¡¥¤¥ë]"
 
@@ -1483,6 +1521,9 @@
 msgid "[socket]"
 msgstr "[¥½¥±¥Ã¥È]"
 
+msgid "[character special]"
+msgstr "[¥­¥ã¥é¥¯¥¿¡¦¥Ç¥Ð¥¤¥¹]"
+
 msgid "[RO]"
 msgstr "[ÆÉÀì]"
 
@@ -1543,6 +1584,9 @@
 msgid "is not a file or writable device"
 msgstr "¤Ï¥Õ¥¡¥¤¥ë¤Ç¤â½ñ¹þ¤ß²Äǽ¥Ç¥Ð¥¤¥¹¤Ç¤â¤¢¤ê¤Þ¤»¤ó"
 
+msgid "writing to device disabled with 'opendevice' option"
+msgstr "'opendevice' ¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¥Ç¥Ð¥¤¥¹¤Ø¤Î½ñ¤­¹þ¤ß¤Ï¤Ç¤­¤Þ¤»¤ó"
+
 msgid "is read-only (add ! to override)"
 msgstr "¤ÏÆÉ¹þÀìÍѤǤ¹ (¶¯À©½ñ¹þ¤Ë¤Ï ! ¤òÄɲÃ)"
 
@@ -2151,6 +2195,7 @@
 msgid "No text to be printed"
 msgstr "°õºþ¤¹¤ë¥Æ¥­¥¹¥È¤¬¤¢¤ê¤Þ¤»¤ó"
 
+#, c-format
 msgid "Printing page %d (%d%%)"
 msgstr "°õºþÃæ: ¥Ú¡¼¥¸ %d (%d%%)"
 
@@ -2290,15 +2335,15 @@
 msgid "cs_create_connection exec failed"
 msgstr "cs_create_connection ¤Î¼Â¹Ô¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
 
-msgid "E623: Could not spawn cscope process"
-msgstr "E623: cscope¥×¥í¥»¥¹¤òµ¯Æ°¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
-
 msgid "cs_create_connection: fdopen for to_fp failed"
 msgstr "cs_create_connection: to_fp ¤Î fdopen ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
 
 msgid "cs_create_connection: fdopen for fr_fp failed"
 msgstr "cs_create_connection: fr_fp ¤Î fdopen ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
 
+msgid "E623: Could not spawn cscope process"
+msgstr "E623: cscope¥×¥í¥»¥¹¤òµ¯Æ°¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
 msgid "E567: no cscope connections"
 msgstr "E567: cscopeÀܳ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿"
 
@@ -2373,8 +2418,8 @@
 "???: Sorry, this command is disabled, the MzScheme library could not be "
 "loaded."
 msgstr ""
-"???: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹, ¤´¤á¤ó¤Ê¤µ¤¤: MzScheme "
-"¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+"???: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹, ¤´¤á¤ó¤Ê¤µ¤¤: MzScheme ¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ"
+"¤»¤ó¤Ç¤·¤¿."
 
 msgid "invalid expression"
 msgstr "̵¸ú¤Ê¼°¤Ç¤¹"
@@ -2427,25 +2472,12 @@
 msgid "not allowed in the Vim sandbox"
 msgstr "¥µ¥ó¥É¥Ü¥Ã¥¯¥¹¤Ç¤Ïµö¤µ¤ì¤Þ¤»¤ó"
 
-#, c-format
-msgid "E370: Could not load library %s"
-msgstr "E370: ¥é¥¤¥Ö¥é¥ê %s ¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
-
-msgid "Sorry, this command is disabled: the Perl library could not be loaded."
-msgstr ""
-"¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹, ¤´¤á¤ó¤Ê¤µ¤¤: Perl¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
-
-msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
-msgstr ""
-"E299: ¥µ¥ó¥É¥Ü¥Ã¥¯¥¹¤Ç¤Ï Safe "
-"¥â¥¸¥å¡¼¥ë¤ò»ÈÍѤ·¤Ê¤¤Perl¥¹¥¯¥ê¥×¥È¤Ï¶Ø¤¸¤é¤ì¤Æ¤¤¤Þ¤¹"
-
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
 "loaded."
 msgstr ""
-"E263: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹,¤´¤á¤ó¤Ê¤µ¤¤: "
-"Python¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+"E263: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹,¤´¤á¤ó¤Ê¤µ¤¤: Python¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó"
+"¤Ç¤·¤¿."
 
 # 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: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹,¤´¤á¤ó¤Ê¤µ¤¤: "
-"Ruby¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+"E266: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹,¤´¤á¤ó¤Ê¤µ¤¤: Ruby¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç"
+"¤·¤¿."
 
 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+¤ËÀܳ¤Ç¤­¤Þ¤»¤ó. ´Ä¶­¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤(sniffemacs ¤¬ $PATH "
-"¤Ë¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó).\n"
+"SNiFF+¤ËÀܳ¤Ç¤­¤Þ¤»¤ó. ´Ä¶­¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤(sniffemacs ¤¬ $PATH ¤Ë¤Ê¤±"
+"¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó).\n"
 
 msgid "E274: Sniff: Error during read. Disconnected"
 msgstr "E274: Sniff: ÆÉ¹þÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿. ÀÚÃǤ·¤Þ¤·¤¿"
@@ -2660,8 +2692,8 @@
 
 msgid "cannot create buffer/window command: object is being deleted"
 msgstr ""
-"¥Ð¥Ã¥Õ¥¡/¥¦¥£¥ó¥É¥¦ºîÀ®¥³¥Þ¥ó¥É¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: "
-"¥ª¥Ö¥¸¥§¥¯¥È¤¬¾Ãµî¤µ¤ì¤Æ¤¤¤Þ¤·¤¿"
+"¥Ð¥Ã¥Õ¥¡/¥¦¥£¥ó¥É¥¦ºîÀ®¥³¥Þ¥ó¥É¤òºîÀ®¤Ç¤­¤Þ¤»¤ó: ¥ª¥Ö¥¸¥§¥¯¥È¤¬¾Ãµî¤µ¤ì¤Æ¤¤¤Þ"
+"¤·¤¿"
 
 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 Ã×̿Ū¥¨¥é¡¼: reflist ±øÀ÷!? vim-dev@vim.org ¤ËÊó¹ð¤·¤Æ¤¯¤À¤µ¤¤"
 
 msgid "cannot register callback command: buffer/window reference not found"
 msgstr ""
-"¥³¡¼¥ë¥Ð¥Ã¥¯¥³¥Þ¥ó¥É¤òÅÐÏ¿¤Ç¤­¤Þ¤»¤ó: "
-"¥Ð¥Ã¥Õ¥¡/¥¦¥£¥ó¥É¥¦¤Î»²¾È¤¬¤ß¤Ä¤«¤ê¤Þ¤»¤ó"
+"¥³¡¼¥ë¥Ð¥Ã¥¯¥³¥Þ¥ó¥É¤òÅÐÏ¿¤Ç¤­¤Þ¤»¤ó: ¥Ð¥Ã¥Õ¥¡/¥¦¥£¥ó¥É¥¦¤Î»²¾È¤¬¤ß¤Ä¤«¤ê¤Þ¤»"
+"¤ó"
 
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
 msgstr ""
-"E571: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹,¤´¤á¤ó¤Ê¤µ¤¤: "
-"Tcl¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+"E571: ¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹,¤´¤á¤ó¤Ê¤µ¤¤: Tcl¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç"
+"¤·¤¿."
 
 msgid ""
 "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"
 msgstr ""
-"E281: TCL ¥¨¥é¡¼: ½ªÎ»¥³¡¼¥É¤¬À°¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó!? vim-dev@vim.org "
-"¤ËÊó¹ð¤·¤Æ¤¯¤À¤µ¤¤"
+"E281: TCL ¥¨¥é¡¼: ½ªÎ»¥³¡¼¥É¤¬À°¿ôÃͤǤϤ¢¤ê¤Þ¤»¤ó!? 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 "Âçʸ»ú¾®Ê¸»ú¤Ï̵»ë¤µ¤ì¤Þ¤¹ / ¥Õ¥é¥°¤ÏÂçʸ»ú¤Ë¤·¤Æ¤¯¤À¤µ¤¤"
+msgid ""
+"\n"
+"Where case is ignored prepend / to make flag upper case"
+msgstr ""
+"\n"
+"Â羮ʸ»ú¤¬Ìµ»ë¤µ¤ì¤ë¾ì¹ç¤ÏÂçʸ»ú¤Ë¤¹¤ë¤¿¤á¤Ë / ¤òÁ°ÃÖ¤·¤Æ¤¯¤À¤µ¤¤"
 
 msgid ""
 "\n"
@@ -2870,8 +2906,8 @@
 msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'"
 msgstr "-N\t\t\tViÈó¸ß´¹¥â¡¼¥É: 'nocompatible"
 
-msgid "-V[N]\t\tVerbose level"
-msgstr "-V[N]\t\tVerbose ¥ì¥Ù¥ë"
+msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]"
+msgstr "-V[N][fname]\t\t¥í¥°½ÐÎÏÀßÄê [¥ì¥Ù¥ë N] [¥í¥°¥Õ¥¡¥¤¥ë̾ fname]"
 
 msgid "-D\t\t\tDebugging mode"
 msgstr "-D\t\t\t¥Ç¥Ð¥Ã¥°¥â¡¼¥É"
@@ -2971,8 +3007,11 @@
 "--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-tab[-wait][-silent] <files>  As --remote but use tab page per file"
+msgstr ""
+"--remote-tab[-wait][-silent] <files>  --remote¤Ç¥Õ¥¡¥¤¥ë1¤Ä¤Ë¤Ä¤­1¤Ä¤Î¥¿¥Ö"
+"¥Ú¡¼¥¸¤ò³«¤¯"
 
 msgid "--remote-send <keys>\tSend <keys> to a Vim server and exit"
 msgstr "--remote-send <keys>\tVim¥µ¡¼¥Ð¤Ë <keys> ¤òÁ÷¿®¤·¤Æ½ªÎ»¤¹¤ë"
@@ -3097,6 +3136,9 @@
 msgid "-P <parent title>\tOpen Vim inside parent application"
 msgstr "-P <¿Æ¤Î¥¿¥¤¥È¥ë>\tVim¤ò¿Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÃæ¤Çµ¯Æ°¤¹¤ë"
 
+msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
+msgstr "--windowid <HWND>\t°Û¤Ê¤ëWin32 widget¤ÎÆâÉô¤ËVim¤ò³«¤¯"
+
 msgid "No display"
 msgstr "¥Ç¥£¥¹¥×¥ì¥¤¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó"
 
@@ -3149,6 +3191,7 @@
 "\n"
 "Êѹ¹   ¹Ô    Îó  ¥Æ¥­¥¹¥È"
 
+#, c-format
 msgid ""
 "\n"
 "# File marks:\n"
@@ -3157,6 +3200,7 @@
 "# ¥Õ¥¡¥¤¥ë¥Þ¡¼¥¯:\n"
 
 #. Write the jumplist with -'
+#, c-format
 msgid ""
 "\n"
 "# Jumplist (newest first):\n"
@@ -3164,6 +3208,7 @@
 "\n"
 "# ¥¸¥ã¥ó¥×¥ê¥¹¥È (¿·¤·¤¤¤â¤Î¤¬Àè):\n"
 
+#, c-format
 msgid ""
 "\n"
 "# History of marks within files (newest to oldest):\n"
@@ -3289,6 +3334,9 @@
 ",\n"
 "¤â¤·¤¯¤Ï¥Õ¥¡¥¤¥ë¤¬Â»½ý¤·¤Æ¤¤¤Þ¤¹."
 
+msgid " has been damaged (page size is smaller than minimum value).\n"
+msgstr " ¤Ï»½ý¤·¤Æ¤¤¤Þ¤¹ (¥Ú¡¼¥¸¥µ¥¤¥º¤¬ºÇ¾®Ãͤò²¼²ó¤Ã¤Æ¤¤¤Þ¤¹).\n"
+
 #, c-format
 msgid "Using swap file \"%s\""
 msgstr "¥¹¥ï¥Ã¥×¥Õ¥¡¥¤¥ë \"%s\" ¤ò»ÈÍÑÃæ"
@@ -3629,6 +3677,10 @@
 msgid "E329: No menu \"%s\""
 msgstr "E329: \"%s\" ¤È¤¤¤¦¥á¥Ë¥å¡¼¤Ï¤¢¤ê¤Þ¤»¤ó"
 
+#. Only a mnemonic or accelerator is not valid.
+msgid "E792: Empty menu name"
+msgstr "E792: ¥á¥Ë¥å¡¼Ì¾¤¬¶õ¤Ç¤¹"
+
 msgid "E330: Menu path must not lead to a sub-menu"
 msgstr "E330: ¥á¥Ë¥å¡¼¥Ñ¥¹¤Ï¥µ¥Ö¥á¥Ë¥å¡¼¤òÀ¸¤¸¤ë¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó"
 
@@ -3680,7 +3732,7 @@
 msgstr "E354: ̵¸ú¤Ê¥ì¥¸¥¹¥¿Ì¾: '%s'"
 
 msgid "Messages maintainer: Bram Moolenaar <Bram@vim.org>"
-msgstr "ÆüËܸì¥á¥Ã¥»¡¼¥¸ËÝÌõ/´Æ½¤: ¼²¬ ÂÀϺ <koron@tka.att.ne.jp>"
+msgstr "ÆüËܸì¥á¥Ã¥»¡¼¥¸ËÝÌõ/´Æ½¤: ¼²¬ ÂÀϺ <koron.kaoriya@gmail.com>"
 
 msgid "Interrupt: "
 msgstr "³ä¹þ¤ß: "
@@ -3776,6 +3828,7 @@
 msgid "Vim: Finished.\n"
 msgstr "Vim: ½ªÎ»¤·¤Þ¤·¤¿.\n"
 
+#, c-format
 msgid "ERROR: "
 msgstr "¥¨¥é¡¼: "
 
@@ -3839,8 +3892,8 @@
 "E343: Invalid path: '**[number]' must be at the end of the path or be "
 "followed by '%s'."
 msgstr ""
-"E343: ̵¸ú¤Ê¥Ñ¥¹¤Ç¤¹: '**[¿ôÃÍ]' ¤Ïpath¤ÎºÇ¸å¤« '%s' "
-"¤¬Â³¤¤¤Æ¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó."
+"E343: ̵¸ú¤Ê¥Ñ¥¹¤Ç¤¹: '**[¿ôÃÍ]' ¤Ïpath¤ÎºÇ¸å¤« '%s' ¤¬Â³¤¤¤Æ¤Ê¤¤¤È¤¤¤±¤Þ¤»"
+"¤ó."
 
 #, c-format
 msgid "E344: Can't find directory \"%s\" in cdpath"
@@ -3984,6 +4037,7 @@
 msgid "Illegal register name"
 msgstr "ÉÔÀµ¤Ê¥ì¥¸¥¹¥¿Ì¾"
 
+#, c-format
 msgid ""
 "\n"
 "# Registers:\n"
@@ -4140,6 +4194,13 @@
 msgid "E355: Unknown option: %s"
 msgstr "E355: ̤ÃΤΥª¥×¥·¥ç¥ó¤Ç¤¹: %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: ¿ô»ú¤¬É¬ÍפǤ¹: &%s = '%s'"
+
 msgid ""
 "\n"
 "--- Terminal codes ---"
@@ -4270,6 +4331,7 @@
 msgid "Vim: Caught deadly signal %s\n"
 msgstr "Vim: Ã×̿Ū¥·¥°¥Ê¥ë %s ¤ò¸¡ÃΤ·¤Þ¤·¤¿\n"
 
+#, c-format
 msgid "Vim: Caught deadly signal\n"
 msgstr "Vim: Ã×̿Ū¥·¥°¥Ê¥ë¤ò¸¡ÃΤ·¤Þ¤·¤¿\n"
 
@@ -4292,6 +4354,20 @@
 
 msgid ""
 "\n"
+"Could not get security context for "
+msgstr ""
+"\n"
+"¥»¥­¥å¥ê¥Æ¥£¥³¥ó¥Æ¥­¥¹¥È¤ò¼èÆÀ¤Ç¤­¤Þ¤»¤ó "
+
+msgid ""
+"\n"
+"Could not set security context for "
+msgstr ""
+"\n"
+"¥»¥­¥å¥ê¥Æ¥£¥³¥ó¥Æ¥­¥¹¥È¤òÀßÄê¤Ç¤­¤Þ¤»¤ó "
+
+msgid ""
+"\n"
 "Cannot execute shell "
 msgstr ""
 "\n"
@@ -4399,21 +4475,26 @@
 msgid "Vim Warning"
 msgstr "Vim¤Î·Ù¹ð"
 
+#, c-format
 msgid "E372: Too many %%%c in format string"
 msgstr "E372: ¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ë %%%c ¤¬Â¿²á¤®¤Þ¤¹"
 
+#, c-format
 msgid "E373: Unexpected %%%c in format string"
 msgstr "E373: ¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ëͽ´ü¤»¤Ì %%%c ¤¬¤¢¤ê¤Þ¤·¤¿"
 
 msgid "E374: Missing ] in format string"
 msgstr "E374: ¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ë ] ¤¬¤¢¤ê¤Þ¤»¤ó"
 
+#, c-format
 msgid "E375: Unsupported %%%c in format string"
 msgstr "E375: ¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ç¤Ï %%%c ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Þ¤»¤ó"
 
+#, c-format
 msgid "E376: Invalid %%%c in format string prefix"
 msgstr "E376: ¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤ÎÁ°ÃÖ¤Ë̵¸ú¤Ê %%%c ¤¬¤¢¤ê¤Þ¤¹"
 
+#, c-format
 msgid "E377: Invalid %%%c in format string"
 msgstr "E377: ¥Õ¥©¡¼¥Þ¥Ã¥Èʸ»úÎó¤Ë̵¸ú¤Ê %%%c ¤¬¤¢¤ê¤Þ¤¹"
 
@@ -4459,6 +4540,10 @@
 msgid "E777: String or List expected"
 msgstr "E777: ʸ»úÎ󤫥ꥹ¥È¤¬É¬ÍפǤ¹"
 
+#, c-format
+msgid "E369: invalid item in %s%%[]"
+msgstr "E369: ̵¸ú¤Ê¹àÌܤǤ¹: %s%%[]"
+
 msgid "E339: Pattern too long"
 msgstr "E339: ¥Ñ¥¿¡¼¥ó¤¬Ä¹²á¤®¤Þ¤¹"
 
@@ -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 ¤Î¸å¤ËÉÔÀµ¤Êʸ»ú¤¬¤¢¤ê¤Þ¤·¤¿"
 
 #
+#, 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] ¤Î¸å¤ËÉÔÀµ¤Êʸ»ú¤¬¤¢¤ê¤Þ¤·¤¿"
 
 #
+#, c-format
 msgid "E71: Invalid character after %s%%"
 msgstr "E71: %s%% ¤Î¸å¤ËÉÔÀµ¤Êʸ»ú¤¬¤¢¤ê¤Þ¤·¤¿"
 
@@ -4752,16 +4842,16 @@
 "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"%s ¤Î %d ¹ÔÌܤΠPFX ¹àÌܤθå¤Î COMPOUNDFORBIDFLAG "
-"¤ÎÄêµÁ¤Ï¸í¤Ã¤¿·ë²Ì¤òÀ¸¤¸¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹"
+"%s ¤Î %d ¹ÔÌܤΠPFX ¹àÌܤθå¤Î COMPOUNDFORBIDFLAG ¤ÎÄêµÁ¤Ï¸í¤Ã¤¿·ë²Ì¤òÀ¸¤¸¤ë"
+"¤³¤È¤¬¤¢¤ê¤Þ¤¹"
 
 #, c-format
 msgid ""
 "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"%s ¤Î %d ¹ÔÌܤΠPFX ¹àÌܤθå¤Î COMPOUNDPERMITFLAG "
-"¤ÎÄêµÁ¤Ï¸í¤Ã¤¿·ë²Ì¤òÀ¸¤¸¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹"
+"%s ¤Î %d ¹ÔÌܤΠ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 ¸Ä¤Îñ¸ì¤ò̵»ë¤·¤Þ¤·¤¿"
 
+#, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
 msgstr "¥Î¡¼¥É %d ¸Ä(Á´ %d ¸ÄÃæ) ¤ò°µ½Ì¤·¤Þ¤·¤¿; »Ä¤ê %d (%d%%)"
 
@@ -4991,6 +5082,7 @@
 msgid "Sorry, only %ld suggestions"
 msgstr "»Äǰ¤Ç¤¹¤¬, ½¤Àµ¸õÊä¤Ï %ld ¸Ä¤·¤«¤¢¤ê¤Þ¤»¤ó"
 
+#. for when 'cmdheight' > 1
 #. avoid more prompt
 #, c-format
 msgid "Change \"%.*s\" to:"
@@ -5396,6 +5488,9 @@
 msgid "%ld seconds ago"
 msgstr "%ld É÷вᤷ¤Æ¤¤¤Þ¤¹"
 
+msgid "E790: undojoin is not allowed after undo"
+msgstr "E790: undo ¤Îľ¸å¤Ë undojoin ¤Ï¤Ç¤­¤Þ¤»¤ó"
+
 msgid "E439: undo list corrupt"
 msgstr "E439: ¥¢¥ó¥É¥¥¥ê¥¹¥È¤¬²õ¤ì¤Æ¤¤¤Þ¤¹"
 
@@ -5412,6 +5507,13 @@
 
 msgid ""
 "\n"
+"MS-Windows 64 bit GUI version"
+msgstr ""
+"\n"
+"MS-Windows 64 ¥Ó¥Ã¥È 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\" ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó"
 
+#, c-format
+msgid "E370: Could not load library %s"
+msgstr "E370: ¥é¥¤¥Ö¥é¥ê %s ¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿"
+
+msgid "Sorry, this command is disabled: the Perl library could not be loaded."
+msgstr ""
+"¤³¤Î¥³¥Þ¥ó¥É¤Ï̵¸ú¤Ç¤¹, ¤´¤á¤ó¤Ê¤µ¤¤: Perl¥é¥¤¥Ö¥é¥ê¤ò¥í¡¼¥É¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿."
+
+msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
+msgstr ""
+"E299: ¥µ¥ó¥É¥Ü¥Ã¥¯¥¹¤Ç¤Ï Safe ¥â¥¸¥å¡¼¥ë¤ò»ÈÍѤ·¤Ê¤¤Perl¥¹¥¯¥ê¥×¥È¤Ï¶Ø¤¸¤é¤ì"
+"¤Æ¤¤¤Þ¤¹"
+
 msgid "Edit with &multiple Vims"
 msgstr "Ê£¿ô¤ÎVim¤ÇÊÔ½¸¤¹¤ë (&M)"
 
@@ -5739,6 +5854,7 @@
 msgid "Edit with &Vim"
 msgstr "Vim¤ÇÊÔ½¸¤¹¤ë (&V)"
 
+#. Now concatenate
 msgid "Edit with existing Vim - "
 msgstr "´û¸¤ÎVim¤ÇÊÔ½¸¤¹¤ë - "
 
@@ -5994,8 +6110,8 @@
 msgstr "E46: ÆÉ¼èÀìÍÑÊÑ¿ô \"%s\" ¤Ë¤ÏÃͤòÀßÄê¤Ç¤­¤Þ¤»¤ó"
 
 #, c-format
-msgid "E46: Cannot set variable in the sandbox: \"%s\""
-msgstr "E46: ¥µ¥ó¥É¥Ü¥Ã¥¯¥¹¤Ç¤ÏÊÑ¿ô \"%s\" ¤ËÃͤòÀßÄê¤Ç¤­¤Þ¤»¤ó"
+msgid "E794: Cannot set variable in the sandbox: \"%s\""
+msgstr "E794: ¥µ¥ó¥É¥Ü¥Ã¥¯¥¹¤Ç¤ÏÊÑ¿ô \"%s\" ¤ËÃͤòÀßÄê¤Ç¤­¤Þ¤»¤ó"
 
 msgid "E47: Error while reading errorfile"
 msgstr "E47: ¥¨¥é¡¼¥Õ¥¡¥¤¥ë¤ÎÆÉ¹þÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿"
@@ -6079,7 +6195,6 @@
 msgid "E749: empty buffer"
 msgstr "E749: ¥Ð¥Ã¥Õ¥¡¤¬¶õ¤Ç¤¹"
 
-#
 msgid "E682: Invalid search pattern or delimiter"
 msgstr "E682: ¸¡º÷¥Ñ¥¿¡¼¥ó¤«¶èÀڤ국¹æ¤¬ÉÔÀµ¤Ç¤¹"
 
diff --git a/src/po/pl.UTF-8.po b/src/po/pl.UTF-8.po
index 75270ca..e13c855 100644
--- a/src/po/pl.UTF-8.po
+++ b/src/po/pl.UTF-8.po
@@ -73,7 +73,7 @@
 
 #, c-format
 msgid "E89: No write since last change for buffer %ld (add ! to override)"
-msgstr "E89 Nie zapisano zmian w buforze %ld (wymuś przez !)"
+msgstr "E89: Nie zapisano zmian w buforze %ld (wymuś przez !)"
 
 msgid "E90: Cannot unload last buffer"
 msgstr "E90: Nie mogę wyładować ostatniego bufora"
@@ -339,7 +339,7 @@
 
 #, c-format
 msgid "E686: Argument of %s must be a List"
-msgstr "E487: Argument %s musi być Listą"
+msgstr "E686: Argument %s musi być Listą"
 
 #, c-format
 msgid "E712: Argument of %s must be a List or Dictionary"
@@ -385,7 +385,7 @@
 
 #, c-format
 msgid "E461: Illegal variable name: %s"
-msgstr "E418: Niedozwolona nazwa zmiennej: %s"
+msgstr "E461: Niedozwolona nazwa zmiennej: %s"
 
 msgid "E687: Less targets than List items"
 msgstr "E687: Mniej celów niż elementów Listy"
@@ -1064,7 +1064,7 @@
 msgstr "E156: Brak nazwy znaku"
 
 msgid "E612: Too many signs defined"
-msgstr "E255: Zbyt wiele nazw znaków"
+msgstr "E612: Zbyt wiele nazw znaków"
 
 #, c-format
 msgid "E239: Invalid sign text: %s"
@@ -1228,7 +1228,7 @@
 msgid "Append File"
 msgstr "Dołącz plik"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
 "E747: Nie mogę zmienić katalogu, bufor został zmodyfikowany (dodaj ! aby "
 "wymusić)"
@@ -1465,8 +1465,8 @@
 msgid "is not a file"
 msgstr "nie jest plikiem"
 
-msgid "is a device (disabled with 'opendevice' option"
-msgstr "jest urządzeniem (wyłączonym w opcji 'opendevice'"
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr "jest urządzeniem (wyłączonym w opcji 'opendevice')"
 
 msgid "[New File]"
 msgstr "[Nowy Plik]"
@@ -2523,8 +2523,7 @@
 msgstr "E265: $_ musi być reprezentacją Łańcucha"
 
 msgid "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
-msgstr ""
-"E263: Przykro mi, ta komenda jest wyłączona, bo nie można załadować "
+msgstr "E266: Przykro mi, ta komenda jest wyłączona, bo nie można załadować "
 "biblioteki Ruby."
 
 msgid "E267: unexpected return"
@@ -2692,7 +2691,7 @@
 "bufora/okna"
 
 msgid "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
-msgstr "Przykro mi, ta komenda jest wyłączona, bo nie można załadować biblioteki Tcl."
+msgstr "E571: Przykro mi, ta komenda jest wyłączona, bo nie można załadować biblioteki Tcl."
 
 msgid "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"
 msgstr ""
@@ -3843,7 +3842,7 @@
 msgstr "E548: oczekiwano cyfry"
 
 msgid "E549: Illegal percentage"
-msgstr "E459: Niedozwolony procent"
+msgstr "E549: Niedozwolony procent"
 
 msgid "Enter encryption key: "
 msgstr "Wprowadź klucz do odkodowania: "
diff --git a/src/po/sk.po b/src/po/sk.po
index 3c67b32..8d62d3b 100644
--- a/src/po/sk.po
+++ b/src/po/sk.po
@@ -346,7 +346,7 @@
 msgstr "E716: kµúè sa v Slovníku (Dictionary) nenachádza: %s"
 
 msgid "E122: Function %s already exists, add ! to replace it"
-msgstr "E112: Funkcia %s u¾ existuje. Pou¾ite ! pre jej nahradenie."
+msgstr "E122: Funkcia %s u¾ existuje. Pou¾ite ! pre jej nahradenie."
 
 msgid "E717: Dictionary entry already exists"
 msgstr "E717: Záznam v Slovníku (Dictionary) u¾ existuje"
@@ -527,7 +527,7 @@
 msgstr "E241: Nemô¾em posla» na %s"
 
 msgid "E277: Unable to read a server reply"
-msgstr "E227: Nemô¾em èíta» odpoveï servra"
+msgstr "E277: Nemô¾em èíta» odpoveï servra"
 
 msgid "E655: Too many symbolic links (cycle?)"
 msgstr "E655: Príli¹ mnoho symbolických odkazov (sluèka?)"
@@ -866,7 +866,7 @@
 msgstr "E156: Chýba meno pre znaèku"
 
 msgid "E612: Too many signs defined"
-msgstr "E255: Príli¹ mnoho definovaných znaèiek"
+msgstr "E612: Príli¹ mnoho definovaných znaèiek"
 
 #, c-format
 msgid "E239: Invalid sign text: %s"
@@ -1128,7 +1128,7 @@
 msgid "Append File"
 msgstr "Pripoji» súbor"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr "E747: Nemo¾no zmeni» adresár, buffer je modifikovaný (pou¾ite ! pre vynútenie)"
 
 msgid "E186: No previous directory"
@@ -1260,13 +1260,13 @@
 msgstr "E579: vnorenie :if je príli¹ hlboké"
 
 msgid "E580: :endif without :if"
-msgstr "E580 :endif bez zodpovedajúceho :if"
+msgstr "E580: :endif bez zodpovedajúceho :if"
 
 msgid "E581: :else without :if"
-msgstr "E581 :else bez zodpovedajúceho :if"
+msgstr "E581: :else bez zodpovedajúceho :if"
 
 msgid "E582: :elseif without :if"
-msgstr "E582 :elseif bez zodpovedajúceho :if"
+msgstr "E582: :elseif bez zodpovedajúceho :if"
 
 msgid "E583: multiple :else"
 msgstr "E583: viacnásobné :else"
diff --git a/src/po/vi.po b/src/po/vi.po
index 5bc9f53..f1bfb31 100644
--- a/src/po/vi.po
+++ b/src/po/vi.po
@@ -2779,7 +2779,7 @@
 msgstr "E296: Lỗi tìm kiếm khi ghi nhớ tập tin trao đổi (swap)"
 
 msgid "E297: Write error in swap file"
-msgstr "E295: Lỗi ghi nhớ tập tin trao đổi (swap)"
+msgstr "E297: Lỗi ghi nhớ tập tin trao đổi (swap)"
 
 msgid "E300: Swap file already exists (symlink attack?)"
 msgstr ""
@@ -3772,7 +3772,7 @@
 msgstr "Tùy chọn 'columns' khác 80, chương trình ngoại trú không thể thực hiện"
 
 msgid "E237: Printer selection failed"
-msgstr "E327: Chọn máy in không thành công"
+msgstr "E237: Chọn máy in không thành công"
 
 #, c-format
 msgid "to %s on %s"
diff --git a/src/po/zh_CN.UTF-8.po b/src/po/zh_CN.UTF-8.po
index cb516e6..0182318 100644
--- a/src/po/zh_CN.UTF-8.po
+++ b/src/po/zh_CN.UTF-8.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/po/zh_TW.UTF-8.po b/src/po/zh_TW.UTF-8.po
index b4260b4..3ef058d 100644
--- a/src/po/zh_TW.UTF-8.po
+++ b/src/po/zh_TW.UTF-8.po
@@ -705,7 +705,7 @@
 
 #, c-format
 msgid "E661: Sorry, no '%s' help for %s"
-msgstr "E149: 抱歉, 沒有關於 %s-%s 的說明"
+msgstr "E661: 抱歉, 沒有關於 %s-%s 的說明"
 
 #, c-format
 msgid "E149: Sorry, no help for %s"
@@ -1684,7 +1684,7 @@
 msgstr "E231: 不正確的 'guifontwide'"
 
 msgid "E599: Value of 'imactivatekey' is invalid"
-msgstr "E559: 'imactivatekey' 的值不正確"
+msgstr "E599: 'imactivatekey' 的值不正確"
 
 #, c-format
 msgid "E254: Cannot allocate color %s"
@@ -4011,7 +4011,7 @@
 
 #, c-format
 msgid "E57: %s+ operand could be empty"
-msgstr "E56: %s+ 運算元可以是空的"
+msgstr "E57: %s+ 運算元可以是空的"
 
 #, c-format
 msgid "E59: invalid character after %s@"
@@ -4937,7 +4937,7 @@
 
 #, c-format
 msgid "E235: Unknown font: %s"
-msgstr "不正確的字型名稱: %s"
+msgstr "E235: 不正確的字型名稱: %s"
 
 #, c-format
 msgid "E236: Font \"%s\" is not fixed-width"
diff --git a/src/tag.c b/src/tag.c
index c1628d2..29893de 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -17,10 +17,6 @@
 
 #include "vim.h"
 
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>	/* for lseek() */
-#endif
-
 /*
  * Structure to hold pointers to various items in a tag line.
  */
@@ -2664,7 +2660,7 @@
 	    /* move the filename one char forward and truncate the
 	     * filepath with a NUL */
 	    filename = gettail(buf);
-	    mch_memmove(filename + 1, filename, STRLEN(filename) + 1);
+	    STRMOVE(filename + 1, filename);
 	    *filename++ = NUL;
 
 	    tnp->tn_search_ctx = vim_findfile_init(buf, filename,
@@ -3392,13 +3388,6 @@
 }
 
 /*
- * Moves the tail part of the path (including the terminating NUL) pointed to
- * by "tail" to the new location pointed to by "here". This should accomodate
- * an overlapping move.
- */
-#define movetail(here, tail)  mch_memmove(here, tail, STRLEN(tail) + (size_t)1)
-
-/*
  * Converts a file name into a canonical form. It simplifies a file name into
  * its simplest form by stripping out unneeded components, if any.  The
  * resulting file name is simplified in place and will either be the same
@@ -3451,7 +3440,7 @@
 	else
 #endif
 	  if (vim_ispathsep(*p))
-	    movetail(p, p + 1);		/* remove duplicate "/" */
+	    STRMOVE(p, p + 1);		/* remove duplicate "/" */
 	else if (p[0] == '.' && (vim_ispathsep(p[1]) || p[1] == NUL))
 	{
 	    if (p == start && relative)
@@ -3468,7 +3457,7 @@
 			mb_ptr_adv(tail);
 		else if (p > start)
 		    --p;		/* strip preceding path separator */
-		movetail(p, tail);
+		STRMOVE(p, tail);
 	    }
 	}
 	else if (p[0] == '.' && p[1] == '.' &&
@@ -3584,19 +3573,19 @@
 		    {
 			if (p > start && tail[-1] == '.')
 			    --p;
-			movetail(p, tail);	/* strip previous component */
+			STRMOVE(p, tail);	/* strip previous component */
 		    }
 
 		    --components;
 		}
 	    }
 	    else if (p == start && !relative)	/* leading "/.." or "/../" */
-		movetail(p, tail);		/* strip ".." or "../" */
+		STRMOVE(p, tail);		/* strip ".." or "../" */
 	    else
 	    {
 		if (p == start + 2 && p[-2] == '.')	/* leading "./../" */
 		{
-		    movetail(p - 2, p);			/* strip leading "./" */
+		    STRMOVE(p - 2, p);			/* strip leading "./" */
 		    tail -= 2;
 		}
 		p = tail;		/* skip to char after ".." or "../" */