changeset 2342:f6540762173d vim73

Fixes and improvements for MS-Windows build.
author Bram Moolenaar <bram@vim.org>
date Sun, 18 Jul 2010 21:42:34 +0200
parents 9272cc83214f
children 0703d2fd5749
files runtime/doc/if_perl.txt runtime/doc/if_ruby.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/version7.txt src/Make_mvc.mak src/Makefile src/bigvim.bat src/if_python3.c src/undo.c src/version.h
diffstat 11 files changed, 109 insertions(+), 75 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -272,11 +272,16 @@ This means that Vim will search for the 
 you don't use the Perl interface you don't need it, thus you can use Vim
 without this DLL file.
 
-To use the Perl interface the Perl DLL must be in your search path.  In a
-console window type "path" to see what directories are used.
+You can download Perl from http://www.perl.org.  The one from ActiveState was
+used for building Vim.
+
+To use the Perl interface the Perl DLL must be in your search path.
+If Vim reports it cannot find the perl512.dll, make sure your $PATH includes
+the directory where it is localted.  The Perl installer normally does that.
+In a console window type "path" to see what directories are used.
 
 The name of the DLL must match the Perl version Vim was compiled with.
-Currently the name is "perl58.dll".  That is for Perl 5.8.  To know for
+Currently the name is "perl512.dll".  That is for Perl 5.12.  To know for
 sure edit "gvim.exe" and search for "perl\d*.dll\c".
 
 ==============================================================================
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -194,12 +194,20 @@ This means that Vim will search for the 
 you don't use the Ruby interface you don't need it, thus you can use Vim
 without this DLL file.
 
+You need to install the right version of Ruby for this to work.  You can find
+the package to download from:
+http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html
+Currently that is ruby-1.9.1-p429-i386-mswin32.zip
+
 To use the Ruby interface the Ruby DLL must be in your search path.  In a
 console window type "path" to see what directories are used.
 
 The name of the DLL must match the Ruby version Vim was compiled with.
-Currently the name is "ruby18.dll".  That is for Ruby 1.8.  To know for sure
-edit "gvim.exe" and search for "ruby\d*.dll\c".
+Currently the name is "msvcrt-ruby191.dll".  That is for Ruby 1.9.1.  To know
+for sure edit "gvim.exe" and search for "ruby\d*.dll\c".
+
+If you want to build Vim with Ruby 1.9.1, you need to edit the config.h file
+and comment-out the check for _MSC_VER.
 
 ==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -585,9 +585,7 @@
 'norevins'	options.txt	/*'norevins'*
 'nori'	options.txt	/*'nori'*
 'norightleft'	options.txt	/*'norightleft'*
-'norightleftcmd'	options.txt	/*'norightleftcmd'*
 'norl'	options.txt	/*'norl'*
-'norlc'	options.txt	/*'norlc'*
 'nornu'	options.txt	/*'nornu'*
 'noro'	options.txt	/*'noro'*
 'nors'	options.txt	/*'nors'*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1088,11 +1088,9 @@ 2010 Jun 30)
 
 
 Before (beta) release 7.3:
-- Add fixes for 7.2 to version7.txt
-- Add hg history to version7.txt
-- Remove UF_VERSION_CRYPT_PREV and UF_VERSION_PREV.
 - Documentation for Python 3 support.
-- Build the MS-Windows version with Python 2.6.5 and 3.1.2?
+- Build the MS-Windows version with Ruby 1.91.  How?
+- Build the MS-Windows version with newer Perl version?
 
 Before release 7.3:
 - Rename vim73 branch to default (hints: Xavier de Gaye, 2010 May 23)
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -7214,6 +7214,8 @@ the "Edit with Vim" context menu.
 The gvim executable is 32 bits, the installed gvimext.dll is either a 32 or 64
 bit version. (mostly by George Reilly)
 Made the DOS installer work with more compilers.
+The MS-Windows big gvim is now built with Python 2.7 and 3.1.2, Perl 5.12 and
+Ruby 1.9.1.
 
 The extra and language files are no longer distributed separately.
 The source files for all systems are included in one distribution.
@@ -7309,17 +7311,43 @@ Add patch to improve support of z/OS (OS
 Added the helphelp.txt file.  Moved text from various.txt to it.
 
 
-
 New syntax files:
-TODO
+Haskell Cabal build file (Vincent Berthoux)
+ChaiScript (Jason Turner)
+Cucumber (Tim Pope)
+Fantom (Kamil Toman)
+Liquid (Tim Pope)
+Markdown (Tim Pope)
+wavefront's obj file (Vincent Berthoux)
+Perl 6 (Andy Lester)
+SDC - Synopsys Design Constraints (Maurizio Tranchero)
+SVG - Scalable Vector Graphics (Vincent Berthoux)
+task data (John Florian)
+task 42 edit (John Florian)
 
 New filetype plugins:
-TODO
-
-New spell files:
-TODO
-Breton. (Dominique Pelle)
-
+Cucumber (Tim Pope)
+Liquid (Tim Pope)
+Markdown (Tim Pope)
+Tcl (Robert L Hicks)
+
+New indent plugins:
+ChaiScript (Jason Turner)
+Cucumber (Tim Pope)
+CUDA (Bram Moolenaar)
+LifeLines (Patrick Texier)
+Liquid (Tim Pope)
+Mail (Bram Moolenaar)
+Perl 6 (Andy Lester)
+
+Other new runtime files:
+Breton spell file (Dominique Pelle)
+Tutor Bairish (Sepp Hell)
+Tutor in Esperanto. (Dominique Pellé)
+Korean translations. (SungHyun Nam)
+Dvorak keymap (Ashish Shukla)
+Serbian menu translations (Aleksandar Jelenak)
+Tetum spell files.
 
 
 Fixed							*fixed-7.3*
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -817,7 +817,11 @@ RUBY_INSTALL_NAME = mswin32-ruby$(RUBY_V
 !message Ruby requested (version $(RUBY_VER)) - root dir is "$(RUBY)"
 CFLAGS = $(CFLAGS) -DFEAT_RUBY
 RUBY_OBJ = $(OUTDIR)\if_ruby.obj
+!if $(RUBY_VER) >= 190
+RUBY_INC = /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)\$(RUBY_PLATFORM)" /I "$(RUBY)\include\ruby-$(RUBY_VER_LONG)"
+!else
 RUBY_INC = /I "$(RUBY)\lib\ruby\$(RUBY_VER_LONG)\$(RUBY_PLATFORM)"
+!endif
 RUBY_LIB = $(RUBY)\lib\$(RUBY_INSTALL_NAME).lib
 # Do we want to load Ruby dynamically?
 !if "$(DYNAMIC_RUBY)" == "yes"
--- a/src/Makefile
+++ b/src/Makefile
@@ -404,7 +404,7 @@ CClink = $(CC)
 # If both python2.x and python3.x are enabled then the linking will be via
 # dlopen(), dlsym(), dlclose(), i.e. pythonX.Y.so must be available
 #CONF_OPT_PYTHON = --enable-pythoninterp
-#CONF_OPT_PYTHON3 = --enable-python3interp
+CONF_OPT_PYTHON3 = --enable-python3interp
 
 # RUBY
 # Uncomment this when you want to include the Ruby interface.
--- a/src/bigvim.bat
+++ b/src/bigvim.bat
@@ -1,3 +1,3 @@
 :: command to build big Vim with OLE, Perl, Python, Ruby and Tcl
-nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl58 DYNAMIC_PERL=yes PERL_VER=58 PYTHON=e:\python24 DYNAMIC_PYTHON=yes PYTHON_VER=24 RUBY=e:\ruby18 DYNAMIC_RUBY=yes RUBY_VER=18 RUBY_VER_LONG=1.8 TCL=e:\tcl DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes XPM=e:\xpm
+nmake -f Make_mvc.mak GUI=yes OLE=yes PERL=E:\perl512 DYNAMIC_PERL=yes PERL_VER=512 PYTHON=e:\python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON3=e:\python31 DYNAMIC_PYTHON3=yes PYTHON3_VER=31 RUBY=e:\ruby191 DYNAMIC_RUBY=yes RUBY_VER=191 RUBY_VER_LONG=1.9.1 TCL=e:\tcl DYNAMIC_TCL=yes %1 IME=yes CSCOPE=yes XPM=e:\xpm
 
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -321,6 +321,7 @@ static void end_dynamic_python3(void)
 static int py3_runtime_link_init(char *libname, int verbose)
 {
     int i;
+    void *ucs_from_string, *ucs_from_string_and_size;
 
     if (hinstPy3)
 	return OK;
@@ -346,11 +347,8 @@ static int py3_runtime_link_init(char *l
 	}
     }
 
-    /* load unicode functions separately as only the ucs2 or the ucs4 functions
-     * will be present in the library
-     */
-    void *ucs_from_string, *ucs_from_string_and_size;
-
+    /* Load unicode functions separately as only the ucs2 or the ucs4 functions
+     * will be present in the library. */
     ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
     ucs_from_string_and_size = symbol_from_dll(hinstPy3,
 	    "PyUnicodeUCS2_FromStringAndSize");
@@ -438,7 +436,7 @@ static Py_ssize_t RangeEnd;
 static void PythonIO_Flush(void);
 static int PythonIO_Init(void);
 static void PythonIO_Fini(void);
-static PyMODINIT_FUNC Py3Init_vim(void);
+PyMODINIT_FUNC Py3Init_vim(void);
 
 /* Utility functions for the vim/python interface
  * ----------------------------------------------
@@ -2222,7 +2220,8 @@ PyDoc_STRVAR(vim_module_doc,"vim python 
 
 static struct PyModuleDef vimmodule;
 
-static PyMODINIT_FUNC Py3Init_vim(void)
+#ifndef PROTO
+PyMODINIT_FUNC Py3Init_vim(void)
 {
     PyObject *mod;
     /* The special value is removed from sys.path in Python3_Init(). */
@@ -2255,6 +2254,7 @@ static PyMODINIT_FUNC Py3Init_vim(void)
 
     return mod;
 }
+#endif
 
 /*************************************************************************
  * 4. Utility functions for handling the interface between Vim and Python.
--- a/src/undo.c
+++ b/src/undo.c
@@ -106,7 +106,7 @@ static size_t fwrite_crypt __ARGS((buf_T
 static char_u *read_string_decrypt __ARGS((buf_T *buf UNUSED, FILE *fd, int len));
 static int serialize_header __ARGS((FILE *fp, buf_T *buf, char_u *hash));
 static int serialize_uhp __ARGS((FILE *fp, buf_T *buf, u_header_T *uhp));
-static u_header_T *unserialize_uhp __ARGS((FILE *fp, char_u *file_name, int new_version));
+static u_header_T *unserialize_uhp __ARGS((FILE *fp, char_u *file_name));
 static int serialize_uep __ARGS((FILE *fp, buf_T *buf, u_entry_T *uep));
 static u_entry_T *unserialize_uep __ARGS((FILE *fp, int *error, char_u *file_name));
 static void serialize_pos __ARGS((pos_T pos, FILE *fp));
@@ -694,9 +694,7 @@ nomem:
 # define UF_HEADER_END_MAGIC	0xe7aa	/* magic after last header */
 # define UF_ENTRY_MAGIC		0xf518	/* magic at start of entry */
 # define UF_ENTRY_END_MAGIC	0x3581	/* magic after last entry */
-# define UF_VERSION_PREV	1	/* 2-byte undofile version number */
 # define UF_VERSION		2	/* 2-byte undofile version number */
-# define UF_VERSION_CRYPT_PREV	0x8001	/* idem, encrypted */
 # define UF_VERSION_CRYPT	0x8002	/* idem, encrypted */
 
 /* extra fields for header */
@@ -1019,10 +1017,9 @@ serialize_uhp(fp, buf, uhp)
 }
 
     static u_header_T *
-unserialize_uhp(fp, file_name, new_version)
+unserialize_uhp(fp, file_name)
     FILE	*fp;
     char_u	*file_name;
-    int		new_version;
 {
     u_header_T	*uhp;
     int		i;
@@ -1068,26 +1065,25 @@ unserialize_uhp(fp, file_name, new_versi
     uhp->uh_time = get8ctime(fp);
 
     /* Optional fields. */
-    if (new_version)
-	for (;;)
+    for (;;)
+    {
+	int len = getc(fp);
+	int what;
+
+	if (len == 0)
+	    break;
+	what = getc(fp);
+	switch (what)
 	{
-	    int len = getc(fp);
-	    int what;
-
-	    if (len == 0)
+	    case UHP_SAVE_NR:
+		uhp->uh_save_nr = get4c(fp);
 		break;
-	    what = getc(fp);
-	    switch (what)
-	    {
-		case UHP_SAVE_NR:
-		    uhp->uh_save_nr = get4c(fp);
-		    break;
-		default:
-		    /* field not supported, skip */
-		    while (--len >= 0)
-			(void)getc(fp);
-	    }
+	    default:
+		/* field not supported, skip */
+		while (--len >= 0)
+		    (void)getc(fp);
 	}
+    }
 
     /* Unserialize the uep list. */
     last_uep = NULL;
@@ -1564,7 +1560,6 @@ u_read_undo(name, hash, orig_name)
     char_u	*file_name;
     FILE	*fp;
     long	version, str_len;
-    int		new_version;
     char_u	*line_ptr = NULL;
     linenr_T	line_lnum;
     colnr_T	line_colnr;
@@ -1645,7 +1640,7 @@ u_read_undo(name, hash, orig_name)
 	goto error;
     }
     version = get2c(fp);
-    if (version == UF_VERSION_CRYPT || version == UF_VERSION_CRYPT_PREV)
+    if (version == UF_VERSION_CRYPT)
     {
 #ifdef FEAT_CRYPT
 	if (*curbuf->b_p_key == NUL)
@@ -1665,12 +1660,11 @@ u_read_undo(name, hash, orig_name)
 	goto error;
 #endif
     }
-    else if (version != UF_VERSION && version != UF_VERSION_PREV)
+    else if (version != UF_VERSION)
     {
 	EMSG2(_("E824: Incompatible undo file: %s"), file_name);
 	goto error;
     }
-    new_version = (version == UF_VERSION || version == UF_VERSION_CRYPT);
 
     if (fread(read_hash, UNDO_HASH_SIZE, 1, fp) != 1)
     {
@@ -1716,27 +1710,26 @@ u_read_undo(name, hash, orig_name)
     seq_cur = get4c(fp);
     seq_time = get8ctime(fp);
 
-    /* Optional header fields, not in previous version. */
-    if (new_version)
-	for (;;)
+    /* Optional header fields. */
+    for (;;)
+    {
+	int len = getc(fp);
+	int what;
+
+	if (len == 0 || len == EOF)
+	    break;
+	what = getc(fp);
+	switch (what)
 	{
-	    int len = getc(fp);
-	    int what;
-
-	    if (len == 0 || len == EOF)
+	    case UF_LAST_SAVE_NR:
+		last_save_nr = get4c(fp);
 		break;
-	    what = getc(fp);
-	    switch (what)
-	    {
-		case UF_LAST_SAVE_NR:
-		    last_save_nr = get4c(fp);
-		    break;
-		default:
-		    /* field not supported, skip */
-		    while (--len >= 0)
-			(void)getc(fp);
-	    }
+	    default:
+		/* field not supported, skip */
+		while (--len >= 0)
+		    (void)getc(fp);
 	}
+    }
 
     /* uhp_table will store the freshly created undo headers we allocate
      * until we insert them into curbuf. The table remains sorted by the
@@ -1758,7 +1751,7 @@ u_read_undo(name, hash, orig_name)
 	    goto error;
 	}
 
-	uhp = unserialize_uhp(fp, file_name, new_version);
+	uhp = unserialize_uhp(fp, file_name);
 	if (uhp == NULL)
 	    goto error;
 	uhp_table[num_read_uhps++] = uhp;
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim73a"
 #define VIM_VERSION_SHORT	"7.3a"
 #define VIM_VERSION_MEDIUM	"7.3a BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.3 BETA (2010 Jul 7)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.3 BETA (2010 Jul 7, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.3a BETA (2010 Jul 18)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.3a BETA (2010 Jul 18, compiled "