]> granicus.if.org Git - vim/commitdiff
updated for version 7.0067 v7.0067
authorBram Moolenaar <Bram@vim.org>
Sun, 17 Apr 2005 20:28:32 +0000 (20:28 +0000)
committerBram Moolenaar <Bram@vim.org>
Sun, 17 Apr 2005 20:28:32 +0000 (20:28 +0000)
16 files changed:
Filelist
runtime/doc/spell.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/doc/version7.txt
runtime/lang/menu_de_de.latin1.vim
runtime/spell/en.ascii.spl [new file with mode: 0644]
runtime/spell/en.latin1.spl
runtime/syntax/make.vim
src/Makefile
src/globals.h
src/hashtable.c
src/if_python.c
src/main.c
src/proto/hashtable.pro
src/version.h

index f2eb036d79da74858d4d9a1d6ccb5ce3326db934..870b893b4a3ef16c4b5cde6a65d7115f26541cae 100644 (file)
--- a/Filelist
+++ b/Filelist
@@ -682,6 +682,10 @@ LANG_GEN = \
                runtime/tutor/tutor.ru.* \
                runtime/tutor/tutor.zh.* \
                runtime/spell/README.txt \
+
+# generic language files, binary
+LANG_GEN_BIN = \
+               runtime/spell/en.ascii.spl \
                runtime/spell/en.latin1.spl \
                runtime/spell/en.utf-8.spl \
 
index 04e1cfd0be03ab72c487546b8173a08fbc24c8aa..b33dec22016c26d09972bdca474845a03a13b984 100644 (file)
@@ -1,4 +1,4 @@
-*spell.txt*    For Vim version 7.0aa.  Last change: 2005 Apr 15
+*spell.txt*    For Vim version 7.0aa.  Last change: 2005 Apr 17
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -75,23 +75,24 @@ Vim searches for spell files in the "spell" subdirectory of the directories in
        -XXX    optional addition
        EEE     the value of 'encoding'
 
-Exception: Vim uses "latin1" when 'encoding' is "iso-8859-15".  The euro sign
-doesn't matter for spelling.
+Exceptions:
+- Vim uses "latin1" when 'encoding' is "iso-8859-15".  The euro sign doesn't
+  matter for spelling.
+- When no spell file for 'encoding' is found "ascii" is tried.  This only
+  works for languages where nearly all words are ASCII, such as English.  It
+  helps when 'encoding' is not "latin1", such as iso-8859-2, and English text
+  is being edited.
 
 Spelling for EBCDIC is currently not supported.
 
 A spell file might not be available in the current 'encoding'.  See
 |spell-mkspell| about how to create a spell file.  Converting a spell file
-with "iconv" will NOT work.
-
-If a spell file only uses ASCII characters the encoding can be omitted.  This
-is useful for English: "en.spl"  The file with encoding is checked first, thus
-you could have one with encoding that includes words with non-ASCII characters
-and use the ASCII file as a fall-back.
+with "iconv" will NOT work!
 
                                                        *E758* *E759*
 When loading a spell file Vim checks that it is properly formatted.  If you
-get an error the file may be truncated, modified or for another Vim version.
+get an error the file may be truncated, modified or intended for another Vim
+version.
 
 
 WORDS
@@ -126,9 +127,14 @@ uses.  Myspell is used by OpenOffice.org and Mozilla.  You should be able to
 find them here:
        http://lingucomponent.openoffice.org/spell_dic.html
 
-:mksp[ell] {outname}  {inname} ...                     *:mksp* *:mkspell*
+:mksp[ell] [-ascii] {outname} {inname} ...             *:mksp* *:mkspell*
                        Generate spell file {outname}.spl from Myspell files
                        {inname}.aff and {inname}.dic.
+                       When the [-ascii] argument is present, words with
+                       non-ascii characters are skipped.  The resulting file
+                       ends in "ascii.spl".  Otherwise the resulting file
+                       ends in "ENC.spl", where ENC is the value of
+                       'encoding'.
                        Multiple {inname} arguments can be given to combine
                        regions into one Vim spell file.  Example: >
                :mkspell ~/.vim/spell/en /tmp/en_US /tmp/en_CA /tmp/en_AU
index c89e2b36883bbb496128242d159a5a8866093f89..bcbe4ba486ab609ecf3c8836d006d8a145835003 100644 (file)
@@ -5111,7 +5111,6 @@ hebrew    hebrew.txt      /*hebrew*
 hebrew.txt     hebrew.txt      /*hebrew.txt*
 help   various.txt     /*help*
 help-context   help.txt        /*help-context*
-help-tags      tags    1
 help-translated        various.txt     /*help-translated*
 help-xterm-window      various.txt     /*help-xterm-window*
 help.txt       help.txt        /*help.txt*
index 33c1f8f5d16a81771642bee6f42f33581bde1dc7..411e001792796cf4c233d42653e46a0d1deeaa4c 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Apr 15
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Apr 17
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -98,7 +98,14 @@ PLANNED FOR VERSION 7.0:
 -   Add SPELLCHECKER, with support for many languages.
     - Use "engspchk" from Charles Campbell for ideas.
     - Spell checking code todo's:
-       - BWF_ADDS and BWF_ADDSM for more than 256, only one byte for count.
+       - For French, prefixes with single quotes result in many additions.
+         How to do this more efficiently?  Both storing and checking.
+         Put addition up to end of word also in hashtab, so that "s'aaa"
+         is found by "'aaa", s-bbb by "-bbb", etc.  Put rest in table (search
+         longest match).
+       - use BWF_ADDS and BWF_ADDSM for more than 256, only one byte for count.
+       - Implement user and project word lists.  Commands to add words and to
+         mark words as wrong.
        - Case folding only works when locale is set properly.
          E.g., when C locale is active then 'enc' is "latin1" but Ångström
          isn't seen as a ONECAP.
@@ -107,29 +114,21 @@ PLANNED FOR VERSION 7.0:
          Put the character tables in the .aff file?
        - Implement = flag in .dic: KEEPCASE for lower case word.
            's morgens/=  does not match 'S morgens
-       - Merge en_US, en_CA, en_AU, etc.
        - Implement compound words?
-       - Make matching additions faster somehow?
-       - More efficient way to store additions?
        - remove fw_prefix and fw_suffix, use fw_len (word length) and put
          prefixes and suffixes right after it.
        - Make "en-rare" spell file.
          Convention: use en_US (language_region) and en-rare (language-field)
-       - Need to check for affixes of zero length?
-       - specify word characters in .aff file?
+          Add hl groups to 'spelllang'?
+           :set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
        - Polish: Anio and Hanio are wrong words, even though Myspell allows
          them.  Problem with not ignoring case in conditions.
-       - Put addition up to end of word also in hashtab, so that "s'aaa"
-         is found by "'aaa", s-bbb by "-bbb", etc.  Put rest in table (search
-         longest match).
-        - Rare words: use another dictionary.  Add hl groups to 'spelllang'?
-           :set spelllang=en_us,en.rare/SpellRare,en.math/SpellMath
     - References MySpell library (in OpenOffice.org).
        http://spellchecker.mozdev.org/source.html
        http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
       author: Kevin Hendricks <kevin.hendricks@sympatico.ca>
     - Alternative: use aspell library.
-      ispell is replaced by aspell, thus forget about it.
+      ispell is replaced by aspell, thus forget about ispell.
     - More complicated: Regions with different languages?  E.g. comments in
       English, strings in German (po file).
     - Commands required:
@@ -139,11 +138,13 @@ PLANNED FOR VERSION 7.0:
        [s  move to previous spell error  [S also rare word
        ]s  move to next spell error      ]S also rare word
            (only "]s" is currently implemented)
+           Make this work like displaying, check @Spell in syntax.
+           Support a count.
     - Update option window for 'spell' and 'spelllang'.
     - Use an external program like aspell for suggestions to correct the
-      spelling?  Or include the myspell/spell code in Vim?
+      spelling?  Or include the myspell suggestion code in Vim?
     - Distribution: Need wordlists for many languages; "language pack"
-    - Work together with OpenOffic.org to update the wordlists.  (Adri
+    - Work together with OpenOffice.org to update the wordlists.  (Adri
       Verhoef, Aad Nales)
     - Support for approximate-regexps will help with finding similar words
       (agrep http://www.tgries.de/agrep/).
index ff3bfd667e369c41c0f1de32442bc0d15043ff60..e60b54496f02e6760a59b2b3dd8cfc98710ed21f 100644 (file)
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Apr 05
+*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Apr 17
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1042,4 +1042,7 @@ an error message when the argument isn't recognized.
 In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in
 reallocating the buffer every time. (Alexei Alexandrov)
 
+When using a Python "atexit" function it was not invoked when Vim exits.  Now
+call Py_Finalize() for that. (Ugo Di Girolamo)
+
  vim:tw=78:ts=8:ft=help:norl:
index f0ed55f0499634accf16799dd45afe52de97cfae..12488930aed26e893aed73bd22b4f794910b8175 100644 (file)
@@ -1,7 +1,8 @@
 " Menu Translations:   German / Deutsch
-" Maintainer:          Johannes Zellner <johannes@zellner.org>
-" Originally By:       Marcin Dalecki <martin@dalecki.de>
-" Last Change: Sat, 20 Apr 2002 19:02:42 CEST
+" Maintainer:          Georg Dahn <gorgyd@yahoo.co.uk>
+" Originally By:       Marcin Dalecki <dalecki@cs.net.pl>
+"                      Johannes Zellner <johannes@zellner.org>
+" Last Change: Sun, 17 Apr 2005 18:28:58 CEST
 " vim:set foldmethod=marker tabstop=8:
 
 " Quit when menu translations have already been done.
@@ -44,7 +45,8 @@ menutrans &Copy<Tab>"+y                       &Kopieren<Tab>"+y
 menutrans &Paste<Tab>"+gP              Ein&fügen<Tab>"+gP
 menutrans Put\ &Before<Tab>[p          Da&vor\ Einfügen<Tab>[p
 menutrans Put\ &After<Tab>]p           Da&nach\ Einfügen<Tab>]p
-menutrans &Select\ all<Tab>ggVG                Alles\ &Markieren<Tab>ggVG
+menutrans &Delete<Tab>x                &Löschen<Tab>x
+menutrans &Select\ All<Tab>ggVG                Alles\ &Markieren<Tab>ggVG
 menutrans &Find\.\.\.                  &Suchen\.\.\.
 menutrans Find\ and\ Rep&lace\.\.\.    Suchen\ und\ &Ersetzen\.\.\.
 
@@ -156,6 +158,7 @@ menutrans Conve&rt\ back<Tab>:%!xxd\ -r                     Zur
 
 " {{{ SYNTAX / SYNTAX
 menutrans &Syntax                              &Syntax
+menutrans &Show\ filetypes\ in\ menu           Dateitypen\ an&zeigen
 menutrans Set\ '&syntax'\ only                 Nur\ '&syntax'\ Setzen
 menutrans Set\ '&filetype'\ too                        Auch\ '&filetype'\ Setzen
 menutrans &Off                                 &Aus
diff --git a/runtime/spell/en.ascii.spl b/runtime/spell/en.ascii.spl
new file mode 100644 (file)
index 0000000..e489e1f
Binary files /dev/null and b/runtime/spell/en.ascii.spl differ
index 25c67de67d0bc0156fef4a98b45172ed147512cd..c65db0e3f1b87c660d9d694b5e3d8f7af9315edd 100644 (file)
Binary files a/runtime/spell/en.latin1.spl and b/runtime/spell/en.latin1.spl differ
index 85da9800e802845863bb7d2cef4549802518747f..aba073ee5dd787c7824b0c024a8c4a3be880076b 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    Makefile
 " Maintainer:  Claudio Fleiner <claudio@fleiner.com>
 " URL:         http://www.fleiner.com/vim/syntax/make.vim
-" Last Change: 2004 Apr 30
+" Last Change: 2005 Apr 17
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -67,9 +67,9 @@ syn match makeStatement contained "(\(subst\|addprefix\|addsuffix\|basename\|cal
 
 " Comment
 if exists("make_microsoft")
-   syn match  makeComment "#.*" contains=makeTodo
+   syn match  makeComment "#.*" contains=makeTodo,@Spell
 else
-   syn region  makeComment     start="#" end="^$" end="[^\\]$" keepend contains=makeTodo
+   syn region  makeComment     start="#" end="^$" end="[^\\]$" keepend contains=makeTodo,@Spell
    syn match   makeComment     "#$"
 endif
 syn keyword makeTodo TODO FIXME XXX contained
index 16d3338ecde04266ef49c03c3972b83f93ff956d..f609466c07286f9c6eba94e92810f7a4ea4357eb 100644 (file)
@@ -370,6 +370,8 @@ CClink = $(CC)
 
 # PYTHON
 # Uncomment this when you want to include the Python interface.
+# NOTE: This may cause threading to be enabled, which has side effects (such
+# as using different libraries and debugging becomes more difficult).
 #CONF_OPT_PYTHON = --enable-pythoninterp
 
 # TCL
@@ -1810,7 +1812,11 @@ installtutor: $(DEST_VIM) $(DEST_RT) $(DEST_TUTOR)
 
 # Install the spell files, if they exist.
 installspell: $(DEST_VIM) $(DEST_RT) $(DEST_SPELL)
-       if test -f $(SPELLSOURCE)/en.spl; then \
+       if test -f $(SPELLSOURCE)/en.latin1.spl; then \
+         $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(DEST_SPELL); \
+         chmod $(HELPMOD) $(DEST_SPELL)/*.spl; \
+       fi
+       if test -f $(SPELLSOURCE)/en.utf-8.spl; then \
          $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(DEST_SPELL); \
          chmod $(HELPMOD) $(DEST_SPELL)/*.spl; \
        fi
index 81c1f7ec79f36c011a53488ddc132369f4e5fa4c..bbb0f1a697d5dc2e63e2ce991503e604fad667b1 100644 (file)
@@ -1297,7 +1297,7 @@ EXTERN char_u e_invexpr2[]        INIT(=N_("E15: Invalid expression: %s"));
 #endif
 EXTERN char_u e_invrange[]     INIT(=N_("E16: Invalid range"));
 EXTERN char_u e_invcmd[]       INIT(=N_("E476: Invalid command"));
-#ifdef UNIX
+#if defined(UNIX) || (defined(FEAT_SYN_HL) && defined(FEAT_MBYTE))
 EXTERN char_u e_isadir2[]      INIT(=N_("E17: \"%s\" is a directory"));
 #endif
 #ifdef FEAT_LIBCALL
index 0263f6f73fc85f2d2d8c447883014d5aa198c871..a8cd1b7d131e8ad40a846ee75d9b7b1658554496 100644 (file)
 #if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) || defined(PROTO)
 
 #if 0
-# define HT_DEBUG      /* extra checks for table consistency */
+# define HT_DEBUG      /* extra checks for table consistency  and statistics */
+
+static long hash_count_lookup = 0;     /* count number of hashtab lookups */
+static long hash_count_perturb = 0;    /* count number of "misses" */
 #endif
 
 /* Magic value for algorithm that walks through the array. */
@@ -40,7 +43,7 @@
 
 static int hash_may_resize __ARGS((hashtab_T *ht, int minitems));
 
-#if defined(FEAT_SYN_HL) || defined(PROTO)
+#if 0 /* currently not used */
 /*
  * Create an empty hash table.
  * Returns NULL when out of memory.
@@ -112,6 +115,10 @@ hash_lookup(ht, key, hash)
     hashitem_T *hi;
     int                idx;
 
+#ifdef HT_DEBUG
+    ++hash_count_lookup;
+#endif
+
     /*
      * Quickly handle the most common situations:
      * - return if there is no item at all
@@ -141,6 +148,9 @@ hash_lookup(ht, key, hash)
      */
     for (perturb = hash; ; perturb >>= PERTURB_SHIFT)
     {
+#ifdef HT_DEBUG
+       ++hash_count_perturb;       /* count a "miss" for hashtab lookup */
+#endif
        idx = (idx << 2) + idx + perturb + 1;
        hi = &ht->ht_array[idx & ht->ht_mask];
        if (hi->hi_key == NULL)
@@ -154,6 +164,23 @@ hash_lookup(ht, key, hash)
     }
 }
 
+/*
+ * Print the efficiency of hashtable lookups.
+ * Useful when trying different hash algorithms.
+ * Called when exiting.
+ */
+    void
+hash_debug_results()
+{
+#ifdef HT_DEBUG
+    fprintf(stderr, "\r\n\r\n\r\n\r\n");
+    fprintf(stderr, "Number of hashtable lookups: %ld\r\n", hash_count_lookup);
+    fprintf(stderr, "Number of perturb loops: %ld\r\n", hash_count_perturb);
+    fprintf(stderr, "Percentage of perturb loops: %ld%%\r\n",
+                               hash_count_perturb * 100 / hash_count_lookup);
+#endif
+}
+
 /*
  * Add item with key "key" to hashtable "ht".
  * Returns FAIL when out of memory or the key is already present.
@@ -332,7 +359,7 @@ hash_may_resize(ht, minitems)
     else
     {
        /* Use specified size. */
-       if (minitems < ht->ht_used)     /* just in case... */
+       if ((long_u)minitems < ht->ht_used)     /* just in case... */
            minitems = ht->ht_used;
        minsize = minitems * 3 / 2;     /* array is up to 2/3 full */
     }
@@ -420,16 +447,28 @@ hash_may_resize(ht, minitems)
 }
 
 /*
- * Get the hash number for a key.  Uses the ElfHash algorithm, which is
- * supposed to have an even distribution (suggested by Charles Campbell).
+ * Get the hash number for a key.
+ * If you think you know a better hash function: Compile with HT_DEBUG set and
+ * run a script that uses hashtables a lot.  Vim will then print statistics
+ * when exiting.  Try that with the current hash algorithm and yours.  The
+ * lower the percentage the better.
  */
     hash_T
 hash_hash(key)
     char_u     *key;
 {
-    hash_T     hash = 0;
+    hash_T     hash;
+    char_u     *p;
+
+    if ((hash = *key) == 0)
+       return (hash_T)0;       /* Empty keys are not allowed, but we don't
+                                  want to crash if we get one. */
+    p = key + 1;
+
+#if 0
+    /* ElfHash algorithm, which is supposed to have an even distribution.
+     * Suggested by Charles Campbell. */
     hash_T     g;
-    char_u     *p = key;
 
     while (*p != NUL)
     {
@@ -438,6 +477,13 @@ hash_hash(key)
        if (g != 0)
            hash ^= g >> 24;            /* xor g's high 4 bits into hash */
     }
+#else
+
+    /* A simplistic algorithm that appears to do very well.
+     * Suggested by George Reilly. */
+    while (*p != NUL)
+       hash = hash * 101 + *p++;
+#endif
 
     return hash;
 }
index 04a8d179a9ffeb0c92365c6066eb375338d60e74..02d6ac18f4e0f4cce42d4ea5303eba226b85ee5d 100644 (file)
@@ -115,6 +115,8 @@ struct PyMethodDef { int a; };
 # define Py_FindMethod dll_Py_FindMethod
 # define Py_InitModule4 dll_Py_InitModule4
 # define Py_Initialize dll_Py_Initialize
+# define Py_Finalize dll_Py_Finalize
+# define Py_IsInitialized dll_Py_IsInitialized
 # define _PyObject_New dll__PyObject_New
 # define _Py_NoneStruct (*dll__Py_NoneStruct)
 # define PyObject_Init dll__PyObject_Init
@@ -169,6 +171,8 @@ static PyObject*(*dll_Py_BuildValue)(char *, ...);
 static PyObject*(*dll_Py_FindMethod)(struct PyMethodDef[], PyObject *, char *);
 static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int);
 static void(*dll_Py_Initialize)(void);
+static void(*dll_Py_Finalize)(void);
+static int(*dll_Py_IsInitialized)(void);
 static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *);
 static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *);
 static PyObject* dll__Py_NoneStruct;
@@ -245,6 +249,8 @@ static struct
     {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
     {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4},
     {"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize},
+    {"Py_Finalize", (PYTHON_PROC*)&dll_Py_Finalize},
+    {"Py_IsInitialized", (PYTHON_PROC*)&dll_Py_IsInitialized},
     {"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New},
     {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init},
     {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct},
@@ -423,7 +429,12 @@ static void Python_Release_Vim(void)
 python_end()
 {
 #ifdef DYNAMIC_PYTHON
+    if (hinstPython && Py_IsInitialized())
+        Py_Finalize();
     end_dynamic_python();
+#else
+    if (Py_IsInitialized())
+        Py_Finalize();
 #endif
 }
 
index 8e03524d66c8a5e1e21b35c1e3dc0e604734fb49..eb9aa2863c1693e06b11127d61d0cbc0e19fcecf 100644 (file)
@@ -15,7 +15,7 @@
 #include "vim.h"
 
 #ifdef SPAWNO
-# include <spawno.h>           /* special MSDOS swapping library */
+# include <spawno.h>           /* special MS-DOS swapping library */
 #endif
 
 #ifdef HAVE_FCNTL_H
@@ -2312,6 +2312,11 @@ getout(exitval)
 #endif
        windgoto((int)Rows - 1, 0);
 
+#if defined(FEAT_EVAL) || defined(FEAT_SYN_HL)
+    /* Optionally print hashtable efficiency. */
+    hash_debug_results();
+#endif
+
 #ifdef FEAT_GUI
     msg_didany = FALSE;
 #endif
index 3a3818ea7bc95407db2e3ef4e2a4d328fa103caf..cacd7a33356dd4399576a2c5e38dbaf8da66367f 100644 (file)
@@ -4,6 +4,7 @@ void hash_init __ARGS((hashtab_T *ht));
 void hash_clear __ARGS((hashtab_T *ht));
 hashitem_T *hash_find __ARGS((hashtab_T *ht, char_u *key));
 hashitem_T *hash_lookup __ARGS((hashtab_T *ht, char_u *key, hash_T hash));
+void hash_debug_results __ARGS((void));
 int hash_add __ARGS((hashtab_T *ht, char_u *key));
 int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash));
 void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));
index 5a8c7c2c24a2ed502db430871931ca05042bd309..70630b6dff34667c8be8c7f83316de542aac821b 100644 (file)
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT      "vim70aa"
 #define VIM_VERSION_SHORT      "7.0aa"
 #define VIM_VERSION_MEDIUM     "7.0aa ALPHA"
-#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 15)"
-#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 15, compiled "
+#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 17)"
+#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 17, compiled "