diff --git a/src/Make_cyg.mak b/src/Make_cyg.mak
index 962e22e..5319994 100644
--- a/src/Make_cyg.mak
+++ b/src/Make_cyg.mak
@@ -18,6 +18,16 @@
 # RUBY		define to path to Ruby dir to get Ruby support (not defined)
 #   RUBY_VER	define to version of Ruby being used (16)
 #   DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes)
+# MZSCHEME	define to path to MzScheme dir to get MZSCHEME support (not defined)
+#   MZSCHEME_VER      define to version of MzScheme being used (209_000)
+#   DYNAMIC_MZSCHEME  no or yes: use yes to load the MzScheme DLLs dynamically (yes)
+#   MZSCHEME_DLLS     path to MzScheme DLLs (libmzgc and libmzsch).
+#                     Is used for DYNAMIC_MZSCHEME=no only.
+#   		      c:/windows/system32 isn't a good idea, copy them to some
+#   		      dir and point MZSCHEME_DLLS to this dir.
+#   		      By default $(MZSCHEME) will be used. You can remove
+#   		      these DLLs from $(MZSCHEME_DLLS) after you
+#   		      built Vim (they are used for dll "static" linking only)
 # GETTEXT	no or yes: set to yes for dynamic gettext support (yes)
 # ICONV		no or yes: set to yes for dynamic iconv support (yes)
 # MBYTE		no or yes: set to yes to include multibyte support (yes)
@@ -190,6 +200,33 @@
 endif
 
 ##############################
+# DYNAMIC_MZSCHEME=yes works
+# DYNAMIC_MZSCHEME=no works too
+##############################
+ifdef MZSCHEME
+DEFINES += -DFEAT_MZSCHEME
+INCLUDES += -I$(MZSCHEME)/include
+EXTRA_OBJS += $(OUTDIR)/if_mzsch.o
+
+ifndef DYNAMIC_MZSCHEME
+DYNAMIC_MZSCHEME = yes
+endif
+
+ifndef MZSCHEME_VER
+MZSCHEME_VER = 209_000
+endif
+
+ifeq (yes, $(DYNAMIC_MZSCHEME))
+DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
+else
+ifndef MZSCHEME_DLLS
+MZSCHEME_DLLS = $(MZSCHEME)
+endif
+EXTRA_LIBS += -L$(MZSCHEME_DLLS) -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
+endif
+endif
+
+##############################
 # DYNAMIC_TCL=yes and no both work.
 ##############################
 ifdef TCL
diff --git a/src/Make_ming.mak b/src/Make_ming.mak
index 2d8bbaf..a27ce52 100644
--- a/src/Make_ming.mak
+++ b/src/Make_ming.mak
@@ -107,16 +107,26 @@
 # uncomment 'MZSCHEME' if you want a MzScheme-enabled version
 #MZSCHEME=d:/plt
 ifdef MZSCHEME
+ifndef DYNAMIC_MZSCHEME
+DYNAMIC_MZSCHEME=yes
+endif
+
 ifndef MZSCHEME_VER
 MZSCHEME_VER=205_000
 endif
-# the modern MinGW can dynamically link to dlls directly
-# point MZSCHEME_LIBDIR to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
+
+ifeq (no,$(DYNAMIC_MZSCHEME))
+MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
+# the modern MinGW can dynamically link to dlls directly.
+# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
 # c:/windows/system32 isn't a good idea, use some other dir;
 # to build you can put them in temp dir)
-ifndef MZSCHEME_LIBDIR
-MZSCHEME_LIBDIR=-L$(MZSCHEME)
+ifndef MZSCHEME_DLLS
+MZSCHEME_DLLS=$(MZSCHEME)
 endif
+MZSCHEME_LIBDIR=-L$(MZSCHEME_DLLS)
+endif
+
 endif
 
 # Python support -- works with the ActiveState python 2.0 release (and others
@@ -270,6 +280,9 @@
 
 ifdef MZSCHEME
 CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
+ifeq (yes, $(DYNAMIC_MZSCHEME))
+CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
+endif
 endif
 
 ifdef RUBY
@@ -461,10 +474,6 @@
 endif
 endif
 
-ifdef MZSCHEME
-MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
-endif
-
 ifdef TCL
 LIB += -L$(TCL)/lib
 ifeq (yes, $(DYNAMIC_TCL))
diff --git a/src/configure b/src/configure
index be225ed..6aa15be 100755
--- a/src/configure
+++ b/src/configure
@@ -2,3 +2,5 @@
 # run the automatically generated configure script
 CONFIG_STATUS=auto/config.status \
 	auto/configure "$@" --srcdir="${srcdir-.}" --cache-file=auto/config.cache
+# Stupid autoconf 2.5x causes this file to be left behind.
+if test -f configure.lineno; then rm -f configure.lineno; fi
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 47f7c64..2b912d6 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1584,7 +1584,7 @@
 /*
  * Avoid optimisation bug in VC++ version 6.0
  */
-# pragma optimize( "g", off )
+ #pragma optimize( "g", off )
 #endif
     static char_u *
 do_one_cmd(cmdlinep, sourcing,
@@ -2611,7 +2611,7 @@
     return ea.nextcmd;
 }
 #if (_MSC_VER == 1200)
-# pragma optimize( "", on )
+ #pragma optimize( "", on )
 #endif
 
 /*
@@ -7749,7 +7749,7 @@
     /* When using 'viewdir' may have to create the directory. */
     if (using_vdir && !mch_isdir(p_vdir))
 	if (vim_mkdir(p_vdir, 0755) != 0)
-	    EMSG2(_("E738: Cannot create directory: %s"), p_vdir);
+	    EMSG2(_("E739: Cannot create directory: %s"), p_vdir);
 #endif
 
     fd = open_exfile(fname, eap->forceit, WRITEBIN);
diff --git a/src/globals.h b/src/globals.h
index 8cac0f7..7580dd0 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -136,6 +136,7 @@
 
 EXTERN char_u	*keep_msg INIT(= NULL);	    /* msg to be shown after redraw */
 EXTERN int	keep_msg_attr INIT(= 0);    /* highlight attr for keep_msg */
+EXTERN int	keep_msg_more INIT(= FALSE); /* keep_msg was set by msgmore() */
 EXTERN int	need_fileinfo INIT(= FALSE);/* do fileinfo() after redraw */
 EXTERN int	msg_scroll INIT(= FALSE);   /* msg_start() will scroll */
 EXTERN int	msg_didout INIT(= FALSE);   /* msg_outstr() was used in line */
@@ -1278,7 +1279,7 @@
 #endif
 #if defined(DYNAMIC_PERL) || defined(DYNAMIC_PYTHON) || defined(DYNAMIC_RUBY) \
 	|| defined(DYNAMIC_TCL) || defined(DYNAMIC_ICONV) \
-	|| defined(DYNAMIC_GETTEXT)
+	|| defined(DYNAMIC_GETTEXT) || defined(DYNAMIC_MZSCHEME)
 EXTERN char_u e_loadlib[]	INIT(=N_("E370: Could not load library %s"));
 EXTERN char_u e_loadfunc[]	INIT(=N_("E448: Could not load library function %s"));
 #endif
diff --git a/src/macros.h b/src/macros.h
index 6d6484c..233df0f 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -249,15 +249,6 @@
 # define CURSOR_BAR_RIGHT (curwin->w_p_rl && (!(State & CMDLINE) || cmdmsg_rl))
 #endif
 
-#ifndef FEAT_LINEBREAK
-/* Without the 'numberwidth' option line numbers are always 7 chars. */
-# define number_width(x) 7
-#endif
-
-#ifndef FEAT_MBYTE
-# define after_pathsep(b, p) vim_ispathsep(*((p) - 1))
-#endif
-
 /*
  * mb_ptr_adv(): advance a pointer to the next character, taking care of
  * multi-byte characters if needed.
diff --git a/src/proto/charset.pro b/src/proto/charset.pro
index 88e9754..afc8562 100644
--- a/src/proto/charset.pro
+++ b/src/proto/charset.pro
@@ -3,7 +3,7 @@
 int buf_init_chartab __ARGS((buf_T *buf, int global));
 void trans_characters __ARGS((char_u *buf, int bufsize));
 char_u *transstr __ARGS((char_u *s));
-char_u *str_foldcase __ARGS((char_u *str, int len));
+char_u *str_foldcase __ARGS((char_u *str, int orglen, char_u *buf, int buflen));
 char_u *transchar __ARGS((int c));
 char_u *transchar_byte __ARGS((int c));
 void transchar_nonprint __ARGS((char_u *buf, int c));
