To: vim-dev@vim.org Subject: Patch 6.1.446 (extra) Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 6.1.446 (extra) Problem: Win32: The MingW makefile uses a different style of arguments than other makefiles. Dynamic IME is not supported for Cygwin. Solution: Use "no" and "yes" style arguments. Remove the use of the dyn-ming.h include file. (Dan Sharp) Do not include the ime.h file and adjust the makefile. (Alejandro Lopez-Valencia) Files: src/Make_cyg.mak, src/Make_ming.mak, src/gui_w32.c, src/if_perl.xs, src/if_python.c, src/if_ruby.c, src/os_win32.c *** ../vim61.445/src/Make_cyg.mak Sat Mar 15 17:55:18 2003 --- src/Make_cyg.mak Tue Apr 1 21:30:37 2003 *************** *** 4,10 **** # This compiles Vim as a Windows application. If you want Vim to run as a # Cygwin application use the Makefile (just like on Unix). # ! # Last updated by Dan Sharp. Last Change: 2003 Mar 14 # # GUI no or yes: set to yes if you want the GUI version (yes) # PERL define to path to Perl dir to get Perl support (not defined) --- 4,10 ---- # This compiles Vim as a Windows application. If you want Vim to run as a # Cygwin application use the Makefile (just like on Unix). # ! # Last updated by Dan Sharp. Last Change: 2003 Mar 20 # # GUI no or yes: set to yes if you want the GUI version (yes) # PERL define to path to Perl dir to get Perl support (not defined) *************** *** 21,26 **** --- 21,27 ---- # DYNAMIC_RUBY no or yes: use yes to load the Ruby DLL dynamically (yes) # GETTEXT no or yes: set to yes for dynamic gettext support (yes) # ICONV no or yes: set to yes for dynamic iconv support (yes) + # IME no or yes: set to yes to include IME support (no) # OLE no or yes: set to yes to make OLE gvim (no) # DEBUG no or yes: set to yes if you wish a DEBUGging build (no) # CPUNR i386 through pentium4: select -mcpu argument to compile with (i386) *************** *** 46,51 **** --- 47,56 ---- ICONV = yes endif + ifndef IME + IME = no + endif + ifndef USEDLL USEDLL = no endif *************** *** 150,155 **** --- 155,166 ---- endif ############################## + ifeq (yes, $(IME)) + DEFINES += -DFEAT_MBYTE_IME -DDYNAMIC_IME + EXTRA_LIBS += -limm32 + endif + + ############################## ifeq (yes, $(DEBUG)) DEFINES += -DDEBUG INCLUDES += -g -fstack-check *************** *** 293,299 **** -$(DEL) *.exe -$(DEL) *.~ -$(DEL) *~ - -$(DEL) dyn-ming.h -$(DEL) if_perl.c -$(DEL) pathdef.c cd xxd ; $(MAKE) -f Make_cyg.mak clean; cd .. --- 304,309 ---- *************** *** 352,375 **** perl $(PERL)/lib/ExtUtils/xsubpp -prototypes -typemap \ $(PERL)/lib/ExtUtils/typemap if_perl.xs > $@ ! $(OUTDIR)/if_perl.o: if_perl.c $(INCL) dyn-ming.h ifeq (no, $(USEDLL)) $(CC) -c $(CFLAGS) if_perl.c -o $(OUTDIR)/if_perl.o else $(CC) -c $(CFLAGS) -I/usr/include/mingw -D__MINGW32__ if_perl.c -o $(OUTDIR)/if_perl.o endif ! $(OUTDIR)/if_python.o: if_python.c $(INCL) dyn-ming.h $(CC) -c $(CFLAGS) if_python.c -o $(OUTDIR)/if_python.o ! $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) dyn-ming.h ifeq (no, $(USEDLL)) $(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o else $(CC) -c $(CFLAGS) if_ruby.c -o $(OUTDIR)/if_ruby.o endif ! $(OUTDIR)/if_tcl.o: if_tcl.c $(INCL) dyn-ming.h $(CC) -c $(CFLAGS) if_tcl.c -o $(OUTDIR)/if_tcl.o $(OUTDIR)/main.o: main.c $(INCL) --- 362,385 ---- perl $(PERL)/lib/ExtUtils/xsubpp -prototypes -typemap \ $(PERL)/lib/ExtUtils/typemap if_perl.xs > $@ ! $(OUTDIR)/if_perl.o: if_perl.c $(INCL) ifeq (no, $(USEDLL)) $(CC) -c $(CFLAGS) if_perl.c -o $(OUTDIR)/if_perl.o else $(CC) -c $(CFLAGS) -I/usr/include/mingw -D__MINGW32__ if_perl.c -o $(OUTDIR)/if_perl.o endif ! $(OUTDIR)/if_python.o: if_python.c $(INCL) $(CC) -c $(CFLAGS) if_python.c -o $(OUTDIR)/if_python.o ! $(OUTDIR)/if_ruby.o: if_ruby.c $(INCL) ifeq (no, $(USEDLL)) $(CC) -c $(CFLAGS) -U_WIN32 if_ruby.c -o $(OUTDIR)/if_ruby.o else $(CC) -c $(CFLAGS) if_ruby.c -o $(OUTDIR)/if_ruby.o endif ! $(OUTDIR)/if_tcl.o: if_tcl.c $(INCL) $(CC) -c $(CFLAGS) if_tcl.c -o $(OUTDIR)/if_tcl.o $(OUTDIR)/main.o: main.c $(INCL) *************** *** 458,473 **** $(OUTDIR)/window.o: window.c $(INCL) $(CC) -c $(CFLAGS) window.c -o $(OUTDIR)/window.o - - # If USEDLL=no, then __MINGW32__ is defined and this file is included by - # the interfaces. It is not really needed, so just make a dummy file to - # placate the compile. - dyn-ming.h: - ifneq (sh.exe, $(SHELL)) - @echo \/\* created by make \*\/ > dyn-ming.h - else - @echo /* created by make */ > dyn-ming.h - endif pathdef.c: @echo creating pathdef.c --- 468,473 ---- *** ../vim61.445/src/Make_ming.mak Sat Mar 15 17:55:18 2003 --- src/Make_ming.mak Sun Apr 6 15:11:24 2003 *************** *** 22,33 **** # updated 2003 Jan 20 #>>>>> choose options: ! # set to '1' for a debug build ! DEBUG=0 # set to 1 for size, 0 for speed OPTSIZE=0 ! # set to 1 to make gvim, 0 for vim ! GUI=1 # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] # set to TINY to make minimal version (few features) FEATURES=BIG --- 22,33 ---- # updated 2003 Jan 20 #>>>>> choose options: ! # set to yes for a debug build ! DEBUG=no # set to 1 for size, 0 for speed OPTSIZE=0 ! # set to yes to make gvim, no for vim ! GUI=yes # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE] # set to TINY to make minimal version (few features) FEATURES=BIG *************** *** 35,46 **** CPUNR=i686 # set to same choices as 'CPUNR', but will prevent running on 'lower' cpus: ARCH=i386 ! # set to '1' to cross-compile from unix; 0=native Windows ! CROSS=0 # set to path to iconv.h and libiconv.a to enable using 'iconv.dll' #ICONV="." ! # set to 1 to enable writing a postscript file with :hardcopy ! POSTSCRIPT=0 # Added by E.F. Amatria 2001 Feb 23 # Uncomment the first line and one of the following three if you want Native Language --- 35,50 ---- CPUNR=i686 # set to same choices as 'CPUNR', but will prevent running on 'lower' cpus: ARCH=i386 ! # set to yes to cross-compile from unix; no=native Windows ! CROSS=no # set to path to iconv.h and libiconv.a to enable using 'iconv.dll' #ICONV="." ! # set to yes to include IME support ! IME=no ! # set to yes to enable writing a postscript file with :hardcopy ! POSTSCRIPT=no ! # set to yes to enable OLE support ! OLE=no # Added by E.F. Amatria 2001 Feb 23 # Uncomment the first line and one of the following three if you want Native Language *************** *** 71,88 **** #INTLLIB=intl # uncomment 'PERL' if you want a perl-enabled version ! #PERL=perl ifdef PERL ifndef PERL_VER PERL_VER=56 endif endif - DYNAMIC_PERL=perl$(PERL_VER).dll # on Linux, for cross-compile, it's here: #PERLLIB=/home/ron/ActivePerl/lib # on NT, it's here: ! PERLLIB=c:/perl/lib PERLLIBS=$(PERLLIB)/Core # Python support -- works with the ActiveState python 2.0 release (and others # too, probably) --- 75,94 ---- #INTLLIB=intl # uncomment 'PERL' if you want a perl-enabled version ! #PERL=C:/perl ifdef PERL ifndef PERL_VER PERL_VER=56 endif + ifndef DYNAMIC_PERL + DYNAMIC_PERL=yes endif # on Linux, for cross-compile, it's here: #PERLLIB=/home/ron/ActivePerl/lib # on NT, it's here: ! PERLLIB=$(PERL)/lib PERLLIBS=$(PERLLIB)/Core + endif # Python support -- works with the ActiveState python 2.0 release (and others # too, probably) *************** *** 100,122 **** # on my NT box, it's here: #PYTHON=c:/python20 - # to make a vim version that autoloads python if available. You do want this! - PYTHON_VER=20 - DYNAMIC_PYTHON=python$(PYTHON_VER).dll - ifdef PYTHON ifndef DYNAMIC_PYTHON PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER) endif # my include files are in 'win32inc' on Linux, and 'include' in the standard # NT distro (ActiveState) ! ifeq ($(CROSS),0) PYTHONINC=-I $(PYTHON)/include else PYTHONINC=-I $(PYTHON)/win32inc endif endif # Ruby interface: # RUBY=[Path to Ruby directory] --- 106,147 ---- # on my NT box, it's here: #PYTHON=c:/python20 ifdef PYTHON ifndef DYNAMIC_PYTHON + DYNAMIC_PYTHON=yes + endif + + ifndef PYTHON_VER + PYTHON_VER=20 + endif + + ifeq (no,$(DYNAMIC_PYTHON)) PYTHONLIB=-L$(PYTHON)/libs -lpython$(PYTHON_VER) endif # my include files are in 'win32inc' on Linux, and 'include' in the standard # NT distro (ActiveState) ! ifeq ($(CROSS),no) PYTHONINC=-I $(PYTHON)/include else PYTHONINC=-I $(PYTHON)/win32inc endif endif + # TCL interface: + # TCL=[Path to TCL directory] + # DYNAMIC_TCL=yes (to load the TCL DLL dynamically) + # TCL_VER=[TCL version, eg 83, 84] (default is 83) + #TCL=c:/tcl + ifdef TCL + ifndef DYNAMIC_TCL + DYNAMIC_TCL=yes + endif + ifndef TCL_VER + TCL_VER = 83 + endif + TCLINC += -I$(TCL)/include + endif + # Ruby interface: # RUBY=[Path to Ruby directory] *************** *** 125,135 **** # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) # You must set RUBY_VER_LONG when change RUBY_VER. #RUBY=c:/ruby - DYNAMIC_RUBY=yes - # - # Support Ruby interface - # ifdef RUBY # Set default value ifndef RUBY_VER RUBY_VER = 16 --- 150,159 ---- # RUBY_VER_LONG=[Ruby version, eg 1.6, 1.7] (default is 1.6) # You must set RUBY_VER_LONG when change RUBY_VER. #RUBY=c:/ruby ifdef RUBY + ifndef DYNAMIC_RUBY + DYNAMIC_RUBY=yes + endif # Set default value ifndef RUBY_VER RUBY_VER = 16 *************** *** 142,150 **** endif RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER) - #RUBY_OBJ = $(OUTDIR)\if_ruby.obj RUBYINC =-I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) ! ifndef DYNAMIC_RUBY RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) endif --- 166,173 ---- endif RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_VER) RUBYINC =-I $(RUBY)/lib/ruby/$(RUBY_VER_LONG)/$(RUBY_PLATFORM) ! ifeq (no, $(DYNAMIC_RUBY)) RUBYLIB = -L$(RUBY)/lib -l$(RUBY_INSTALL_NAME) endif *************** *** 155,161 **** DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD -DFEAT_BIG DEF_MIN=-DFEAT_SMALL DEFINES=-DWIN32 -DPC ! ifeq ($(CROSS),1) # cross-compiler: CC = i586-pc-mingw32msvc-gcc DEL = rm --- 178,184 ---- DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD -DFEAT_BIG DEF_MIN=-DFEAT_SMALL DEFINES=-DWIN32 -DPC ! ifeq ($(CROSS),yes) # cross-compiler: CC = i586-pc-mingw32msvc-gcc DEL = rm *************** *** 184,221 **** ifdef DYNAMIC_GETTEXT DEFINES +=-D$(DYNAMIC_GETTEXT) ifdef GETTEXT_DYNAMIC ! DEFINES += -DGETTEXT_DYNAMIC endif endif endif ifdef PERL CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -L$(PERLLIBS) ! ifdef DYNAMIC_PERL ! CFLAGS += -DDYNAMIC_PERL endif endif ifdef RUBY CFLAGS += -DFEAT_RUBY $(RUBYINC) ! ifdef DYNAMIC_RUBY ! CFLAGS += -DDYNAMIC_RUBY ! DYNAMIC_RUBY_DLL = "$(RUBY_INSTALL_NAME).dll" endif endif ifdef PYTHON CFLAGS += -DFEAT_PYTHON $(PYTHONINC) ! ifdef DYNAMIC_PYTHON ! CFLAGS += -DDYNAMIC_PYTHON endif endif ! ifeq ($(POSTSCRIPT),1) CFLAGS += -DMSWINPS endif ! ifeq ($(DEBUG),1) CFLAGS += -g -fstack-check else CFLAGS += -s --- 207,254 ---- ifdef DYNAMIC_GETTEXT DEFINES +=-D$(DYNAMIC_GETTEXT) ifdef GETTEXT_DYNAMIC ! DEFINES += -DGETTEXT_DYNAMIC -DGETTEXT_DLL=\"$(GETTEXT_DYNAMIC)\" endif endif endif ifdef PERL CFLAGS += -I$(PERLLIBS) -DFEAT_PERL -L$(PERLLIBS) ! ifeq (yes, $(DYNAMIC_PERL)) ! CFLAGS += -DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl$(PERL_VER).dll\" endif endif ifdef RUBY CFLAGS += -DFEAT_RUBY $(RUBYINC) ! ifeq (yes, $(DYNAMIC_RUBY)) ! CFLAGS += -DDYNAMIC_RUBY -DDYNAMIC_RUBY_DLL=\"$(RUBY_INSTALL_NAME).dll\" endif endif ifdef PYTHON CFLAGS += -DFEAT_PYTHON $(PYTHONINC) ! ifeq (yes, $(DYNAMIC_PYTHON)) ! CFLAGS += -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python$(PYTHON_VER).dll\" ! endif ! endif ! ! ifdef TCL ! CFLAGS += -DFEAT_TCL $(TCLINC) ! ifeq (yes, $(DYNAMIC_TCL)) ! CFLAGS += -DDYNAMIC_TCL -DDYNAMIC_TCL_DLL=\"tcl$(TCL_VER).dll\" endif endif ! ifeq ($(POSTSCRIPT),yes) CFLAGS += -DMSWINPS endif ! ifeq (yes, $(OLE)) ! CFLAGS += -DFEAT_OLE ! endif ! ! ifeq ($(DEBUG),yes) CFLAGS += -g -fstack-check else CFLAGS += -s *************** *** 227,238 **** CFLAGS += -O3 endif endif ! ifeq ($(GUI),1) TARGET := gvim.exe else TARGET := vim.exe endif ! ifeq ($(MIN),1) DEFINES += $(DEF_MIN) endif --- 260,271 ---- CFLAGS += -O3 endif endif ! ifeq ($(GUI),yes) TARGET := gvim.exe else TARGET := vim.exe endif ! ifeq ($(MIN),yes) DEFINES += $(DEF_MIN) endif *************** *** 252,257 **** --- 285,293 ---- ifdef RUBY SRC += if_ruby.c endif + ifdef TCL + SRC += if_tcl.c + endif GUIOBJ = $(GUISRC:.c=.o) *************** *** 271,281 **** endif ifdef PERL ! ifndef DYNAMIC_PERL ! LIB += -lperl endif endif ifdef ICONV LIB += -L$(ICONV) DEFINES+=-DDYNAMIC_ICONV --- 307,336 ---- endif ifdef PERL ! ifeq (no, $(DYNAMIC_PERL)) ! LIB += -lperl$(PERL_VER) endif endif + ifdef TCL + LIB += -L$(TCL)/lib + ifeq (yes, $(DYNAMIC_TCL)) + LIB += -ltclstub$(TCL_VER) + else + LIB += -ltcl$(TCL_VER) + endif + endif + + ifeq (yes, $(OLE)) + LIB += -loleaut32 -lstdc++ + OBJ += if_ole.o + endif + + ifeq (yes, $(IME)) + DEFINES += -DFEAT_MBYTE_IME -DDYNAMIC_IME + LIB += -limm32 + endif + ifdef ICONV LIB += -L$(ICONV) DEFINES+=-DDYNAMIC_ICONV *************** *** 323,329 **** else -$(DEL) xxd\*.exe endif - -$(DEL) dyn-ming.h ifdef PERL -$(DEL) if_perl.c endif --- 378,383 ---- *************** *** 341,389 **** $(OBJ) $(GUIOBJ): $(INCL) ! if_ruby.c: dyn-ming.h ! ! if_python.c: dyn-ming.h ! ! if_perl.c: dyn-ming.h if_perl.xs typemap ! $(PERL) $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ ! ! os_win32.c: dyn-ming.h ! ! # $(SHELL) is set to sh.exe by default, it is reset to the ABSOLUT path if a ! # sh.exe is found; therefore ifeq ("sh.exe", $(SHELL)) means no sh was found ! # and the shell used is the dos shell ! dyn-ming.h: ! ifneq (sh.exe, $(SHELL)) ! @echo \/\* created by make \*\/ > dyn-ming.h ! else ! @echo /* created by make */ > dyn-ming.h ! endif ! ifdef DYNAMIC_PERL ! ifneq (sh.exe, $(SHELL)) ! @echo \#define DYNAMIC_PERL_DLL \"$(DYNAMIC_PERL)\" >> dyn-ming.h ! else ! @echo #define DYNAMIC_PERL_DLL "$(DYNAMIC_PERL)" >> dyn-ming.h ! endif ! endif ! ifdef DYNAMIC_RUBY ! ifneq (sh.exe, $(SHELL)) ! @echo \#define DYNAMIC_RUBY_DLL \"$(DYNAMIC_RUBY_DLL)\" >> dyn-ming.h ! else ! @echo #define DYNAMIC_RUBY_DLL "$(DYNAMIC_RUBY_DLL)" >> dyn-ming.h ! endif ! endif ! ifdef DYNAMIC_PYTHON ! ifneq (sh.exe, $(SHELL)) ! @echo \#define DYNAMIC_PYTHON_DLL \"$(DYNAMIC_PYTHON)\" >> dyn-ming.h ! else ! @echo #define DYNAMIC_PYTHON_DLL "$(DYNAMIC_PYTHON)" >> dyn-ming.h ! endif ! endif ! ifdef GETTEXT_DYNAMIC ! ifneq (sh.exe, $(SHELL)) ! @echo \#define GETTEXT_DLL \"$(GETTEXT_DYNAMIC)\" >> dyn-ming.h ! else ! @echo #define GETTEXT_DLL "$(GETTEXT_DYNAMIC)" >> dyn-ming.h ! endif ! endif --- 395,405 ---- $(OBJ) $(GUIOBJ): $(INCL) ! if_ole.o: if_ole.cpp ! $(CC) $(CFLAGS) -D__IID_DEFINED__ -c -o if_ole.o if_ole.cpp ! ! if_ruby.o: if_ruby.c ! $(CC) $(CFLAGS) -U_WIN32 -c -o if_ruby.o if_ruby.c ! ! if_perl.c: if_perl.xs typemap ! perl $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap $(PERLLIB)/ExtUtils/typemap if_perl.xs > $@ *** ../vim61.445/src/gui_w32.c Mon Mar 31 22:44:28 2003 --- src/gui_w32.c Mon Mar 31 22:36:51 2003 *************** *** 1202,1209 **** * Multi-byte handling, originally by Sung-Hoon Baek. * First static functions (no prototypes generated). */ ! ! #include #include /* --- 1202,1210 ---- * Multi-byte handling, originally by Sung-Hoon Baek. * First static functions (no prototypes generated). */ ! #ifdef __MSVC ! # include /* Apparently not needed for Cygwin, MingW or Borland. */ ! #endif #include /* *************** *** 1348,1354 **** static char_u * GetResultStr(HWND hwnd, int GCS) { ! DWORD dwBufLen; /* Stogare for len. of composition str. */ int buflen; HIMC hIMC; /* Input context handle. */ unsigned short *buf = NULL; --- 1350,1356 ---- static char_u * GetResultStr(HWND hwnd, int GCS) { ! DWORD dwBufLen; /* Storage for len. of composition str. */ int buflen; HIMC hIMC; /* Input context handle. */ unsigned short *buf = NULL; *** ../vim61.445/src/if_perl.xs Sun Feb 16 22:21:17 2003 --- src/if_perl.xs Tue Apr 1 21:30:37 2003 *************** *** 95,104 **** static void VIM_init __ARGS((void)); EXTERN_C void boot_DynaLoader __ARGS((pTHX_ CV*)); - #ifdef __MINGW32__ - # include "dyn-ming.h" - #endif - /* * For dynamic linked perl. (Windows) */ --- 95,100 ---- *** ../vim61.445/src/if_python.c Sat Mar 15 17:55:18 2003 --- src/if_python.c Tue Apr 1 21:30:37 2003 *************** *** 48,57 **** #undef main /* Defined in python.h - aargh */ #undef HAVE_FCNTL_H /* Clash with os_win32.h */ - #ifdef __MINGW32__ - # include "dyn-ming.h" - #endif - #if !defined(FEAT_PYTHON) && defined(PROTO) /* Use this to be able to generate prototypes without python being used. */ # define PyObject int --- 48,53 ---- *** ../vim61.445/src/if_ruby.c Sun Nov 4 13:44:01 2001 --- src/if_ruby.c Tue Apr 1 21:30:37 2003 *************** *** 11,20 **** #include #include - #ifdef __MINGW32__ - # include "dyn-ming.h" - #endif - #ifdef _WIN32 # define NT # ifndef DYNAMIC_RUBY --- 11,16 ---- *** ../vim61.445/src/os_win32.c Sat Mar 15 17:55:18 2003 --- src/os_win32.c Tue Apr 1 21:30:37 2003 *************** *** 32,41 **** #include #include - #if defined(__MINGW32__) && defined(GETTEXT_DYNAMIC) - # include "dyn-ming.h" - #endif - #undef chdir #ifdef __GNUC__ # ifndef __MINGW32__ --- 32,37 ---- *** ../vim61.445/src/version.c Sun Apr 6 15:03:45 2003 --- src/version.c Sun Apr 6 15:13:51 2003 *************** *** 613,614 **** --- 613,616 ---- { /* Add new patch number below this line */ + /**/ + 446, /**/ -- ARTHUR: Did you say shrubberies? ROGER: Yes. Shrubberies are my trade. I am a shrubber. My name is Roger the Shrubber. I arrange, design, and sell shrubberies. "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// Creator of Vim - Vi IMproved -- http://www.Vim.org \\\ \\\ Project leader for A-A-P -- http://www.A-A-P.org /// \\\ Help AIDS victims, buy at Amazon -- http://ICCF.nl/click1.html ///