diff --git a/runtime/doc/if_mzsch.txt b/runtime/doc/if_mzsch.txt
index d31815a..bb82c17 100644
--- a/runtime/doc/if_mzsch.txt
+++ b/runtime/doc/if_mzsch.txt
@@ -1,4 +1,4 @@
-*if_mzsch.txt*  For Vim version 7.0aa.  Last change: 2004 Jul 05
+*if_mzsch.txt*  For Vim version 7.0aa.  Last change: 2005 Jan 23
 
 
 		  VIM REFERENCE MANUAL    by Sergey Khorev
@@ -17,6 +17,7 @@
 |+mzscheme| feature.
 
 Based on the work of Brent Fulgham.
+Dynamic loading added by Sergey Khorev
 
 For downloading MzScheme and other info:
 	http://www.plt-scheme.org/software/mzscheme/
diff --git a/runtime/syntax/ipfilter.vim b/runtime/syntax/ipfilter.vim
index e1e6fc4..8cdb113 100644
--- a/runtime/syntax/ipfilter.vim
+++ b/runtime/syntax/ipfilter.vim
@@ -1,7 +1,7 @@
 " ipfilter syntax file
 " Language: ipfilter configuration file
 " Maintainer: Hendrik Scholz <hendrik@scholz.net>
-" Last Change: 2003 May 11
+" Last Change: 2005 Jan 23
 "
 " http://raisdorf.net/files/misc/ipfilter.vim
 "
@@ -18,8 +18,8 @@
 endif
 
 " comments
-syn match ipfComment /#/
-"syn match ipfComment /#.*/
+"syn match ipfComment /#/
+syn match ipfComment /#.*/
 
 syn keyword ipfQuick quick log dup-to
 syn keyword ipfAny all any
@@ -38,6 +38,6 @@
 hi def link ipfActionMisc	Label
 "hi def link ipfQuick		Error
 hi def link ipfQuick		Special
-hi def link ipfAny		Todo
+hi def link ipfAny		Statement
 
 
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));
