updated for version 7.0006
diff --git a/src/Make_ming.mak b/src/Make_ming.mak
index 31cd92c..e292817 100644
--- a/src/Make_ming.mak
+++ b/src/Make_ming.mak
@@ -106,6 +106,21 @@
 PERLLIBS=$(PERLLIB)/Core
 endif
 
+# uncomment 'MZSCHEME' if you want a MzScheme-enabled version
+#MZSCHEME=d:/plt
+ifdef MZSCHEME
+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
+# 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=$(MZSCHEME)
+endif
+endif
+
 # Python support -- works with the ActiveState python 2.0 release (and others
 # too, probably)
 #
@@ -252,6 +267,10 @@
 endif
 endif
 
+ifdef MZSCHEME
+CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
+endif
+
 ifdef RUBY
 CFLAGS += -DFEAT_RUBY $(RUBYINC)
 ifeq (yes, $(DYNAMIC_RUBY))
@@ -372,6 +391,10 @@
 ifdef PERL
 OBJ += $(OUTDIR)/if_perl.o
 endif
+ifdef MZSCHEME
+OBJ += $(OUTDIR)/if_mzsch.o
+MZSCHEME_INCL = if_mzsch.h
+endif
 ifdef PYTHON
 OBJ += $(OUTDIR)/if_python.o
 endif
@@ -401,15 +424,19 @@
 endif
 
 
+ifdef MZSCHEME
+MZSCHEME_SUFFIX = Z
+endif
+
 ifeq ($(GUI),yes)
 TARGET := gvim$(DEBUG_SUFFIX).exe
 DEFINES += $(DEF_GUI)
 OBJ += $(GUIOBJ)
 LFLAGS += -mwindows
-OUTDIR = gobj$(DEBUG_SUFFIX)
+OUTDIR = gobj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)
 else
 TARGET := vim$(DEBUG_SUFFIX).exe
-OUTDIR = obj$(DEBUG_SUFFIX)
+OUTDIR = obj$(DEBUG_SUFFIX)$(MZSCHEME_SUFFIX)
 endif
 
 ifdef GETTEXT
@@ -432,6 +459,10 @@
 endif
 endif
 
+ifdef MZSCHEME
+MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
+endif
+
 ifdef TCL
 LIB += -L$(TCL)/lib
 ifeq (yes, $(DYNAMIC_TCL))
@@ -479,7 +510,7 @@
 	$(CC) $(CFLAGS) -o uninstal.exe uninstal.c $(LIB)
 
 $(TARGET): $(OUTDIR) $(OBJ)
-	$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid $(PYTHONLIB) $(RUBYLIB)
+	$(CC) $(CFLAGS) $(LFLAGS) -o $@ $(OBJ) $(LIB) -lole32 -luuid -L $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(RUBYLIB)
 
 upx: exes
 	upx gvim.exe
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index d4b74a4..23e6997 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -19,6 +19,7 @@
 #	  DYNAMIC_IME=[yes or no]  (to load the imm32.dll dynamically, default
 #	  is yes)
 #	Global IME support: GIME=yes (requires GUI=yes)
+#	MzScheme interface: MZSCHEME=[Path to MzScheme directory], MZSCHEME_VER=[version, 205_000, ...]
 #	Perl interface:
 #	  PERL=[Path to Perl directory]
 #	  DYNAMIC_PERL=yes (to load the Perl DLL dynamically)
@@ -116,6 +117,9 @@
 !if "$(OLE)" == "yes"
 OBJDIR = $(OBJDIR)O
 !endif
+!ifdef MZSCHEME
+OBJDIR = $(OBJDIR)Z
+!endif
 !if "$(DEBUG)" == "yes"
 OBJDIR = $(OBJDIR)d
 !endif
@@ -487,6 +491,17 @@
 !endif
 !endif
 
+# MzScheme interface
+!ifdef MZSCHEME
+!message MzScheme requested - root dir is "$(MZSCHEME)"
+!ifndef MZSCHEME_VER
+MZSCHEME_VER = 205_000
+!endif
+CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include
+MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
+MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
+!endif
+
 # Perl interface
 !ifdef PERL
 !ifndef PERL_VER
@@ -607,15 +622,15 @@
 
 LINKARGS1 = $(linkdebug) $(conflags) /nodefaultlib:libc
 LINKARGS2 = $(CON_LIB) $(GUI_LIB) $(LIBC) $(OLE_LIB)  user32.lib $(SNIFF_LIB) \
-		$(PERL_LIB) $(PYTHON_LIB) $(RUBY_LIB) $(TCL_LIB) \
+		$(MZSCHEME_LIB) $(PERL_LIB) $(PYTHON_LIB) $(RUBY_LIB) $(TCL_LIB) \
 		$(NETBEANS_LIB) $(XPM_LIB) $(LINK_PDB)
 
 all:	$(VIM) vimrun.exe install.exe uninstal.exe xxd/xxd.exe GvimExt/gvimext.dll
 
-$(VIM): $(OUTDIR) $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(XPM_OBJ) version.c version.h
+$(VIM): $(OUTDIR) $(OBJ) $(GUI_OBJ) $(OLE_OBJ) $(OLE_IDL) $(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) $(CSCOPE_OBJ) $(NETBEANS_OBJ) $(XPM_OBJ) version.c version.h
 	$(CC) $(CFLAGS)  version.c /Fo$(OUTDIR)/version.obj $(PDB)
 	$(link) $(LINKARGS1) -out:$*.exe $(OBJ) $(GUI_OBJ) $(OLE_OBJ) \
-		$(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) \
+		$(MZSCHEME_OBJ) $(PERL_OBJ) $(PYTHON_OBJ) $(RUBY_OBJ) $(TCL_OBJ) $(SNIFF_OBJ) \
 		$(CSCOPE_OBJ) $(NETBEANS_OBJ) $(XPM_OBJ) \
 		$(OUTDIR)\version.obj $(LINKARGS2)
 
@@ -747,6 +762,9 @@
 $(OUTDIR)/if_perlsfio.obj: $(OUTDIR) if_perlsfio.c  $(INCL)
 	$(CC) $(CFLAGS) $(PERL_INC) if_perlsfio.c /Fo$(OUTDIR)/if_perlsfio.obj $(PDB)
 
+$(OUTDIR)/if_mzsch.obj: $(OUTDIR) if_mzsch.c  $(INCL)
+	$(CC) $(CFLAGS) $(PERL_INC) if_mzsch.c /Fo$(OUTDIR)/if_mzsch.obj $(PDB) -DMZSCHEME_COLLECTS=\"$(MZSCHEME:\=\\)\\collects\"
+
 $(OUTDIR)/if_python.obj: $(OUTDIR) if_python.c  $(INCL)
 	$(CC) $(CFLAGS) $(PYTHON_INC) if_python.c /Fo$(OUTDIR)/if_python.obj $(PDB)
 
@@ -840,7 +858,7 @@
 	@echo #include "vim.h" >> auto\pathdef.c
 	@echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC:\=\\)"; >> auto\pathdef.c
 	@echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR:\=\\)"; >> auto\pathdef.c
-	@echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(CFLAGS)"; >> auto\pathdef.c
+	@echo char_u *all_cflags = (char_u *)"$(CC:\=\\) $(CFLAGS:\=\\)"; >> auto\pathdef.c
 	@echo char_u *all_lflags = (char_u *)"$(link:\=\\) $(LINKARGS1:\=\\) $(LINKARGS2:\=\\)"; >> auto\pathdef.c
 	@echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> auto\pathdef.c
 	@echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> auto\pathdef.c
diff --git a/src/Makefile b/src/Makefile
index e5d9d89..f7ab802 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -354,7 +354,7 @@
 # Darwin.  None of the Mac specific options or files will be used.
 #CONF_OPT_DARWIN = --disable-darwin
 
-# PERL - For creating Vim with Perl interface
+# PERL
 # Uncomment this when you want to include the Perl interface.
 # The Perl option sometimes causes problems, because it adds extra flags
 # to the command line.	If you see strange flags during compilation, check in
@@ -365,19 +365,27 @@
 # This requires at least "small" features, "tiny" doesn't work.
 #CONF_OPT_PERL = --enable-perlinterp
 
-# PYTHON - For creating Vim with Python interface
+# PYTHON
 # Uncomment this when you want to include the Python interface.
 #CONF_OPT_PYTHON = --enable-pythoninterp
 
-# TCL - For creating Vim with Tcl interface
+# TCL
 # Uncomment this when you want to include the Tcl interface.
 #CONF_OPT_TCL = --enable-tclinterp
 
-# RUBY - For creating Vim with Ruby interface
+# RUBY
 # Uncomment this when you want to include the Ruby interface.
 #CONF_OPT_RUBY = --enable-rubyinterp
 
-# CSCOPE - For creating Vim with Cscope interface
+# MZSCHEME
+# Uncomment this when you want to include the MzScheme interface.
+#CONF_OPT_MZSCHEME = --enable-mzschemeinterp
+# PLT/mrscheme/drscheme Home dir; the PLTHOME environment variable also works
+#CONF_OPT_PLTHOME  = --with-plthome=/usr/local/plt
+#CONF_OPT_PLTHOME  = --with-plthome=/usr/local/drscheme
+#CONF_OPT_PLTHOME  = --with-plthome=/home/me/mz
+
+# CSCOPE
 # Uncomment this when you want to include the Cscope interface.
 #CONF_OPT_CSCOPE = --enable-cscope
 
@@ -1047,7 +1055,7 @@
 KDE_INCL	= gui.h
 KDE_SRC		= gui.c pty.c gui_kde.cc gui_kde_x11.cc gui_kde_widget.cc gui_kde_widget_moc.cc kvim_iface_skel.cc
 KDE_OBJ		= objects/gui.o objects/pty.o objects/gui_kde.o objects/gui_kde_x11.o \
-	   		objects/gui_kde_widget.o objects/gui_kde_widget_moc.o \
+			objects/gui_kde_widget.o objects/gui_kde_widget_moc.o \
 			objects/kvim_iface_skel.o
 KDE_DEFS	= -DFEAT_GUI_KDE $(NARROW_PROTO)
 KDE_IPATH	= $(GUI_INC_LOC)
@@ -1245,7 +1253,7 @@
 .SUFFIXES: .cc .c .o .pro
 
 PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
-POST_DEFS = $(X_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
+POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
 
 ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
 
@@ -1256,7 +1264,7 @@
 PFLAGS = $(PROTO_FLAGS) -DPROTO $(LINT_CFLAGS)
 
 ALL_LIB_DIRS = $(GUI_LIBS_DIR) $(X_LIBS_DIR)
-ALL_LIBS = $(GUI_LIBS1) $(GUI_X_LIBS) $(GUI_LIBS2) $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS) $(LIBS) $(EXTRA_LIBS) $(PERL_LIBS) $(PYTHON_LIBS) $(TCL_LIBS) $(RUBY_LIBS) $(PROFILE_LIBS)
+ALL_LIBS = $(GUI_LIBS1) $(GUI_X_LIBS) $(GUI_LIBS2) $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS) $(LIBS) $(EXTRA_LIBS) $(MZSCHEME_LIBS) $(PERL_LIBS) $(PYTHON_LIBS) $(TCL_LIBS) $(RUBY_LIBS) $(PROFILE_LIBS)
 
 # abbreviations
 DEST_BIN = $(DESTDIR)$(BINDIR)
@@ -1334,14 +1342,15 @@
 	window.c \
 	$(OS_EXTRA_SRC)
 
-SRC =	$(BASIC_SRC) $(GUI_SRC) $(HANGULIN_SRC) $(PERL_SRC) $(PYTHON_SRC) \
-	$(TCL_SRC) $(RUBY_SRC) $(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC)
+SRC =	$(BASIC_SRC) $(GUI_SRC) $(HANGULIN_SRC) $(MZSCHEME_SRC) \
+	$(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) $(RUBY_SRC) \
+	$(SNIFF_SRC) $(WORKSHOP_SRC) $(WSDEBUG_SRC)
 
 TAGS_SRC = *.c *.cpp *.cc if_perl.xs
 
-EXTRA_SRC = hangulin.c auto/if_perl.c if_perlsfio.c if_python.c if_tcl.c \
-		if_ruby.c if_sniff.c gui_beval.c \
-		workshop.c wsdebug.c integration.c netbeans.c
+EXTRA_SRC = hangulin.c if_mzsch.c auto/if_perl.c if_perlsfio.c \
+	    if_python.c if_tcl.c if_ruby.c if_sniff.c gui_beval.c \
+	    workshop.c wsdebug.c integration.c netbeans.c
 
 # All sources, also the ones that are not configured
 ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(EXTRA_SRC)
@@ -1399,6 +1408,7 @@
 	objects/undo.o \
 	objects/window.o \
 	$(GUI_OBJ) \
+	$(MZSCHEME_OBJ) \
 	$(PERL_OBJ) \
 	$(PYTHON_OBJ) \
 	$(TCL_OBJ) \
@@ -1488,7 +1498,7 @@
 		$(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_ARGS) $(CONF_OPT_MZSCHEME) $(CONF_OPT_PLTHOME)
 
 # Use "make reconfig" to rerun configure without cached values.
 # When config.h changes, most things will be recompiled automatically.
@@ -2281,6 +2291,9 @@
 objects/if_xcmdsrv.o: if_xcmdsrv.c
 	$(CCC) -o $@ if_xcmdsrv.c
 
+objects/if_mzsch.o: if_mzsch.c
+	$(CCC) -o $@ if_mzsch.c
+
 objects/if_perl.o: auto/if_perl.c
 	$(CCC) -o $@ auto/if_perl.c
 
@@ -2757,6 +2770,10 @@
  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
+objects/if_mzsch.o: if_mzsch.c vim.h auto/config.h feature.h os_unix.h \
+ auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h \
+ gui.h gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h \
+ globals.h farsi.h arabic.h
 objects/if_perl.o: auto/if_perl.c vim.h auto/config.h feature.h os_unix.h \
  auto/osdef.h ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h proto/gui_beval.pro option.h ex_cmds.h proto.h \
diff --git a/src/auto/configure b/src/auto/configure
index 62171f2..402689e 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -32,6 +32,10 @@
 ac_help="$ac_help
   --disable-xsmp-interact Disable XSMP interaction"
 ac_help="$ac_help
+  --enable-mzschemeinterp   Include MzScheme interpreter."
+ac_help="$ac_help
+  --with-plthome=PLTHOME   Use PLTHOME."
+ac_help="$ac_help
   --enable-perlinterp     Include Perl interpreter."
 ac_help="$ac_help
   --enable-pythoninterp   Include Python interpreter."
@@ -636,7 +640,7 @@
 EOF
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:640: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:644: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -666,7 +670,7 @@
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:670: checking for $ac_word" >&5
+echo "configure:674: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -696,7 +700,7 @@
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:700: checking for $ac_word" >&5
+echo "configure:704: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -747,7 +751,7 @@
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:751: checking for $ac_word" >&5
+echo "configure:755: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -779,7 +783,7 @@
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:783: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:787: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -790,12 +794,12 @@
 
 cat > conftest.$ac_ext << EOF
 
-#line 794 "configure"
+#line 798 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -821,12 +825,12 @@
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:825: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:829: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:830: checking whether we are using GNU C" >&5
+echo "configure:834: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -835,7 +839,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -854,7 +858,7 @@
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:858: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:862: checking whether ${CC-cc} accepts -g" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -885,7 +889,7 @@
   fi
 fi
 	echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:889: checking how to run the C preprocessor" >&5
+echo "configure:893: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -900,13 +904,13 @@
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 904 "configure"
+#line 908 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:910: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:914: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -917,13 +921,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 921 "configure"
+#line 925 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:927: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:931: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -934,13 +938,13 @@
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 938 "configure"
+#line 942 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:948: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -964,7 +968,7 @@
 fi
 echo "$ac_t""$CPP" 1>&6
 	cat > conftest.$ac_ext <<EOF
-#line 968 "configure"
+#line 972 "configure"
 #include "confdefs.h"
 
 EOF
@@ -974,7 +978,7 @@
 fi
 rm -f conftest*
  echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:978: checking for POSIXized ISC" >&5
+echo "configure:982: checking for POSIXized ISC" >&5
 if test -d /etc/conf/kconfig.d &&
   grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
 then
@@ -998,7 +1002,7 @@
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1002: checking for $ac_word" >&5
+echo "configure:1006: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1030,7 +1034,7 @@
 # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1034: checking for $ac_word" >&5
+echo "configure:1038: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1059,12 +1063,12 @@
 
 
 echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1063: checking for Cygwin environment" >&5
+echo "configure:1067: checking for Cygwin environment" >&5
 if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1068 "configure"
+#line 1072 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1075,7 +1079,7 @@
 return __CYGWIN__;
 ; return 0; }
 EOF
-if { (eval echo configure:1079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_cygwin=yes
 else
@@ -1092,19 +1096,19 @@
 CYGWIN=
 test "$ac_cv_cygwin" = yes && CYGWIN=yes
 echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1096: checking for mingw32 environment" >&5
+echo "configure:1100: checking for mingw32 environment" >&5
 if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1101 "configure"
+#line 1105 "configure"
 #include "confdefs.h"
 
 int main() {
 return __MINGW32__;
 ; return 0; }
 EOF
-if { (eval echo configure:1108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_mingw32=yes
 else
@@ -1123,7 +1127,7 @@
 
 
 echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:1127: checking for executable suffix" >&5
+echo "configure:1131: checking for executable suffix" >&5
 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1133,7 +1137,7 @@
   rm -f conftest*
   echo 'int main () { return 0; }' > conftest.$ac_ext
   ac_cv_exeext=
-  if { (eval echo configure:1137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+  if { (eval echo configure:1141: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
     for file in conftest.*; do
       case $file in
       *.c | *.o | *.obj) ;;
@@ -1180,14 +1184,14 @@
 
 if test -f ./toolcheck; then
   echo "checking for buggy tools" 1>&6
-echo "configure:1184: checking for buggy tools" >&5
+echo "configure:1188: checking for buggy tools" >&5
   sh ./toolcheck 1>&6
 fi
 
 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
 
 echo $ac_n "checking for BeOS""... $ac_c" 1>&6
-echo "configure:1191: checking for BeOS" >&5
+echo "configure:1195: checking for BeOS" >&5
 case `uname` in
     BeOS)	OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
 		BEOS=yes; echo "$ac_t""yes" 1>&6;;
@@ -1195,7 +1199,7 @@
 esac
 
 echo $ac_n "checking for QNX""... $ac_c" 1>&6
-echo "configure:1199: checking for QNX" >&5
+echo "configure:1203: checking for QNX" >&5
 case `uname` in
     QNX)	OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
 		test -z "$with_x" && with_x=no
@@ -1205,12 +1209,12 @@
 
 DEFAULT_VIMNAME=vim
 echo $ac_n "checking for Darwin (Mac OS X)""... $ac_c" 1>&6
-echo "configure:1209: checking for Darwin (Mac OS X)" >&5
+echo "configure:1213: checking for Darwin (Mac OS X)" >&5
 if test "`(uname) 2>/dev/null`" = Darwin; then
   echo "$ac_t""yes" 1>&6
 
   echo $ac_n "checking --disable-darwin argument""... $ac_c" 1>&6
-echo "configure:1214: checking --disable-darwin argument" >&5
+echo "configure:1218: checking --disable-darwin argument" >&5
   # Check whether --enable-darwin or --disable-darwin was given.
 if test "${enable_darwin+set}" = set; then
   enableval="$enable_darwin"
@@ -1222,7 +1226,7 @@
   if test "$enable_darwin" = "yes"; then
     echo "$ac_t""no" 1>&6
     echo $ac_n "checking if Darwin files are there""... $ac_c" 1>&6
-echo "configure:1226: checking if Darwin files are there" >&5
+echo "configure:1230: checking if Darwin files are there" >&5
     if test -f os_macosx.c; then
       echo "$ac_t""yes" 1>&6
     else
@@ -1241,17 +1245,17 @@
 
             ac_safe=`echo "Carbon/Carbon.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Carbon/Carbon.h""... $ac_c" 1>&6
-echo "configure:1245: checking for Carbon/Carbon.h" >&5
+echo "configure:1249: checking for Carbon/Carbon.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1250 "configure"
+#line 1254 "configure"
 #include "confdefs.h"
 #include <Carbon/Carbon.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1308,7 +1312,7 @@
 fi
 
 echo $ac_n "checking --with-vim-name argument""... $ac_c" 1>&6
-echo "configure:1312: checking --with-vim-name argument" >&5
+echo "configure:1316: checking --with-vim-name argument" >&5
 # Check whether --with-vim-name or --without-vim-name was given.
 if test "${with_vim_name+set}" = set; then
   withval="$with_vim_name"
@@ -1319,7 +1323,7 @@
 
 
 echo $ac_n "checking --with-ex-name argument""... $ac_c" 1>&6
-echo "configure:1323: checking --with-ex-name argument" >&5
+echo "configure:1327: checking --with-ex-name argument" >&5
 # Check whether --with-ex-name or --without-ex-name was given.
 if test "${with_ex_name+set}" = set; then
   withval="$with_ex_name"
@@ -1330,7 +1334,7 @@
 
 
 echo $ac_n "checking --with-view-name argument""... $ac_c" 1>&6
-echo "configure:1334: checking --with-view-name argument" >&5
+echo "configure:1338: checking --with-view-name argument" >&5
 # Check whether --with-view-name or --without-view-name was given.
 if test "${with_view_name+set}" = set; then
   withval="$with_view_name"
@@ -1342,7 +1346,7 @@
 
 
 echo $ac_n "checking --with-global-runtime argument""... $ac_c" 1>&6
-echo "configure:1346: checking --with-global-runtime argument" >&5
+echo "configure:1350: checking --with-global-runtime argument" >&5
 # Check whether --with-global-runtime or --without-global-runtime was given.
 if test "${with_global_runtime+set}" = set; then
   withval="$with_global_runtime"
@@ -1356,7 +1360,7 @@
 
 
 echo $ac_n "checking --with-modified-by argument""... $ac_c" 1>&6
-echo "configure:1360: checking --with-modified-by argument" >&5
+echo "configure:1364: checking --with-modified-by argument" >&5
 # Check whether --with-modified-by or --without-modified-by was given.
 if test "${with_modified_by+set}" = set; then
   withval="$with_modified_by"
@@ -1370,9 +1374,9 @@
 
 
 echo $ac_n "checking if character set is EBCDIC""... $ac_c" 1>&6
-echo "configure:1374: checking if character set is EBCDIC" >&5
+echo "configure:1378: checking if character set is EBCDIC" >&5
 cat > conftest.$ac_ext <<EOF
-#line 1376 "configure"
+#line 1380 "configure"
 #include "confdefs.h"
  
 int main() {
@@ -1385,7 +1389,7 @@
 #endif 
 ; return 0; }
 EOF
-if { (eval echo configure:1389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1393: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
    # TryCompile action if true
 cf_cv_ebcdic=yes 
@@ -1413,7 +1417,7 @@
 
 if test "$cf_cv_ebcdic" = "yes"; then
 echo $ac_n "checking for OS/390 Unix""... $ac_c" 1>&6
-echo "configure:1417: checking for OS/390 Unix" >&5
+echo "configure:1421: checking for OS/390 Unix" >&5
 case `uname` in
     OS/390)	OS390Unix="yes";
 										if test "$CC" = "cc"; then
@@ -1450,7 +1454,7 @@
 
 
 echo $ac_n "checking --with-features argument""... $ac_c" 1>&6
-echo "configure:1454: checking --with-features argument" >&5
+echo "configure:1458: checking --with-features argument" >&5
 # Check whether --with-features or --without-features was given.
 if test "${with_features+set}" = set; then
   withval="$with_features"
@@ -1493,7 +1497,7 @@
 
 
 echo $ac_n "checking --with-compiledby argument""... $ac_c" 1>&6
-echo "configure:1497: checking --with-compiledby argument" >&5
+echo "configure:1501: checking --with-compiledby argument" >&5
 # Check whether --with-compiledby or --without-compiledby was given.
 if test "${with_compiledby+set}" = set; then
   withval="$with_compiledby"
@@ -1505,7 +1509,7 @@
 
 
 echo $ac_n "checking --disable-xsmp argument""... $ac_c" 1>&6
-echo "configure:1509: checking --disable-xsmp argument" >&5
+echo "configure:1513: checking --disable-xsmp argument" >&5
 # Check whether --enable-xsmp or --disable-xsmp was given.
 if test "${enable_xsmp+set}" = set; then
   enableval="$enable_xsmp"
@@ -1518,7 +1522,7 @@
 if test "$enable_xsmp" = "yes"; then
   echo "$ac_t""no" 1>&6
   echo $ac_n "checking --disable-xsmp-interact argument""... $ac_c" 1>&6
-echo "configure:1522: checking --disable-xsmp-interact argument" >&5
+echo "configure:1526: checking --disable-xsmp-interact argument" >&5
   # Check whether --enable-xsmp-interact or --disable-xsmp-interact was given.
 if test "${enable_xsmp_interact+set}" = set; then
   enableval="$enable_xsmp_interact"
@@ -1540,8 +1544,142 @@
   echo "$ac_t""yes" 1>&6
 fi
 
+echo $ac_n "checking --enable-mzschemeinterp argument""... $ac_c" 1>&6
+echo "configure:1549: checking --enable-mzschemeinterp argument" >&5
+# Check whether --enable-mzschemeinterp or --disable-mzschemeinterp was given.
+if test "${enable_mzschemeinterp+set}" = set; then
+  enableval="$enable_mzschemeinterp"
+  :
+else
+  enable_mzschemeinterp="no"
+fi
+
+echo "$ac_t""$enable_mzschemeinterp" 1>&6
+
+if test "$enable_mzschemeinterp" = "yes"; then
+    
+
+  echo $ac_n "checking --with-plthome argument""... $ac_c" 1>&6
+echo "configure:1564: checking --with-plthome argument" >&5
+  # Check whether --with-plthome or --without-plthome was given.
+if test "${with_plthome+set}" = set; then
+  withval="$with_plthome"
+  with_plthome="$withval"; echo "$ac_t""$with_plthome" 1>&6
+else
+  with_plthome="";echo "$ac_t"""no"" 1>&6
+fi
+
+
+  if test "X$with_plthome" != "X"; then
+       vi_cv_path_mzscheme_pfx="$with_plthome"
+  else
+    echo $ac_n "checking PLTHOME environment var""... $ac_c" 1>&6
+echo "configure:1578: checking PLTHOME environment var" >&5
+    if test "X$PLTHOME" != "X"; then
+	echo "$ac_t"""$PLTHOME"" 1>&6
+        vi_cv_path_mzscheme_pfx="$PLTHOME"
+    else
+	echo "$ac_t"""not set"" 1>&6
+	        # Extract the first word of "mzscheme", so it can be a program name with args.
+set dummy mzscheme; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:1587: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_vi_cv_path_mzscheme'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$vi_cv_path_mzscheme" in
+  /*)
+  ac_cv_path_vi_cv_path_mzscheme="$vi_cv_path_mzscheme" # Let the user override the test with a path.
+  ;;
+  ?:/*)			 
+  ac_cv_path_vi_cv_path_mzscheme="$vi_cv_path_mzscheme" # Let the user override the test with a dos path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_vi_cv_path_mzscheme="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+fi
+vi_cv_path_mzscheme="$ac_cv_path_vi_cv_path_mzscheme"
+if test -n "$vi_cv_path_mzscheme"; then
+  echo "$ac_t""$vi_cv_path_mzscheme" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+		        if test "X$vi_cv_path_mzscheme" != "X"; then
+	  lsout=`ls -l $vi_cv_path_mzscheme`
+	  if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
+	    vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
+	  fi
+	fi
+
+        if test "X$vi_cv_path_mzscheme" != "X"; then
+                        echo $ac_n "checking MzScheme install prefix""... $ac_c" 1>&6
+echo "configure:1629: checking MzScheme install prefix" >&5
+if eval "test \"`echo '$''{'vi_cv_path_mzscheme_pfx'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+   vi_cv_path_mzscheme_pfx=`
+      	    ${vi_cv_path_mzscheme} -evm \
+            "(display (simplify-path		\
+              (build-path (call-with-values	\
+      	        (lambda () (split-path (find-system-path (quote exec-file)))) \
+      	        (lambda (base name must-be-dir?) base)) (quote up))))"` 
+fi
+
+echo "$ac_t""$vi_cv_path_mzscheme_pfx" 1>&6
+	    	    vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
+        fi
+    fi
+  fi
+
+  if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+    echo $ac_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include""... $ac_c" 1>&6
+echo "configure:1649: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include" >&5
+    if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
+      echo "$ac_t"""yes"" 1>&6
+    else
+      echo "$ac_t"""no"" 1>&6
+      vi_cv_path_mzscheme_pfx=
+    fi
+  fi
+
+  if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+    if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+      MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a ${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"
+    else
+      MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzgc -lmzscheme"
+    fi
+    MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include   \
+      -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/collects\"'"
+    MZSCHEME_SRC="if_mzsch.c"
+    MZSCHEME_OBJ="objects/if_mzsch.o"
+    MZSCHEME_PRO="if_mzsch.pro"
+    cat >> confdefs.h <<\EOF
+#define FEAT_MZSCHEME 1
+EOF
+
+  fi
+  
+  
+  
+  
+  
+fi
+
+
 echo $ac_n "checking --enable-perlinterp argument""... $ac_c" 1>&6
-echo "configure:1545: checking --enable-perlinterp argument" >&5
+echo "configure:1683: checking --enable-perlinterp argument" >&5
 # Check whether --enable-perlinterp or --disable-perlinterp was given.
 if test "${enable_perlinterp+set}" = set; then
   enableval="$enable_perlinterp"
@@ -1556,7 +1694,7 @@
   # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1560: checking for $ac_word" >&5
+echo "configure:1698: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_vi_cv_path_perl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1590,7 +1728,7 @@
 
   if test "X$vi_cv_path_perl" != "X"; then
     echo $ac_n "checking Perl version""... $ac_c" 1>&6
-echo "configure:1594: checking Perl version" >&5
+echo "configure:1732: checking Perl version" >&5
     if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
      eval `$vi_cv_path_perl -V:usethreads`
      if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
@@ -1626,7 +1764,7 @@
 		-e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
 
                   echo $ac_n "checking if compile and link flags for Perl are sane""... $ac_c" 1>&6
-echo "configure:1630: checking if compile and link flags for Perl are sane" >&5
+echo "configure:1768: checking if compile and link flags for Perl are sane" >&5
       cflags_save=$CFLAGS
       libs_save=$LIBS
       ldflags_save=$LDFLAGS
@@ -1634,14 +1772,14 @@
       LIBS="$LIBS $perllibs"
       LDFLAGS="$perlldflags $LDFLAGS"
       cat > conftest.$ac_ext <<EOF
-#line 1638 "configure"
+#line 1776 "configure"
 #include "confdefs.h"
 
 int main() {
  
 ; return 0; }
 EOF
-if { (eval echo configure:1645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; perl_ok=yes
 else
@@ -1704,7 +1842,7 @@
 
 
 echo $ac_n "checking --enable-pythoninterp argument""... $ac_c" 1>&6
-echo "configure:1708: checking --enable-pythoninterp argument" >&5
+echo "configure:1846: checking --enable-pythoninterp argument" >&5
 # Check whether --enable-pythoninterp or --disable-pythoninterp was given.
 if test "${enable_pythoninterp+set}" = set; then
   enableval="$enable_pythoninterp"
@@ -1718,7 +1856,7 @@
     # Extract the first word of "python", so it can be a program name with args.
 set dummy python; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1722: checking for $ac_word" >&5
+echo "configure:1860: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_vi_cv_path_python'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1753,7 +1891,7 @@
   if test "X$vi_cv_path_python" != "X"; then
 
         echo $ac_n "checking Python version""... $ac_c" 1>&6
-echo "configure:1757: checking Python version" >&5
+echo "configure:1895: checking Python version" >&5
 if eval "test \"`echo '$''{'vi_cv_var_python_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1765,14 +1903,14 @@
 echo "$ac_t""$vi_cv_var_python_version" 1>&6
 
         echo $ac_n "checking Python is 1.4 or better""... $ac_c" 1>&6
-echo "configure:1769: checking Python is 1.4 or better" >&5
+echo "configure:1907: checking Python is 1.4 or better" >&5
     if ${vi_cv_path_python} -c \
 	"import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
     then
       echo "$ac_t""yep" 1>&6
 
             echo $ac_n "checking Python's install prefix""... $ac_c" 1>&6
-echo "configure:1776: checking Python's install prefix" >&5
+echo "configure:1914: checking Python's install prefix" >&5
 if eval "test \"`echo '$''{'vi_cv_path_python_pfx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1784,7 +1922,7 @@
 echo "$ac_t""$vi_cv_path_python_pfx" 1>&6
 
             echo $ac_n "checking Python's execution prefix""... $ac_c" 1>&6
-echo "configure:1788: checking Python's execution prefix" >&5
+echo "configure:1926: checking Python's execution prefix" >&5
 if eval "test \"`echo '$''{'vi_cv_path_python_epfx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1815,7 +1953,7 @@
 
 
       echo $ac_n "checking Python's configuration directory""... $ac_c" 1>&6
-echo "configure:1819: checking Python's configuration directory" >&5
+echo "configure:1957: checking Python's configuration directory" >&5
 if eval "test \"`echo '$''{'vi_cv_path_python_conf'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1888,7 +2026,7 @@
 	PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
 
 								echo $ac_n "checking if -pthread should be used""... $ac_c" 1>&6
-echo "configure:1892: checking if -pthread should be used" >&5
+echo "configure:2030: checking if -pthread should be used" >&5
 	threadsafe_flag=
 	thread_lib=
 	if test "x$MACOSX" != "xyes"; then
@@ -1904,14 +2042,14 @@
 	  CFLAGS="$CFLAGS $threadsafe_flag"
 	  LIBS="$LIBS $thread_lib"
 	  cat > conftest.$ac_ext <<EOF
-#line 1908 "configure"
+#line 2046 "configure"
 #include "confdefs.h"
 
 int main() {
  
 ; return 0; }
 EOF
-if { (eval echo configure:1915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag"
 else
@@ -1928,20 +2066,20 @@
 	fi
 
 			echo $ac_n "checking if compile and link flags for Python are sane""... $ac_c" 1>&6
-echo "configure:1932: checking if compile and link flags for Python are sane" >&5
+echo "configure:2070: checking if compile and link flags for Python are sane" >&5
 	cflags_save=$CFLAGS
 	libs_save=$LIBS
 	CFLAGS="$CFLAGS $PYTHON_CFLAGS"
 	LIBS="$LIBS $PYTHON_LIBS"
 	cat > conftest.$ac_ext <<EOF
-#line 1938 "configure"
+#line 2076 "configure"
 #include "confdefs.h"
 
 int main() {
  
 ; return 0; }
 EOF
-if { (eval echo configure:1945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2083: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; python_ok=yes
 else
@@ -1980,7 +2118,7 @@
 
 
 echo $ac_n "checking --enable-tclinterp argument""... $ac_c" 1>&6
-echo "configure:1984: checking --enable-tclinterp argument" >&5
+echo "configure:2122: checking --enable-tclinterp argument" >&5
 # Check whether --enable-tclinterp or --disable-tclinterp was given.
 if test "${enable_tclinterp+set}" = set; then
   enableval="$enable_tclinterp"
@@ -1994,7 +2132,7 @@
 if test "$enable_tclinterp" = "yes"; then
 
     echo $ac_n "checking --with-tclsh argument""... $ac_c" 1>&6
-echo "configure:1998: checking --with-tclsh argument" >&5
+echo "configure:2136: checking --with-tclsh argument" >&5
   # Check whether --with-tclsh or --without-tclsh was given.
 if test "${with_tclsh+set}" = set; then
   withval="$with_tclsh"
@@ -2006,7 +2144,7 @@
   # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2010: checking for $ac_word" >&5
+echo "configure:2148: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_vi_cv_path_tcl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2045,7 +2183,7 @@
     # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2049: checking for $ac_word" >&5
+echo "configure:2187: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_vi_cv_path_tcl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2083,7 +2221,7 @@
     # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2087: checking for $ac_word" >&5
+echo "configure:2225: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_vi_cv_path_tcl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2118,14 +2256,14 @@
   fi
   if test "X$vi_cv_path_tcl" != "X"; then
     echo $ac_n "checking Tcl version""... $ac_c" 1>&6
-echo "configure:2122: checking Tcl version" >&5
+echo "configure:2260: checking Tcl version" >&5
     if echo 'exit [expr [info tclversion] < 8.0]' | $vi_cv_path_tcl - ; then
       tclver=`echo 'puts [info tclversion]' | $vi_cv_path_tcl -`
       echo "$ac_t""$tclver - OK" 1>&6;
       tclloc=`echo 'set l [info library];set i [string last lib $l];incr i -2;puts [string range $l 0 $i]' | $vi_cv_path_tcl -`
 
       echo $ac_n "checking for location of Tcl include""... $ac_c" 1>&6
-echo "configure:2129: checking for location of Tcl include" >&5
+echo "configure:2267: checking for location of Tcl include" >&5
       if test "x$MACOSX" != "xyes"; then
 	tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include"
       else
@@ -2144,7 +2282,7 @@
       fi
       if test -z "$SKIP_TCL"; then
 	echo $ac_n "checking for location of tclConfig.sh script""... $ac_c" 1>&6
-echo "configure:2148: checking for location of tclConfig.sh script" >&5
+echo "configure:2286: checking for location of tclConfig.sh script" >&5
 	if test "x$MACOSX" != "xyes"; then
 	  tclcnf=`echo $tclinc | sed s/include/lib/g`
 	else
@@ -2162,7 +2300,7 @@
 	if test -z "$TCL_LIBS"; then
 	  echo "$ac_t""<not found>" 1>&6
 	  echo $ac_n "checking for Tcl library by myself""... $ac_c" 1>&6
-echo "configure:2166: checking for Tcl library by myself" >&5
+echo "configure:2304: checking for Tcl library by myself" >&5
 	  tcllib=`echo $tclinc | sed s/include/lib/g`
 	  for ext in .so .a ; do
 	    for ver in "" $tclver ; do
@@ -2208,7 +2346,7 @@
 
 
 echo $ac_n "checking --enable-rubyinterp argument""... $ac_c" 1>&6
-echo "configure:2212: checking --enable-rubyinterp argument" >&5
+echo "configure:2350: checking --enable-rubyinterp argument" >&5
 # Check whether --enable-rubyinterp or --disable-rubyinterp was given.
 if test "${enable_rubyinterp+set}" = set; then
   enableval="$enable_rubyinterp"
@@ -2223,7 +2361,7 @@
   # Extract the first word of "ruby", so it can be a program name with args.
 set dummy ruby; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2227: checking for $ac_word" >&5
+echo "configure:2365: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_vi_cv_path_ruby'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2257,11 +2395,11 @@
 
   if test "X$vi_cv_path_ruby" != "X"; then
     echo $ac_n "checking Ruby version""... $ac_c" 1>&6
-echo "configure:2261: checking Ruby version" >&5
+echo "configure:2399: checking Ruby version" >&5
     if $vi_cv_path_ruby -e 'VERSION >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
       echo "$ac_t""OK" 1>&6
       echo $ac_n "checking Ruby header files""... $ac_c" 1>&6
-echo "configure:2265: checking Ruby header files" >&5
+echo "configure:2403: checking Ruby header files" >&5
       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG["archdir"] || $hdrdir' 2>/dev/null`
       if test "X$rubyhdrdir" != "X"; then
 	echo "$ac_t""$rubyhdrdir" 1>&6
@@ -2313,7 +2451,7 @@
 
 
 echo $ac_n "checking --enable-cscope argument""... $ac_c" 1>&6
-echo "configure:2317: checking --enable-cscope argument" >&5
+echo "configure:2455: checking --enable-cscope argument" >&5
 # Check whether --enable-cscope or --disable-cscope was given.
 if test "${enable_cscope+set}" = set; then
   enableval="$enable_cscope"
@@ -2331,7 +2469,7 @@
 fi
 
 echo $ac_n "checking --enable-workshop argument""... $ac_c" 1>&6
-echo "configure:2335: checking --enable-workshop argument" >&5
+echo "configure:2473: checking --enable-workshop argument" >&5
 # Check whether --enable-workshop or --disable-workshop was given.
 if test "${enable_workshop+set}" = set; then
   enableval="$enable_workshop"
@@ -2356,7 +2494,7 @@
 fi
 
 echo $ac_n "checking --disable-netbeans argument""... $ac_c" 1>&6
-echo "configure:2360: checking --disable-netbeans argument" >&5
+echo "configure:2498: checking --disable-netbeans argument" >&5
 # Check whether --enable-netbeans or --disable-netbeans was given.
 if test "${enable_netbeans+set}" = set; then
   enableval="$enable_netbeans"
@@ -2368,7 +2506,7 @@
 if test "$enable_netbeans" = "yes"; then
   echo "$ac_t""no" 1>&6
     echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:2372: checking for socket in -lsocket" >&5
+echo "configure:2510: checking for socket in -lsocket" >&5
 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2376,7 +2514,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2380 "configure"
+#line 2518 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2387,7 +2525,7 @@
 socket()
 ; return 0; }
 EOF
-if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2415,7 +2553,7 @@
 fi
 
   echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:2419: checking for gethostbyname in -lnsl" >&5
+echo "configure:2557: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2423,7 +2561,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2427 "configure"
+#line 2565 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2434,7 +2572,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:2438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2576: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2462,9 +2600,9 @@
 fi
 
   echo $ac_n "checking whether compiling netbeans integration is possible""... $ac_c" 1>&6
-echo "configure:2466: checking whether compiling netbeans integration is possible" >&5
+echo "configure:2604: checking whether compiling netbeans integration is possible" >&5
   cat > conftest.$ac_ext <<EOF
-#line 2468 "configure"
+#line 2606 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -2494,7 +2632,7 @@
 	    
 ; return 0; }
 EOF
-if { (eval echo configure:2498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -2519,7 +2657,7 @@
 fi
 
 echo $ac_n "checking --enable-sniff argument""... $ac_c" 1>&6
-echo "configure:2523: checking --enable-sniff argument" >&5
+echo "configure:2661: checking --enable-sniff argument" >&5
 # Check whether --enable-sniff or --disable-sniff was given.
 if test "${enable_sniff+set}" = set; then
   enableval="$enable_sniff"
@@ -2541,7 +2679,7 @@
 fi
 
 echo $ac_n "checking --enable-multibyte argument""... $ac_c" 1>&6
-echo "configure:2545: checking --enable-multibyte argument" >&5
+echo "configure:2683: checking --enable-multibyte argument" >&5
 # Check whether --enable-multibyte or --disable-multibyte was given.
 if test "${enable_multibyte+set}" = set; then
   enableval="$enable_multibyte"
@@ -2559,7 +2697,7 @@
 fi
 
 echo $ac_n "checking --enable-hangulinput argument""... $ac_c" 1>&6
-echo "configure:2563: checking --enable-hangulinput argument" >&5
+echo "configure:2701: checking --enable-hangulinput argument" >&5
 # Check whether --enable-hangulinput or --disable-hangulinput was given.
 if test "${enable_hangulinput+set}" = set; then
   enableval="$enable_hangulinput"
@@ -2571,7 +2709,7 @@
 echo "$ac_t""$enable_hangulinput" 1>&6
 
 echo $ac_n "checking --enable-xim argument""... $ac_c" 1>&6
-echo "configure:2575: checking --enable-xim argument" >&5
+echo "configure:2713: checking --enable-xim argument" >&5
 # Check whether --enable-xim or --disable-xim was given.
 if test "${enable_xim+set}" = set; then
   enableval="$enable_xim"
@@ -2582,7 +2720,7 @@
 
 
 echo $ac_n "checking --enable-fontset argument""... $ac_c" 1>&6
-echo "configure:2586: checking --enable-fontset argument" >&5
+echo "configure:2724: checking --enable-fontset argument" >&5
 # Check whether --enable-fontset or --disable-fontset was given.
 if test "${enable_fontset+set}" = set; then
   enableval="$enable_fontset"
@@ -2602,7 +2740,7 @@
   # Extract the first word of "xmkmf", so it can be a program name with args.
 set dummy xmkmf; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2606: checking for $ac_word" >&5
+echo "configure:2744: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_xmkmfpath'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2640,7 +2778,7 @@
 # Uses ac_ vars as temps to allow command line to override cache and checks.
 # --without-x overrides everything else, but does not touch the cache.
 echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:2644: checking for X" >&5
+echo "configure:2782: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -2702,12 +2840,12 @@
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 2706 "configure"
+#line 2844 "configure"
 #include "confdefs.h"
 #include <$x_direct_test_include>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -2776,14 +2914,14 @@
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2780 "configure"
+#line 2918 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:2787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -2889,17 +3027,17 @@
     case "`(uname -sr) 2>/dev/null`" in
     "SunOS 5"*)
       echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:2893: checking whether -R must be followed by a space" >&5
+echo "configure:3031: checking whether -R must be followed by a space" >&5
       ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
       cat > conftest.$ac_ext <<EOF
-#line 2896 "configure"
+#line 3034 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -2915,14 +3053,14 @@
       else
 	LIBS="$ac_xsave_LIBS -R $x_libraries"
 	cat > conftest.$ac_ext <<EOF
-#line 2919 "configure"
+#line 3057 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -2954,7 +3092,7 @@
     # libraries were built with DECnet support.  And karl@cs.umb.edu says
     # the Alpha needs dnet_stub (dnet does not exist).
     echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:2958: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:3096: checking for dnet_ntoa in -ldnet" >&5
 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -2962,7 +3100,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 2966 "configure"
+#line 3104 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2973,7 +3111,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:2977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2995,7 +3133,7 @@
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
       echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:2999: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:3137: checking for dnet_ntoa in -ldnet_stub" >&5
 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3003,7 +3141,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldnet_stub  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3007 "configure"
+#line 3145 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3014,7 +3152,7 @@
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:3018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3043,12 +3181,12 @@
     # The nsl library prevents programs from opening the X display
     # on Irix 5.2, according to dickey@clark.net.
     echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:3047: checking for gethostbyname" >&5
+echo "configure:3185: checking for gethostbyname" >&5
 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3052 "configure"
+#line 3190 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -3071,7 +3209,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -3092,7 +3230,7 @@
 
     if test $ac_cv_func_gethostbyname = no; then
       echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:3096: checking for gethostbyname in -lnsl" >&5
+echo "configure:3234: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3100,7 +3238,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lnsl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3104 "configure"
+#line 3242 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3111,7 +3249,7 @@
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:3115: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3141,12 +3279,12 @@
     # -lsocket must be given before -lnsl if both are needed.
     # We assume that if connect needs -lnsl, so does gethostbyname.
     echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:3145: checking for connect" >&5
+echo "configure:3283: checking for connect" >&5
 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3150 "configure"
+#line 3288 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -3169,7 +3307,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -3190,7 +3328,7 @@
 
     if test $ac_cv_func_connect = no; then
       echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:3194: checking for connect in -lsocket" >&5
+echo "configure:3332: checking for connect in -lsocket" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3198,7 +3336,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3202 "configure"
+#line 3340 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3209,7 +3347,7 @@
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:3213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3233,12 +3371,12 @@
 
     # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
     echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:3237: checking for remove" >&5
+echo "configure:3375: checking for remove" >&5
 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3242 "configure"
+#line 3380 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -3261,7 +3399,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -3282,7 +3420,7 @@
 
     if test $ac_cv_func_remove = no; then
       echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:3286: checking for remove in -lposix" >&5
+echo "configure:3424: checking for remove in -lposix" >&5
 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3290,7 +3428,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lposix  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3294 "configure"
+#line 3432 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3301,7 +3439,7 @@
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:3305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3325,12 +3463,12 @@
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:3329: checking for shmat" >&5
+echo "configure:3467: checking for shmat" >&5
 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 3334 "configure"
+#line 3472 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -3353,7 +3491,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:3357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -3374,7 +3512,7 @@
 
     if test $ac_cv_func_shmat = no; then
       echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:3378: checking for shmat in -lipc" >&5
+echo "configure:3516: checking for shmat in -lipc" >&5
 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3382,7 +3520,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lipc  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3386 "configure"
+#line 3524 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3393,7 +3531,7 @@
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:3397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3426,7 +3564,7 @@
   # libraries we check for below, so use a different variable.
   #  --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
   echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
-echo "configure:3430: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:3568: checking for IceConnectionNumber in -lICE" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3434,7 +3572,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3438 "configure"
+#line 3576 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3445,7 +3583,7 @@
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:3449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3499,18 +3637,18 @@
 
 
       echo $ac_n "checking if X11 header files can be found""... $ac_c" 1>&6
-echo "configure:3503: checking if X11 header files can be found" >&5
+echo "configure:3641: checking if X11 header files can be found" >&5
   cflags_save=$CFLAGS
   CFLAGS="$CFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 3507 "configure"
+#line 3645 "configure"
 #include "confdefs.h"
 #include <X11/Xlib.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3514: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -3536,7 +3674,7 @@
     LDFLAGS="-L$x_libraries $LDFLAGS"
 
             echo $ac_n "checking for _XdmcpAuthDoIt in -lXdmcp""... $ac_c" 1>&6
-echo "configure:3540: checking for _XdmcpAuthDoIt in -lXdmcp" >&5
+echo "configure:3678: checking for _XdmcpAuthDoIt in -lXdmcp" >&5
 ac_lib_var=`echo Xdmcp'_'_XdmcpAuthDoIt | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3544,7 +3682,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXdmcp -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3548 "configure"
+#line 3686 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3555,7 +3693,7 @@
 _XdmcpAuthDoIt()
 ; return 0; }
 EOF
-if { (eval echo configure:3559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3577,7 +3715,7 @@
 
 
                     echo $ac_n "checking for IceOpenConnection in -lICE""... $ac_c" 1>&6
-echo "configure:3581: checking for IceOpenConnection in -lICE" >&5
+echo "configure:3719: checking for IceOpenConnection in -lICE" >&5
 ac_lib_var=`echo ICE'_'IceOpenConnection | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3585,7 +3723,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3589 "configure"
+#line 3727 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3596,7 +3734,7 @@
 IceOpenConnection()
 ; return 0; }
 EOF
-if { (eval echo configure:3600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3619,7 +3757,7 @@
 
         LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
     echo $ac_n "checking for XpmCreatePixmapFromData in -lXpm""... $ac_c" 1>&6
-echo "configure:3623: checking for XpmCreatePixmapFromData in -lXpm" >&5
+echo "configure:3761: checking for XpmCreatePixmapFromData in -lXpm" >&5
 ac_lib_var=`echo Xpm'_'XpmCreatePixmapFromData | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -3627,7 +3765,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXpm -lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 3631 "configure"
+#line 3769 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -3638,7 +3776,7 @@
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:3642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -3660,18 +3798,18 @@
 
 
         echo $ac_n "checking if X11 header files implicitly declare return values""... $ac_c" 1>&6
-echo "configure:3664: checking if X11 header files implicitly declare return values" >&5
+echo "configure:3802: checking if X11 header files implicitly declare return values" >&5
     cflags_save=$CFLAGS
     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
     cat > conftest.$ac_ext <<EOF
-#line 3668 "configure"
+#line 3806 "configure"
 #include "confdefs.h"
 #include <X11/Xlib.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3675: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""no" 1>&6
 else
@@ -3680,14 +3818,14 @@
   rm -rf conftest*
   CFLAGS="$CFLAGS -Wno-implicit-int"
 	cat > conftest.$ac_ext <<EOF
-#line 3684 "configure"
+#line 3822 "configure"
 #include "confdefs.h"
 #include <X11/Xlib.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:3691: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cflags_save="$cflags_save -Wno-implicit-int"
 else
@@ -3711,7 +3849,7 @@
 test "x$with_x" = xno -a "x$BEOS" != "xyes" -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
 
 echo $ac_n "checking --enable-gui argument""... $ac_c" 1>&6
-echo "configure:3715: checking --enable-gui argument" >&5
+echo "configure:3853: checking --enable-gui argument" >&5
 # Check whether --enable-gui or --disable-gui was given.
 if test "${enable_gui+set}" = set; then
   enableval="$enable_gui"
@@ -3811,7 +3949,7 @@
 
 if test "x$SKIP_KDE" != "xYES" -a "$enable_gui_canon" != "kde"; then
     echo $ac_n "checking whether or not to look for KDE""... $ac_c" 1>&6
-echo "configure:3815: checking whether or not to look for KDE" >&5
+echo "configure:3953: checking whether or not to look for KDE" >&5
     # Check whether --enable-kde-check or --disable-kde-check was given.
 if test "${enable_kde_check+set}" = set; then
   enableval="$enable_kde_check"
@@ -3828,7 +3966,7 @@
 
 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
   echo $ac_n "checking whether or not to look for GTK""... $ac_c" 1>&6
-echo "configure:3832: checking whether or not to look for GTK" >&5
+echo "configure:3970: checking whether or not to look for GTK" >&5
   # Check whether --enable-gtk-check or --disable-gtk-check was given.
 if test "${enable_gtk_check+set}" = set; then
   enableval="$enable_gtk_check"
@@ -3847,7 +3985,7 @@
 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
 				-a "$enable_gui_canon" != "gnome2"; then
   echo $ac_n "checking whether or not to look for GTK+ 2""... $ac_c" 1>&6
-echo "configure:3851: checking whether or not to look for GTK+ 2" >&5
+echo "configure:3989: checking whether or not to look for GTK+ 2" >&5
   # Check whether --enable-gtk2-check or --disable-gtk2-check was given.
 if test "${enable_gtk2_check+set}" = set; then
   enableval="$enable_gtk2_check"
@@ -3865,7 +4003,7 @@
 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
 				 -a "$enable_gui_canon" != "gnome2"; then
   echo $ac_n "checking whether or not to look for GNOME""... $ac_c" 1>&6
-echo "configure:3869: checking whether or not to look for GNOME" >&5
+echo "configure:4007: checking whether or not to look for GNOME" >&5
   # Check whether --enable-gnome-check or --disable-gnome-check was given.
 if test "${enable_gnome_check+set}" = set; then
   enableval="$enable_gnome_check"
@@ -3882,7 +4020,7 @@
 
 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
   echo $ac_n "checking whether or not to look for Motif""... $ac_c" 1>&6
-echo "configure:3886: checking whether or not to look for Motif" >&5
+echo "configure:4024: checking whether or not to look for Motif" >&5
   # Check whether --enable-motif-check or --disable-motif-check was given.
 if test "${enable_motif_check+set}" = set; then
   enableval="$enable_motif_check"
@@ -3899,7 +4037,7 @@
 
 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
   echo $ac_n "checking whether or not to look for Athena""... $ac_c" 1>&6
-echo "configure:3903: checking whether or not to look for Athena" >&5
+echo "configure:4041: checking whether or not to look for Athena" >&5
   # Check whether --enable-athena-check or --disable-athena-check was given.
 if test "${enable_athena_check+set}" = set; then
   enableval="$enable_athena_check"
@@ -3916,7 +4054,7 @@
 
 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
   echo $ac_n "checking whether or not to look for neXtaw""... $ac_c" 1>&6
-echo "configure:3920: checking whether or not to look for neXtaw" >&5
+echo "configure:4058: checking whether or not to look for neXtaw" >&5
   # Check whether --enable-nextaw-check or --disable-nextaw-check was given.
 if test "${enable_nextaw_check+set}" = set; then
   enableval="$enable_nextaw_check"
@@ -3933,7 +4071,7 @@
 
 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
   echo $ac_n "checking whether or not to look for Carbon""... $ac_c" 1>&6
-echo "configure:3937: checking whether or not to look for Carbon" >&5
+echo "configure:4075: checking whether or not to look for Carbon" >&5
   # Check whether --enable-carbon-check or --disable-carbon-check was given.
 if test "${enable_carbon_check+set}" = set; then
   enableval="$enable_carbon_check"
@@ -3963,11 +4101,11 @@
 
 
 if test "x$ROOTQT" = "x"; then
-	if test -z "$QTDIR"; then
-	    	    	    # Extract the first word of "moc", so it can be a program name with args.
+  if test -z "$QTDIR"; then
+            # Extract the first word of "moc", so it can be a program name with args.
 set dummy moc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3971: checking for $ac_word" >&5
+echo "configure:4109: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_MOC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4000,14 +4138,14 @@
   echo "$ac_t""no" 1>&6
 fi
 
-	    if text"x$MOC" = "x"; then
-		{ echo "configure: error: could not find Qt directory" 1>&2; exit 1; }
-	    else
-	      ROOTQT=`echo $MOC | sed 's+/bin/moc++'`
-	    fi
-	else
-		ROOTQT="$QTDIR"
-	fi
+    if test "x$MOC" = "xno"; then
+      { echo "configure: error: could not find Qt directory" 1>&2; exit 1; }
+    else
+      ROOTQT=`echo $MOC | sed 's+/bin/moc++'`
+    fi
+  else
+    ROOTQT="$QTDIR"
+  fi
 fi
 MOC="$ROOTQT"/bin/moc
 QT_INCLUDES="$ROOTQT"/include
@@ -4037,7 +4175,7 @@
 fi
 
 echo $ac_n "checking whether or not to use a KDE Toolbar in KVim""... $ac_c" 1>&6
-echo "configure:4041: checking whether or not to use a KDE Toolbar in KVim" >&5
+echo "configure:4179: checking whether or not to use a KDE Toolbar in KVim" >&5
 # Check whether --enable-kde-toolbar or --disable-kde-toolbar was given.
 if test "${enable_kde_toolbar+set}" = set; then
   enableval="$enable_kde_toolbar"
@@ -4059,8 +4197,10 @@
 if test -z "$SKIP_KDE"; then
 
 
+
+
 echo $ac_n "checking --disable-rpath argument""... $ac_c" 1>&6
-echo "configure:4064: checking --disable-rpath argument" >&5
+echo "configure:4204: checking --disable-rpath argument" >&5
 # Check whether --enable-rpath or --disable-rpath was given.
 if test "${enable_rpath+set}" = set; then
   enableval="$enable_rpath"
@@ -4076,7 +4216,7 @@
 fi
 
 echo $ac_n "checking --with-kde-prefix argument""... $ac_c" 1>&6
-echo "configure:4080: checking --with-kde-prefix argument" >&5
+echo "configure:4220: checking --with-kde-prefix argument" >&5
 # Check whether --with-kde-prefix or --without-kde-prefix was given.
 if test "${with_kde_prefix+set}" = set; then
   withval="$with_kde_prefix"
@@ -4104,7 +4244,7 @@
 
 
 echo $ac_n "checking --disable-kdetest argument""... $ac_c" 1>&6
-echo "configure:4108: checking --disable-kdetest argument" >&5
+echo "configure:4248: checking --disable-kdetest argument" >&5
 # Check whether --enable-kdetest or --disable-kdetest was given.
 if test "${enable_kdetest+set}" = set; then
   enableval="$enable_kdetest"
@@ -4119,7 +4259,6 @@
 fi
 
 if test "x$kde_config_prefix" != "x" ; then
-	kde_config_args=""
 	KDE_CONFIG=$kde_config_prefix/bin/kde-config
 fi
 
@@ -4127,7 +4266,7 @@
 	# Extract the first word of "kde-config", so it can be a program name with args.
 set dummy kde-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4131: checking for $ac_word" >&5
+echo "configure:4270: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_KDE_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4169,12 +4308,12 @@
 	if test "X$KDE_CONFIG" != "X"; then
 	  min_kde_version=2.0.0
 	  echo $ac_n "checking for KDE version >= $min_kde_version""... $ac_c" 1>&6
-echo "configure:4173: checking for KDE version >= $min_kde_version" >&5
+echo "configure:4312: checking for KDE version >= $min_kde_version" >&5
 	  no_kde=""
 	  if test "$KDE_CONFIG" = "no" ; then
 		no_kde=yes
 	  else
-		KDE_PREFIX=`$KDE_CONFIG $kde_config_args --prefix`
+		KDE_PREFIX=`$KDE_CONFIG --prefix`
 		if test "x$KDE_LIBS" = "x"; then
 		  KDE_LIBS="$KDE_PREFIX/lib"
 		fi
@@ -4188,12 +4327,12 @@
 sed 's/KDE:\ //' | sed 's/\([0-9]*\).\([0-9]*.*\)/\1/'`
 		kde_minor_version=`$KDE_CONFIG --version | grep KDE | \
 sed 's/KDE:\ //' | sed 's/\([0-9]*\).\([0-9]*.*\)/\2/'`
-	
+
 		qt_major_version=`$KDE_CONFIG --version | grep Qt | sed -e \
 's/Qt:\ //' | sed 's/\([0-9]*\).\([0-9]*.*\)/\1/'`
 		qt_minor_version=`$KDE_CONFIG --version | grep Qt | sed -e \
 's/Qt:\ //' | sed 's/\([0-9]*\).\([0-9]*.*\)/\2/'`
-	
+
 								if test "x$enable-kdetest" = "xyes" ; then
 			ac_save_LIBS="$LIBS"
 			LIBS="$LIBS $KDE_LIBS"
@@ -4202,7 +4341,7 @@
   echo $ac_n "cross compiling KDE ? ? how can i remove that ? :)"
 else
   cat > conftest.$ac_ext <<EOF
-#line 4206 "configure"
+#line 4345 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -4211,7 +4350,7 @@
 { return 0; }
 			
 EOF
-if { (eval echo configure:4215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -4245,9 +4384,10 @@
 
 
 
+
 	if test "x$KDE_PREFIX" != "x"; then
 		echo $ac_n "checking for QT version $qt_major_version.x""... $ac_c" 1>&6
-echo "configure:4251: checking for QT version $qt_major_version.x" >&5
+echo "configure:4391: checking for QT version $qt_major_version.x" >&5
 		if test "x$ROOTQT" != "x" ; then
 			GUI_INC_LOC="-I$QT_INCLUDES $GUI_INC_LOC"
 			if test $qt_major_version -lt 2; then
@@ -4279,6 +4419,117 @@
 						GUI_INC_LOC="`echo $GUI_INC_LOC\ | sed 's%-I/usr/include %%'`"
 
 			echo "$ac_t""found $qt_major_version.$qt_minor_version in $ROOTQT" 1>&6
+
+                                                                     
+  qt_incdir=NO
+  for i in $QT_INCLUDES;
+    do
+      for j in qstyle.h;
+      do
+       echo "configure: 4430: $i/$j" >&5
+       if test -r "$i/$j"; then
+         echo "taking that" >&5
+         qt_incdir=$i
+         break 2
+       fi
+      done
+    done
+
+                       if test "x$qt_incdir" = "xNO"; then
+                               { echo "configure: error: Could not find Qt headers in $QT_INCLUDES" 1>&2; exit 1; }
+                       fi
+                       
+  kde_incdir=NO
+  for i in $KDE_INCLUDES;
+    do
+      for j in kapplication.h;
+      do
+       echo "configure: 4448: $i/$j" >&5
+       if test -r "$i/$j"; then
+         echo "taking that" >&5
+         kde_incdir=$i
+         break 2
+       fi
+      done
+    done
+
+                       if test "x$kde_incdir" = "xNO"; then
+                               { echo "configure: error: Could not find KDE headers in $KDE_INCLUDES" 1>&2; exit 1; }
+                       fi
+
+                       
+                       ac_ext=C
+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cxx_cross
+
+                       ac_save_LIBS="$LIBS"
+                       LIBS="$GUI_LIB_LOC"
+                       ac_save_CXXFLAGS="$CXXFLAGS"
+                       CXXFLAGS="$CXXFLAGS $GUI_INC_LOC"
+                       echo $ac_n "checking whether Qt libraries are usable""... $ac_c" 1>&6
+echo "configure:4474: checking whether Qt libraries are usable" >&5
+                       cat > conftest.$ac_ext <<EOF
+#line 4476 "configure"
+#include "confdefs.h"
+#include <qapplication.h>
+int main() {
+
+                           int argc;
+                           char** argv;
+                           QApplication app(argc, argv);
+                           
+; return 0; }
+EOF
+if { (eval echo configure:4487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6;{ echo "configure: error: Qt fails to link a simple application" 1>&2; exit 1; }
+fi
+rm -f conftest*
+
+                       echo $ac_n "checking whether KDE libraries are usable""... $ac_c" 1>&6
+echo "configure:4499: checking whether KDE libraries are usable" >&5
+                       cat > conftest.$ac_ext <<EOF
+#line 4501 "configure"
+#include "confdefs.h"
+#include <kapplication.h>
+int main() {
+
+                           int argc;
+                           char** argv;
+                           KApplication app(argc, argv);
+                           
+; return 0; }
+EOF
+if { (eval echo configure:4512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  echo "$ac_t""yes" 1>&6
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  echo "$ac_t""no" 1>&6;{ echo "configure: error: KDE fails to link a simple application" 1>&2; exit 1; }
+fi
+rm -f conftest*
+
+                       LIBS="$ac_save_LIBS"
+                       CXXFLAGS="$ac_save_CXXFLAGS"
+                       ac_ext=c
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+cross_compiling=$ac_cv_prog_cc_cross
+
+
+
 			SKIP_GTK=YES
 			SKIP_ATHENA=YES
 			SKIP_MOTIF=YES
@@ -4303,7 +4554,7 @@
 
 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
   echo $ac_n "checking for Carbon GUI""... $ac_c" 1>&6
-echo "configure:4307: checking for Carbon GUI" >&5
+echo "configure:4558: checking for Carbon GUI" >&5
     echo "$ac_t""yes" 1>&6;
   GUITYPE=CARBONGUI
     SKIP_GTK=YES;
@@ -4328,7 +4579,7 @@
 if test -z "$SKIP_GTK"; then
 
   echo $ac_n "checking --with-gtk-prefix argument""... $ac_c" 1>&6
-echo "configure:4332: checking --with-gtk-prefix argument" >&5
+echo "configure:4583: checking --with-gtk-prefix argument" >&5
   # Check whether --with-gtk-prefix or --without-gtk-prefix was given.
 if test "${with_gtk_prefix+set}" = set; then
   withval="$with_gtk_prefix"
@@ -4339,7 +4590,7 @@
 
 
   echo $ac_n "checking --with-gtk-exec-prefix argument""... $ac_c" 1>&6
-echo "configure:4343: checking --with-gtk-exec-prefix argument" >&5
+echo "configure:4594: checking --with-gtk-exec-prefix argument" >&5
   # Check whether --with-gtk-exec-prefix or --without-gtk-exec-prefix was given.
 if test "${with_gtk_exec_prefix+set}" = set; then
   withval="$with_gtk_exec_prefix"
@@ -4350,7 +4601,7 @@
 
 
   echo $ac_n "checking --disable-gtktest argument""... $ac_c" 1>&6
-echo "configure:4354: checking --disable-gtktest argument" >&5
+echo "configure:4605: checking --disable-gtktest argument" >&5
   # Check whether --enable-gtktest or --disable-gtktest was given.
 if test "${enable_gtktest+set}" = set; then
   enableval="$enable_gtktest"
@@ -4377,7 +4628,7 @@
     # Extract the first word of "gtk-config", so it can be a program name with args.
 set dummy gtk-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4381: checking for $ac_word" >&5
+echo "configure:4632: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4414,7 +4665,7 @@
             # Extract the first word of "gtk12-config", so it can be a program name with args.
 set dummy gtk12-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4418: checking for $ac_word" >&5
+echo "configure:4669: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GTK12_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4456,7 +4707,7 @@
     # Extract the first word of "pkg-config", so it can be a program name with args.
 set dummy pkg-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4460: checking for $ac_word" >&5
+echo "configure:4711: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PKG_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4498,7 +4749,7 @@
   {
     min_gtk_version=2.2.0
     echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
-echo "configure:4502: checking for GTK - version >= $min_gtk_version" >&5
+echo "configure:4753: checking for GTK - version >= $min_gtk_version" >&5
     no_gtk=""
     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
 	  && $PKG_CONFIG --exists gtk+-2.0; then
@@ -4539,7 +4790,7 @@
   echo $ac_n "cross compiling; assumed OK... $ac_c"
 else
   cat > conftest.$ac_ext <<EOF
-#line 4543 "configure"
+#line 4794 "configure"
 #include "confdefs.h"
 
 #include <gtk/gtk.h>
@@ -4571,7 +4822,7 @@
 }
 
 EOF
-if { (eval echo configure:4575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -4629,7 +4880,7 @@
   {
     min_gtk_version=1.1.16
     echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
-echo "configure:4633: checking for GTK - version >= $min_gtk_version" >&5
+echo "configure:4884: checking for GTK - version >= $min_gtk_version" >&5
     no_gtk=""
     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
 	  && $PKG_CONFIG --exists gtk+-2.0; then
@@ -4670,7 +4921,7 @@
   echo $ac_n "cross compiling; assumed OK... $ac_c"
 else
   cat > conftest.$ac_ext <<EOF
-#line 4674 "configure"
+#line 4925 "configure"
 #include "confdefs.h"
 
 #include <gtk/gtk.h>
@@ -4702,7 +4953,7 @@
 }
 
 EOF
-if { (eval echo configure:4706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -4820,7 +5071,7 @@
   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
   {
     echo $ac_n "checking for libgnomeui-2.0""... $ac_c" 1>&6
-echo "configure:4824: checking for libgnomeui-2.0" >&5
+echo "configure:5075: checking for libgnomeui-2.0" >&5
     if $PKG_CONFIG --exists libgnomeui-2.0; then
       echo "$ac_t""yes" 1>&6
       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
@@ -4839,7 +5090,7 @@
     # Extract the first word of "gnome-config", so it can be a program name with args.
 set dummy gnome-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4843: checking for $ac_word" >&5
+echo "configure:5094: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_GNOME_CONFIG'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -4876,7 +5127,7 @@
       no_gnome_config="yes"
     else
       echo $ac_n "checking if $GNOME_CONFIG works""... $ac_c" 1>&6
-echo "configure:4880: checking if $GNOME_CONFIG works" >&5
+echo "configure:5131: checking if $GNOME_CONFIG works" >&5
       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
 	echo "$ac_t""yes" 1>&6
 	GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
@@ -4901,7 +5152,7 @@
 
     if test "$no_gnome_config" = "yes"; then
       echo $ac_n "checking for gnomeConf.sh file in $gnome_prefix""... $ac_c" 1>&6
-echo "configure:4905: checking for gnomeConf.sh file in $gnome_prefix" >&5
+echo "configure:5156: checking for gnomeConf.sh file in $gnome_prefix" >&5
       if test -f $gnome_prefix/gnomeConf.sh; then
 	echo "$ac_t""found" 1>&6
 	echo "loading gnome configuration from" \
@@ -4939,7 +5190,7 @@
     GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
 
   echo $ac_n "checking for location of Motif GUI includes""... $ac_c" 1>&6
-echo "configure:4943: checking for location of Motif GUI includes" >&5
+echo "configure:5194: checking for location of Motif GUI includes" >&5
   gui_includes="`echo $x_includes|sed 's%/^/^/*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
   GUI_INC_LOC=
   for try in $gui_includes; do
@@ -4963,7 +5214,7 @@
 
 if test -z "$SKIP_MOTIF"; then
   echo $ac_n "checking --with-motif-lib argument""... $ac_c" 1>&6
-echo "configure:4967: checking --with-motif-lib argument" >&5
+echo "configure:5218: checking --with-motif-lib argument" >&5
   # Check whether --with-motif-lib or --without-motif-lib was given.
 if test "${with_motif_lib+set}" = set; then
   withval="$with_motif_lib"
@@ -4980,11 +5231,11 @@
         GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
 
     echo $ac_n "checking for location of Motif GUI libs""... $ac_c" 1>&6
-echo "configure:4984: checking for location of Motif GUI libs" >&5
+echo "configure:5235: checking for location of Motif GUI libs" >&5
     gui_libs="`echo $x_libraries|sed 's%/^/^/*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
     GUI_LIB_LOC=
     for try in $gui_libs; do
-      for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl; do
+      for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
 	if test -f "$libtry"; then
 	  GUI_LIB_LOC=$try
 	fi
@@ -5023,11 +5274,11 @@
 
 if test -z "$SKIP_ATHENA"; then
   echo $ac_n "checking if Athena header files can be found""... $ac_c" 1>&6
-echo "configure:5027: checking if Athena header files can be found" >&5
+echo "configure:5278: checking if Athena header files can be found" >&5
   cflags_save=$CFLAGS
   CFLAGS="$CFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5031 "configure"
+#line 5282 "configure"
 #include "confdefs.h"
 
 #include <X11/Intrinsic.h>
@@ -5036,7 +5287,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5291: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -5055,11 +5306,11 @@
 
 if test -z "$SKIP_NEXTAW"; then
   echo $ac_n "checking if neXtaw header files can be found""... $ac_c" 1>&6
-echo "configure:5059: checking if neXtaw header files can be found" >&5
+echo "configure:5310: checking if neXtaw header files can be found" >&5
   cflags_save=$CFLAGS
   CFLAGS="$CFLAGS $X_CFLAGS"
   cat > conftest.$ac_ext <<EOF
-#line 5063 "configure"
+#line 5314 "configure"
 #include "confdefs.h"
 
 #include <X11/Intrinsic.h>
@@ -5068,7 +5319,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:5072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -5096,7 +5347,7 @@
     ldflags_save=$LDFLAGS
   LDFLAGS="$X_LIBS $LDFLAGS"
   echo $ac_n "checking for XShapeQueryExtension in -lXext""... $ac_c" 1>&6
-echo "configure:5100: checking for XShapeQueryExtension in -lXext" >&5
+echo "configure:5351: checking for XShapeQueryExtension in -lXext" >&5
 ac_lib_var=`echo Xext'_'XShapeQueryExtension | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5104,7 +5355,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5108 "configure"
+#line 5359 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5115,7 +5366,7 @@
 XShapeQueryExtension()
 ; return 0; }
 EOF
-if { (eval echo configure:5119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5136,7 +5387,7 @@
 fi
 
     echo $ac_n "checking for wslen in -lw""... $ac_c" 1>&6
-echo "configure:5140: checking for wslen in -lw" >&5
+echo "configure:5391: checking for wslen in -lw" >&5
 ac_lib_var=`echo w'_'wslen | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5144,7 +5395,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lw $GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5148 "configure"
+#line 5399 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5155,7 +5406,7 @@
 wslen()
 ; return 0; }
 EOF
-if { (eval echo configure:5159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5176,7 +5427,7 @@
 fi
 
   echo $ac_n "checking for dlsym in -ldl""... $ac_c" 1>&6
-echo "configure:5180: checking for dlsym in -ldl" >&5
+echo "configure:5431: checking for dlsym in -ldl" >&5
 ac_lib_var=`echo dl'_'dlsym | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5184,7 +5435,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldl $GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5188 "configure"
+#line 5439 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5195,7 +5446,7 @@
 dlsym()
 ; return 0; }
 EOF
-if { (eval echo configure:5199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5216,7 +5467,7 @@
 fi
 
   echo $ac_n "checking for XmuCreateStippledPixmap in -lXmu""... $ac_c" 1>&6
-echo "configure:5220: checking for XmuCreateStippledPixmap in -lXmu" >&5
+echo "configure:5471: checking for XmuCreateStippledPixmap in -lXmu" >&5
 ac_lib_var=`echo Xmu'_'XmuCreateStippledPixmap | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5224,7 +5475,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXmu $GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5228 "configure"
+#line 5479 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5235,7 +5486,7 @@
 XmuCreateStippledPixmap()
 ; return 0; }
 EOF
-if { (eval echo configure:5239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5257,7 +5508,7 @@
 
   if test -z "$SKIP_MOTIF"; then
     echo $ac_n "checking for XpEndJob in -lXp""... $ac_c" 1>&6
-echo "configure:5261: checking for XpEndJob in -lXp" >&5
+echo "configure:5512: checking for XpEndJob in -lXp" >&5
 ac_lib_var=`echo Xp'_'XpEndJob | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5265,7 +5516,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lXp $GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5269 "configure"
+#line 5520 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5276,7 +5527,7 @@
 XpEndJob()
 ; return 0; }
 EOF
-if { (eval echo configure:5280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5300,7 +5551,7 @@
   LDFLAGS=$ldflags_save
 
     echo $ac_n "checking for extra X11 defines""... $ac_c" 1>&6
-echo "configure:5304: checking for extra X11 defines" >&5
+echo "configure:5555: checking for extra X11 defines" >&5
   NARROW_PROTO=
   rm -fr conftestdir
   if mkdir conftestdir; then
@@ -5330,17 +5581,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5334: checking for $ac_hdr" >&5
+echo "configure:5585: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5339 "configure"
+#line 5590 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5344: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5595: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5377,17 +5628,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5381: checking for $ac_hdr" >&5
+echo "configure:5632: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5386 "configure"
+#line 5637 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5391: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5642: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5416,9 +5667,9 @@
 
     if test ! "$enable_xim" = "no"; then
     echo $ac_n "checking for XIMText in X11/Xlib.h""... $ac_c" 1>&6
-echo "configure:5420: checking for XIMText in X11/Xlib.h" >&5
+echo "configure:5671: checking for XIMText in X11/Xlib.h" >&5
     cat > conftest.$ac_ext <<EOF
-#line 5422 "configure"
+#line 5673 "configure"
 #include "confdefs.h"
 #include <X11/Xlib.h>
 EOF
@@ -5449,17 +5700,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5453: checking for $ac_hdr" >&5
+echo "configure:5704: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5458 "configure"
+#line 5709 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5495,17 +5746,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5499: checking for $ac_hdr" >&5
+echo "configure:5750: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5504 "configure"
+#line 5755 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5760: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5598,17 +5849,17 @@
 
 
 echo $ac_n "checking quality of toupper""... $ac_c" 1>&6
-echo "configure:5602: checking quality of toupper" >&5
+echo "configure:5853: checking quality of toupper" >&5
 if test "$cross_compiling" = yes; then
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 5607 "configure"
+#line 5858 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
 EOF
-if { (eval echo configure:5612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cat >> confdefs.h <<\EOF
 #define BROKEN_TOUPPER 1
@@ -5625,16 +5876,16 @@
 
 
 echo $ac_n "checking whether __DATE__ and __TIME__ work""... $ac_c" 1>&6
-echo "configure:5629: checking whether __DATE__ and __TIME__ work" >&5
+echo "configure:5880: checking whether __DATE__ and __TIME__ work" >&5
 cat > conftest.$ac_ext <<EOF
-#line 5631 "configure"
+#line 5882 "configure"
 #include "confdefs.h"
 
 int main() {
 printf("(" __DATE__ " " __TIME__ ")");
 ; return 0; }
 EOF
-if { (eval echo configure:5638: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5889: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_DATE_TIME 1
@@ -5650,17 +5901,17 @@
 
 ac_safe=`echo "elf.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for elf.h""... $ac_c" 1>&6
-echo "configure:5654: checking for elf.h" >&5
+echo "configure:5905: checking for elf.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5659 "configure"
+#line 5910 "configure"
 #include "confdefs.h"
 #include <elf.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5664: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5915: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5683,7 +5934,7 @@
 
 if test "$HAS_ELF" = 1; then
   echo $ac_n "checking for main in -lelf""... $ac_c" 1>&6
-echo "configure:5687: checking for main in -lelf" >&5
+echo "configure:5938: checking for main in -lelf" >&5
 ac_lib_var=`echo elf'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5691,14 +5942,14 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lelf  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5695 "configure"
+#line 5946 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5732,12 +5983,12 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:5736: checking for $ac_hdr that defines DIR" >&5
+echo "configure:5987: checking for $ac_hdr that defines DIR" >&5
 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5741 "configure"
+#line 5992 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -5745,7 +5996,7 @@
 DIR *dirp = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:5749: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   eval "ac_cv_header_dirent_$ac_safe=yes"
 else
@@ -5770,7 +6021,7 @@
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
 echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:5774: checking for opendir in -ldir" >&5
+echo "configure:6025: checking for opendir in -ldir" >&5
 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5778,7 +6029,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-ldir  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5782 "configure"
+#line 6033 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5789,7 +6040,7 @@
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:5793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5811,7 +6062,7 @@
 
 else
 echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:5815: checking for opendir in -lx" >&5
+echo "configure:6066: checking for opendir in -lx" >&5
 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -5819,7 +6070,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lx  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5823 "configure"
+#line 6074 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5830,7 +6081,7 @@
 opendir()
 ; return 0; }
 EOF
-if { (eval echo configure:5834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5854,12 +6105,12 @@
 
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:5858: checking for ANSI C header files" >&5
+echo "configure:6109: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5863 "configure"
+#line 6114 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -5867,7 +6118,7 @@
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5871: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5884,7 +6135,7 @@
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 5888 "configure"
+#line 6139 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -5902,7 +6153,7 @@
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 5906 "configure"
+#line 6157 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -5923,7 +6174,7 @@
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 5927 "configure"
+#line 6178 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -5934,7 +6185,7 @@
 exit (0); }
 
 EOF
-if { (eval echo configure:5938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -5958,12 +6209,12 @@
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:5962: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:6213: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5967 "configure"
+#line 6218 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -5979,7 +6230,7 @@
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:5983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6234: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -6002,16 +6253,16 @@
 
 if test $ac_cv_header_sys_wait_h = no; then
   echo $ac_n "checking for sys/wait.h that defines union wait""... $ac_c" 1>&6
-echo "configure:6006: checking for sys/wait.h that defines union wait" >&5
+echo "configure:6257: checking for sys/wait.h that defines union wait" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6008 "configure"
+#line 6259 "configure"
 #include "confdefs.h"
 #include <sys/wait.h>
 int main() {
 union wait xx, yy; xx = yy
 ; return 0; }
 EOF
-if { (eval echo configure:6015: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			cat >> confdefs.h <<\EOF
@@ -6042,17 +6293,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6046: checking for $ac_hdr" >&5
+echo "configure:6297: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6051 "configure"
+#line 6302 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6056: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6307: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6084,17 +6335,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6088: checking for $ac_hdr" >&5
+echo "configure:6339: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6093 "configure"
+#line 6344 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6349: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6123,11 +6374,11 @@
 fi
 
 echo $ac_n "checking if strings.h can be included after string.h""... $ac_c" 1>&6
-echo "configure:6127: checking if strings.h can be included after string.h" >&5
+echo "configure:6378: checking if strings.h can be included after string.h" >&5
 cppflags_save=$CPPFLAGS
 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 cat > conftest.$ac_ext <<EOF
-#line 6131 "configure"
+#line 6382 "configure"
 #include "confdefs.h"
 
 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
@@ -6148,7 +6399,7 @@
 int i; i = 0;
 ; return 0; }
 EOF
-if { (eval echo configure:6152: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6403: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -6166,13 +6417,13 @@
 
 if test $ac_cv_prog_gcc = yes; then
     echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:6170: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:6421: checking whether ${CC-cc} needs -traditional" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
     ac_pattern="Autoconf.*'x'"
   cat > conftest.$ac_ext <<EOF
-#line 6176 "configure"
+#line 6427 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 Autoconf TIOCGETP
@@ -6190,7 +6441,7 @@
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat > conftest.$ac_ext <<EOF
-#line 6194 "configure"
+#line 6445 "configure"
 #include "confdefs.h"
 #include <termio.h>
 Autoconf TCGETA
@@ -6212,12 +6463,12 @@
 fi
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:6216: checking for working const" >&5
+echo "configure:6467: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6221 "configure"
+#line 6472 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -6266,7 +6517,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:6270: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6521: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -6287,12 +6538,12 @@
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:6291: checking for mode_t" >&5
+echo "configure:6542: checking for mode_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6296 "configure"
+#line 6547 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6320,12 +6571,12 @@
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:6324: checking for off_t" >&5
+echo "configure:6575: checking for off_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6329 "configure"
+#line 6580 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6353,12 +6604,12 @@
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:6357: checking for pid_t" >&5
+echo "configure:6608: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6362 "configure"
+#line 6613 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6386,12 +6637,12 @@
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:6390: checking for size_t" >&5
+echo "configure:6641: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6395 "configure"
+#line 6646 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6419,12 +6670,12 @@
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:6423: checking for uid_t in sys/types.h" >&5
+echo "configure:6674: checking for uid_t in sys/types.h" >&5
 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6428 "configure"
+#line 6679 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -6453,12 +6704,12 @@
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:6457: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:6708: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6462 "configure"
+#line 6713 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -6467,7 +6718,7 @@
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:6471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6722: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -6488,12 +6739,12 @@
 fi
 
 echo $ac_n "checking for ino_t""... $ac_c" 1>&6
-echo "configure:6492: checking for ino_t" >&5
+echo "configure:6743: checking for ino_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_ino_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6497 "configure"
+#line 6748 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6521,12 +6772,12 @@
 fi
 
 echo $ac_n "checking for dev_t""... $ac_c" 1>&6
-echo "configure:6525: checking for dev_t" >&5
+echo "configure:6776: checking for dev_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_dev_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6530 "configure"
+#line 6781 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -6555,12 +6806,12 @@
 
 
 echo $ac_n "checking for rlim_t""... $ac_c" 1>&6
-echo "configure:6559: checking for rlim_t" >&5
+echo "configure:6810: checking for rlim_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
   echo "$ac_t""(cached) $ac_cv_type_rlim_t" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6564 "configure"
+#line 6815 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -6592,12 +6843,12 @@
 fi
 
 echo $ac_n "checking for stack_t""... $ac_c" 1>&6
-echo "configure:6596: checking for stack_t" >&5
+echo "configure:6847: checking for stack_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
   echo "$ac_t""(cached) $ac_cv_type_stack_t" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6601 "configure"
+#line 6852 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -6627,9 +6878,9 @@
 fi
 
 echo $ac_n "checking whether stack_t has an ss_base field""... $ac_c" 1>&6
-echo "configure:6631: checking whether stack_t has an ss_base field" >&5
+echo "configure:6882: checking whether stack_t has an ss_base field" >&5
 cat > conftest.$ac_ext <<EOF
-#line 6633 "configure"
+#line 6884 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -6644,7 +6895,7 @@
 stack_t sigstk; sigstk.ss_base = 0; 
 ; return 0; }
 EOF
-if { (eval echo configure:6648: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6899: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_SS_BASE 1
@@ -6660,7 +6911,7 @@
 
 olibs="$LIBS"
 echo $ac_n "checking --with-tlib argument""... $ac_c" 1>&6
-echo "configure:6664: checking --with-tlib argument" >&5
+echo "configure:6915: checking --with-tlib argument" >&5
 # Check whether --with-tlib or --without-tlib was given.
 if test "${with_tlib+set}" = set; then
   withval="$with_tlib"
@@ -6678,7 +6929,7 @@
   esac
   for libname in $tlibs; do
     echo $ac_n "checking for tgetent in -l${libname}""... $ac_c" 1>&6
-echo "configure:6682: checking for tgetent in -l${libname}" >&5
+echo "configure:6933: checking for tgetent in -l${libname}" >&5
 ac_lib_var=`echo ${libname}'_'tgetent | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6686,7 +6937,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-l${libname}  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6690 "configure"
+#line 6941 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6697,7 +6948,7 @@
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:6701: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6729,7 +6980,7 @@
   res="FAIL"
 else
   cat > conftest.$ac_ext <<EOF
-#line 6733 "configure"
+#line 6984 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6737,7 +6988,7 @@
 #endif
 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }
 EOF
-if { (eval echo configure:6741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   res="OK"
 else
@@ -6759,12 +7010,12 @@
 fi
 if test "x$olibs" != "x$LIBS"; then
   echo $ac_n "checking whether we talk terminfo""... $ac_c" 1>&6
-echo "configure:6763: checking whether we talk terminfo" >&5
+echo "configure:7014: checking whether we talk terminfo" >&5
   if test "$cross_compiling" = yes; then
   { echo "configure: error: failed to compile test program." 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 6768 "configure"
+#line 7019 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6773,7 +7024,7 @@
 main()
 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
 EOF
-if { (eval echo configure:6777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "$ac_t""no -- we are in termcap land" 1>&6
 else
@@ -6794,12 +7045,12 @@
 
 if test "x$olibs" != "x$LIBS"; then
   echo $ac_n "checking what tgetent() returns for an unknown terminal""... $ac_c" 1>&6
-echo "configure:6798: checking what tgetent() returns for an unknown terminal" >&5
+echo "configure:7049: checking what tgetent() returns for an unknown terminal" >&5
   if test "$cross_compiling" = yes; then
   { echo "configure: error: failed to compile test program." 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 6803 "configure"
+#line 7054 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6808,7 +7059,7 @@
 main()
 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
 EOF
-if { (eval echo configure:6812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "$ac_t""zero" 1>&6; cat >> confdefs.h <<\EOF
 #define TGETENT_ZERO_ERR 0
@@ -6826,9 +7077,9 @@
 fi
 
 echo $ac_n "checking whether termcap.h contains ospeed""... $ac_c" 1>&6
-echo "configure:6830: checking whether termcap.h contains ospeed" >&5
+echo "configure:7081: checking whether termcap.h contains ospeed" >&5
 cat > conftest.$ac_ext <<EOF
-#line 6832 "configure"
+#line 7083 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6839,7 +7090,7 @@
 ospeed = 20000
 ; return 0; }
 EOF
-if { (eval echo configure:6843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_OSPEED 1
@@ -6851,9 +7102,9 @@
   rm -rf conftest*
   echo "$ac_t""no" 1>&6
 	echo $ac_n "checking whether ospeed can be extern""... $ac_c" 1>&6
-echo "configure:6855: checking whether ospeed can be extern" >&5
+echo "configure:7106: checking whether ospeed can be extern" >&5
 	cat > conftest.$ac_ext <<EOF
-#line 6857 "configure"
+#line 7108 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6865,7 +7116,7 @@
 ospeed = 20000
 ; return 0; }
 EOF
-if { (eval echo configure:6869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define OSPEED_EXTERN 1
@@ -6883,9 +7134,9 @@
 rm -f conftest*
 
 echo $ac_n "checking whether termcap.h contains UP, BC and PC""... $ac_c" 1>&6
-echo "configure:6887: checking whether termcap.h contains UP, BC and PC" >&5
+echo "configure:7138: checking whether termcap.h contains UP, BC and PC" >&5
 cat > conftest.$ac_ext <<EOF
-#line 6889 "configure"
+#line 7140 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6896,7 +7147,7 @@
 if (UP == 0 && BC == 0) PC = 1
 ; return 0; }
 EOF
-if { (eval echo configure:6900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_UP_BC_PC 1
@@ -6908,9 +7159,9 @@
   rm -rf conftest*
   echo "$ac_t""no" 1>&6
 	echo $ac_n "checking whether UP, BC and PC can be extern""... $ac_c" 1>&6
-echo "configure:6912: checking whether UP, BC and PC can be extern" >&5
+echo "configure:7163: checking whether UP, BC and PC can be extern" >&5
 	cat > conftest.$ac_ext <<EOF
-#line 6914 "configure"
+#line 7165 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6922,7 +7173,7 @@
 if (UP == 0 && BC == 0) PC = 1
 ; return 0; }
 EOF
-if { (eval echo configure:6926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7177: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define UP_BC_PC_EXTERN 1
@@ -6940,9 +7191,9 @@
 rm -f conftest*
 
 echo $ac_n "checking whether tputs() uses outfuntype""... $ac_c" 1>&6
-echo "configure:6944: checking whether tputs() uses outfuntype" >&5
+echo "configure:7195: checking whether tputs() uses outfuntype" >&5
 cat > conftest.$ac_ext <<EOF
-#line 6946 "configure"
+#line 7197 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_TERMCAP_H
@@ -6953,7 +7204,7 @@
 extern int xx(); tputs("test", 1, (outfuntype)xx)
 ; return 0; }
 EOF
-if { (eval echo configure:6957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_OUTFUNTYPE 1
@@ -6968,9 +7219,9 @@
 rm -f conftest*
 
 echo $ac_n "checking whether sys/select.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:6972: checking whether sys/select.h and sys/time.h may both be included" >&5
+echo "configure:7223: checking whether sys/select.h and sys/time.h may both be included" >&5
 cat > conftest.$ac_ext <<EOF
-#line 6974 "configure"
+#line 7225 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -6980,7 +7231,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:6984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 			cat >> confdefs.h <<\EOF
@@ -6997,7 +7248,7 @@
 
 
 echo $ac_n "checking for /dev/ptc""... $ac_c" 1>&6
-echo "configure:7001: checking for /dev/ptc" >&5
+echo "configure:7252: checking for /dev/ptc" >&5
 if test -r /dev/ptc; then
   cat >> confdefs.h <<\EOF
 #define HAVE_DEV_PTC 1
@@ -7009,17 +7260,17 @@
 fi
 
 echo $ac_n "checking for SVR4 ptys""... $ac_c" 1>&6
-echo "configure:7013: checking for SVR4 ptys" >&5
+echo "configure:7264: checking for SVR4 ptys" >&5
 if test -c /dev/ptmx ; then
   cat > conftest.$ac_ext <<EOF
-#line 7016 "configure"
+#line 7267 "configure"
 #include "confdefs.h"
 
 int main() {
 ptsname(0);grantpt(0);unlockpt(0);
 ; return 0; }
 EOF
-if { (eval echo configure:7023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_SVR4_PTYS 1
@@ -7037,14 +7288,14 @@
 fi
 
 echo $ac_n "checking for ptyranges""... $ac_c" 1>&6
-echo "configure:7041: checking for ptyranges" >&5
+echo "configure:7292: checking for ptyranges" >&5
 if test -d /dev/ptym ; then
   pdir='/dev/ptym'
 else
   pdir='/dev'
 fi
 cat > conftest.$ac_ext <<EOF
-#line 7048 "configure"
+#line 7299 "configure"
 #include "confdefs.h"
 #ifdef M_UNIX
    yes;
@@ -7078,13 +7329,13 @@
 fi
 
 echo $ac_n "checking default tty permissions/group""... $ac_c" 1>&6
-echo "configure:7082: checking default tty permissions/group" >&5
+echo "configure:7333: checking default tty permissions/group" >&5
 rm -f conftest_grp
 if test "$cross_compiling" = yes; then
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 7088 "configure"
+#line 7339 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -7116,7 +7367,7 @@
 }
 
 EOF
-if { (eval echo configure:7120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   
     if test -f conftest_grp; then
@@ -7147,12 +7398,12 @@
 
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:7151: checking return type of signal handlers" >&5
+echo "configure:7402: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7156 "configure"
+#line 7407 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -7169,7 +7420,7 @@
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:7173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7424: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -7201,9 +7452,9 @@
 fi
 
 echo $ac_n "checking for struct sigcontext""... $ac_c" 1>&6
-echo "configure:7205: checking for struct sigcontext" >&5
+echo "configure:7456: checking for struct sigcontext" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7207 "configure"
+#line 7458 "configure"
 #include "confdefs.h"
 
 #include <signal.h>
@@ -7217,7 +7468,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:7221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 		cat >> confdefs.h <<\EOF
@@ -7233,12 +7484,12 @@
 rm -f conftest*
 
 echo $ac_n "checking getcwd implementation""... $ac_c" 1>&6
-echo "configure:7237: checking getcwd implementation" >&5
+echo "configure:7488: checking getcwd implementation" >&5
 if test "$cross_compiling" = yes; then
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 7242 "configure"
+#line 7493 "configure"
 #include "confdefs.h"
 
 char *dagger[] = { "IFS=pwd", 0 };
@@ -7250,7 +7501,7 @@
   return getcwd(buffer, 500) ? 0 : 1;
 }
 EOF
-if { (eval echo configure:7254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "$ac_t""it is usable" 1>&6
 else
@@ -7275,12 +7526,12 @@
 	strnicmp strpbrk strtol tgetent towlower towupper usleep utime utimes
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7279: checking for $ac_func" >&5
+echo "configure:7530: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 7284 "configure"
+#line 7535 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7303,7 +7554,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:7307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -7329,9 +7580,9 @@
 
 
 echo $ac_n "checking for st_blksize""... $ac_c" 1>&6
-echo "configure:7333: checking for st_blksize" >&5
+echo "configure:7584: checking for st_blksize" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7335 "configure"
+#line 7586 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -7343,7 +7594,7 @@
 	n = (int)st.st_blksize;
 ; return 0; }
 EOF
-if { (eval echo configure:7347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7598: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_ST_BLKSIZE 1
@@ -7358,18 +7609,18 @@
 rm -f conftest*
 
 echo $ac_n "checking whether stat() ignores a trailing slash""... $ac_c" 1>&6
-echo "configure:7362: checking whether stat() ignores a trailing slash" >&5
+echo "configure:7613: checking whether stat() ignores a trailing slash" >&5
 if test "$cross_compiling" = yes; then
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 7367 "configure"
+#line 7618 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/stat.h>
 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
 EOF
-if { (eval echo configure:7373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define STAT_IGNORES_SLASH 1
@@ -7386,11 +7637,11 @@
 
 
 echo $ac_n "checking for iconv_open()""... $ac_c" 1>&6
-echo "configure:7390: checking for iconv_open()" >&5
+echo "configure:7641: checking for iconv_open()" >&5
 save_LIBS="$LIBS"
 LIBS="$LIBS -liconv"
 cat > conftest.$ac_ext <<EOF
-#line 7394 "configure"
+#line 7645 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_ICONV_H
@@ -7401,7 +7652,7 @@
 iconv_open("fr", "to");
 ; return 0; }
 EOF
-if { (eval echo configure:7405: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes; with -liconv" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_ICONV 1
@@ -7413,7 +7664,7 @@
   rm -rf conftest*
   LIBS="$save_LIBS"
     cat > conftest.$ac_ext <<EOF
-#line 7417 "configure"
+#line 7668 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_ICONV_H
@@ -7424,7 +7675,7 @@
 iconv_open("fr", "to");
 ; return 0; }
 EOF
-if { (eval echo configure:7428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_ICONV 1
@@ -7442,9 +7693,9 @@
 
 
 echo $ac_n "checking for nl_langinfo(CODESET)""... $ac_c" 1>&6
-echo "configure:7446: checking for nl_langinfo(CODESET)" >&5
+echo "configure:7697: checking for nl_langinfo(CODESET)" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7448 "configure"
+#line 7699 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_LANGINFO_H
@@ -7455,7 +7706,7 @@
 char *cs = nl_langinfo(CODESET);
 ; return 0; }
 EOF
-if { (eval echo configure:7459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_NL_LANGINFO_CODESET 1
@@ -7470,7 +7721,7 @@
 rm -f conftest*
 
 echo $ac_n "checking --disable-acl argument""... $ac_c" 1>&6
-echo "configure:7474: checking --disable-acl argument" >&5
+echo "configure:7725: checking --disable-acl argument" >&5
 # Check whether --enable-acl or --disable-acl was given.
 if test "${enable_acl+set}" = set; then
   enableval="$enable_acl"
@@ -7482,7 +7733,7 @@
 if test "$enable_acl" = "yes"; then
 echo "$ac_t""no" 1>&6
 echo $ac_n "checking for acl_get_file in -lposix1e""... $ac_c" 1>&6
-echo "configure:7486: checking for acl_get_file in -lposix1e" >&5
+echo "configure:7737: checking for acl_get_file in -lposix1e" >&5
 ac_lib_var=`echo posix1e'_'acl_get_file | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7490,7 +7741,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lposix1e  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7494 "configure"
+#line 7745 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7501,7 +7752,7 @@
 acl_get_file()
 ; return 0; }
 EOF
-if { (eval echo configure:7505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7520,7 +7771,7 @@
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for acl_get_file in -lacl""... $ac_c" 1>&6
-echo "configure:7524: checking for acl_get_file in -lacl" >&5
+echo "configure:7775: checking for acl_get_file in -lacl" >&5
 ac_lib_var=`echo acl'_'acl_get_file | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7528,7 +7779,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lacl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7532 "configure"
+#line 7783 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7539,7 +7790,7 @@
 acl_get_file()
 ; return 0; }
 EOF
-if { (eval echo configure:7543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7556,7 +7807,7 @@
   echo "$ac_t""yes" 1>&6
   LIBS="$LIBS -lacl"
 		  echo $ac_n "checking for fgetxattr in -lattr""... $ac_c" 1>&6
-echo "configure:7560: checking for fgetxattr in -lattr" >&5
+echo "configure:7811: checking for fgetxattr in -lattr" >&5
 ac_lib_var=`echo attr'_'fgetxattr | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -7564,7 +7815,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lattr  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 7568 "configure"
+#line 7819 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7575,7 +7826,7 @@
 fgetxattr()
 ; return 0; }
 EOF
-if { (eval echo configure:7579: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7603,9 +7854,9 @@
 
 
 echo $ac_n "checking for POSIX ACL support""... $ac_c" 1>&6
-echo "configure:7607: checking for POSIX ACL support" >&5
+echo "configure:7858: checking for POSIX ACL support" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7609 "configure"
+#line 7860 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -7619,7 +7870,7 @@
 	acl_free(acl);
 ; return 0; }
 EOF
-if { (eval echo configure:7623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_POSIX_ACL 1
@@ -7634,9 +7885,9 @@
 rm -f conftest*
 
 echo $ac_n "checking for Solaris ACL support""... $ac_c" 1>&6
-echo "configure:7638: checking for Solaris ACL support" >&5
+echo "configure:7889: checking for Solaris ACL support" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7640 "configure"
+#line 7891 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_ACL_H
@@ -7647,7 +7898,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_SOLARIS_ACL 1
@@ -7662,9 +7913,9 @@
 rm -f conftest*
 
 echo $ac_n "checking for AIX ACL support""... $ac_c" 1>&6
-echo "configure:7666: checking for AIX ACL support" >&5
+echo "configure:7917: checking for AIX ACL support" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7668 "configure"
+#line 7919 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_SYS_ACL_H
@@ -7686,7 +7937,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_AIX_ACL 1
@@ -7704,7 +7955,7 @@
 fi
 
 echo $ac_n "checking --disable-gpm argument""... $ac_c" 1>&6
-echo "configure:7708: checking --disable-gpm argument" >&5
+echo "configure:7959: checking --disable-gpm argument" >&5
 # Check whether --enable-gpm or --disable-gpm was given.
 if test "${enable_gpm+set}" = set; then
   enableval="$enable_gpm"
@@ -7717,13 +7968,13 @@
 if test "$enable_gpm" = "yes"; then
   echo "$ac_t""no" 1>&6
     echo $ac_n "checking for gpm""... $ac_c" 1>&6
-echo "configure:7721: checking for gpm" >&5
+echo "configure:7972: checking for gpm" >&5
 if eval "test \"`echo '$''{'vi_cv_have_gpm'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   olibs="$LIBS" ; LIBS="-lgpm"
 	cat > conftest.$ac_ext <<EOF
-#line 7727 "configure"
+#line 7978 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 	    #include <linux/keyboard.h>
@@ -7731,7 +7982,7 @@
 Gpm_GetLibVersion(NULL);
 ; return 0; }
 EOF
-if { (eval echo configure:7735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   	    	    vi_cv_have_gpm=yes
 else
@@ -7758,12 +8009,12 @@
 fi
 
 echo $ac_n "checking for vsnprintf()""... $ac_c" 1>&6
-echo "configure:7762: checking for vsnprintf()" >&5
+echo "configure:8013: checking for vsnprintf()" >&5
 if test "$cross_compiling" = yes; then
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 7767 "configure"
+#line 8018 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -7784,7 +8035,7 @@
 	}
 	    
 EOF
-if { (eval echo configure:7788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cat >> confdefs.h <<\EOF
 #define HAVE_VSNPRINTF 1
@@ -7802,16 +8053,16 @@
 
 
 echo $ac_n "checking for rename""... $ac_c" 1>&6
-echo "configure:7806: checking for rename" >&5
+echo "configure:8057: checking for rename" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7808 "configure"
+#line 8059 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int main() {
 rename("this", "that")
 ; return 0; }
 EOF
-if { (eval echo configure:7815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_RENAME 1
@@ -7826,9 +8077,9 @@
 rm -f conftest*
 
 echo $ac_n "checking for sysctl""... $ac_c" 1>&6
-echo "configure:7830: checking for sysctl" >&5
+echo "configure:8081: checking for sysctl" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7832 "configure"
+#line 8083 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/sysctl.h>
@@ -7843,7 +8094,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8098: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_SYSCTL 1
@@ -7858,9 +8109,9 @@
 rm -f conftest*
 
 echo $ac_n "checking for sysinfo""... $ac_c" 1>&6
-echo "configure:7862: checking for sysinfo" >&5
+echo "configure:8113: checking for sysinfo" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7864 "configure"
+#line 8115 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/sysinfo.h>
@@ -7873,7 +8124,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7877: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8128: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_SYSINFO 1
@@ -7888,9 +8139,9 @@
 rm -f conftest*
 
 echo $ac_n "checking for sysconf""... $ac_c" 1>&6
-echo "configure:7892: checking for sysconf" >&5
+echo "configure:8143: checking for sysconf" >&5
 cat > conftest.$ac_ext <<EOF
-#line 7894 "configure"
+#line 8145 "configure"
 #include "confdefs.h"
 #include <unistd.h>
 int main() {
@@ -7899,7 +8150,7 @@
 	
 ; return 0; }
 EOF
-if { (eval echo configure:7903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8154: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_SYSCONF 1
@@ -7915,7 +8166,7 @@
 
 
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:7919: checking size of int" >&5
+echo "configure:8170: checking size of int" >&5
 if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7923,7 +8174,7 @@
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 7927 "configure"
+#line 8178 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 		main()
@@ -7934,7 +8185,7 @@
 		  exit(0);
 		}
 EOF
-if { (eval echo configure:7938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -7955,7 +8206,7 @@
 
 
 echo $ac_n "checking whether memmove/bcopy/memcpy handle overlaps""... $ac_c" 1>&6
-echo "configure:7959: checking whether memmove/bcopy/memcpy handle overlaps" >&5
+echo "configure:8210: checking whether memmove/bcopy/memcpy handle overlaps" >&5
 bcopy_test_prog='
 main() {
   char buf[10];
@@ -7975,11 +8226,11 @@
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 7979 "configure"
+#line 8230 "configure"
 #include "confdefs.h"
 #define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog
 EOF
-if { (eval echo configure:7983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cat >> confdefs.h <<\EOF
 #define USEMEMMOVE 1
@@ -7993,11 +8244,11 @@
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 7997 "configure"
+#line 8248 "configure"
 #include "confdefs.h"
 #define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog
 EOF
-if { (eval echo configure:8001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cat >> confdefs.h <<\EOF
 #define USEBCOPY 1
@@ -8011,11 +8262,11 @@
   { echo "configure: error: failed to compile test program" 1>&2; exit 1; }
 else
   cat > conftest.$ac_ext <<EOF
-#line 8015 "configure"
+#line 8266 "configure"
 #include "confdefs.h"
 #define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog
 EOF
-if { (eval echo configure:8019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   cat >> confdefs.h <<\EOF
 #define USEMEMCPY 1
@@ -8047,19 +8298,19 @@
     CFLAGS="$CFLAGS -I$x_includes"
     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
     echo $ac_n "checking whether X_LOCALE needed""... $ac_c" 1>&6
-echo "configure:8051: checking whether X_LOCALE needed" >&5
+echo "configure:8302: checking whether X_LOCALE needed" >&5
     cat > conftest.$ac_ext <<EOF
-#line 8053 "configure"
+#line 8304 "configure"
 #include "confdefs.h"
 #include <X11/Xlocale.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:8060: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   cat > conftest.$ac_ext <<EOF
-#line 8063 "configure"
+#line 8314 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8070,7 +8321,7 @@
 _Xsetlocale()
 ; return 0; }
 EOF
-if { (eval echo configure:8074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8325: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 		cat >> confdefs.h <<\EOF
@@ -8097,7 +8348,7 @@
 fi
 
 echo $ac_n "checking for _xpg4_setrunelocale in -lxpg4""... $ac_c" 1>&6
-echo "configure:8101: checking for _xpg4_setrunelocale in -lxpg4" >&5
+echo "configure:8352: checking for _xpg4_setrunelocale in -lxpg4" >&5
 ac_lib_var=`echo xpg4'_'_xpg4_setrunelocale | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -8105,7 +8356,7 @@
   ac_save_LIBS="$LIBS"
 LIBS="-lxpg4  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 8109 "configure"
+#line 8360 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8116,7 +8367,7 @@
 _xpg4_setrunelocale()
 ; return 0; }
 EOF
-if { (eval echo configure:8120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8138,7 +8389,7 @@
 
 
 echo $ac_n "checking how to create tags""... $ac_c" 1>&6
-echo "configure:8142: checking how to create tags" >&5
+echo "configure:8393: checking how to create tags" >&5
 test -f tags && mv tags tags.save
 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
   TAGPRG="ctags"
@@ -8155,7 +8406,7 @@
 echo "$ac_t""$TAGPRG" 1>&6 
 
 echo $ac_n "checking how to run man with a section nr""... $ac_c" 1>&6
-echo "configure:8159: checking how to run man with a section nr" >&5
+echo "configure:8410: checking how to run man with a section nr" >&5
 MANDEF="man"
 (eval man -s 2 read) < /dev/null > /dev/null 2>&5 && MANDEF="man -s"
 echo "$ac_t""$MANDEF" 1>&6
@@ -8167,7 +8418,7 @@
 fi
 
 echo $ac_n "checking --disable-nls argument""... $ac_c" 1>&6
-echo "configure:8171: checking --disable-nls argument" >&5
+echo "configure:8422: checking --disable-nls argument" >&5
 # Check whether --enable-nls or --disable-nls was given.
 if test "${enable_nls+set}" = set; then
   enableval="$enable_nls"
@@ -8182,7 +8433,7 @@
   # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:8186: checking for $ac_word" >&5
+echo "configure:8437: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -8209,19 +8460,19 @@
 fi
 
   echo $ac_n "checking for NLS""... $ac_c" 1>&6
-echo "configure:8213: checking for NLS" >&5
+echo "configure:8464: checking for NLS" >&5
   if test -f po/Makefile; then
     have_gettext="no"
     if test -n "$MSGFMT"; then
       cat > conftest.$ac_ext <<EOF
-#line 8218 "configure"
+#line 8469 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 int main() {
 gettext("Test");
 ; return 0; }
 EOF
-if { (eval echo configure:8225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""gettext() works" 1>&6; have_gettext="yes"
 else
@@ -8231,14 +8482,14 @@
   olibs=$LIBS
 	  LIBS="$LIBS -lintl"
 	  cat > conftest.$ac_ext <<EOF
-#line 8235 "configure"
+#line 8486 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 int main() {
 gettext("Test");
 ; return 0; }
 EOF
-if { (eval echo configure:8242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""gettext() works with -lintl" 1>&6; have_gettext="yes"
 else
@@ -8264,12 +8515,12 @@
             for ac_func in bind_textdomain_codeset
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8268: checking for $ac_func" >&5
+echo "configure:8519: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8273 "configure"
+#line 8524 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8292,7 +8543,7 @@
 
 ; return 0; }
 EOF
-if { (eval echo configure:8296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8317,9 +8568,9 @@
 done
 
             echo $ac_n "checking for _nl_msg_cat_cntr""... $ac_c" 1>&6
-echo "configure:8321: checking for _nl_msg_cat_cntr" >&5
+echo "configure:8572: checking for _nl_msg_cat_cntr" >&5
       cat > conftest.$ac_ext <<EOF
-#line 8323 "configure"
+#line 8574 "configure"
 #include "confdefs.h"
 #include <libintl.h>
 		extern int _nl_msg_cat_cntr;
@@ -8327,7 +8578,7 @@
 ++_nl_msg_cat_cntr;
 ; return 0; }
 EOF
-if { (eval echo configure:8331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; cat >> confdefs.h <<\EOF
 #define HAVE_NL_MSG_CAT_CNTR 1
@@ -8350,17 +8601,17 @@
 
 ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:8354: checking for dlfcn.h" >&5
+echo "configure:8605: checking for dlfcn.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8359 "configure"
+#line 8610 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8364: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8381,17 +8632,17 @@
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "dl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dl.h""... $ac_c" 1>&6
-echo "configure:8385: checking for dl.h" >&5
+echo "configure:8636: checking for dl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8390 "configure"
+#line 8641 "configure"
 #include "confdefs.h"
 #include <dl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8420,9 +8671,9 @@
 EOF
 
   echo $ac_n "checking for dlopen()""... $ac_c" 1>&6
-echo "configure:8424: checking for dlopen()" >&5
+echo "configure:8675: checking for dlopen()" >&5
   cat > conftest.$ac_ext <<EOF
-#line 8426 "configure"
+#line 8677 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -8432,7 +8683,7 @@
       
 ; return 0; }
 EOF
-if { (eval echo configure:8436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6;
 	      cat >> confdefs.h <<\EOF
@@ -8445,11 +8696,11 @@
   rm -rf conftest*
   echo "$ac_t""no" 1>&6;
 	      echo $ac_n "checking for dlopen() in -ldl""... $ac_c" 1>&6
-echo "configure:8449: checking for dlopen() in -ldl" >&5
+echo "configure:8700: checking for dlopen() in -ldl" >&5
 	      olibs=$LIBS
 	      LIBS="$LIBS -ldl"
 	      cat > conftest.$ac_ext <<EOF
-#line 8453 "configure"
+#line 8704 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -8459,7 +8710,7 @@
 		 
 ; return 0; }
 EOF
-if { (eval echo configure:8463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6;
 			  cat >> confdefs.h <<\EOF
@@ -8477,9 +8728,9 @@
 fi
 rm -f conftest*
       echo $ac_n "checking for dlsym()""... $ac_c" 1>&6
-echo "configure:8481: checking for dlsym()" >&5
+echo "configure:8732: checking for dlsym()" >&5
   cat > conftest.$ac_ext <<EOF
-#line 8483 "configure"
+#line 8734 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -8489,7 +8740,7 @@
       
 ; return 0; }
 EOF
-if { (eval echo configure:8493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6;
 	      cat >> confdefs.h <<\EOF
@@ -8502,11 +8753,11 @@
   rm -rf conftest*
   echo "$ac_t""no" 1>&6;
 	      echo $ac_n "checking for dlsym() in -ldl""... $ac_c" 1>&6
-echo "configure:8506: checking for dlsym() in -ldl" >&5
+echo "configure:8757: checking for dlsym() in -ldl" >&5
 	      olibs=$LIBS
 	      LIBS="$LIBS -ldl"
 	      cat > conftest.$ac_ext <<EOF
-#line 8510 "configure"
+#line 8761 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -8516,7 +8767,7 @@
 		 
 ; return 0; }
 EOF
-if { (eval echo configure:8520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6;
 			  cat >> confdefs.h <<\EOF
@@ -8539,9 +8790,9 @@
 EOF
 
   echo $ac_n "checking for shl_load()""... $ac_c" 1>&6
-echo "configure:8543: checking for shl_load()" >&5
+echo "configure:8794: checking for shl_load()" >&5
   cat > conftest.$ac_ext <<EOF
-#line 8545 "configure"
+#line 8796 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -8551,7 +8802,7 @@
      
 ; return 0; }
 EOF
-if { (eval echo configure:8555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6;
 	  cat >> confdefs.h <<\EOF
@@ -8564,11 +8815,11 @@
   rm -rf conftest*
   echo "$ac_t""no" 1>&6;
 	  echo $ac_n "checking for shl_load() in -ldld""... $ac_c" 1>&6
-echo "configure:8568: checking for shl_load() in -ldld" >&5
+echo "configure:8819: checking for shl_load() in -ldld" >&5
 	  olibs=$LIBS
 	  LIBS="$LIBS -ldld"
 	  cat > conftest.$ac_ext <<EOF
-#line 8572 "configure"
+#line 8823 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -8578,7 +8829,7 @@
 	     
 ; return 0; }
 EOF
-if { (eval echo configure:8582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6;
 		  cat >> confdefs.h <<\EOF
@@ -8600,17 +8851,17 @@
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8604: checking for $ac_hdr" >&5
+echo "configure:8855: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 8609 "configure"
+#line 8860 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8865: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8647,7 +8898,7 @@
 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
 	&& test "x$GUITYPE" != "xCARBONGUI"; then
   echo $ac_n "checking whether we need -framework Carbon""... $ac_c" 1>&6
-echo "configure:8651: checking whether we need -framework Carbon" >&5
+echo "configure:8902: checking whether we need -framework Carbon" >&5
     if test "x$enable_multibyte" = "xyes" || test "x$features" == "xbig" \
 	|| test "x$features" = "xhuge"; then
     LIBS="$LIBS -framework Carbon"
@@ -8806,6 +9057,12 @@
 s%@dovimdiff@%$dovimdiff%g
 s%@dogvimdiff@%$dogvimdiff%g
 s%@compiledby@%$compiledby%g
+s%@vi_cv_path_mzscheme@%$vi_cv_path_mzscheme%g
+s%@MZSCHEME_SRC@%$MZSCHEME_SRC%g
+s%@MZSCHEME_OBJ@%$MZSCHEME_OBJ%g
+s%@MZSCHEME_PRO@%$MZSCHEME_PRO%g
+s%@MZSCHEME_LIBS@%$MZSCHEME_LIBS%g
+s%@MZSCHEME_CFLAGS@%$MZSCHEME_CFLAGS%g
 s%@vi_cv_path_perl@%$vi_cv_path_perl%g
 s%@vi_cv_perllib@%$vi_cv_perllib%g
 s%@shrpenv@%$shrpenv%g
diff --git a/src/buffer.c b/src/buffer.c
index 6249005..4d07eb6 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -575,6 +575,9 @@
     buf_T	*buf;
 {
     free_buffer_stuff(buf, TRUE);
+#ifdef FEAT_MZSCHEME
+    mzscheme_buffer_free(buf);
+#endif
 #ifdef FEAT_PERL
     perl_buf_free(buf);
 #endif
diff --git a/src/config.h.in b/src/config.h.in
index 1c888f4..f182f7b 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -271,6 +271,9 @@
 /* Define if you want huge features. */
 #undef FEAT_HUGE
 
+/* Define if you want to include the MzScheme interpreter. */
+#undef FEAT_MZSCHEME
+
 /* Define if you want to include the Perl interpreter. */
 #undef FEAT_PERL
 
diff --git a/src/config.mk.in b/src/config.mk.in
index b5af74b..ed5f686 100644
--- a/src/config.mk.in
+++ b/src/config.mk.in
@@ -35,6 +35,12 @@
 X_EXTRA_LIBS	= @X_EXTRA_LIBS@
 X_LIBS		= @X_LIB@
 
+MZSCHEME_LIBS	= @MZSCHEME_LIBS@
+MZSCHEME_SRC	= @MZSCHEME_SRC@
+MZSCHEME_OBJ	= @MZSCHEME_OBJ@
+MZSCHEME_CFLAGS	= @MZSCHEME_CFLAGS@
+MZSCHEME_PRO	= @MZSCHEME_PRO@
+
 PERL		= @vi_cv_path_perl@
 PERLLIB		= @vi_cv_perllib@
 PERL_LIBS	= @PERL_LIBS@
diff --git a/src/configure.in b/src/configure.in
index 1050866..b6623d5 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -20,7 +20,7 @@
 dnl Don't strip if we don't have it
 AC_CHECK_PROG(STRIP, strip, strip, :)
 
-dnl Check for extention of executables
+dnl Check for extension of executables
 AC_EXEEXT
 
 dnl Set default value for CFLAGS if none is defined or it's empty
@@ -292,6 +292,90 @@
   AC_MSG_RESULT(yes)
 fi
 
+dnl Check for MzScheme feature.
+AC_MSG_CHECKING(--enable-mzschemeinterp argument)
+AC_ARG_ENABLE(mzschemeinterp,
+	[  --enable-mzschemeinterp   Include MzScheme interpreter.], ,
+	[enable_mzschemeinterp="no"])
+AC_MSG_RESULT($enable_mzschemeinterp)
+
+if test "$enable_mzschemeinterp" = "yes"; then
+  dnl -- find the mzscheme executable
+  AC_SUBST(vi_cv_path_mzscheme)
+
+  AC_MSG_CHECKING(--with-plthome argument)
+  AC_ARG_WITH(plthome,
+  	[  --with-plthome=PLTHOME   Use PLTHOME.],
+        with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
+	with_plthome="";AC_MSG_RESULT("no"))
+
+  if test "X$with_plthome" != "X"; then
+       vi_cv_path_mzscheme_pfx="$with_plthome"
+  else
+    AC_MSG_CHECKING(PLTHOME environment var)
+    if test "X$PLTHOME" != "X"; then
+	AC_MSG_RESULT("$PLTHOME")
+        vi_cv_path_mzscheme_pfx="$PLTHOME"
+    else
+	AC_MSG_RESULT("not set")
+	dnl -- try to find MzScheme executable
+        AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
+
+	dnl resolve symbolic link, the executable is often elsewhere and there
+	dnl are no links for the include files.
+        if test "X$vi_cv_path_mzscheme" != "X"; then
+	  lsout=`ls -l $vi_cv_path_mzscheme`
+	  if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
+	    vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
+	  fi
+	fi
+
+        if test "X$vi_cv_path_mzscheme" != "X"; then
+            dnl -- find where MzScheme thinks it was installed
+            AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
+            [ vi_cv_path_mzscheme_pfx=`
+      	    ${vi_cv_path_mzscheme} -evm \
+            "(display (simplify-path		\
+              (build-path (call-with-values	\
+      	        (lambda () (split-path (find-system-path (quote exec-file)))) \
+      	        (lambda (base name must-be-dir?) base)) (quote up))))"` ])
+	    dnl Remove a trailing slash.
+	    vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
+        fi
+    fi
+  fi
+
+  if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+    AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
+    if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
+      AC_MSG_RESULT("yes")
+    else
+      AC_MSG_RESULT("no")
+      vi_cv_path_mzscheme_pfx=
+    fi
+  fi
+
+  if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
+    if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
+      MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a ${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"
+    else
+      MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzgc -lmzscheme"
+    fi
+    MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include   \
+      -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/collects\"'"
+    MZSCHEME_SRC="if_mzsch.c"
+    MZSCHEME_OBJ="objects/if_mzsch.o"
+    MZSCHEME_PRO="if_mzsch.pro"
+    AC_DEFINE(FEAT_MZSCHEME)
+  fi
+  AC_SUBST(MZSCHEME_SRC)
+  AC_SUBST(MZSCHEME_OBJ)
+  AC_SUBST(MZSCHEME_PRO)
+  AC_SUBST(MZSCHEME_LIBS)
+  AC_SUBST(MZSCHEME_CFLAGS)
+fi
+
+
 AC_MSG_CHECKING(--enable-perlinterp argument)
 AC_ARG_ENABLE(perlinterp,
 	[  --enable-perlinterp     Include Perl interpreter.], ,
@@ -1187,18 +1271,18 @@
 						 ])
 
 if test "x$ROOTQT" = "x"; then
-	if test -z "$QTDIR"; then
-	    dnl Find the Qt directory by looking for the "moc" program.
-	    dnl It's better than nothing.
-	    AC_PATH_PROG(MOC, moc, no)
-	    if text"x$MOC" = "x"; then
-		AC_MSG_ERROR(could not find Qt directory)
-	    else
-	      ROOTQT=`echo $MOC | sed 's+/bin/moc++'`
-	    fi
-	else
-		ROOTQT="$QTDIR"
-	fi
+  if test -z "$QTDIR"; then
+    dnl Find the Qt directory by looking for the "moc" program.
+    dnl It's better than nothing.
+    AC_PATH_PROG(MOC, moc, no)
+    if test "x$MOC" = "xno"; then
+      AC_MSG_ERROR(could not find Qt directory)
+    else
+      ROOTQT=`echo $MOC | sed 's+/bin/moc++'`
+    fi
+  else
+    ROOTQT="$QTDIR"
+  fi
 fi
 MOC="$ROOTQT"/bin/moc
 QT_INCLUDES="$ROOTQT"/include
@@ -1238,6 +1322,23 @@
 dnl ------------------
 
 if test -z "$SKIP_KDE"; then
+AC_DEFUN([AC_FIND_FILE],
+[
+  $3=NO
+  for i in $2;
+    do
+      for j in $1;
+      do
+       echo "configure: __oline__: $i/$j" >&AC_FD_CC
+       if test -r "$i/$j"; then
+         echo "taking that" >&AC_FD_CC
+         $3=$i
+         break 2
+       fi
+      done
+    done
+])
+
 AC_DEFUN(AM_PATH_KDE,
 [
 	if test "X$KDE_CONFIG" != "X"; then
@@ -1247,7 +1348,7 @@
 	  if test "$KDE_CONFIG" = "no" ; then
 		no_kde=yes
 	  else
-		KDE_PREFIX=`$KDE_CONFIG $kde_config_args --prefix`
+		KDE_PREFIX=`$KDE_CONFIG --prefix`
 		if test "x$KDE_LIBS" = "x"; then
 		  KDE_LIBS="$KDE_PREFIX/lib"
 		fi
@@ -1261,12 +1362,12 @@
 sed 's/KDE:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\1/'`
 		kde_minor_version=`$KDE_CONFIG --version | grep KDE | \
 sed 's/KDE:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\2/'`
-	
+
 		qt_major_version=`$KDE_CONFIG --version | grep Qt | sed -e \
 's/Qt:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\1/'`
 		qt_minor_version=`$KDE_CONFIG --version | grep Qt | sed -e \
 's/Qt:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\2/'`
-	
+
 		dnl maybe in a near future we'll get these ones : QT_PREFIX, QT_LIBS,
 		dnl QT_INCLUDES
 		dnl but for now we need configure options to get them ...
@@ -1297,6 +1398,7 @@
   KDE_LIBS=""
   ifelse([$3], , :, [$3])
 fi
+
 AC_SUBST(KDE_LIBS)
 AC_SUBST(KDE_INCLUDES)
 AC_SUBST(KDE_PREFIX)
@@ -1339,7 +1441,6 @@
 fi
 
 if test "x$kde_config_prefix" != "x" ; then
-	kde_config_args=""
 	KDE_CONFIG=$kde_config_prefix/bin/kde-config
 fi
 
@@ -1391,6 +1492,47 @@
 dnl			GUI_LIB_LOC="`echo $GUI_LIB_LOC\ | sed 's% -L/usr/lib%%'`"
 
 			AC_MSG_RESULT(found $qt_major_version.$qt_minor_version in $ROOTQT)
+
+                       dnl now check the results ...
+                       dnl find the Qt's headers ?
+                       AC_FIND_FILE(qstyle.h,$QT_INCLUDES,qt_incdir)
+                       if test "x$qt_incdir" = "xNO"; then
+                               AC_MSG_ERROR(Could not find Qt headers in $QT_INCLUDES)
+                       fi
+                       AC_FIND_FILE(kapplication.h,$KDE_INCLUDES,kde_incdir)
+                       if test "x$kde_incdir" = "xNO"; then
+                               AC_MSG_ERROR(Could not find KDE headers in $KDE_INCLUDES)
+                       fi
+
+                       AC_LANG_SAVE
+                       AC_LANG_CPLUSPLUS
+                       ac_save_LIBS="$LIBS"
+                       LIBS="$GUI_LIB_LOC"
+                       ac_save_CXXFLAGS="$CXXFLAGS"
+                       CXXFLAGS="$CXXFLAGS $GUI_INC_LOC"
+                       AC_MSG_CHECKING(whether Qt libraries are usable)
+                       AC_TRY_LINK(
+                           [#include <qapplication.h>],
+                           [
+                           int argc;
+                           char** argv;
+                           QApplication app(argc, argv);]
+                           ,AC_MSG_RESULT(yes),AC_MSG_RESULT(no);AC_MSG_ERROR(Qt fails to link a simple application, check your installation and settings))
+
+                       AC_MSG_CHECKING(whether KDE libraries are usable)
+                       AC_TRY_LINK(
+                           [#include <kapplication.h>],
+                           [
+                           int argc;
+                           char** argv;
+                           KApplication app(argc, argv);]
+                           ,AC_MSG_RESULT(yes),AC_MSG_RESULT(no);AC_MSG_ERROR(KDE fails to link a simple application, check your installation and settings))
+
+                       LIBS="$ac_save_LIBS"
+                       CXXFLAGS="$ac_save_CXXFLAGS"
+                       AC_LANG_RESTORE
+
+
 			SKIP_GTK=YES
 			SKIP_ATHENA=YES
 			SKIP_MOTIF=YES
@@ -1816,7 +1958,7 @@
     gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
     GUI_LIB_LOC=
     for try in $gui_libs; do
-      for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl; do
+      for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
 	if test -f "$libtry"; then
 	  GUI_LIB_LOC=$try
 	fi
diff --git a/src/eval.c b/src/eval.c
index 7ef1398..faa0972 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -4987,6 +4987,9 @@
 #ifdef FEAT_MULTI_LANG
 	"multi_lang",
 #endif
+#ifdef FEAT_MZSCHEME
+	"mzscheme",
+#endif
 #ifdef FEAT_OLE
 	"ole",
 #endif
@@ -9109,6 +9112,8 @@
 				    && (!ASCII_ISALPHA(p[2]) || p[2] == 'l'))
 			|| (p[0] == 'r' && p[1] == 'u' && p[2] == 'b'
 				    && (!ASCII_ISALPHA(p[3]) || p[3] == 'y'))
+			|| (p[0] == 'm' && p[1] == 'z'
+				    && (!ASCII_ISALPHA(p[2]) || p[2] == 's'))
 			))
 	    {
 		/* ":python <<" continues until a dot, like ":append" */
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 62e4899..4f53f59 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -1998,7 +1998,18 @@
     char_u	*fname, *sfname, *xfname;
     buf_T	*buf;
 
-    if (*eap->arg != NUL)
+    /* ":0file" removes the file name.  Check for illegal uses ":3file",
+     * "0file name", etc. */
+    if (eap->addr_count > 0
+	    && (*eap->arg != NUL
+		|| eap->line2 > 0
+		|| eap->addr_count > 1))
+    {
+	EMSG(_(e_invarg));
+	return;
+    }
+
+    if (*eap->arg != NUL || eap->addr_count == 1)
     {
 #ifdef FEAT_AUTOCMD
 	buf = curbuf;
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 8ffeadf..e275d02 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -349,7 +349,7 @@
 EX(CMD_exit,		"exit",		ex_exit,
 			RANGE|WHOLEFOLD|BANG|FILE1|ARGOPT|DFLALL|TRLBAR|CMDWIN),
 EX(CMD_file,		"file",		ex_file,
-			BANG|FILE1|TRLBAR),
+			RANGE|NOTADR|ZEROR|BANG|FILE1|TRLBAR),
 EX(CMD_files,		"files",	buflist_list,
 			BANG|TRLBAR|CMDWIN),
 EX(CMD_filetype,	"filetype",	ex_filetype,
@@ -512,6 +512,10 @@
 			BANG|FILE1|TRLBAR),
 EX(CMD_mode,		"mode",		ex_mode,
 			WORD1|TRLBAR|CMDWIN),
+EX(CMD_mzscheme,	"mzscheme",	ex_mzscheme,
+			RANGE|EXTRA|DFLALL|NEEDARG|CMDWIN),
+EX(CMD_mzfile,		"mzfile",	ex_mzfile,
+			RANGE|FILE1|NEEDARG|CMDWIN),
 EX(CMD_next,		"next",		ex_next,
 			RANGE|NOTADR|BANG|FILES|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_new,		"new",		ex_splitview,
@@ -736,6 +740,8 @@
 			RANGE|NOTADR|BANG|WORD1|TRLBAR|ZEROR),
 EX(CMD_startinsert,	"startinsert",	ex_startinsert,
 			BANG|TRLBAR|CMDWIN),
+EX(CMD_startreplace,	"startreplace",	ex_startinsert,
+			BANG|TRLBAR|CMDWIN),
 EX(CMD_stopinsert,	"stopinsert",	ex_stopinsert,
 			BANG|TRLBAR|CMDWIN),
 EX(CMD_stjump,		"stjump",	ex_stag,
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index f9bd487..ed7e08c 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -3811,8 +3811,9 @@
  *
  * VIM      Prolog
  * 6.2      1.3
+ * 7.0      1.4
  */
-#define PRT_PROLOG_VERSION  ((char_u *)"1.3")
+#define PRT_PROLOG_VERSION  ((char_u *)"1.4")
 
 /* String versions of PS resource types - indexed by constants above so don't
  * re-order!
@@ -5116,6 +5117,10 @@
 
     prt_dsc_noarg("EOF");
 
+    /* Write CTRL-D to close serial communication link if used.
+     * NOTHING MUST BE WRITTEN AFTER THIS! */
+    prt_write_file(IF_EB("\004", "\067"));
+
     if (!prt_file_error && psettings->outfile == NULL
 					&& !got_int && !psettings->user_abort)
     {
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 27f4b9d..b2870d0 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -128,7 +128,7 @@
 static int	check_more __ARGS((int, int));
 static linenr_T get_address __ARGS((char_u **, int skip, int to_other_file));
 #if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \
-	|| !defined(FEAT_RUBY)
+	|| !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME)
 static void	ex_script_ni __ARGS((exarg_T *eap));
 #endif
 static char_u	*invalid_range __ARGS((exarg_T *eap));
@@ -220,6 +220,10 @@
 #ifndef FEAT_SYN_HL
 # define ex_syntax		ex_ni
 #endif
+#ifndef FEAT_MZSCHEME
+# define ex_mzscheme		ex_script_ni
+# define ex_mzfile		ex_ni
+#endif
 #ifndef FEAT_PERL
 # define ex_perl		ex_script_ni
 # define ex_perldo		ex_ni
@@ -2389,6 +2393,7 @@
 	    case CMD_let:
 	    case CMD_lockmarks:
 	    case CMD_match:
+	    case CMD_mzscheme:
 	    case CMD_perl:
 	    case CMD_psearch:
 	    case CMD_python:
@@ -3807,7 +3812,7 @@
 }
 
 #if !defined(FEAT_PERL) || !defined(FEAT_PYTHON) || !defined(FEAT_TCL) \
-	|| !defined(FEAT_RUBY)
+	|| !defined(FEAT_RUBY) || !defined(FEAT_MZSCHEME)
 /*
  * Function called for script command which is Not Implemented.  NI!
  * Skips over ":perl <<EOF" constructs.
@@ -7980,7 +7985,7 @@
 }
 
 /*
- * ":startinsert"
+ * ":startinsert" and ":startreplace"
  */
     static void
 ex_startinsert(eap)
@@ -7991,11 +7996,17 @@
 	coladvance((colnr_T)MAXCOL);
 	curwin->w_curswant = MAXCOL;
 	curwin->w_set_curswant = FALSE;
-	restart_edit = 'a';
+	if (eap->cmdidx == CMD_startinsert)
+	    restart_edit = 'a';
+	else
+	    restart_edit = 'R';
     }
     else
     {
-	restart_edit = 'i';
+	if (eap->cmdidx == CMD_startinsert)
+	    restart_edit = 'i';
+	else
+	    restart_edit = 'R';
 	curwin->w_curswant = 0;	    /* avoid MAXCOL */
     }
 }
diff --git a/src/feature.h b/src/feature.h
index f54f0c1..f2b4fb4 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -1101,6 +1101,7 @@
 /*
  * These features can only be included by using a configure argument.  See the
  * Makefile for a line to uncomment.
+ * +mzscheme		MzScheme interface: "--enable-mzscheme"
  * +perl		Perl interface: "--enable-perlinterp"
  * +python		Python interface: "--enable-pythoninterp"
  * +tcl			TCL interface: "--enable-tclinterp"
diff --git a/src/if_mzsch.c b/src/if_mzsch.c
new file mode 100644
index 0000000..377b5f7
--- /dev/null
+++ b/src/if_mzsch.c
@@ -0,0 +1,2244 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * MzScheme interface by Sergey Khorev <khorev@softlab.ru>
+ * Original work by Brent Fulgham <bfulgham@debian.org>
+ * (Based on lots of help from Matthew Flatt)
+ *
+ * This consists of six parts:
+ * 1. MzScheme interpreter main program
+ * 2. Routines that handle the external interface between MzScheme and
+ *    Vim.
+ * 3. MzScheme input/output handlers: writes output via [e]msg().
+ * 4. Implementation of the Vim Features for MzScheme
+ * 5. Vim Window-related Manipulation Functions.
+ * 6. Vim Buffer-related Manipulation Functions
+ *
+ * NOTES
+ * 1. Memory, allocated with scheme_malloc*, need not to be freed explicitly,
+ *    garbage collector will do it self
+ * 2. Requires at least NORMAL features. I can't imagine why one may want
+ *    to build with SMALL or TINY features but with MzScheme interface.
+ * 3. I don't use K&R-style functions. Anyway, MzScheme headers are ANSI.
+ */
+
+/* TODO
+ * way to catch Vim errors (incl. verbose messages)
+ * libmzscheme.dll dynamic loading
+ * macros to pass modifiers (e.g. (browse edit))
+ * opportunity to use shared mzscheme libraries on Unix
+ * event on-change-mode
+ * Scheme-driven coloring
+ * global exn-handler
+ * embed Read-Eval-Print-Loop
+ */
+
+#include "vim.h"
+#include "if_mzsch.h"
+
+/* Base data structures */
+#define SCHEME_VIMBUFFERP(obj)  SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type)
+#define SCHEME_VIMWINDOWP(obj)  SAME_TYPE(SCHEME_TYPE(obj), mz_window_type)
+
+typedef struct
+{
+    Scheme_Type	    tag;
+    Scheme_Env	    *env;
+    buf_T	    *buf;
+    Scheme_Object   *text_objects;
+} vim_mz_buffer;
+
+#define INVALID_BUFFER_VALUE ((buf_T *)(-1))
+
+typedef struct
+{
+    Scheme_Type	    tag;
+    struct window   *win;
+} vim_mz_window;
+
+#define INVALID_WINDOW_VALUE ((win_T *)(-1))
+
+/*
+ * Prims that form MzScheme Vim interface
+ */
+typedef struct
+{
+    Scheme_Closed_Prim	*prim;
+    char	*name;
+    int		mina;	/* arity information */
+    int		maxa;
+} Vim_Prim;
+
+typedef struct
+{
+    char	    *name;
+    Scheme_Object   *port;
+} Port_Info;
+
+/* info for closed prim */
+/*
+ * data have different means:
+ * for do_eval it is char*
+ * for do_apply is Apply_Onfo*
+ * for do_load is Port_Info*
+ */
+typedef struct
+{
+    void	*data;
+    Scheme_Env	*env;
+} Cmd_Info;
+
+/* info for do_apply */
+typedef struct
+{
+    Scheme_Object   *proc;
+    int		    argc;
+    Scheme_Object   **argv;
+} Apply_Info;
+
+/*
+ *========================================================================
+ *  Vim-Control Commands
+ *========================================================================
+ */
+/*
+ *========================================================================
+ *  Utility functions for the vim/mzscheme interface
+ *========================================================================
+ */
+/*  Buffer-related commands */
+static Scheme_Object *buffer_new(buf_T *buf);
+static Scheme_Object *get_buffer_by_name(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_by_num(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_count(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_line(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_line_list(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_name(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_num(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_size(void *, int, Scheme_Object **);
+static Scheme_Object *get_curr_buffer(void *, int, Scheme_Object **);
+static Scheme_Object *get_next_buffer(void *, int, Scheme_Object **);
+static Scheme_Object *get_prev_buffer(void *, int, Scheme_Object **);
+static Scheme_Object *mzscheme_open_buffer(void *, int, Scheme_Object **);
+static Scheme_Object *set_buffer_line(void *, int, Scheme_Object **);
+static Scheme_Object *set_buffer_line_list(void *, int, Scheme_Object **);
+static Scheme_Object *insert_buffer_line_list(void *, int, Scheme_Object **);
+static Scheme_Object *get_range_start(void *, int, Scheme_Object **);
+static Scheme_Object *get_range_end(void *, int, Scheme_Object **);
+static Scheme_Object *get_buffer_namespace(void *, int, Scheme_Object **);
+static vim_mz_buffer *get_vim_curr_buffer(void);
+
+/*  Window-related commands */
+static Scheme_Object *window_new(win_T *win);
+static Scheme_Object *get_curr_win(void *, int, Scheme_Object **);
+static Scheme_Object *get_window_count(void *, int, Scheme_Object **);
+static Scheme_Object *get_window_by_num(void *, int, Scheme_Object **);
+static Scheme_Object *get_window_num(void *, int, Scheme_Object **);
+static Scheme_Object *get_window_buffer(void *, int, Scheme_Object **);
+static Scheme_Object *get_window_height(void *, int, Scheme_Object **);
+static Scheme_Object *set_window_height(void *, int, Scheme_Object **);
+#ifdef FEAT_VERTSPLIT
+static Scheme_Object *get_window_width(void *, int, Scheme_Object **);
+static Scheme_Object *set_window_width(void *, int, Scheme_Object **);
+#endif
+static Scheme_Object *get_cursor(void *, int, Scheme_Object **);
+static Scheme_Object *set_cursor(void *, int, Scheme_Object **);
+static Scheme_Object *get_window_list(void *, int, Scheme_Object **);
+static vim_mz_window *get_vim_curr_window(void);
+
+/*  Vim-related commands */
+static Scheme_Object *mzscheme_beep(void *, int, Scheme_Object **);
+static Scheme_Object *get_option(void *, int, Scheme_Object **);
+static Scheme_Object *set_option(void *, int, Scheme_Object **);
+static Scheme_Object *vim_command(void *, int, Scheme_Object **);
+static Scheme_Object *vim_eval(void *, int, Scheme_Object **);
+static Scheme_Object *vim_bufferp(void *data, int, Scheme_Object **);
+static Scheme_Object *vim_windowp(void *data, int, Scheme_Object **);
+static Scheme_Object *vim_buffer_validp(void *data, int, Scheme_Object **);
+static Scheme_Object *vim_window_validp(void *data, int, Scheme_Object **);
+
+/*
+ *========================================================================
+ *  Internal Function Prototypes
+ *========================================================================
+ */
+static int vim_error_check(void);
+static int do_mzscheme_command(exarg_T *, void *, Scheme_Closed_Prim *what);
+static void startup_mzscheme(void);
+static char *string_to_line(Scheme_Object *obj);
+static int mzscheme_io_init(void);
+static void mzscheme_interface_init(vim_mz_buffer *self);
+static void do_output(char *mesg, long len);
+static void do_printf(char *format, ...);
+static void do_flush(void);
+static Scheme_Object *_apply_thunk_catch_exceptions(
+	Scheme_Object *, Scheme_Object **);
+static Scheme_Object *extract_exn_message(Scheme_Object *v);
+static Scheme_Object *do_eval(void *, int noargc, Scheme_Object **noargv);
+static Scheme_Object *do_load(void *, int noargc, Scheme_Object **noargv);
+static Scheme_Object *do_apply(void *, int noargc, Scheme_Object **noargv);
+static void register_vim_exn(Scheme_Env *env);
+static vim_mz_buffer *get_buffer_arg(const char *fname, int argnum,
+	int argc, Scheme_Object **argv);
+static vim_mz_window *get_window_arg(const char *fname, int argnum,
+	int argc, Scheme_Object **argv);
+static void add_vim_exn(Scheme_Env *env);
+static int line_in_range(linenr_T, buf_T *);
+static void check_line_range(linenr_T, buf_T *);
+static void mz_fix_cursor(int lo, int hi, int extra);
+
+static int eval_in_namespace(void *, Scheme_Closed_Prim *, Scheme_Env *,
+		Scheme_Object **ret);
+static void make_modules(Scheme_Env *);
+
+/*
+ *========================================================================
+ *  1. MzScheme interpreter startup
+ *========================================================================
+ */
+
+static Scheme_Type mz_buffer_type;
+static Scheme_Type mz_window_type;
+
+static int initialized = 0;
+
+/* global environment */
+static Scheme_Env    *environment = NULL;
+/* output/error handlers */
+static Scheme_Object *curout = NULL;
+static Scheme_Object *curerr = NULL;
+/* vim:exn exception */
+static Scheme_Object *exn_catching_apply = NULL;
+static Scheme_Object *exn_p = NULL;
+static Scheme_Object *exn_message = NULL;
+static Scheme_Object *vim_exn = NULL; /* Vim Error exception */
+ /* values for exn:vim - constructor, predicate, accessors etc */
+static Scheme_Object *vim_exn_names = NULL;
+static Scheme_Object *vim_exn_values = NULL;
+
+static long range_start;
+static long range_end;
+
+/* MzScheme threads scheduling stuff */
+static int mz_threads_allow = 0;
+#ifdef FEAT_GUI
+static void setup_timer(void);
+static void remove_timer(void);
+#endif
+
+#if defined(FEAT_GUI_W32)
+static void CALLBACK timer_proc(HWND, UINT, UINT, DWORD);
+static UINT timer_id = 0;
+#elif defined(FEAT_GUI_GTK)
+static gint timer_proc(gpointer);
+static guint timer_id = 0;
+#elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+static void timer_proc(XtPointer, XtIntervalId *);
+static XtIntervalId timer_id = (XtIntervalId)0;
+#elif defined(FEAT_GUI_MAC)
+pascal void timer_proc(EventLoopTimerRef, void *);
+static EventLoopTimerRef timer_id = NULL;
+static EventLoopTimerUPP timerUPP;
+#endif
+
+#ifndef FEAT_GUI_W32 /* Win32 console and Unix */
+    void
+mzvim_check_threads(void)
+{
+    /* Last time MzScheme threads were scheduled */
+    static time_t mz_last_time = 0;
+
+    if (mz_threads_allow && p_mzq > 0)
+    {
+	time_t now = time(NULL);
+
+	if ((now - mz_last_time) * 1000 > p_mzq)
+	{
+	    mz_last_time = now;
+	    scheme_check_threads();
+	}
+    }
+}
+#endif
+
+#ifdef FEAT_GUI
+/* timers are presented in GUI only */
+# if defined(FEAT_GUI_W32)
+    static void CALLBACK
+timer_proc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
+# elif defined(FEAT_GUI_GTK)
+/*ARGSUSED*/
+    static gint
+timer_proc(gpointer data)
+# elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+/* ARGSUSED */
+    static void
+timer_proc(XtPointer timed_out, XtIntervalId *interval_id)
+# elif defined(FEAT_GUI_MAC)
+    pascal void
+timer_proc(EventLoopTimerRef theTimer, void *userData)
+# endif
+{
+    scheme_check_threads();
+# if defined(FEAT_GUI_GTK)
+    return TRUE; /* continue receiving notifications */
+# elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+    /* renew timeout */
+    if (mz_threads_allow && p_mzq > 0)
+	timer_id = XtAppAddTimeOut(app_context, p_mzq,
+		timer_proc, NULL);
+# endif
+}
+
+    static void
+setup_timer(void)
+{
+# if defined(FEAT_GUI_W32)
+    timer_id = SetTimer(NULL, 0, p_mzq, timer_proc);
+# elif defined(FEAT_GUI_GTK)
+    timer_id = gtk_timeout_add((guint32)p_mzq, (GtkFunction)timer_proc, NULL);
+# elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+    timer_id = XtAppAddTimeOut(app_context, p_mzq, timer_proc, NULL);
+# elif defined(FEAT_GUI_MAC)
+    timerUPP = NewEventLoopTimerUPP(timer_proc);
+    InstallEventLoopTimer(GetMainEventLoop(), p_mzq * kEventDurationMillisecond,
+		p_mzq * kEventDurationMillisecond, timerUPP, NULL, &timer_id);
+# endif
+}
+
+    static void
+remove_timer(void)
+{
+# if defined(FEAT_GUI_W32)
+    KillTimer(NULL, timer_id);
+# elif defined(FEAT_GUI_GTK)
+    gtk_timeout_remove(timer_id);
+# elif defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)
+    XtRemoveTimeOut(timer_id);
+# elif defined(FEAT_GUI_MAC)
+    RemoveEventLoopTimer(timer_id);
+    DisposeEventLoopTimerUPP(timerUPP);
+# endif
+    timer_id = 0;
+}
+
+    void
+mzvim_reset_timer(void)
+{
+    if (timer_id != 0)
+	remove_timer();
+    if (mz_threads_allow && p_mzq > 0 && gui.in_use)
+	setup_timer();
+}
+
+#endif
+
+    static void
+notify_multithread(int on)
+{
+    mz_threads_allow = on;
+#ifdef FEAT_GUI
+    if (on && timer_id == 0 && p_mzq > 0 && gui.in_use)
+	setup_timer();
+    if (!on && timer_id != 0)
+	remove_timer();
+#endif
+}
+
+    int
+mzscheme_enabled(int verbose)
+{
+    return initialized;
+}
+
+    void
+mzscheme_end(void)
+{
+}
+
+    static void
+startup_mzscheme(void)
+{
+    scheme_set_stack_base(NULL, 1);
+
+    MZ_REGISTER_STATIC(environment);
+    MZ_REGISTER_STATIC(curout);
+    MZ_REGISTER_STATIC(curerr);
+    MZ_REGISTER_STATIC(exn_catching_apply);
+    MZ_REGISTER_STATIC(exn_p);
+    MZ_REGISTER_STATIC(exn_message);
+    MZ_REGISTER_STATIC(vim_exn);
+    MZ_REGISTER_STATIC(vim_exn_names);
+    MZ_REGISTER_STATIC(vim_exn_values);
+
+    environment = scheme_basic_env();
+
+    /* redirect output */
+    scheme_console_output = do_output;
+    scheme_console_printf = do_printf;
+
+#ifdef MZSCHEME_COLLECTS
+    /* setup 'current-library-collection-paths' parameter */
+    scheme_set_param(scheme_config, MZCONFIG_COLLECTION_PATHS,
+	    scheme_make_pair(scheme_make_string(MZSCHEME_COLLECTS),
+		scheme_null));
+#endif
+
+    /* Create buffer and window types for use in Scheme code */
+    mz_buffer_type = scheme_make_type("<vim-buffer>");
+    mz_window_type = scheme_make_type("<vim-window>");
+
+    register_vim_exn(environment);
+    make_modules(environment);
+
+    /*
+     * setup callback to receive notifications
+     * whether thread scheduling is (or not) required
+     */
+    scheme_notify_multithread = notify_multithread;
+    initialized = 1;
+}
+
+/*
+ * This routine is called for each new invocation of MzScheme
+ * to make sure things are properly initialized.
+ */
+    static int
+mzscheme_init(void)
+{
+    int do_require = FALSE;
+
+    if (!initialized)
+    {
+	do_require = TRUE;
+        startup_mzscheme();
+
+	if (mzscheme_io_init())
+	    return -1;
+
+    }
+    /* recreate ports each call effectivelly clearing these ones */
+    curout = scheme_make_string_output_port();
+    curerr = scheme_make_string_output_port();
+    scheme_set_param(scheme_config, MZCONFIG_OUTPUT_PORT, curout);
+    scheme_set_param(scheme_config, MZCONFIG_ERROR_PORT, curerr);
+
+    if (do_require)
+    {
+	/* auto-instantiate in basic env */
+	eval_in_namespace("(require (prefix vimext: vimext))", do_eval,
+		environment, NULL);
+    }
+
+    return 0;
+}
+
+/*
+ * This routine fills the namespace with various important routines that can
+ * be used within MzScheme.
+ */
+    static void
+mzscheme_interface_init(vim_mz_buffer *mzbuff)
+{
+    Scheme_Object   *attach;
+
+    mzbuff->env = (Scheme_Env *)scheme_make_namespace(0, NULL);
+
+    /*
+     * attach instantiated modules from global namespace
+     * so they can be easily instantiated in the buffer namespace
+     */
+    attach = scheme_lookup_global(
+	    scheme_intern_symbol("namespace-attach-module"),
+	    environment);
+
+    if (attach != NULL)
+    {
+	Scheme_Object   *ret;
+	Scheme_Object	*args[2];
+
+	args[0] = (Scheme_Object *)environment;
+	args[1] = scheme_intern_symbol("vimext");
+
+	ret = (Scheme_Object *)mzvim_apply(attach, 2, args);
+    }
+
+    add_vim_exn(mzbuff->env);
+}
+
+/*
+ *========================================================================
+ *  2.  External Interface
+ *========================================================================
+ */
+
+/*
+ * Evaluate command in namespace with exception handling
+ */
+    static int
+eval_in_namespace(void *data, Scheme_Closed_Prim *what, Scheme_Env *env,
+		Scheme_Object **ret)
+{
+    Scheme_Object   *value;
+    Scheme_Object   *exn;
+    Cmd_Info	    info;   /* closure info */
+
+    info.data = data;
+    info.env = env;
+
+    scheme_set_param(scheme_config, MZCONFIG_ENV,
+	    (Scheme_Object *) env);
+    /*
+     * ensure all evaluations will be in current buffer namespace,
+     * the second argument to scheme_eval_string isn't enough!
+     */
+    value = _apply_thunk_catch_exceptions(
+	    scheme_make_closed_prim_w_arity(what, &info, "mzvim", 0, 0),
+	    &exn);
+
+    if (!value)
+    {
+	value = extract_exn_message(exn);
+        /* Got an exn? */
+	if (value)
+	{
+	    scheme_display(value, curerr);  /*  Send to stderr-vim */
+	    do_flush();
+	}
+	/* `raise' was called on some arbitrary value */
+	return FAIL;
+    }
+
+    if (ret != NULL)	/* if pointer to retval supported give it up */
+	*ret = value;
+    /* Print any result, as long as it's not a void */
+    else if (!SCHEME_VOIDP(value))
+	scheme_display(value, curout);  /* Send to stdout-vim */
+
+    do_flush();
+    return OK;
+}
+
+/* :mzscheme */
+    static int
+do_mzscheme_command(exarg_T *eap, void *data, Scheme_Closed_Prim *what)
+{
+    if (mzscheme_init())
+	return FAIL;
+
+    range_start = eap->line1;
+    range_end = eap->line2;
+
+    return eval_in_namespace(data, what, get_vim_curr_buffer()->env, NULL);
+}
+
+/*
+ * Routine called by VIM when deleting a buffer
+ */
+    void
+mzscheme_buffer_free(buf_T *buf)
+{
+    if (buf->mzscheme_ref)
+    {
+        vim_mz_buffer *bp;
+	bp = buf->mzscheme_ref;
+	bp->buf = INVALID_BUFFER_VALUE;
+	buf->mzscheme_ref = NULL;
+	scheme_gc_ptr_ok(bp);
+    }
+}
+
+/*
+ * Routine called by VIM when deleting a Window
+ */
+    void
+mzscheme_window_free(win_T *win)
+{
+    if (win->mzscheme_ref)
+    {
+	vim_mz_window *wp;
+	wp = win->mzscheme_ref;
+	wp->win = INVALID_WINDOW_VALUE;
+	win->mzscheme_ref = NULL;
+	scheme_gc_ptr_ok(wp);
+    }
+}
+
+/*
+ * ":mzscheme" (or ":mz")
+ */
+    void
+ex_mzscheme(exarg_T *eap)
+{
+    char_u	*script;
+
+    script = script_get(eap, eap->arg);
+    if (!eap->skip)
+    {
+	if (script == NULL)
+	    do_mzscheme_command(eap, eap->arg, do_eval);
+	else
+	{
+	    do_mzscheme_command(eap, script, do_eval);
+	    vim_free(script);
+	}
+    }
+}
+
+/* eval MzScheme string */
+    void *
+mzvim_eval_string(char_u *str)
+{
+    Scheme_Object *ret = NULL;
+    if (mzscheme_init())
+	return FAIL;
+
+    eval_in_namespace(str, do_eval, get_vim_curr_buffer()->env, &ret);
+    return ret;
+}
+
+/*
+ * apply MzScheme procedure with arguments,
+ * handling errors
+ */
+    Scheme_Object *
+mzvim_apply(Scheme_Object *proc, int argc, Scheme_Object **argv)
+{
+    Apply_Info	data;
+    Scheme_Object *ret = NULL;
+
+    if (mzscheme_init())
+	return FAIL;
+
+    data.proc = proc;
+    data.argc = argc;
+    data.argv = argv;
+
+    eval_in_namespace(&data, do_apply, get_vim_curr_buffer()->env, &ret);
+    return ret;
+}
+
+    static Scheme_Object *
+do_load(void *data, int noargc, Scheme_Object **noargv)
+{
+    Cmd_Info	    *info = (Cmd_Info *)data;
+    Scheme_Object   *result = scheme_void;
+    Scheme_Object   *expr;
+    char_u	    *file = scheme_malloc_fail_ok(
+					  scheme_malloc_atomic, MAXPATHL + 1);
+    Port_Info	    *pinfo = (Port_Info *)(info->data);
+
+    /* make Vim expansion */
+    expand_env((char_u *)pinfo->name, file, MAXPATHL);
+    /* scheme_load looks strange working with namespaces and error handling*/
+    pinfo->port = scheme_open_input_file(file, "mzfile");
+    scheme_count_lines(pinfo->port); /* to get accurate read error location*/
+
+    /* Like REPL but print only last result */
+    while (!SCHEME_EOFP(expr = scheme_read(pinfo->port)))
+	result = scheme_eval(expr, info->env);
+
+    /* errors will be caught in do_mzscheme_comamnd and ex_mzfile */
+    scheme_close_input_port(pinfo->port);
+    pinfo->port = NULL;
+    return result;
+}
+
+/* :mzfile */
+    void
+ex_mzfile(exarg_T *eap)
+{
+    Port_Info	pinfo;
+
+    pinfo.name = (char *)eap->arg;
+    pinfo.port = NULL;
+    if (do_mzscheme_command(eap, &pinfo, do_load) != OK
+	    && pinfo.port != NULL)	/* looks like port was not closed */
+	scheme_close_input_port(pinfo.port);
+}
+
+
+/*
+ *========================================================================
+ * Exception handling code -- cribbed form the MzScheme sources and
+ * Matthew Flatt's "Inside PLT MzScheme" document.
+ *========================================================================
+ */
+    static void
+init_exn_catching_apply(void)
+{
+    if (!exn_catching_apply)
+    {
+	char *e =
+	    "(lambda (thunk) "
+	        "(with-handlers ([void (lambda (exn) (cons #f exn))]) "
+		"(cons #t (thunk))))";
+
+        /* make sure we have a namespace with the standard syntax: */
+	Scheme_Env *env = (Scheme_Env *)scheme_make_namespace(0, NULL);
+	add_vim_exn(env);
+
+        exn_catching_apply = scheme_eval_string(e, env);
+	exn_p = scheme_lookup_global(scheme_intern_symbol("exn?"), env);
+        exn_message = scheme_lookup_global(
+		scheme_intern_symbol("exn-message"), env);
+    }
+}
+
+/*
+ * This function applies a thunk, returning the Scheme value if there's
+ * no exception, otherwise returning NULL and setting *exn to the raised
+ * value (usually an exn structure).
+ */
+    static Scheme_Object *
+_apply_thunk_catch_exceptions(Scheme_Object *f, Scheme_Object **exn)
+{
+    Scheme_Object *v;
+
+    init_exn_catching_apply();
+
+    v = _scheme_apply(exn_catching_apply, 1, &f);
+    /* v is a pair: (cons #t value) or (cons #f exn) */
+
+    if (SCHEME_TRUEP(SCHEME_CAR(v)))
+	return SCHEME_CDR(v);
+    else
+    {
+	*exn = SCHEME_CDR(v);
+	return NULL;
+    }
+}
+
+    static Scheme_Object *
+extract_exn_message(Scheme_Object *v)
+{
+    init_exn_catching_apply();
+
+    if (SCHEME_TRUEP(_scheme_apply(exn_p, 1, &v)))
+	return _scheme_apply(exn_message, 1, &v);
+    else
+	return NULL; /* Not an exn structure */
+}
+
+    static Scheme_Object *
+do_eval(void *s, int noargc, Scheme_Object **noargv)
+{
+    Cmd_Info	*info = (Cmd_Info *)s;
+
+    return scheme_eval_string_all((char *)(info->data), info->env, TRUE);
+}
+
+    static Scheme_Object *
+do_apply(void *a, int noargc, Scheme_Object **noargv)
+{
+    Apply_Info	*info = (Apply_Info *)(((Cmd_Info *)a)->data);
+
+    return scheme_apply(info->proc, info->argc, info->argv);
+}
+
+/*
+ *========================================================================
+ *  3.  MzScheme I/O Handlers
+ *========================================================================
+ */
+    static void
+do_intrnl_output(char *mesg, long len, int error)
+{
+    char *p, *prev;
+
+    prev = mesg;
+    p = strchr(prev, '\n');
+    while (p)
+    {
+	*p = '\0';
+	if (error)
+	    EMSG(prev);
+	else
+	    MSG(prev);
+	prev = p + 1;
+	p = strchr(prev, '\n');
+    }
+
+    if (error)
+	EMSG(prev);
+    else
+	MSG(prev);
+}
+
+    static void
+do_output(char *mesg, long len)
+{
+    do_intrnl_output(mesg, len, 0);
+}
+
+    static void
+do_err_output(char *mesg, long len)
+{
+    do_intrnl_output(mesg, len, 1);
+}
+
+    static void
+do_printf(char *format, ...)
+{
+    do_intrnl_output(format, STRLEN(format), 1);
+}
+
+    static void
+do_flush(void)
+{
+    char *buff;
+    long length;
+
+    buff = scheme_get_sized_string_output(curerr, &length);
+    if (length)
+    {
+	do_err_output(buff, length);
+	return;
+    }
+
+    buff = scheme_get_sized_string_output(curout, &length);
+    if (length)
+	do_output(buff, length);
+}
+
+    static int
+mzscheme_io_init(void)
+{
+    /* Nothing needed so far... */
+    return 0;
+}
+
+/*
+ *========================================================================
+ *  4. Implementation of the Vim Features for MzScheme
+ *========================================================================
+ */
+
+/* (command {command-string}) */
+    static Scheme_Object *
+vim_command(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+    char	*cmd = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+
+    /* may be use do_cmdline_cmd? */
+    do_cmdline((char_u *)cmd, NULL, NULL, DOCMD_NOWAIT|DOCMD_VERBOSE);
+    update_screen(VALID);
+
+    raise_if_error();
+    return scheme_void;
+}
+
+/* (eval {expr-string}) */
+    static Scheme_Object *
+vim_eval(void *data, int argc, Scheme_Object **argv)
+{
+#ifdef FEAT_EVAL
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    char	    *expr;
+    char	    *str;
+    Scheme_Object   *result;
+
+    expr = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+
+    str = (char *)eval_to_string((char_u *)expr, NULL);
+
+    if (str == NULL)
+	raise_vim_exn(_("invalid expression"));
+
+    result = scheme_make_string(str);
+
+    vim_free(str);
+
+    return result;
+#else
+    raise_vim_exn(_("expressions disabled at compile time"));
+    /* unreachable */
+    return scheme_false;
+#endif
+}
+
+/* (range-start) */
+    static Scheme_Object *
+get_range_start(void *data, int argc, Scheme_Object **argv)
+{
+    return scheme_make_integer(range_start);
+}
+
+/* (range-end) */
+    static Scheme_Object *
+get_range_end(void *data, int argc, Scheme_Object **argv)
+{
+    return scheme_make_integer(range_end);
+}
+
+/* (beep) */
+    static Scheme_Object *
+mzscheme_beep(void *data, int argc, Scheme_Object **argv)
+{
+    vim_beep();
+    return scheme_void;
+}
+
+static Scheme_Object *M_global = NULL;
+
+/* (get-option {option-name}) [buffer/window] */
+    static Scheme_Object *
+get_option(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    char_u	    *name;
+    long	    value;
+    char_u	    *strval;
+    int		    rc;
+    Scheme_Object   *rval;
+    int		    opt_flags = 0;
+    buf_T	    *save_curb = curbuf;
+    win_T	    *save_curw = curwin;
+
+    name = (char_u *)SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+
+    if (argc > 1)
+    {
+	if (M_global == NULL)
+	{
+	    MZ_REGISTER_STATIC(M_global);
+	    M_global = scheme_intern_symbol("global");
+	}
+
+	if (argv[1] == M_global)
+	    opt_flags = OPT_GLOBAL;
+	else if (SCHEME_VIMBUFFERP(argv[1]))
+	{
+	    curbuf = get_valid_buffer(argv[1]);
+	    opt_flags = OPT_LOCAL;
+	}
+	else if (SCHEME_VIMWINDOWP(argv[1]))
+	{
+	    win_T *win = get_valid_window(argv[1]);
+
+	    curwin = win;
+	    curbuf = win->w_buffer;
+	    opt_flags = OPT_LOCAL;
+	}
+	else
+	    scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv);
+    }
+
+    rc = get_option_value(name, &value, &strval, opt_flags);
+    curbuf = save_curb;
+    curwin = save_curw;
+
+    switch (rc)
+    {
+    case 1:
+	return scheme_make_integer_value(value);
+    case 0:
+        rval = scheme_make_string(strval);
+	vim_free(strval);
+	return rval;
+    case -1:
+    case -2:
+        raise_vim_exn(_("hidden option"));
+    case -3:
+        raise_vim_exn(_("unknown option"));
+    }
+    /* unreachable */
+    return scheme_void;
+}
+
+/* (set-option {option-changing-string} [buffer/window]) */
+    static Scheme_Object *
+set_option(void *data, int argc, Scheme_Object **argv)
+{
+    char_u	*cmd;
+    int		opt_flags = 0;
+    buf_T	*save_curb = curbuf;
+    win_T	*save_curw = curwin;
+    Vim_Prim	*prim = (Vim_Prim *)data;
+
+    GUARANTEE_STRING(prim->name, 0);
+    if (argc > 1)
+    {
+	if (M_global == NULL)
+	{
+	    MZ_REGISTER_STATIC(M_global);
+	    M_global = scheme_intern_symbol("global");
+	}
+
+	if (argv[1] == M_global)
+	    opt_flags = OPT_GLOBAL;
+	else if (SCHEME_VIMBUFFERP(argv[1]))
+	{
+	    curbuf = get_valid_buffer(argv[1]);
+	    opt_flags = OPT_LOCAL;
+	}
+	else if (SCHEME_VIMWINDOWP(argv[1]))
+	{
+	    win_T *win = get_valid_window(argv[1]);
+	    curwin = win;
+	    curbuf = win->w_buffer;
+	    opt_flags = OPT_LOCAL;
+	}
+	else
+	    scheme_wrong_type(prim->name, "vim-buffer/window", 1, argc, argv);
+    }
+
+    /* do_set can modify cmd, make copy */
+    cmd = vim_strsave((char_u *)SCHEME_STR_VAL(argv[0]));
+    do_set(cmd, opt_flags);
+    vim_free(cmd);
+    update_screen(NOT_VALID);
+    curbuf = save_curb;
+    curwin = save_curw;
+    raise_if_error();
+    return scheme_void;
+}
+
+/*
+ *===========================================================================
+ *  5. Vim Window-related Manipulation Functions
+ *===========================================================================
+ */
+
+/* (curr-win) */
+    static Scheme_Object *
+get_curr_win(void *data, int argc, Scheme_Object **argv)
+{
+    return (Scheme_Object *)get_vim_curr_window();
+}
+
+/* (win-count) */
+    static Scheme_Object *
+get_window_count(void *data, int argc, Scheme_Object **argv)
+{
+    win_T   *w;
+    int	    n = 0;
+
+    for (w = firstwin; w; w = w->w_next) ++n;
+    return scheme_make_integer(n);
+}
+
+/* (get-win-list [buffer]) */
+    static Scheme_Object *
+get_window_list(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf;
+    Scheme_Object   *list;
+    win_T	    *w;
+
+    buf = get_buffer_arg(prim->name, 0, argc, argv);
+    list = scheme_null;
+
+    for (w = firstwin; w; w = w->w_next)
+        if (w->w_buffer == buf->buf)
+	    list = scheme_make_pair(window_new(w), list);
+
+    return list;
+}
+
+    static Scheme_Object *
+window_new(win_T *win)
+{
+    vim_mz_window *self;
+
+    /* We need to handle deletion of windows underneath us.
+     * If we add a "mzscheme_ref" field to the win_T structure,
+     * then we can get at it in win_free() in vim.
+     *
+     * On a win_free() we set the Scheme object's win_T *field
+     * to an invalid value. We trap all uses of a window
+     * object, and reject them if the win_T *field is invalid.
+     */
+    if (win->mzscheme_ref)
+	return win->mzscheme_ref;
+
+    self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_window));
+
+    vim_memset(self, 0, sizeof(vim_mz_window));
+    scheme_dont_gc_ptr(self);	/* because win isn't visible to GC */
+    win->mzscheme_ref = self;
+    self->win = win;
+    self->tag = mz_window_type;
+
+    return (Scheme_Object *)(self);
+}
+
+/* (get-win-num [window]) */
+    static Scheme_Object *
+get_window_num(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+    win_T	*win = get_window_arg(prim->name, 0, argc, argv)->win;
+    int		nr = 1;
+    win_T	*wp;
+
+    for (wp = firstwin; wp != win; wp = wp->w_next)
+	++nr;
+
+    return scheme_make_integer(nr);
+}
+
+/* (get-win-by-num {windownum}) */
+    static Scheme_Object *
+get_window_by_num(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+    win_T	*win;
+    int		fnum;
+
+    fnum = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+    if (fnum < 1)
+	scheme_signal_error(_("window index is out of range"));
+
+    for (win = firstwin; win; win = win->w_next, --fnum)
+        if (fnum == 1)	    /* to be 1-based */
+	    return window_new(win);
+
+    return scheme_false;
+}
+
+/* (get-win-buffer [window]) */
+    static Scheme_Object *
+get_window_buffer(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_window   *win = get_window_arg(prim->name, 0, argc, argv);
+
+    return buffer_new(win->win->w_buffer);
+}
+
+/* (get-win-height [window]) */
+    static Scheme_Object *
+get_window_height(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_window   *win = get_window_arg(prim->name, 0, argc, argv);
+
+    return scheme_make_integer(win->win->w_height);
+}
+
+/* (set-win-height {height} [window]) */
+    static Scheme_Object *
+set_window_height(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_window   *win;
+    win_T	    *savewin;
+    int		    height;
+
+    win = get_window_arg(prim->name, 1, argc, argv);
+    height = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+
+#ifdef FEAT_GUI
+    need_mouse_correct = TRUE;
+#endif
+
+    savewin = curwin;
+    curwin = win->win;
+    win_setheight(height);
+    curwin = savewin;
+
+    raise_if_error();
+    return scheme_void;
+}
+
+#ifdef FEAT_VERTSPLIT
+/* (get-win-width [window]) */
+    static Scheme_Object *
+get_window_width(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_window   *win = get_window_arg(prim->name, 0, argc, argv);
+
+    return scheme_make_integer(W_WIDTH(win->win));
+}
+
+/* (set-win-width {width} [window]) */
+    static Scheme_Object *
+set_window_width(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_window   *win;
+    win_T	    *savewin;
+    int		    width = 0;
+
+    win = get_window_arg(prim->name, 1, argc, argv);
+    width = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+
+# ifdef FEAT_GUI
+    need_mouse_correct = TRUE;
+# endif
+
+    savewin = curwin;
+    curwin = win->win;
+    win_setwidth(width);
+    curwin = savewin;
+
+    raise_if_error();
+    return scheme_void;
+}
+#endif
+
+/* (get-cursor [window]) -> (line . col) */
+    static Scheme_Object *
+get_cursor(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_window   *win;
+    pos_T	    pos;
+
+    win = get_window_arg(prim->name, 0, argc, argv);
+    pos = win->win->w_cursor;
+    return scheme_make_pair(scheme_make_integer_value((long)pos.lnum),
+		    scheme_make_integer_value((long)pos.col + 1));
+}
+
+/* (set-cursor (line . col) [window]) */
+    static Scheme_Object *
+set_cursor(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_window   *win;
+    long	    lnum = 0;
+    long	    col = 0;
+
+    win = get_window_arg(prim->name, 1, argc, argv);
+    GUARANTEE_PAIR(prim->name, 0);
+
+    if (!SCHEME_INTP(SCHEME_CAR(argv[0]))
+	    || !SCHEME_INTP(SCHEME_CDR(argv[0])))
+	scheme_wrong_type(prim->name, "integer pair", 0, argc, argv);
+
+    lnum = SCHEME_INT_VAL(SCHEME_CAR(argv[0]));
+    col = SCHEME_INT_VAL(SCHEME_CDR(argv[0])) - 1;
+
+    check_line_range(lnum, win->win->w_buffer);
+    /* don't know how to catch invalid column value */
+
+    win->win->w_cursor.lnum = lnum;
+    win->win->w_cursor.col = col;
+    update_screen(VALID);
+
+    raise_if_error();
+    return scheme_void;
+}
+/*
+ *===========================================================================
+ *  6. Vim Buffer-related Manipulation Functions
+ *     Note that each buffer should have its own private namespace.
+ *===========================================================================
+ */
+
+/* (open-buff {filename}) */
+    static Scheme_Object *
+mzscheme_open_buffer(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    char	    *fname;
+    int		    num = 0;
+    Scheme_Object   *onum;
+
+    fname = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+    /* TODO make open existing file */
+    num = buflist_add(fname, BLN_LISTED | BLN_CURBUF);
+
+    if (num == 0)
+	raise_vim_exn(_("couldn't open buffer"));
+
+    onum = scheme_make_integer(num);
+    return get_buffer_by_num(data, 1, &onum);
+}
+
+/* (get-buff-by-num {buffernum}) */
+    static Scheme_Object *
+get_buffer_by_num(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+    buf_T	*buf;
+    int		fnum;
+
+    fnum = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+
+    for (buf = firstbuf; buf; buf = buf->b_next)
+        if (buf->b_fnum == fnum)
+	    return buffer_new(buf);
+
+    return scheme_false;
+}
+
+/* (get-buff-by-name {buffername}) */
+    static Scheme_Object *
+get_buffer_by_name(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+    buf_T	*buf;
+    char_u	*fname;
+
+    fname = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
+
+    for (buf = firstbuf; buf; buf = buf->b_next)
+	if (buf->b_ffname == NULL || buf->b_sfname == NULL)
+	    /* empty string */
+	{
+	    if (fname[0] == NUL)
+		return buffer_new(buf);
+	}
+	else if (!fnamecmp(buf->b_ffname, fname)
+		|| !fnamecmp(buf->b_sfname, fname))
+	    /* either short or long filename matches */
+	    return buffer_new(buf);
+
+    return scheme_false;
+}
+
+/* (get-next-buff [buffer]) */
+    static Scheme_Object *
+get_next_buffer(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+    buf_T	*buf = get_buffer_arg(prim->name, 0, argc, argv)->buf;
+
+    if (buf->b_next == NULL)
+	return scheme_false;
+    else
+	return buffer_new(buf->b_next);
+}
+
+/* (get-prev-buff [buffer]) */
+    static Scheme_Object *
+get_prev_buffer(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+    buf_T	*buf = get_buffer_arg(prim->name, 0, argc, argv)->buf;
+
+    if (buf->b_prev == NULL)
+	return scheme_false;
+    else
+	return buffer_new(buf->b_prev);
+}
+
+/* (get-buff-num [buffer]) */
+    static Scheme_Object *
+get_buffer_num(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf = get_buffer_arg(prim->name, 0, argc, argv);
+
+    return scheme_make_integer(buf->buf->b_fnum);
+}
+
+/* (buff-count) */
+    static Scheme_Object *
+get_buffer_count(void *data, int argc, Scheme_Object **argv)
+{
+    buf_T   *b;
+    int	    n = 0;
+
+    for (b = firstbuf; b; b = b->b_next) ++n;
+    return scheme_make_integer(n);
+}
+
+/* (get-buff-name [buffer]) */
+    static Scheme_Object *
+get_buffer_name(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf = get_buffer_arg(prim->name, 0, argc, argv);
+
+    return scheme_make_string(buf->buf->b_ffname);
+}
+
+/* (curr-buff) */
+    static Scheme_Object *
+get_curr_buffer(void *data, int argc, Scheme_Object **argv)
+{
+    return (Scheme_Object *)get_vim_curr_buffer();
+}
+
+    static Scheme_Object *
+buffer_new(buf_T *buf)
+{
+    vim_mz_buffer *self;
+
+    /* We need to handle deletion of buffers underneath us.
+     * If we add a "mzscheme_buf" field to the buf_T structure,
+     * then we can get at it in buf_freeall() in vim.
+     */
+    if (buf->mzscheme_ref)
+        return buf->mzscheme_ref;
+
+    self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_buffer));
+
+    vim_memset(self, 0, sizeof(vim_mz_buffer));
+    scheme_dont_gc_ptr(self);	/* because buf isn't visible to GC */
+    buf->mzscheme_ref = self;
+    self->buf = buf;
+    self->tag = mz_buffer_type;
+
+    mzscheme_interface_init(self);	/* Set up namespace */
+
+    return (Scheme_Object *)(self);
+}
+
+/*
+ * (get-buff-size [buffer])
+ *
+ * Get the size (number of lines) in the current buffer.
+ */
+    static Scheme_Object *
+get_buffer_size(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf = get_buffer_arg(prim->name, 0, argc, argv);
+
+    return scheme_make_integer(buf->buf->b_ml.ml_line_count);
+}
+
+/*
+ * (get-buff-line {linenr} [buffer])
+ *
+ * Get a line from the specified buffer. The line number is
+ * in Vim format (1-based). The line is returned as a MzScheme
+ * string object.
+ */
+    static Scheme_Object *
+get_buffer_line(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf;
+    int		    linenr;
+    char	    *line;
+
+    buf = get_buffer_arg(prim->name, 1, argc, argv);
+    linenr = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+    line = ml_get_buf(buf->buf, (linenr_T)linenr, FALSE);
+
+    raise_if_error();
+    return scheme_make_string(line);
+}
+
+
+/*
+ * (get-buff-line-list {start} {end} [buffer])
+ *
+ * Get a list of lines from the specified buffer. The line numbers
+ * are in Vim format (1-based). The range is from lo up to, but not
+ * including, hi. The list is returned as a list of string objects.
+ */
+    static Scheme_Object *
+get_buffer_line_list(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf;
+    int		    i, hi, lo, n;
+    Scheme_Object   *list;
+
+    buf = get_buffer_arg(prim->name, 2, argc, argv);
+    list = scheme_null;
+    hi = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 1));
+    lo = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+
+    /*
+     * Handle some error conditions
+     */
+    if (lo < 0)
+        lo = 0;
+
+    if (hi < 0)
+	hi = 0;
+    if (hi < lo)
+        hi = lo;
+
+    n = hi - lo;
+
+    for (i = n; i >= 0; --i)
+    {
+	Scheme_Object *str = scheme_make_string(
+		       (char *)ml_get_buf(buf->buf, (linenr_T)(lo+i), FALSE));
+	raise_if_error();
+
+	/* Set the list item */
+	list = scheme_make_pair(str, list);
+    }
+
+    return list;
+}
+
+/*
+ * (set-buff-line {linenr} {string/#f} [buffer])
+ *
+ * Replace a line in the specified buffer. The line number is
+ * in Vim format (1-based). The replacement line is given as
+ * an MzScheme string object. The object is checked for validity
+ * and correct format. An exception is thrown if the values are not
+ * the correct format.
+ *
+ * It returns a Scheme Object that indicates the length of the
+ * string changed.
+ */
+    static Scheme_Object *
+set_buffer_line(void *data, int argc, Scheme_Object **argv)
+{
+    /* First of all, we check the the of the supplied MzScheme object.
+     * There are three cases:
+     *	  1. #f - this is a deletion.
+     *	  2. A string	   - this is a replacement.
+     *	  3. Anything else - this is an error.
+     */
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf;
+    Scheme_Object   *line;
+    char	    *save;
+    buf_T	    *savebuf;
+    int		    n;
+
+    n = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+    if (!SCHEME_STRINGP(argv[1]) && !SCHEME_FALSEP(argv[1]))
+        scheme_wrong_type(prim->name, "string or #f", 1, argc, argv);
+    line = argv[1];
+    buf = get_buffer_arg(prim->name, 2, argc, argv);
+
+    check_line_range(n, buf->buf);
+
+    if (SCHEME_FALSEP(line))
+    {
+	savebuf = curbuf;
+	curbuf = buf->buf;
+
+	if (u_savedel((linenr_T)n, 1L) == FAIL)
+	{
+	    curbuf = savebuf;
+	    raise_vim_exn(_("cannot save undo information"));
+	}
+	else if (ml_delete((linenr_T)n, FALSE) == FAIL)
+	{
+	    curbuf = savebuf;
+	    raise_vim_exn(_("cannot delete line"));
+	}
+	deleted_lines_mark((linenr_T)n, 1L);
+	if (buf->buf == curwin->w_buffer)
+	    mz_fix_cursor(n, n + 1, -1);
+
+	curbuf = savebuf;
+
+	raise_if_error();
+	return scheme_void;
+    }
+
+    /* Otherwise it's a line */
+    save = string_to_line(line);
+    savebuf = curbuf;
+
+    curbuf = buf->buf;
+
+    if (u_savesub((linenr_T)n) == FAIL)
+    {
+	curbuf = savebuf;
+	raise_vim_exn(_("cannot save undo information"));
+    }
+    else if (ml_replace((linenr_T)n, (char_u *)save, TRUE) == FAIL)
+    {
+	curbuf = savebuf;
+	raise_vim_exn(_("cannot replace line"));
+    }
+    else
+	changed_bytes((linenr_T)n, 0);
+
+    curbuf = savebuf;
+
+    raise_if_error();
+    return scheme_void;
+}
+
+/*
+ * (set-buff-line-list {start} {end} {string-list/#f/null} [buffer])
+ *
+ * Replace a range of lines in the specified buffer. The line numbers are in
+ * Vim format (1-based). The range is from lo up to, but not including, hi.
+ * The replacement lines are given as a Scheme list of string objects. The
+ * list is checked for validity and correct format.
+ *
+ * Errors are returned as a value of FAIL. The return value is OK on success.
+ * If OK is returned and len_change is not NULL, *len_change is set to the
+ * change in the buffer length.
+ */
+    static Scheme_Object *
+set_buffer_line_list(void *data, int argc, Scheme_Object **argv)
+{
+    /* First of all, we check the type of the supplied MzScheme object.
+     * There are three cases:
+     *	  1. #f - this is a deletion.
+     *	  2. A list	   - this is a replacement.
+     *	  3. Anything else - this is an error.
+     */
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf;
+    Scheme_Object   *line_list;
+    Scheme_Object   *line;
+    Scheme_Object   *rest;
+    char	    **array;
+    buf_T	    *savebuf;
+    int		    i, old_len, new_len, hi, lo;
+    long	    extra;
+
+    lo = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+    hi = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 1));
+    if (!SCHEME_PAIRP(argv[2])
+	    && !SCHEME_FALSEP(argv[2]) && !SCHEME_NULLP(argv[2]))
+	scheme_wrong_type(prim->name, "list or #f", 2, argc, argv);
+    line_list = argv[2];
+    buf = get_buffer_arg(prim->name, 3, argc, argv);
+    old_len = hi - lo;
+    if (old_len < 0) /* process inverse values wisely */
+    {
+	i = lo;
+	lo = hi;
+	hi = i;
+	old_len = -old_len;
+    }
+    extra = 0;
+
+    check_line_range(lo, buf->buf);	    /* inclusive */
+    check_line_range(hi - 1, buf->buf);  /* exclisive */
+
+    if (SCHEME_FALSEP(line_list) || SCHEME_NULLP(line_list))
+    {
+	savebuf = curbuf;
+	curbuf = buf->buf;
+
+	if (u_savedel((linenr_T)lo, (long)old_len) == FAIL)
+	{
+	    curbuf = savebuf;
+	    raise_vim_exn(_("cannot save undo information"));
+	}
+	else
+	{
+	    for (i = 0; i < old_len; i++)
+		if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+		{
+		    curbuf = savebuf;
+		    raise_vim_exn(_("cannot delete line"));
+		}
+	    deleted_lines_mark((linenr_T)lo, (long)old_len);
+	    if (buf->buf == curwin->w_buffer)
+		mz_fix_cursor(lo, hi, -old_len);
+	}
+
+	curbuf = savebuf;
+
+	raise_if_error();
+	return scheme_void;
+    }
+
+    /* List */
+    new_len = scheme_proper_list_length(line_list);
+    if (new_len < 0)	/* improper or cyclic list */
+	scheme_wrong_type(prim->name, "proper list",
+		2, argc, argv);
+
+    /* Using MzScheme allocator, so we don't need to free this and
+     * can safely keep pointers to GC collected strings
+     */
+    array = (char **)scheme_malloc_fail_ok(scheme_malloc,
+		(unsigned)(new_len * sizeof(char *)));
+
+    rest = line_list;
+    for (i = 0; i < new_len; ++i)
+    {
+        line = SCHEME_CAR(rest);
+	rest = SCHEME_CDR(rest);
+	if (!SCHEME_STRINGP(line))
+	    scheme_wrong_type(prim->name, "string-list", 2, argc, argv);
+        array[i] = string_to_line(line);
+    }
+
+    savebuf = curbuf;
+    curbuf = buf->buf;
+
+    if (u_save((linenr_T)(lo-1), (linenr_T)hi) == FAIL)
+    {
+	curbuf = savebuf;
+        raise_vim_exn(_("cannot save undo information"));
+    }
+
+    /*
+     * If the size of the range is reducing (ie, new_len < old_len) we
+     * need to delete some old_len. We do this at the start, by
+     * repeatedly deleting line "lo".
+     */
+    for (i = 0; i < old_len - new_len; ++i)
+    {
+	if (ml_delete((linenr_T)lo, FALSE) == FAIL)
+	{
+	    curbuf = savebuf;
+	    raise_vim_exn(_("cannot delete line"));
+	}
+        extra--;
+    }
+
+    /*
+     * For as long as possible, replace the existing old_len with the
+     * new old_len. This is a more efficient operation, as it requires
+     * less memory allocation and freeing.
+     */
+    for (i = 0; i < old_len && i < new_len; i++)
+	if (ml_replace((linenr_T)(lo+i), (char_u *)array[i], TRUE) == FAIL)
+	{
+	    curbuf = savebuf;
+	    raise_vim_exn(_("cannot replace line"));
+	}
+
+    /*
+     * Now we may need to insert the remaining new_len.  We don't need to
+     * free the string passed back because MzScheme has control of that
+     * memory.
+     */
+    while (i < new_len)
+    {
+        if (ml_append((linenr_T)(lo + i - 1),
+		(char_u *)array[i], 0, FALSE) == FAIL)
+	{
+	    curbuf = savebuf;
+            raise_vim_exn(_("cannot insert line"));
+	}
+        ++i;
+        ++extra;
+    }
+
+    /*
+     * Adjust marks. Invalidate any which lie in the
+     * changed range, and move any in the remainder of the buffer.
+     */
+    mark_adjust((linenr_T)lo, (linenr_T)(hi - 1), (long)MAXLNUM, (long)extra);
+    changed_lines((linenr_T)lo, 0, (linenr_T)hi, (long)extra);
+
+    if (buf->buf == curwin->w_buffer)
+	mz_fix_cursor(lo, hi, extra);
+    curbuf = savebuf;
+
+    raise_if_error();
+    return scheme_void;
+}
+
+/*
+ * (insert-buff-line-list {linenr} {string/string-list} [buffer])
+ *
+ * Insert a number of lines into the specified buffer after the specifed line.
+ * The line number is in Vim format (1-based). The lines to be inserted are
+ * given as an MzScheme list of string objects or as a single string. The lines
+ * to be added are checked for validity and correct format. Errors are
+ * returned as a value of FAIL.  The return value is OK on success.
+ * If OK is returned and len_change is not NULL, *len_change
+ * is set to the change in the buffer length.
+ */
+    static Scheme_Object *
+insert_buffer_line_list(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	    *prim = (Vim_Prim *)data;
+    vim_mz_buffer   *buf;
+    Scheme_Object   *list;
+    Scheme_Object   *line;
+    Scheme_Object   *rest;
+    char	    **array;
+    char	    *str;
+    buf_T	    *savebuf;
+    int		    i, n, size;
+
+    /*
+     * First of all, we check the type of the supplied MzScheme object.
+     * It must be a string or a list, or the call is in error.
+     */
+    n = SCHEME_INT_VAL(GUARANTEE_INTEGER(prim->name, 0));
+    list = argv[1];
+
+    if (!SCHEME_STRINGP(list) && !SCHEME_PAIRP(list))
+	scheme_wrong_type(prim->name, "string or list", 1, argc, argv);
+    buf = get_buffer_arg(prim->name, 2, argc, argv);
+
+    if (n != 0)	    /* 0 can be used in insert */
+        check_line_range(n, buf->buf);
+    if (SCHEME_STRINGP(list))
+    {
+	str = string_to_line(list);
+
+	savebuf = curbuf;
+	curbuf = buf->buf;
+
+	if (u_save((linenr_T)n, (linenr_T)(n+1)) == FAIL)
+	{
+	    curbuf = savebuf;
+	    raise_vim_exn(_("cannot save undo information"));
+	}
+	else if (ml_append((linenr_T)n, (char_u *)str, 0, FALSE) == FAIL)
+	{
+	    curbuf = savebuf;
+	    raise_vim_exn(_("cannot insert line"));
+	}
+	else
+	    appended_lines_mark((linenr_T)n, 1L);
+
+	curbuf = savebuf;
+	update_screen(VALID);
+
+	raise_if_error();
+	return scheme_void;
+    }
+
+    /* List */
+    size = scheme_proper_list_length(list);
+    if (size < 0)	/* improper or cyclic list */
+	scheme_wrong_type(prim->name, "proper list",
+		2, argc, argv);
+
+    /* Using MzScheme allocator, so we don't need to free this and
+     * can safely keep pointers to GC collected strings
+     */
+    array = (char **)scheme_malloc_fail_ok(
+	    scheme_malloc, (unsigned)(size * sizeof(char *)));
+
+    rest = list;
+    for (i = 0; i < size; ++i)
+    {
+        line = SCHEME_CAR(rest);
+        rest = SCHEME_CDR(rest);
+        array[i] = string_to_line(line);
+    }
+
+    savebuf = curbuf;
+    curbuf = buf->buf;
+
+    if (u_save((linenr_T)n, (linenr_T)(n + 1)) == FAIL)
+    {
+	curbuf = savebuf;
+        raise_vim_exn(_("cannot save undo information"));
+    }
+    else
+    {
+        for (i = 0; i < size; ++i)
+            if (ml_append((linenr_T)(n + i), (char_u *)array[i],
+			0, FALSE) == FAIL)
+	    {
+		curbuf = savebuf;
+	        raise_vim_exn(_("cannot insert line"));
+	    }
+
+        if (i > 0)
+            appended_lines_mark((linenr_T)n, (long)i);
+    }
+
+    curbuf = savebuf;
+    update_screen(VALID);
+
+    raise_if_error();
+    return scheme_void;
+}
+
+/* (get-buff-namespace [buffer]) */
+    static Scheme_Object *
+get_buffer_namespace(void *data, int argc, Scheme_Object **argv)
+{
+    Vim_Prim	*prim = (Vim_Prim *)data;
+
+    return (Scheme_Object *)get_buffer_arg(prim->name, 0, argc, argv)->env;
+}
+
+/*
+ * Predicates
+ */
+/* (buff? obj) */
+    static Scheme_Object *
+vim_bufferp(void *data, int argc, Scheme_Object **argv)
+{
+    if (SCHEME_VIMBUFFERP(argv[0]))
+	return scheme_true;
+    else
+	return scheme_false;
+}
+
+/* (win? obj) */
+    static Scheme_Object *
+vim_windowp(void *data, int argc, Scheme_Object **argv)
+{
+    if (SCHEME_VIMWINDOWP(argv[0]))
+	return scheme_true;
+    else
+	return scheme_false;
+}
+
+/* (buff-valid? obj) */
+    static Scheme_Object *
+vim_buffer_validp(void *data, int argc, Scheme_Object **argv)
+{
+    if (SCHEME_VIMBUFFERP(argv[0])
+	    && ((vim_mz_buffer *)argv[0])->buf != INVALID_BUFFER_VALUE)
+	return scheme_true;
+    else
+	return scheme_false;
+}
+
+/* (win-valid? obj) */
+    static Scheme_Object *
+vim_window_validp(void *data, int argc, Scheme_Object **argv)
+{
+    if (SCHEME_VIMWINDOWP(argv[0])
+	    && ((vim_mz_window *)argv[0])->win != INVALID_WINDOW_VALUE)
+	return scheme_true;
+    else
+	return scheme_false;
+}
+
+/*
+ *===========================================================================
+ * Utilities
+ *===========================================================================
+ */
+
+/*
+ * Convert an MzScheme string into a Vim line.
+ *
+ * The result is in allocated memory. All internal nulls are replaced by
+ * newline characters. It is an error for the string to contain newline
+ * characters.
+ *
+ */
+    static char *
+string_to_line(Scheme_Object *obj)
+{
+    char	*str;
+    long	len;
+    int		i;
+
+    str = scheme_display_to_string(obj, &len);
+
+    /* Error checking: String must not contain newlines, as we
+     * are replacing a single line, and we must replace it with
+     * a single line.
+     */
+    if (memchr(str, '\n', len))
+	scheme_signal_error(_("string cannot contain newlines"));
+
+    /* Create a copy of the string, with internal nulls replaced by
+     * newline characters, as is the vim convention.
+     */
+    for (i = 0; i < len; ++i)
+    {
+	if (str[i] == '\0')
+	    str[i] = '\n';
+    }
+
+    str[i] = '\0';
+
+    return str;
+}
+
+/*
+ * Check to see whether a Vim error has been reported, or a keyboard
+ * interrupt (from vim --> got_int) has been detected.
+ */
+    static int
+vim_error_check(void)
+{
+    return (got_int || did_emsg);
+}
+
+/*
+ * register Scheme exn:vim
+ */
+    static void
+register_vim_exn(Scheme_Env *env)
+{
+    Scheme_Object   *exn_name = scheme_intern_symbol("exn:vim");
+
+    if (vim_exn == NULL)
+	vim_exn = scheme_make_struct_type(exn_name,
+		scheme_builtin_value("struct:exn"), NULL, 0, 0, NULL, NULL
+#if MZSCHEME_VERSION_MAJOR >= 299
+		, NULL
+#endif
+		);
+
+    if (vim_exn_values == NULL)
+    {
+	int	nc = 0;
+
+	Scheme_Object   **exn_names = scheme_make_struct_names(
+		exn_name, scheme_null, 0, &nc);
+	Scheme_Object   **exn_values = scheme_make_struct_values(
+		vim_exn, exn_names, nc, 0);
+
+	vim_exn_names = scheme_make_vector(nc, scheme_false);
+	vim_exn_values = scheme_make_vector(nc, scheme_false);
+	/* remember names and values */
+	mch_memmove(SCHEME_VEC_ELS(vim_exn_names), exn_names,
+		nc * sizeof(Scheme_Object *));
+	mch_memmove(SCHEME_VEC_ELS(vim_exn_values), exn_values,
+		nc * sizeof(Scheme_Object *));
+    }
+
+    add_vim_exn(env);
+}
+
+/*
+ * Add stuff of exn:vim to env
+ */
+    static void
+add_vim_exn(Scheme_Env *env)
+{
+    int i;
+
+    for (i = 0; i < SCHEME_VEC_SIZE(vim_exn_values); i++)
+	scheme_add_global_symbol(SCHEME_VEC_ELS(vim_exn_names)[i],
+		SCHEME_VEC_ELS(vim_exn_values)[i], env);
+}
+
+/*
+ * raise exn:vim, may be with additional info string
+ */
+    void
+raise_vim_exn(const char *add_info)
+{
+    Scheme_Object   *argv[2];
+    char_u	    *fmt = _("Vim error: ~a");
+
+    if (add_info != NULL)
+    {
+	Scheme_Object   *info = scheme_make_string(add_info);
+	argv[0] = scheme_make_string(
+		scheme_format(fmt, strlen(fmt), 1, &info, NULL));
+    }
+    else
+	argv[0] = scheme_make_string(_("Vim error"));
+
+    argv[1] = scheme_current_continuation_marks();
+
+    scheme_raise(scheme_make_struct_instance(vim_exn, 2, argv));
+}
+
+    void
+raise_if_error(void)
+{
+    if (vim_error_check())
+	raise_vim_exn(NULL);
+}
+
+/* get buffer:
+ * either current
+ * or passed as argv[argnum] with checks
+ */
+    static vim_mz_buffer *
+get_buffer_arg(const char *fname, int argnum, int argc, Scheme_Object **argv)
+{
+    vim_mz_buffer *b;
+
+    if (argc < argnum + 1)
+	return get_vim_curr_buffer();
+    if (!SCHEME_VIMBUFFERP(argv[argnum]))
+	scheme_wrong_type(fname, "vim-buffer", argnum, argc, argv);
+    b = (vim_mz_buffer *)argv[argnum];
+    (void)get_valid_buffer(argv[argnum]);
+    return b;
+}
+
+/* get window:
+ * either current
+ * or passed as argv[argnum] with checks
+ */
+    static vim_mz_window *
+get_window_arg(const char *fname, int argnum, int argc, Scheme_Object **argv)
+{
+    vim_mz_window *w;
+
+    if (argc < argnum + 1)
+	return get_vim_curr_window();
+    w = (vim_mz_window *)argv[argnum];
+    if (!SCHEME_VIMWINDOWP(argv[argnum]))
+	scheme_wrong_type(fname, "vim-window", argnum, argc, argv);
+    (void)get_valid_window(argv[argnum]);
+    return w;
+}
+
+/* get valid Vim buffer from Scheme_Object* */
+buf_T *get_valid_buffer(void *obj)
+{
+    buf_T *buf = ((vim_mz_buffer *)obj)->buf;
+
+    if (buf == INVALID_BUFFER_VALUE)
+	scheme_signal_error(_("buffer is invalid"));
+    return buf;
+}
+
+/* get valid Vim window from Scheme_Object* */
+win_T *get_valid_window(void *obj)
+{
+    win_T *win = ((vim_mz_window *)obj)->win;
+    if (win == INVALID_WINDOW_VALUE)
+	scheme_signal_error(_("window is invalid"));
+    return win;
+}
+
+#if 0
+    int
+mzvim_bufferp(Scheme_Object *obj)
+{
+    return SCHEME_VIMBUFFERP(obj);
+}
+
+    int
+mzvim_windowp(Scheme_Object *obj)
+{
+    return SCHEME_VIMWINDOWP(obj);
+}
+#endif
+
+    int
+mzthreads_allowed(void)
+{
+    return mz_threads_allow;
+}
+
+    static int
+line_in_range(linenr_T lnum, buf_T *buf)
+{
+    return (lnum > 0 && lnum <= buf->b_ml.ml_line_count);
+}
+
+    static void
+check_line_range(linenr_T lnum, buf_T *buf)
+{
+    if (!line_in_range(lnum, buf))
+	scheme_signal_error(_("linenr out of range"));
+}
+
+/*
+ * Check if deleting lines made the cursor position invalid
+ * (or you'll get msg from Vim about invalid linenr).
+ * Changed the lines from "lo" to "hi" and added "extra" lines (negative if
+ * deleted). Got from if_python.c
+ */
+    static void
+mz_fix_cursor(int lo, int hi, int extra)
+{
+    if (curwin->w_cursor.lnum >= lo)
+    {
+	/* Adjust the cursor position if it's in/after the changed
+	 * lines. */
+	if (curwin->w_cursor.lnum >= hi)
+	{
+	    curwin->w_cursor.lnum += extra;
+	    check_cursor_col();
+	}
+	else if (extra < 0)
+	{
+	    curwin->w_cursor.lnum = lo;
+	    check_cursor();
+	}
+	changed_cline_bef_curs();
+    }
+    invalidate_botline();
+}
+
+static Vim_Prim prims[]=
+{
+    /*
+     * Buffer-related commands
+     */
+    {get_buffer_line, "get-buff-line", 1, 2},
+    {set_buffer_line, "set-buff-line", 2, 3},
+    {get_buffer_line_list, "get-buff-line-list", 2, 3},
+    {get_buffer_name, "get-buff-name", 0, 1},
+    {get_buffer_num, "get-buff-num", 0, 1},
+    {get_buffer_size, "get-buff-size", 0, 1},
+    {set_buffer_line_list, "set-buff-line-list", 3, 4},
+    {insert_buffer_line_list, "insert-buff-line-list", 2, 3},
+    {get_curr_buffer, "curr-buff", 0, 0},
+    {get_buffer_count, "buff-count", 0, 0},
+    {get_next_buffer, "get-next-buff", 0, 1},
+    {get_prev_buffer, "get-prev-buff", 0, 1},
+    {mzscheme_open_buffer, "open-buff", 1, 1},
+    {get_buffer_by_name, "get-buff-by-name", 1, 1},
+    {get_buffer_by_num, "get-buff-by-num", 1, 1},
+    {get_buffer_namespace, "get-buff-namespace", 0, 1},
+    /*
+     * Window-related commands
+     */
+    {get_curr_win, "curr-win", 0, 0},
+    {get_window_count, "win-count", 0, 0},
+    {get_window_by_num, "get-win-by-num", 1, 1},
+    {get_window_num, "get-win-num", 0, 1},
+    {get_window_buffer, "get-win-buffer", 0, 1},
+    {get_window_height, "get-win-height", 0, 1},
+    {set_window_height, "set-win-height", 1, 2},
+#ifdef FEAT_VERTSPLIT
+    {get_window_width, "get-win-width", 0, 1},
+    {set_window_width, "set-win-width", 1, 2},
+#endif
+    {get_cursor, "get-cursor", 0, 1},
+    {set_cursor, "set-cursor", 1, 2},
+    {get_window_list, "get-win-list", 0, 1},
+    /*
+     * Vim-related commands
+     */
+    {vim_command, "command", 1, 1},
+    {vim_eval, "eval", 1, 1},
+    {get_range_start, "range-start", 0, 0},
+    {get_range_end, "range-end", 0, 0},
+    {mzscheme_beep, "beep", 0, 0},
+    {get_option, "get-option", 1, 2},
+    {set_option, "set-option", 1, 2},
+    /*
+     * small utilities
+     */
+    {vim_bufferp, "buff?", 1, 1},
+    {vim_windowp, "win?", 1, 1},
+    {vim_buffer_validp, "buff-valid?", 1, 1},
+    {vim_window_validp, "win-valid?", 1, 1}
+};
+
+/* return MzScheme wrapper for curbuf */
+    static vim_mz_buffer *
+get_vim_curr_buffer(void)
+{
+    if (!curbuf->mzscheme_ref)
+	return (vim_mz_buffer *)buffer_new(curbuf);
+    else
+	return (vim_mz_buffer *)curbuf->mzscheme_ref;
+}
+
+/* return MzScheme wrapper for curwin */
+    static vim_mz_window *
+get_vim_curr_window(void)
+{
+    if (!curwin->mzscheme_ref)
+	return (vim_mz_window *)window_new(curwin);
+    else
+	return (vim_mz_window *)curwin->mzscheme_ref;
+}
+
+#if 0
+    char *
+mzscheme_version(void)
+{
+    return scheme_version();
+}
+#endif
+
+    static void
+make_modules(Scheme_Env *env)
+{
+    int		i;
+    Scheme_Env	*mod;
+
+    mod = scheme_primitive_module(scheme_intern_symbol("vimext"), env);
+    /* all prims made closed so they can access their own names */
+    for (i = 0; i < sizeof(prims)/sizeof(prims[0]); i++)
+    {
+	Vim_Prim *prim = prims + i;
+	scheme_add_global(prim->name,
+		scheme_make_closed_prim_w_arity(prim->prim, prim, prim->name,
+		    prim->mina, prim->maxa),
+		mod);
+    }
+    scheme_add_global("global-namespace", (Scheme_Object *)environment, mod);
+    scheme_finish_primitive_module(mod);
+}
diff --git a/src/if_mzsch.h b/src/if_mzsch.h
new file mode 100644
index 0000000..88f6a54
--- /dev/null
+++ b/src/if_mzsch.h
@@ -0,0 +1,45 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * MzScheme interface for Vim, wrapper around scheme.h
+ */
+#ifndef _IF_MZSCH_H_
+#define _IF_MZSCH_H_
+#ifdef __MINGW32__
+/* Hack to engage Cygwin-specific settings */
+# define __CYGWIN32__
+#endif
+
+#include <scheme.h>
+
+#ifdef __MINGW32__
+# undef __CYGWIN32__
+#endif
+
+#if MZSCHEME_VERSION_MAJOR >= 299
+/* macros to be compatible with 20x versions */
+# define scheme_config scheme_current_config()
+# define scheme_make_string scheme_make_byte_string
+# define scheme_make_string_output_port scheme_make_byte_string_output_port
+# define scheme_get_sized_string_output scheme_get_sized_byte_string_output
+# define scheme_write_string scheme_write_byte_string
+# define scheme_make_sized_string scheme_make_sized_byte_string
+
+# define SCHEME_STRINGP(obj) (SCHEME_BYTE_STRINGP(obj) || SCHEME_CHAR_STRINGP(obj))
+# define SCHEME_STR_VAL(obj) SCHEME_BYTE_STR_VAL(   \
+		(SCHEME_BYTE_STRINGP(obj) ? obj : scheme_char_string_to_byte_string(obj)))
+# define GUARANTEE_STRING(fname, argnum) GUARANTEE_TYPE(fname, argnum, SCHEME_STRINGP, "string")
+
+# ifdef scheme_format
+#  undef scheme_format
+# endif
+# define scheme_format scheme_format_utf8
+
+# define GET_BYTE_STRING(obj) (SCHEME_BYTE_STRINGP(obj) ? obj :   \
+	scheme_char_string_to_byte_string(obj))
+#else
+# define GET_BYTE_STRING(obj) (obj)
+# define SCHEME_BYTE_STRLEN_VAL SCHEME_STRLEN_VAL
+# define SCHEME_BYTE_STR_VAL SCHEME_STR_VAL
+#endif
+
+#endif /* _IF_MZSCH_H_ */
diff --git a/src/main.c b/src/main.c
index 5fd8339..187726a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2277,6 +2277,9 @@
 	windgoto((int)Rows - 1, 0);
 #endif
 
+#ifdef FEAT_MZSCHEME
+    mzscheme_end();
+#endif
 #ifdef FEAT_TCL
     tcl_end();
 #endif
diff --git a/src/misc1.c b/src/misc1.c
index 6330110..2825c53 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -7377,11 +7377,13 @@
  * - it doesn't know about comments starting with a semicolon
  * - it incorrectly interprets '(' as a character literal
  * All this messes up get_lisp_indent in some rare cases.
+ * Update from Sergey Khorev:
+ * I tried to fix the first two issues.
  */
     int
 get_lisp_indent()
 {
-    pos_T	*pos, realpos;
+    pos_T	*pos, realpos, paren;
     int		amount;
     char_u	*that;
     colnr_T	col;
@@ -7395,7 +7397,16 @@
     realpos = curwin->w_cursor;
     curwin->w_cursor.col = 0;
 
-    if ((pos = findmatch(NULL, '(')) != NULL)
+    if ((pos = findmatch(NULL, '(')) == NULL)
+	pos = findmatch(NULL, '[');
+    else
+    {
+	paren = *pos;
+	pos = findmatch(NULL, '[');
+	if (pos == NULL || ltp(pos, &paren))
+	    pos = &paren;
+    }
+    if (pos != NULL)
     {
 	/* Extra trick: Take the indent of the first previous non-white
 	 * line that is at the same () level. */
@@ -7426,9 +7437,9 @@
 		    while (*that && (*that != '"' || *(that - 1) == '\\'))
 			++that;
 		}
-		if (*that == '(')
+		if (*that == '(' || *that == '[')
 		    ++parencount;
-		else if (*that == ')')
+		else if (*that == ')' || *that == ']')
 		    --parencount;
 	    }
 	    if (parencount == 0)
@@ -7465,7 +7476,8 @@
 		 *   (...))	      of	   (...))
 		 */
 
-		if (!vi_lisp && *that == '(' && lisp_match(that + 1))
+		if (!vi_lisp && (*that == '(' || *that == '[')
+						      && lisp_match(that + 1))
 		    amount += 2;
 		else
 		{
@@ -7483,7 +7495,7 @@
 		    {
 			/* test *that != '(' to accomodate first let/do
 			 * argument if it is more than one line */
-			if (!vi_lisp && *that != '(')
+			if (!vi_lisp && *that != '(' && *that != '[')
 			    firsttry++;
 
 			parencount = 0;
@@ -7499,16 +7511,18 @@
 				    && (!vim_iswhite(*that)
 					|| quotecount
 					|| parencount)
-				    && (!(*that == '('
+				    && (!((*that == '(' || *that == '[')
 					    && !quotecount
 					    && !parencount
 					    && vi_lisp)))
 			    {
 				if (*that == '"')
 				    quotecount = !quotecount;
-				if (*that == '(' && !quotecount)
+				if ((*that == '(' || *that == '[')
+							       && !quotecount)
 				    ++parencount;
-				if (*that == ')' && !quotecount)
+				if ((*that == ')' || *that == ']')
+							       && !quotecount)
 				    --parencount;
 				if (*that == '\\' && *(that+1) != NUL)
 				    amount += lbr_chartabsize_adv(&that,
@@ -7530,7 +7544,7 @@
 	}
     }
     else
-	amount = 0;	/* no matching '(' found, use zero indent */
+	amount = 0;	/* no matching '(' or '[' found, use zero indent */
 
     curwin->w_cursor = realpos;
 
diff --git a/src/option.c b/src/option.c
index 7b8953d..01609c2 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1538,6 +1538,13 @@
     {"mousetime",   "mouset",	P_NUM|P_VI_DEF,
 			    (char_u *)&p_mouset, PV_NONE,
 			    {(char_u *)500L, (char_u *)0L}},
+    {"mzquantum",  "mzq",   P_NUM,
+#ifdef FEAT_MZSCHEME
+			    (char_u *)&p_mzq, PV_NONE,
+#else
+			    (char_u *)NULL, PV_NONE,
+#endif
+			    {(char_u *)100L, (char_u *)100L}},
     {"novice",	    NULL,   P_BOOL|P_VI_DEF,
 			    (char_u *)NULL, PV_NONE,
 			    {(char_u *)FALSE, (char_u *)0L}},
@@ -6807,6 +6814,10 @@
 	if (p_uc && !old_value)
 	    ml_open_files();
     }
+#if defined(FEAT_MZSCHEME) && defined(FEAT_GUI)
+    else if (pp == &p_mzq)
+	mzvim_reset_timer();
+#endif
 
     /* sync undo before 'undolevels' changes */
     else if (pp == &p_ul)
@@ -7081,7 +7092,7 @@
     return opt_idx;
 }
 
-#if defined(FEAT_EVAL) || defined(FEAT_TCL)
+#if defined(FEAT_EVAL) || defined(FEAT_TCL) || defined(FEAT_MZSCHEME)
 /*
  * Get the value for an option.
  *
diff --git a/src/option.h b/src/option.h
index 7e04190..0fa83a5 100644
--- a/src/option.h
+++ b/src/option.h
@@ -572,6 +572,9 @@
 EXTERN char_u	*p_mousem;	/* 'mousemodel' */
 EXTERN long	p_mouset;	/* 'mousetime' */
 EXTERN int	p_more;		/* 'more' */
+#ifdef FEAT_MZSCHEME
+EXTERN long	p_mzq;		/* 'mzquantum */
+#endif
 EXTERN char_u	*p_para;	/* 'paragraphs' */
 EXTERN int	p_paste;	/* 'paste' */
 EXTERN char_u	*p_pt;		/* 'pastetoggle' */
diff --git a/src/os_unix.c b/src/os_unix.c
index 7b9d328..0827645 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -31,6 +31,10 @@
 
 #include "vim.h"
 
+#ifdef FEAT_MZSCHEME
+# include "if_mzsch.h"
+#endif
+
 #ifdef HAVE_FCNTL_H
 # include <fcntl.h>
 #endif
@@ -260,7 +264,8 @@
 #ifdef SIGVTALRM
     {SIGVTALRM,	    "VTALRM",	TRUE},
 #endif
-#ifdef SIGPROF
+#if defined(SIGPROF) && !defined(FEAT_MZSCHEME)
+    /* MzScheme uses SIGPROF for its own needs */
     {SIGPROF,	    "PROF",	TRUE},
 #endif
 #ifdef SIGXCPU
@@ -520,6 +525,9 @@
     int		ignoreinput;
 {
     int		old_tmode;
+#ifdef FEAT_MZSCHEME
+    long	total = msec; /* remember original value */
+#endif
 
     if (ignoreinput)
     {
@@ -534,6 +542,16 @@
 	 * Prefer nanosleep(), some versions of usleep() can only sleep up to
 	 * one second.
 	 */
+#ifdef FEAT_MZSCHEME
+	do
+	{
+	    /* if total is large enough, wait by portions in p_mzq */
+	    if (total > p_mzq)
+		msec = p_mzq;
+	    else
+		msec = total;
+	    total -= msec;
+#endif
 #ifdef HAVE_NANOSLEEP
 	{
 	    struct timespec ts;
@@ -572,6 +590,10 @@
 #  endif /* HAVE_SELECT */
 # endif /* HAVE_NANOSLEEP */
 #endif /* HAVE_USLEEP */
+#ifdef FEAT_MZSCHEME
+	}
+	while (total > 0);
+#endif
 
 	settmode(old_tmode);
     }
@@ -4066,7 +4088,7 @@
     int		*check_for_gpm;
 {
     int		ret;
-#if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP)
+#if defined(FEAT_XCLIPBOARD) || defined(USE_XSMP) || defined(FEAT_MZSCHEME)
     static int	busy = FALSE;
 
     /* May retry getting characters after an event was handled. */
@@ -4081,12 +4103,18 @@
     if (msec > 0 && (
 #  ifdef FEAT_XCLIPBOARD
 	    xterm_Shell != (Widget)0
-#   ifdef USE_XSMP
+#   if defined(USE_XSMP) || defined(FEAT_MZSCHEME)
 	    ||
 #   endif
 #  endif
 #  ifdef USE_XSMP
 	    xsmp_icefd != -1
+#   ifdef FEAT_MZSCHEME
+	    ||
+#   endif
+#  endif
+#  ifdef FEAT_MZSCHEME
+	(mzthreads_allowed() && p_mzq > 0)
 #  endif
 	    ))
 	gettimeofday(&start_tv, NULL);
@@ -4104,6 +4132,9 @@
     {
 #ifdef MAY_LOOP
 	int		finished = TRUE; /* default is to 'loop' just once */
+# ifdef FEAT_MZSCHEME
+	int		mzquantum_used = FALSE;
+# endif
 #endif
 #ifndef HAVE_SELECT
 	struct pollfd   fds[5];
@@ -4117,7 +4148,16 @@
 # ifdef USE_XSMP
 	int		xsmp_idx = -1;
 # endif
+	int		towait = (int)msec;
 
+# ifdef FEAT_MZSCHEME
+	mzvim_check_threads();
+	if (mzthreads_allowed() && p_mzq > 0 && (msec < 0 || msec > p_mzq))
+	{
+	    towait = (int)p_mzq;    /* don't wait longer than 'mzquantum' */
+	    mzquantum_used = TRUE;
+	}
+# endif
 	fds[0].fd = fd;
 	fds[0].events = POLLIN;
 	nfd = 1;
@@ -4159,7 +4199,12 @@
 	}
 # endif
 
-	ret = poll(fds, nfd, (int)msec);
+	ret = poll(fds, nfd, towait);
+# ifdef FEAT_MZSCHEME
+	if (ret == 0 && mzquantum_used)
+	    /* MzThreads scheduling is required and timeout occured */
+	    finished = FALSE;
+# endif
 
 # ifdef FEAT_SNIFF
 	if (ret < 0)
@@ -4203,8 +4248,7 @@
 		xsmp_close();
 	    }
 	    if (--ret == 0)
-		/* Try again */
-		finished = FALSE;
+		finished = FALSE;	/* Try again */
 	}
 # endif
 
@@ -4212,9 +4256,19 @@
 #else /* HAVE_SELECT */
 
 	struct timeval  tv;
+	struct timeval	*tvp;
 	fd_set		rfds, efds;
 	int		maxfd;
+	long		towait = msec;
 
+# ifdef FEAT_MZSCHEME
+	mzvim_check_threads();
+	if (mzthreads_allowed() && p_mzq > 0 && (msec < 0 || msec > p_mzq))
+	{
+	    towait = p_mzq;	/* don't wait longer than 'mzquantum' */
+	    mzquantum_used = TRUE;
+	}
+# endif
 # ifdef __EMX__
 	/* don't check for incoming chars if not in raw mode, because select()
 	 * always returns TRUE then (in some version of emx.dll) */
@@ -4222,11 +4276,14 @@
 	    return 0;
 # endif
 
-	if (msec >= 0)
+	if (towait >= 0)
 	{
-	    tv.tv_sec = msec / 1000;
-	    tv.tv_usec = (msec % 1000) * (1000000/1000);
+	    tv.tv_sec = towait / 1000;
+	    tv.tv_usec = (towait % 1000) * (1000000/1000);
+	    tvp = &tv;
 	}
+	else
+	    tvp = NULL;
 
 	/*
 	 * Select on ready for reading and exceptional condition (end of file).
@@ -4281,7 +4338,12 @@
 	 * required. Should not be used */
 	ret = 0;
 # else
-	ret = select(maxfd + 1, &rfds, NULL, &efds, (msec >= 0) ? &tv : NULL);
+	ret = select(maxfd + 1, &rfds, NULL, &efds, tvp);
+# endif
+# ifdef FEAT_MZSCHEME
+	if (ret == 0 && mzquantum_used)
+	    /* loop if MzThreads must be scheduled and timeout occured */
+	    finished = FALSE;
 # endif
 
 # ifdef FEAT_SNIFF
diff --git a/src/os_win32.c b/src/os_win32.c
index da6fd8d..1c68689 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -23,6 +23,10 @@
 #include <io.h>
 #include "vim.h"
 
+#ifdef FEAT_MZSCHEME
+# include "if_mzsch.h"
+#endif
+
 #ifdef HAVE_FCNTL_H
 # include <fcntl.h>
 #endif
@@ -1097,6 +1101,9 @@
      */
     for (;;)
     {
+#ifdef FEAT_MZSCHEME
+	mzvim_check_threads();
+#endif
 #ifdef FEAT_CLIENTSERVER
 	serverProcessPendingMessages();
 #endif
@@ -1119,14 +1126,20 @@
 	}
 	if (msec != 0)
 	{
+	    DWORD dwWaitTime = dwEndTime - dwNow;
+
+#ifdef FEAT_MZSCHEME
+	    if (mzthreads_allowed() && p_mzq > 0
+				    && (msec < 0 || (long)dwWaitTime > p_mzq))
+		dwWaitTime = p_mzq; /* don't wait longer than 'mzquantum' */
+#endif
 #ifdef FEAT_CLIENTSERVER
 	    /* Wait for either an event on the console input or a message in
 	     * the client-server window. */
 	    if (MsgWaitForMultipleObjects(1, &g_hConIn, FALSE,
-			  dwEndTime - dwNow, QS_SENDMESSAGE) != WAIT_OBJECT_0)
+				 dwWaitTime, QS_SENDMESSAGE) != WAIT_OBJECT_0)
 #else
-	    if (WaitForSingleObject(g_hConIn, dwEndTime - dwNow)
-							     != WAIT_OBJECT_0)
+	    if (WaitForSingleObject(g_hConIn, dwWaitTime) != WAIT_OBJECT_0)
 #endif
 		    continue;
 	}
@@ -4106,9 +4119,26 @@
 {
 #ifdef FEAT_GUI_W32
     Sleep((int)msec);	    /* never wait for input */
-#else
+#else /* Console */
     if (ignoreinput)
-	Sleep((int)msec);
+# ifdef FEAT_MZSCHEME
+	if (mzthreads_allowed() && p_mzq > 0 && msec > p_mzq)
+	{
+	    int towait = p_mzq;
+
+	    /* if msec is large enough, wait by portions in p_mzq */
+	    while (msec > 0)
+	    {
+		mzvim_check_threads();
+		if (msec < towait)
+		    towait = msec;
+		Sleep(towait);
+		msec -= towait;
+	    }
+	}
+	else
+# endif
+	    Sleep((int)msec);
     else
 	WaitForChar(msec);
 #endif
diff --git a/src/proto.h b/src/proto.h
index 2471bb6..4c52d4b 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -146,6 +146,10 @@
 # include "version.pro"
 # include "window.pro"
 
+# ifdef FEAT_MZSCHEME
+#  include "if_mzsch.pro"
+# endif
+
 # ifdef FEAT_PYTHON
 #  include "if_python.pro"
 # endif
diff --git a/src/proto/if_mzsch.pro b/src/proto/if_mzsch.pro
new file mode 100644
index 0000000..4ef1f51
--- /dev/null
+++ b/src/proto/if_mzsch.pro
@@ -0,0 +1,19 @@
+/* if_mzsch.c */
+int mzscheme_enabled __ARGS((int verbose));
+void mzscheme_end __ARGS((void));
+void ex_mzscheme __ARGS((exarg_T *eap));
+void ex_mzfile __ARGS((exarg_T *eap));
+void mzscheme_buffer_free __ARGS((buf_T *buf));
+void mzscheme_window_free __ARGS((win_T *win));
+char *mzscheme_version __ARGS((void));
+void raise_vim_exn(const char *add_info);
+void raise_if_error __ARGS((void));
+buf_T *get_valid_buffer __ARGS((void *));
+win_T *get_valid_window __ARGS((void *));
+void mzvim_check_threads __ARGS((void));
+void mzvim_reset_timer __ARGS((void));
+void *mzvim_eval_string __ARGS((char_u *str));
+struct Scheme_Object *mzvim_apply __ARGS((struct Scheme_Object *, int argc,
+    struct Scheme_Object **));
+int mzthreads_allowed (void);
+/* vim: set ft=c : */
diff --git a/src/search.c b/src/search.c
index ddf2feb..227b254 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1558,6 +1558,10 @@
     int		match_escaped = 0;	/* search for escaped match */
     int		dir;			/* Direction to search */
     int		comment_col = MAXCOL;   /* start of / / comment */
+#ifdef FEAT_LISP
+    int		lispcomm = FALSE;	/* inside of Lisp-style comment */
+    int		lisp = curbuf->b_p_lisp; /* engage Lisp-specific hacks ;) */
+#endif
 
     pos = curwin->w_cursor;
     linep = ml_get(pos.lnum);
@@ -1822,8 +1826,16 @@
     do_quotes = -1;
     start_in_quotes = MAYBE;
     /* backward search: Check if this line contains a single-line comment */
-    if (backwards && comment_dir)
+    if ((backwards && comment_dir)
+#ifdef FEAT_LISP
+	    || lisp
+#endif
+	    )
 	comment_col = check_linecomment(linep);
+#ifdef FEAT_LISP
+    if (lisp && comment_col != MAXCOL && pos.col > (colnr_T)comment_col)
+	lispcomm = TRUE;    /* find match inside this comment */
+#endif
     while (!got_int)
     {
 	/*
@@ -1832,6 +1844,11 @@
 	 */
 	if (backwards)
 	{
+#ifdef FEAT_LISP
+	    /* char to match is inside of comment, don't search outside */
+	    if (lispcomm && pos.col < (colnr_T)comment_col)
+		break;
+#endif
 	    if (pos.col == 0)		/* at start of line, go to prev. one */
 	    {
 		if (pos.lnum == 1)	/* start of file */
@@ -1847,8 +1864,17 @@
 		line_breakcheck();
 
 		/* Check if this line contains a single-line comment */
-		if (comment_dir)
+		if (comment_dir
+#ifdef FEAT_LISP
+			|| lisp
+#endif
+			)
 		    comment_col = check_linecomment(linep);
+#ifdef FEAT_LISP
+		/* skip comment */
+		if (lisp && comment_col != MAXCOL)
+		    pos.col = comment_col;
+#endif
 	    }
 	    else
 	    {
@@ -1861,9 +1887,22 @@
 	}
 	else				/* forward search */
 	{
-	    if (linep[pos.col] == NUL)	/* at end of line, go to next one */
+	    if (linep[pos.col] == NUL
+		    /* at end of line, go to next one */
+#ifdef FEAT_LISP
+		    /* don't search for match in comment */
+		    || (lisp && comment_col != MAXCOL
+					   && pos.col == (colnr_T)comment_col)
+#endif
+		    )
 	    {
-		if (pos.lnum == curbuf->b_ml.ml_line_count) /* end of file */
+		if (pos.lnum == curbuf->b_ml.ml_line_count  /* end of file */
+#ifdef FEAT_LISP
+			/* line is exhausted and comment with it,
+			 * don't search for match in code */
+			 || lispcomm
+#endif
+			 )
 		    break;
 		++pos.lnum;
 
@@ -1874,6 +1913,10 @@
 		pos.col = 0;
 		do_quotes = -1;
 		line_breakcheck();
+#ifdef FEAT_LISP
+		if (lisp)   /* find comment pos in new line */
+		    comment_col = check_linecomment(linep);
+#endif
 	    }
 	    else
 	    {
@@ -2094,11 +2137,15 @@
 
 	default:
 #ifdef FEAT_LISP
-	    /* For Lisp skip over backslashed (), {} and []. */
+	    /*
+	     * For Lisp skip over backslashed (), {} and [].
+	     * (actually, we skip #\( et al)
+	     */
 	    if (curbuf->b_p_lisp
 		    && vim_strchr((char_u *)"(){}[]", c) != NULL
-		    && pos.col > 0
-		    && check_prevcol(linep, pos.col, '\\', NULL))
+		    && pos.col > 1
+		    && check_prevcol(linep, pos.col, '\\', NULL)
+		    && check_prevcol(linep, pos.col - 1, '#', NULL))
 		break;
 #endif
 
@@ -2151,6 +2198,40 @@
     char_u  *p;
 
     p = line;
+#ifdef FEAT_LISP
+    /* skip Lispish one-line comments */
+    if (curbuf->b_p_lisp)
+    {
+	if (vim_strchr(p, ';') != NULL) /* there may be comments */
+	{
+	    int instr = FALSE;	/* inside of string */
+
+	    p = line;		/* scan from start */
+	    while ((p = vim_strpbrk(p, "\";")) != NULL)
+	    {
+		if (*p == '"')
+		{
+		    if (instr)
+		    {
+			if (*(p - 1) != '\\') /* skip escaped quote */
+			    instr = FALSE;
+		    }
+		    else if (p == line || ((p - line) >= 2
+				      /* skip #\" form */
+				      && *(p - 1) != '\\' && *(p - 2) != '#'))
+			instr = TRUE;
+		}
+		else if (!instr && ((p - line) < 2
+				    || (*(p - 1) != '\\' && *(p - 2) != '#')))
+		    break;	/* found! */
+		++p;
+	    }
+	}
+	else
+	    p = NULL;
+    }
+    else
+#endif
     while ((p = vim_strchr(p, '/')) != NULL)
     {
 	if (p[1] == '/')
diff --git a/src/structs.h b/src/structs.h
index 8e4f49a..4f3b11f 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1209,12 +1209,16 @@
     int		b_shortname;	/* this file has an 8.3 file name */
 #endif
 
+#ifdef FEAT_MZSCHEME
+    void	*mzscheme_ref;	/* The MzScheme reference to this buffer */
+#endif
+
 #ifdef FEAT_PERL
     void	*perl_private;
 #endif
 
 #ifdef FEAT_PYTHON
-    void	*python_ref;	/* The Python value referring to this buffer */
+    void	*python_ref;	/* The Python reference to this buffer */
 #endif
 
 #ifdef FEAT_TCL
@@ -1591,6 +1595,11 @@
     int		w_nrwidth_width;	/* nr of chars to print line count. */
 #endif
 
+
+#ifdef FEAT_MZSCHEME
+    void	    *mzscheme_ref;	/* The MzScheme value referring to this window */
+#endif
+
 #ifdef FEAT_PERL
     void	*perl_private;
 #endif
diff --git a/src/version.c b/src/version.c
index a51550f..e656314 100644
--- a/src/version.c
+++ b/src/version.c
@@ -370,6 +370,11 @@
 #else
 	"-multi_lang",
 #endif
+#ifdef FEAT_MZSCHEME
+	"+mzscheme",
+#else
+	"-mzscheme",
+#endif
 #ifdef FEAT_NETBEANS_INTG
 	"+netbeans_intg",
 #else
diff --git a/src/vim.h b/src/vim.h
index a4c9d59..eb7d2a7 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -15,6 +15,7 @@
     defined(FEAT_PYTHON) || \
     defined(FEAT_RUBY) || \
     defined(FEAT_TCL) || \
+    defined(FEAT_MZSCHEME) || \
     defined(DYNAMIC_GETTEXT) || \
     defined(DYNAMIC_ICONV) || \
     defined(DYNAMIC_IME) || \
diff --git a/src/window.c b/src/window.c
index dc63e09..47da663 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3106,6 +3106,10 @@
 {
     int		i;
 
+#ifdef FEAT_MZSCHEME
+    mzscheme_window_free(wp);
+#endif
+
 #ifdef FEAT_PERL
     perl_win_free(wp);
 #endif