0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -04:00

updated for version 7.0067

This commit is contained in:
Bram Moolenaar 2005-04-17 20:28:32 +00:00
parent 99942f0b16
commit 0e21a3f623
16 changed files with 132 additions and 47 deletions

View File

@ -682,6 +682,10 @@ LANG_GEN = \
runtime/tutor/tutor.ru.* \ runtime/tutor/tutor.ru.* \
runtime/tutor/tutor.zh.* \ runtime/tutor/tutor.zh.* \
runtime/spell/README.txt \ runtime/spell/README.txt \
# generic language files, binary
LANG_GEN_BIN = \
runtime/spell/en.ascii.spl \
runtime/spell/en.latin1.spl \ runtime/spell/en.latin1.spl \
runtime/spell/en.utf-8.spl \ runtime/spell/en.utf-8.spl \

View 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 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 -XXX optional addition
EEE the value of 'encoding' EEE the value of 'encoding'
Exception: Vim uses "latin1" when 'encoding' is "iso-8859-15". The euro sign Exceptions:
doesn't matter for spelling. - 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. Spelling for EBCDIC is currently not supported.
A spell file might not be available in the current 'encoding'. See 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 |spell-mkspell| about how to create a spell file. Converting a spell file
with "iconv" will NOT work. 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.
*E758* *E759* *E758* *E759*
When loading a spell file Vim checks that it is properly formatted. If you 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 WORDS
@ -126,9 +127,14 @@ uses. Myspell is used by OpenOffice.org and Mozilla. You should be able to
find them here: find them here:
http://lingucomponent.openoffice.org/spell_dic.html 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 Generate spell file {outname}.spl from Myspell files
{inname}.aff and {inname}.dic. {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 Multiple {inname} arguments can be given to combine
regions into one Vim spell file. Example: > regions into one Vim spell file. Example: >
:mkspell ~/.vim/spell/en /tmp/en_US /tmp/en_CA /tmp/en_AU :mkspell ~/.vim/spell/en /tmp/en_US /tmp/en_CA /tmp/en_AU

View File

@ -5111,7 +5111,6 @@ hebrew hebrew.txt /*hebrew*
hebrew.txt hebrew.txt /*hebrew.txt* hebrew.txt hebrew.txt /*hebrew.txt*
help various.txt /*help* help various.txt /*help*
help-context help.txt /*help-context* help-context help.txt /*help-context*
help-tags tags 1
help-translated various.txt /*help-translated* help-translated various.txt /*help-translated*
help-xterm-window various.txt /*help-xterm-window* help-xterm-window various.txt /*help-xterm-window*
help.txt help.txt /*help.txt* help.txt help.txt /*help.txt*

View 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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -98,7 +98,14 @@ PLANNED FOR VERSION 7.0:
- Add SPELLCHECKER, with support for many languages. - Add SPELLCHECKER, with support for many languages.
- Use "engspchk" from Charles Campbell for ideas. - Use "engspchk" from Charles Campbell for ideas.
- Spell checking code todo's: - 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. - Case folding only works when locale is set properly.
E.g., when C locale is active then 'enc' is "latin1" but Ångström E.g., when C locale is active then 'enc' is "latin1" but Ångström
isn't seen as a ONECAP. isn't seen as a ONECAP.
@ -107,29 +114,21 @@ PLANNED FOR VERSION 7.0:
Put the character tables in the .aff file? Put the character tables in the .aff file?
- Implement = flag in .dic: KEEPCASE for lower case word. - Implement = flag in .dic: KEEPCASE for lower case word.
's morgens/= does not match 'S morgens 's morgens/= does not match 'S morgens
- Merge en_US, en_CA, en_AU, etc.
- Implement compound words? - 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 - remove fw_prefix and fw_suffix, use fw_len (word length) and put
prefixes and suffixes right after it. prefixes and suffixes right after it.
- Make "en-rare" spell file. - Make "en-rare" spell file.
Convention: use en_US (language_region) and en-rare (language-field) Convention: use en_US (language_region) and en-rare (language-field)
- Need to check for affixes of zero length? Add hl groups to 'spelllang'?
- specify word characters in .aff file? :set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
- Polish: Anio and Hanio are wrong words, even though Myspell allows - Polish: Anio and Hanio are wrong words, even though Myspell allows
them. Problem with not ignoring case in conditions. 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). - References MySpell library (in OpenOffice.org).
http://spellchecker.mozdev.org/source.html http://spellchecker.mozdev.org/source.html
http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/ http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/
author: Kevin Hendricks <kevin.hendricks@sympatico.ca> author: Kevin Hendricks <kevin.hendricks@sympatico.ca>
- Alternative: use aspell library. - 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 - More complicated: Regions with different languages? E.g. comments in
English, strings in German (po file). English, strings in German (po file).
- Commands required: - Commands required:
@ -139,11 +138,13 @@ PLANNED FOR VERSION 7.0:
[s move to previous spell error [S also rare word [s move to previous spell error [S also rare word
]s move to next spell error ]S also rare word ]s move to next spell error ]S also rare word
(only "]s" is currently implemented) (only "]s" is currently implemented)
Make this work like displaying, check @Spell in syntax.
Support a count.
- Update option window for 'spell' and 'spelllang'. - Update option window for 'spell' and 'spelllang'.
- Use an external program like aspell for suggestions to correct the - 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" - 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) Verhoef, Aad Nales)
- Support for approximate-regexps will help with finding similar words - Support for approximate-regexps will help with finding similar words
(agrep http://www.tgries.de/agrep/). (agrep http://www.tgries.de/agrep/).

View 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 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 In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in
reallocating the buffer every time. (Alexei Alexandrov) 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: vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,7 +1,8 @@
" Menu Translations: German / Deutsch " Menu Translations: German / Deutsch
" Maintainer: Johannes Zellner <johannes@zellner.org> " Maintainer: Georg Dahn <gorgyd@yahoo.co.uk>
" Originally By: Marcin Dalecki <martin@dalecki.de> " Originally By: Marcin Dalecki <dalecki@cs.net.pl>
" Last Change: Sat, 20 Apr 2002 19:02:42 CEST " Johannes Zellner <johannes@zellner.org>
" Last Change: Sun, 17 Apr 2005 18:28:58 CEST
" vim:set foldmethod=marker tabstop=8: " vim:set foldmethod=marker tabstop=8:
" Quit when menu translations have already been done. " 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 &Paste<Tab>"+gP Ein&fügen<Tab>"+gP
menutrans Put\ &Before<Tab>[p Da&vor\ Einfügen<Tab>[p menutrans Put\ &Before<Tab>[p Da&vor\ Einfügen<Tab>[p
menutrans Put\ &After<Tab>]p Da&nach\ 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\.\.\. &Suchen\.\.\.
menutrans Find\ and\ Rep&lace\.\.\. Suchen\ und\ &Ersetzen\.\.\. menutrans Find\ and\ Rep&lace\.\.\. Suchen\ und\ &Ersetzen\.\.\.
@ -156,6 +158,7 @@ menutrans Conve&rt\ back<Tab>:%!xxd\ -r Zur
" {{{ SYNTAX / SYNTAX " {{{ SYNTAX / SYNTAX
menutrans &Syntax &Syntax menutrans &Syntax &Syntax
menutrans &Show\ filetypes\ in\ menu Dateitypen\ an&zeigen
menutrans Set\ '&syntax'\ only Nur\ '&syntax'\ Setzen menutrans Set\ '&syntax'\ only Nur\ '&syntax'\ Setzen
menutrans Set\ '&filetype'\ too Auch\ '&filetype'\ Setzen menutrans Set\ '&filetype'\ too Auch\ '&filetype'\ Setzen
menutrans &Off &Aus menutrans &Off &Aus

BIN
runtime/spell/en.ascii.spl Normal file

Binary file not shown.

Binary file not shown.

View File

@ -2,7 +2,7 @@
" Language: Makefile " Language: Makefile
" Maintainer: Claudio Fleiner <claudio@fleiner.com> " Maintainer: Claudio Fleiner <claudio@fleiner.com>
" URL: http://www.fleiner.com/vim/syntax/make.vim " 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 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded " 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 " Comment
if exists("make_microsoft") if exists("make_microsoft")
syn match makeComment "#.*" contains=makeTodo syn match makeComment "#.*" contains=makeTodo,@Spell
else else
syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=makeTodo syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=makeTodo,@Spell
syn match makeComment "#$" syn match makeComment "#$"
endif endif
syn keyword makeTodo TODO FIXME XXX contained syn keyword makeTodo TODO FIXME XXX contained

View File

@ -370,6 +370,8 @@ CClink = $(CC)
# PYTHON # PYTHON
# Uncomment this when you want to include the Python interface. # 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 #CONF_OPT_PYTHON = --enable-pythoninterp
# TCL # TCL
@ -1810,7 +1812,11 @@ installtutor: $(DEST_VIM) $(DEST_RT) $(DEST_TUTOR)
# Install the spell files, if they exist. # Install the spell files, if they exist.
installspell: $(DEST_VIM) $(DEST_RT) $(DEST_SPELL) 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); \ $(INSTALL_DATA) $(SPELLSOURCE)/*.spl $(DEST_SPELL); \
chmod $(HELPMOD) $(DEST_SPELL)/*.spl; \ chmod $(HELPMOD) $(DEST_SPELL)/*.spl; \
fi fi

View File

@ -1297,7 +1297,7 @@ EXTERN char_u e_invexpr2[] INIT(=N_("E15: Invalid expression: %s"));
#endif #endif
EXTERN char_u e_invrange[] INIT(=N_("E16: Invalid range")); EXTERN char_u e_invrange[] INIT(=N_("E16: Invalid range"));
EXTERN char_u e_invcmd[] INIT(=N_("E476: Invalid command")); 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")); EXTERN char_u e_isadir2[] INIT(=N_("E17: \"%s\" is a directory"));
#endif #endif
#ifdef FEAT_LIBCALL #ifdef FEAT_LIBCALL

View File

@ -32,7 +32,10 @@
#if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) || defined(PROTO) #if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) || defined(PROTO)
#if 0 #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 #endif
/* Magic value for algorithm that walks through the array. */ /* Magic value for algorithm that walks through the array. */
@ -40,7 +43,7 @@
static int hash_may_resize __ARGS((hashtab_T *ht, int minitems)); 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. * Create an empty hash table.
* Returns NULL when out of memory. * Returns NULL when out of memory.
@ -112,6 +115,10 @@ hash_lookup(ht, key, hash)
hashitem_T *hi; hashitem_T *hi;
int idx; int idx;
#ifdef HT_DEBUG
++hash_count_lookup;
#endif
/* /*
* Quickly handle the most common situations: * Quickly handle the most common situations:
* - return if there is no item at all * - return if there is no item at all
@ -141,6 +148,9 @@ hash_lookup(ht, key, hash)
*/ */
for (perturb = hash; ; perturb >>= PERTURB_SHIFT) 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; idx = (idx << 2) + idx + perturb + 1;
hi = &ht->ht_array[idx & ht->ht_mask]; hi = &ht->ht_array[idx & ht->ht_mask];
if (hi->hi_key == NULL) 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". * Add item with key "key" to hashtable "ht".
* Returns FAIL when out of memory or the key is already present. * Returns FAIL when out of memory or the key is already present.
@ -332,7 +359,7 @@ hash_may_resize(ht, minitems)
else else
{ {
/* Use specified size. */ /* 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; minitems = ht->ht_used;
minsize = minitems * 3 / 2; /* array is up to 2/3 full */ 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 * Get the hash number for a key.
* supposed to have an even distribution (suggested by Charles Campbell). * 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_T
hash_hash(key) hash_hash(key)
char_u *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; hash_T g;
char_u *p = key;
while (*p != NUL) while (*p != NUL)
{ {
@ -438,6 +477,13 @@ hash_hash(key)
if (g != 0) if (g != 0)
hash ^= g >> 24; /* xor g's high 4 bits into hash */ 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; return hash;
} }

View File

@ -115,6 +115,8 @@ struct PyMethodDef { int a; };
# define Py_FindMethod dll_Py_FindMethod # define Py_FindMethod dll_Py_FindMethod
# define Py_InitModule4 dll_Py_InitModule4 # define Py_InitModule4 dll_Py_InitModule4
# define Py_Initialize dll_Py_Initialize # 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 _PyObject_New dll__PyObject_New
# define _Py_NoneStruct (*dll__Py_NoneStruct) # define _Py_NoneStruct (*dll__Py_NoneStruct)
# define PyObject_Init dll__PyObject_Init # 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_FindMethod)(struct PyMethodDef[], PyObject *, char *);
static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int); static PyObject*(*dll_Py_InitModule4)(char *, struct PyMethodDef *, char *, PyObject *, int);
static void(*dll_Py_Initialize)(void); 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_New)(PyTypeObject *, PyObject *);
static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *); static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *);
static PyObject* dll__Py_NoneStruct; static PyObject* dll__Py_NoneStruct;
@ -245,6 +249,8 @@ static struct
{"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod},
{"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4},
{"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize}, {"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_New", (PYTHON_PROC*)&dll__PyObject_New},
{"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init}, {"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init},
{"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct}, {"_Py_NoneStruct", (PYTHON_PROC*)&dll__Py_NoneStruct},
@ -423,7 +429,12 @@ static void Python_Release_Vim(void)
python_end() python_end()
{ {
#ifdef DYNAMIC_PYTHON #ifdef DYNAMIC_PYTHON
if (hinstPython && Py_IsInitialized())
Py_Finalize();
end_dynamic_python(); end_dynamic_python();
#else
if (Py_IsInitialized())
Py_Finalize();
#endif #endif
} }

View File

@ -15,7 +15,7 @@
#include "vim.h" #include "vim.h"
#ifdef SPAWNO #ifdef SPAWNO
# include <spawno.h> /* special MSDOS swapping library */ # include <spawno.h> /* special MS-DOS swapping library */
#endif #endif
#ifdef HAVE_FCNTL_H #ifdef HAVE_FCNTL_H
@ -2312,6 +2312,11 @@ getout(exitval)
#endif #endif
windgoto((int)Rows - 1, 0); windgoto((int)Rows - 1, 0);
#if defined(FEAT_EVAL) || defined(FEAT_SYN_HL)
/* Optionally print hashtable efficiency. */
hash_debug_results();
#endif
#ifdef FEAT_GUI #ifdef FEAT_GUI
msg_didany = FALSE; msg_didany = FALSE;
#endif #endif

View File

@ -4,6 +4,7 @@ void hash_init __ARGS((hashtab_T *ht));
void hash_clear __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_find __ARGS((hashtab_T *ht, char_u *key));
hashitem_T *hash_lookup __ARGS((hashtab_T *ht, char_u *key, hash_T hash)); 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 __ARGS((hashtab_T *ht, char_u *key));
int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash)); 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)); void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));

View File

@ -36,5 +36,5 @@
#define VIM_VERSION_NODOT "vim70aa" #define VIM_VERSION_NODOT "vim70aa"
#define VIM_VERSION_SHORT "7.0aa" #define VIM_VERSION_SHORT "7.0aa"
#define VIM_VERSION_MEDIUM "7.0aa ALPHA" #define VIM_VERSION_MEDIUM "7.0aa ALPHA"
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 15)" #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 15, compiled " #define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Apr 17, compiled "