summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/change.txt6
-rw-r--r--runtime/doc/eval.txt12
-rw-r--r--runtime/doc/repeat.txt5
-rw-r--r--runtime/doc/spell.txt16
-rw-r--r--runtime/doc/tags4
-rw-r--r--runtime/doc/todo.txt6
-rw-r--r--runtime/doc/version7.txt7
-rw-r--r--runtime/indent/lua.vim23
-rw-r--r--runtime/spell/en.ascii.splbin198011 -> 559923 bytes
-rw-r--r--src/edit.c9
-rw-r--r--src/eval.c6
-rw-r--r--src/ex_cmds.c19
-rw-r--r--src/ex_cmds2.c27
-rw-r--r--src/ex_eval.c9
-rw-r--r--src/ex_getln.c30
-rw-r--r--src/gui_gtk_x11.c8
-rw-r--r--src/main.c8
-rw-r--r--src/misc1.c8
-rw-r--r--src/misc2.c186
-rw-r--r--src/option.c38
-rw-r--r--src/os_unix.c19
-rw-r--r--src/proto/diff.pro1
-rw-r--r--src/proto/edit.pro1
-rw-r--r--src/proto/ex_cmds.pro2
-rw-r--r--src/proto/ex_docmd.pro1
-rw-r--r--src/proto/ex_getln.pro1
-rw-r--r--src/proto/getchar.pro1
-rw-r--r--src/proto/mark.pro1
-rw-r--r--src/proto/misc1.pro1
-rw-r--r--src/proto/option.pro2
-rw-r--r--src/proto/quickfix.pro1
-rw-r--r--src/proto/regexp.pro1
-rw-r--r--src/proto/search.pro1
-rw-r--r--src/proto/syntax.pro1
-rw-r--r--src/proto/tag.pro1
-rw-r--r--src/quickfix.c11
-rw-r--r--src/regexp.c12
-rw-r--r--src/search.c9
-rw-r--r--src/spell/de_DE.diff8
-rw-r--r--src/spell/en_AU.diff298
-rw-r--r--src/spell/en_CA.diff319
-rw-r--r--src/spell/en_GB.diff284
-rw-r--r--src/spell/en_US.diff227
-rw-r--r--src/spell/fr_FR.diff24
-rw-r--r--src/spell/nl_NL.diff71
-rw-r--r--src/syntax.c97
-rw-r--r--src/tag.c31
-rw-r--r--src/undo.c4
-rw-r--r--src/version.h4
49 files changed, 1557 insertions, 304 deletions
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 31feaf56e..83f50f183 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt* For Vim version 7.0aa. Last change: 2005 Jun 16
+*change.txt* For Vim version 7.0aa. Last change: 2005 Jun 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1527,4 +1527,8 @@ found here: |sort()|.
Note that using ":sort" with ":global" doesn't sort the matching lines, it's
quite useless.
+The details about sorting depend on the library function used. There is no
+guarantee that sorting is "stable" or obeys the current locale. You will have
+to try it out.
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 83f81ad68..8a96f9875 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.0aa. Last change: 2005 Jun 20
+*eval.txt* For Vim version 7.0aa. Last change: 2005 Jun 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3775,10 +3775,16 @@ spellsuggest({word} [, {max}])
{word} can be a badly spelled word followed by other text.
This allows for joining two words that were split. The
- suggestions then also include the following text.
+ suggestions also include the following text, thus you can
+ replace a line.
+
+ {word} may also be a good word. Similar words will then be
+ returned. {word} itself is also included, most likely as the
+ first entry, thus this can be used to check spelling.
The spelling information for the current window is used. The
- 'spell' option must be set and 'spelllang' is relevant.
+ 'spell' option must be set and the value of 'spelllang' is
+ used.
split({expr} [, {pattern} [, {keepempty}]]) *split()*
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 5b9a54107..c08f12303 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt* For Vim version 7.0aa. Last change: 2005 Jun 16
+*repeat.txt* For Vim version 7.0aa. Last change: 2005 Jun 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -515,6 +515,9 @@ DELETING BREAKPOINTS
Delete breakpoint {nr}. Use |:breaklist| to see the number of
each breakpoint.
+:breakd[el] *
+ Delete all breakpoints.
+
:breakd[el] func [lnum] {name}
Delete a breakpoint in a function.
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index 399fc679c..aaef05f10 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt* For Vim version 7.0aa. Last change: 2005 Jun 23
+*spell.txt* For Vim version 7.0aa. Last change: 2005 Jun 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -71,9 +71,15 @@ zw Add word under the cursor as a wrong (bad) word to
*:spellw* *:spellwrong*
:spellw[rong] {word} Add [word} as a wrong (bad) word to 'spellfile'.
-After adding a word to 'spellfile' its associated ".spl" file will
-automatically be updated. More details about the 'spellfile' format below
-|spell-wordlist-format|.
+After adding a word to 'spellfile' with the above commands its associated
+".spl" file will automatically be updated. If you edit 'spellfile' manually
+you need to use the |:mkspell| command. This sequence of commands mostly
+works well: >
+ :exe 'e ' . &spellfile
+< (make changes to the spell file) >
+ :mkspell! %
+
+More details about the 'spellfile' format below |spell-wordlist-format|.
Finding suggestions for bad words:
@@ -208,7 +214,7 @@ include characters like '-' in 'iskeyword'. The word characters do depend on
The table with word characters is stored in the main .spl file. Therefore it
matters what the current locale is when generating it! A .add.spl file does
-not contain a word table.
+not contain a word table though.
A word that starts with a digit is always ignored. That includes hex numbers
in the form 0xff and 0XFF.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index c4d5d78ff..3f0df20b7 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2408,6 +2408,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:source_crnl repeat.txt /*:source_crnl*
:sp windows.txt /*:sp*
:spe spell.txt /*:spe*
+:spelld spell.txt /*:spelld*
+:spelldump spell.txt /*:spelldump*
:spellgood spell.txt /*:spellgood*
:spellw spell.txt /*:spellw*
:spellwrong spell.txt /*:spellwrong*
@@ -3703,6 +3705,7 @@ E748 repeat.txt /*E748*
E749 eval.txt /*E749*
E75 vi_diff.txt /*E75*
E750 repeat.txt /*E750*
+E751 spell.txt /*E751*
E754 spell.txt /*E754*
E756 spell.txt /*E756*
E758 spell.txt /*E758*
@@ -6272,6 +6275,7 @@ spell-affix-mbyte spell.txt /*spell-affix-mbyte*
spell-affix-vim spell.txt /*spell-affix-vim*
spell-dic-format spell.txt /*spell-dic-format*
spell-file-format spell.txt /*spell-file-format*
+spell-load spell.txt /*spell-load*
spell-mkspell spell.txt /*spell-mkspell*
spell-quickstart spell.txt /*spell-quickstart*
spell-syntax spell.txt /*spell-syntax*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 9b617802a..f9a221754 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -98,6 +98,12 @@ PLANNED FOR VERSION 7.0:
- Add SPELLCHECKER, with support for many languages.
- Spell checking code todo's:
+ - Special handling of ' and -: define in the .aff file.
+ Aspell does this with "special".
+ - Support user function to make suggestions:
+ :set spellsuggest=MySuggest,fast
+ Also support a list with common mistakes?
+ - For "z?" a "replace all" mechanism would be welcome.
- Add hl groups to 'spelllang'?
:set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
More complicated: Regions with different languages? E.g. comments
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 40002dddb..f9a634c94 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt* For Vim version 7.0aa. Last change: 2005 Jun 21
+*version7.txt* For Vim version 7.0aa. Last change: 2005 Jun 25
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -681,6 +681,11 @@ file.
When running the tests and one of them fails to produce "test.out" the
following tests are still executed. This helps when running out of memory.
+When compiling with EXITFREE defined and the ccmalloc library it is possible
+to detect memory leaks. Some memory will always reported as leaked, such as
+allocated by X11 library functions and the memory allocated in alloc_cmdbuff()
+to store the ":quit" command.
+
==============================================================================
BUG FIXES *bug-fixes-7*
diff --git a/runtime/indent/lua.vim b/runtime/indent/lua.vim
index ace7fd1a7..ffe03be4a 100644
--- a/runtime/indent/lua.vim
+++ b/runtime/indent/lua.vim
@@ -2,7 +2,7 @@
" Language: Lua script
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
" First Author: Max Ischenko <mfi 'at' ukr.net>
-" Last Change: 2005 Jun 09
+" Last Change: 2005 Jun 23
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -10,19 +10,19 @@ if exists("b:did_indent")
endif
let b:did_indent = 1
-" Only define the function once.
-if exists("*GetLuaIndent")
- finish
-endif
-
setlocal indentexpr=GetLuaIndent()
" To make Vim call GetLuaIndent() when it finds '\s*end' or '\s*until'
-" on the current line (else is default).
+" on the current line ('else' is default and includes 'elseif').
setlocal indentkeys+=0=end,0=until
setlocal autoindent
+" Only define the function once.
+if exists("*GetLuaIndent")
+ finish
+endif
+
function! GetLuaIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
@@ -32,18 +32,19 @@ function! GetLuaIndent()
return 0
endif
- " Add a 'shiftwidth' after lines beginning with:
- " function, if, for, while, repeat, else, elseif, '{'
+ " Add a 'shiftwidth' after lines that start a block:
+ " 'function', 'if', 'for', 'while', 'repeat', 'else', 'elseif', '{'
let ind = indent(lnum)
let flag = 0
let prevline = getline(lnum)
- if prevline =~ '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\)' || prevline =~ '{\s*$' || prevline =~ '\<function\>\s*\%(\k\|[.:]\)\{-}\s*('
+ if prevline =~ '^\s*\%(if\>\|for\>\|while\>\|repeat\>\|else\>\|elseif\>\|do\>\|then\>\)'
+ \ || prevline =~ '{\s*$' || prevline =~ '\<function\>\s*\%(\k\|[.:]\)\{-}\s*('
let ind = ind + &shiftwidth
let flag = 1
endif
" Subtract a 'shiftwidth' after lines ending with
- " 'end' when they begin with while, if, for, etc.
+ " 'end' when they begin with 'while', 'if', 'for', etc. too.
if flag == 1 && prevline =~ '\<end\>\|\<until\>'
let ind = ind - &shiftwidth
endif
diff --git a/runtime/spell/en.ascii.spl b/runtime/spell/en.ascii.spl
index 739899cd1..54630e7a6 100644
--- a/runtime/spell/en.ascii.spl
+++ b/runtime/spell/en.ascii.spl
Binary files differ
diff --git a/src/edit.c b/src/edit.c
index ebfe7fd69..c91170215 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -4985,6 +4985,15 @@ set_last_insert(c)
}
}
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_last_insert()
+{
+ vim_free(last_insert);
+ last_insert = NULL;
+}
+#endif
+
/*
* Add character "c" to buffer "s". Escape the special meaning of K_SPECIAL
* and CSI. Handle multi-byte characters.
diff --git a/src/eval.c b/src/eval.c
index dc38936aa..f3e31e281 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2588,7 +2588,10 @@ eval_for_line(arg, errp, nextcmdp, skip)
{
l = tv.vval.v_list;
if (tv.v_type != VAR_LIST || l == NULL)
+ {
EMSG(_(e_listreq));
+ clear_tv(&tv);
+ }
else
{
fi->fi_list = l;
@@ -2640,7 +2643,10 @@ free_for_info(fi_void)
forinfo_T *fi = (forinfo_T *)fi_void;
if (fi != NULL && fi->fi_list != NULL)
+ {
list_rem_watch(fi->fi_list, &fi->fi_lw);
+ list_unref(fi->fi_list);
+ }
vim_free(fi);
}
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 834614566..9daa8f671 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -789,6 +789,16 @@ ex_copy(line1, line2, n)
msgmore((long)count);
}
+static char_u *prevcmd = NULL; /* the previous command */
+
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_prev_shellcmd()
+{
+ vim_free(prevcmd);
+}
+#endif
+
/*
* Handle the ":!cmd" command. Also for ":r !cmd" and ":w !cmd"
* Bangs in the argument are replaced with the previously entered command.
@@ -807,7 +817,6 @@ do_bang(addr_count, eap, forceit, do_in, do_out)
char_u *arg = eap->arg; /* command */
linenr_T line1 = eap->line1; /* start of range */
linenr_T line2 = eap->line2; /* end of range */
- static char_u *prevcmd = NULL; /* the previous command */
char_u *newcmd = NULL; /* the new command */
int free_newcmd = FALSE; /* need to free() newcmd */
int ins_prevcmd;
@@ -5001,6 +5010,14 @@ write_viminfo_sub_string(fp)
}
#endif /* FEAT_VIMINFO */
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_old_sub()
+{
+ vim_free(old_sub);
+}
+#endif
+
#if (defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)) || defined(PROTO)
/*
* Set up for a tagpreview.
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index b86e4812e..45bd2ee63 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -600,6 +600,7 @@ ex_breakdel(eap)
struct debuggy *bp, *bpi;
int nr;
int todel = -1;
+ int del_all = FALSE;
int i;
linenr_T best_lnum = 0;
@@ -614,6 +615,11 @@ ex_breakdel(eap)
break;
}
}
+ else if (*eap->arg == '*')
+ {
+ todel = 0;
+ del_all = TRUE;
+ }
else
{
/* ":breakdel {func|file} [lnum] {name}" */
@@ -640,15 +646,18 @@ ex_breakdel(eap)
if (todel < 0)
EMSG2(_("E161: Breakpoint not found: %s"), eap->arg);
else
- {
- vim_free(BREAKP(todel).dbg_name);
- vim_free(BREAKP(todel).dbg_prog);
- --dbg_breakp.ga_len;
- if (todel < dbg_breakp.ga_len)
- mch_memmove(&BREAKP(todel), &BREAKP(todel + 1),
- (dbg_breakp.ga_len - todel) * sizeof(struct debuggy));
- ++debug_tick;
- }
+ while (dbg_breakp.ga_len > 0)
+ {
+ vim_free(BREAKP(todel).dbg_name);
+ vim_free(BREAKP(todel).dbg_prog);
+ --dbg_breakp.ga_len;
+ if (todel < dbg_breakp.ga_len)
+ mch_memmove(&BREAKP(todel), &BREAKP(todel + 1),
+ (dbg_breakp.ga_len - todel) * sizeof(struct debuggy));
+ ++debug_tick;
+ if (!del_all)
+ break;
+ }
}
/*
diff --git a/src/ex_eval.c b/src/ex_eval.c
index 485721b9c..eaa5dec8c 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -917,8 +917,8 @@ ex_endif(eap)
* Doing this here prevents an exception for a parsing error being
* discarded by throwing the interrupt exception later on.
*/
- if (!(eap->cstack->cs_flags[eap->cstack->cs_idx] & CSF_TRUE) &&
- dbg_check_skipped(eap))
+ if (!(eap->cstack->cs_flags[eap->cstack->cs_idx] & CSF_TRUE)
+ && dbg_check_skipped(eap))
(void)do_intthrow(eap->cstack);
--eap->cstack->cs_idx;
@@ -2108,8 +2108,7 @@ cleanup_conditionals(cstack, searched_cond, inclusive)
* ":return", or ":finish" before the finally clause. We must not
* discard it, unless an error or interrupt occurred afterwards.
*/
- if (did_emsg || got_int ||
- (cstack->cs_flags[idx] & CSF_FINALLY))
+ if (did_emsg || got_int || (cstack->cs_flags[idx] & CSF_FINALLY))
{
switch (cstack->cs_pending[idx])
{
@@ -2194,7 +2193,7 @@ cleanup_conditionals(cstack, searched_cond, inclusive)
* memory used to store it.
*/
if ((cstack->cs_flags[idx] & CSF_TRY)
- && (cstack->cs_flags[idx] & CSF_SILENT))
+ && (cstack->cs_flags[idx] & CSF_SILENT))
{
eslist_T *elem;
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 86da1aa88..d221249e7 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2307,6 +2307,18 @@ realloc_cmdbuff(len)
return OK;
}
+#if defined(FEAT_ARABIC) || defined(PROTO)
+static char_u *arshape_buf = NULL;
+
+# if defined(EXITFREE) || defined(PROTO)
+ void
+free_cmdline_buf()
+{
+ vim_free(arshape_buf);
+}
+# endif
+#endif
+
/*
* Draw part of the cmdline at the current cursor position. But draw stars
* when cmdline_star is TRUE.
@@ -2333,7 +2345,6 @@ draw_cmdline(start, len)
#ifdef FEAT_ARABIC
if (p_arshape && !p_tbidi && enc_utf8 && len > 0)
{
- static char_u *buf;
static int buflen = 0;
char_u *p;
int j;
@@ -2354,10 +2365,10 @@ draw_cmdline(start, len)
{
/* Re-allocate the buffer. We keep it around to avoid a lot of
* alloc()/free() calls. */
- vim_free(buf);
+ vim_free(arshape_buf);
buflen = len * 2;
- buf = alloc(buflen);
- if (buf == NULL)
+ arshape_buf = alloc(buflen);
+ if (arshape_buf == NULL)
return; /* out of memory */
}
@@ -2394,23 +2405,24 @@ draw_cmdline(start, len)
u8c = arabic_shape(u8c, NULL, &u8c_c1, pc, pc1, nc);
- newlen += (*mb_char2bytes)(u8c, buf + newlen);
+ newlen += (*mb_char2bytes)(u8c, arshape_buf + newlen);
if (u8c_c1 != 0)
{
- newlen += (*mb_char2bytes)(u8c_c1, buf + newlen);
+ newlen += (*mb_char2bytes)(u8c_c1, arshape_buf + newlen);
if (u8c_c2 != 0)
- newlen += (*mb_char2bytes)(u8c_c2, buf + newlen);
+ newlen += (*mb_char2bytes)(u8c_c2,
+ arshape_buf + newlen);
}
}
else
{
prev_c = u8c;
- mch_memmove(buf + newlen, p, mb_l);
+ mch_memmove(arshape_buf + newlen, p, mb_l);
newlen += mb_l;
}
}
- msg_outtrans_len(buf, newlen);
+ msg_outtrans_len(arshape_buf, newlen);
}
else
#endif
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index 37858dcc8..cd306093d 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -598,6 +598,14 @@ gui_mch_prepare(int *argc, char **argv)
gui_argv[gui_argc] = NULL;
}
+#if defined(EXITFREE) || defined(PROTO)
+ void
+gui_mch_free_all()
+{
+ vim_free(gui_argv);
+}
+#endif
+
/*
* This should be maybe completely removed.
* Doesn't seem possible, since check_copy_area() relies on
diff --git a/src/main.c b/src/main.c
index 2bed19281..1b64c3435 100644
--- a/src/main.c
+++ b/src/main.c
@@ -104,6 +104,7 @@ main
#endif
int n_commands = 0; /* no. of commands from + or -c */
char_u *commands[MAX_ARG_CMDS]; /* commands from + or -c option */
+ char_u cmds_tofree[MAX_ARG_CMDS]; /* commands that need free() */
#ifdef FEAT_PRECOMMANDS
int p_commands = 0; /* no. of commands from --cmd */
char_u *pre_commands[MAX_ARG_CMDS]; /* commands from --cmd option */
@@ -191,6 +192,8 @@ main
TIME_MSG("GUI prepared");
#endif
+ vim_memset(cmds_tofree, 0, sizeof(cmds_tofree));
+
/* Init the table of Normal mode commands. */
init_normal_cmds();
@@ -930,6 +933,7 @@ main
if (p == NULL)
mch_exit(2);
sprintf((char *)p, "so %s", a);
+ cmds_tofree[n_commands] = TRUE;
commands[n_commands++] = p;
}
else
@@ -2013,7 +2017,11 @@ scripterror:
current_SID = SID_CARG;
#endif
for (i = 0; i < n_commands; ++i)
+ {
do_cmdline_cmd(commands[i]);
+ if (cmds_tofree[i])
+ vim_free(commands[i]);
+ }
sourcing_name = NULL;
#ifdef FEAT_EVAL
current_SID = 0;
diff --git a/src/misc1.c b/src/misc1.c
index 30d7696bd..87c0f1a0a 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3406,6 +3406,14 @@ init_homedir()
}
}
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_homedir()
+{
+ vim_free(homedir);
+}
+#endif
+
/*
* Expand environment variable with path name.
* "~/" is also expanded, using $HOME. For Unix "~user/" is expanded.
diff --git a/src/misc2.c b/src/misc2.c
index 4fdbc2798..fd882ff99 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -16,6 +16,10 @@
# include <fcntl.h> /* for chdir() */
#endif
+static char_u *username = NULL; /* cached result of mch_get_user_name() */
+
+static char_u *ff_expand_buffer = NULL; /* used for expanding filenames */
+
#if defined(FEAT_VIRTUALEDIT) || defined(PROTO)
static int coladvance2 __ARGS((pos_T *pos, int addspaces, int finetune, colnr_T wcol));
@@ -922,15 +926,29 @@ do_outofmem_msg(size)
}
#if defined(EXITFREE) || defined(PROTO)
+
+# if defined(FEAT_SEARCHPATH)
+static void free_findfile __ARGS((void));
+# endif
+
/*
* Free everything that we allocated.
* Can be used to detect memory leaks, e.g., with ccmalloc.
- * Doesn't do nearly all that is required...
+ * NOTE: This is tricky! Things are freed that functions depend on. Don't be
+ * surprised if Vim crashes...
+ * Some things can't be freed, esp. things local to a library function.
*/
void
free_all_mem()
{
buf_T *buf, *nextbuf;
+ static int entered = FALSE;
+
+ /* When we cause a crash here it is caught and Vim tries to exit cleanly.
+ * Don't try freeing everything again. */
+ if (entered)
+ return;
+ entered = TRUE;
++autocmd_block; /* don't want to trigger autocommands here */
@@ -939,20 +957,30 @@ free_all_mem()
spell_free_all();
# endif
-#if defined(FEAT_USR_CMDS)
+# if defined(FEAT_USR_CMDS)
/* Clear user commands (before deleting buffers). */
ex_comclear(NULL);
-#endif
+# endif
# ifdef FEAT_MENU
/* Clear menus. */
do_cmdline_cmd((char_u *)"aunmenu *");
# endif
- /* Clear mappings and abbreviations. */
+ /* Clear mappings, abbreviations, breakpoints. */
do_cmdline_cmd((char_u *)"mapclear");
do_cmdline_cmd((char_u *)"mapclear!");
do_cmdline_cmd((char_u *)"abclear");
+# if defined(FEAT_EVAL)
+ do_cmdline_cmd((char_u *)"breakdel *");
+# endif
+
+# ifdef FEAT_TITLE
+ free_titles();
+# endif
+# if defined(FEAT_SEARCHPATH)
+ free_findfile();
+# endif
/* Obviously named calls. */
# if defined(FEAT_EVAL)
@@ -963,11 +991,44 @@ free_all_mem()
free_all_autocmds();
# endif
clear_termcodes();
+ free_all_options();
+ free_all_marks();
+ alist_clear(&global_alist);
+ free_homedir();
+ free_search_patterns();
+ free_old_sub();
+ free_last_insert();
+ free_prev_shellcmd();
+ free_regexp_stuff();
+ free_tag_stuff();
+ free_cd_dir();
+ set_expr_line(NULL);
+ diff_clear();
+
+ /* Free some global vars. */
+ vim_free(username);
+ vim_free(clip_exclude_prog);
+ vim_free(last_cmdline);
+ vim_free(new_last_cmdline);
+ vim_free(keep_msg);
+ vim_free(ff_expand_buffer);
/* Clear cmdline history. */
p_hi = 0;
init_history();
+#ifdef FEAT_QUICKFIX
+ qf_free_all();
+#endif
+
+ /* Close all script inputs. */
+ close_all_scripts();
+
+#if defined(FEAT_WINDOWS)
+ /* Destroy all windows. Must come before freeing buffers. */
+ win_free_all();
+#endif
+
/* Free all buffers. */
for (buf = firstbuf; buf != NULL; )
{
@@ -979,9 +1040,8 @@ free_all_mem()
buf = firstbuf;
}
-#if defined(FEAT_WINDOWS)
- /* Destroy all windows. */
- win_free_all();
+#ifdef FEAT_ARABIC
+ free_cmdline_buf();
#endif
/* Clear registers. */
@@ -989,6 +1049,10 @@ free_all_mem()
ResetRedobuff();
ResetRedobuff();
+#ifdef FEAT_CLIENTSERVER
+ vim_free(serverDelayedStartName);
+#endif
+
/* highlight info */
free_highlight();
@@ -1006,12 +1070,18 @@ free_all_mem()
eval_clear();
# endif
+ free_termoptions();
+
/* screenlines (can't display anything now!) */
free_screenlines();
#if defined(USE_XSMP)
xsmp_close();
#endif
+#ifdef FEAT_GUI_GTK
+ gui_mch_free_all();
+#endif
+ clear_hl_tables();
vim_free(IObuff);
vim_free(NameBuff);
@@ -3642,11 +3712,9 @@ typedef struct ff_search_ctx_T
char_u **ffsc_stopdirs_v;
#endif
int ffsc_need_dir;
-}ff_search_ctx_T;
-static ff_search_ctx_T *ff_search_ctx = NULL;
+} ff_search_ctx_T;
-/* used for expanding filenames */
-static char_u *ff_expand_buffer = NULL;
+static ff_search_ctx_T *ff_search_ctx = NULL;
/* locally needed functions */
#ifdef FEAT_PATH_EXTRA
@@ -3994,8 +4062,7 @@ vim_findfile_init(path, filename, stopdirs, level, free_visited, need_dir,
ff_expand_buffer[len++] = *wc_part++;
}
ff_expand_buffer[len] = NUL;
- ff_search_ctx->ffsc_wc_path =
- vim_strsave(ff_expand_buffer);
+ ff_search_ctx->ffsc_wc_path = vim_strsave(ff_expand_buffer);
if (ff_search_ctx->ffsc_wc_path == NULL)
goto error_return;
@@ -4085,7 +4152,7 @@ vim_findfile_stopdir(buf)
vim_findfile_cleanup(ctx)
void *ctx;
{
- if (NULL == ctx)
+ if (ctx == NULL)
return;
ff_search_ctx = ctx;
@@ -4452,8 +4519,8 @@ vim_findfile(search_ctx)
* still wildcards left, push the directories for further
* search
*/
- for (i = ctx->ffs_filearray_cur; i < ctx->ffs_filearray_size;
- ++i)
+ for (i = ctx->ffs_filearray_cur;
+ i < ctx->ffs_filearray_size; ++i)
{
if (!mch_isdir(ctx->ffs_filearray[i]))
continue; /* not a directory */
@@ -4474,7 +4541,8 @@ vim_findfile(search_ctx)
*/
if (STRNCMP(ctx->ffs_wc_path, "**", 2) == 0)
{
- for (i = ctx->ffs_filearray_cur; i < ctx->ffs_filearray_size; ++i)
+ for (i = ctx->ffs_filearray_cur;
+ i < ctx->ffs_filearray_size; ++i)
{
if (fnamecmp(ctx->ffs_filearray[i], ctx->ffs_fix_path) == 0)
continue; /* don't repush same directory */
@@ -4875,8 +4943,7 @@ ff_push(ctx)
ff_stack_T *ctx;
{
/* check for NULL pointer, not to return an error to the user, but
- * to prevent a crash
- */
+ * to prevent a crash */
if (ctx != NULL)
{
ctx->ffs_prev = ff_search_ctx->ffsc_stack_ptr;
@@ -5045,6 +5112,18 @@ find_file_in_path(ptr, len, options, first, rel_fname)
FALSE, rel_fname);
}
+static char_u *ff_file_to_find = NULL;
+static void *fdip_search_ctx = NULL;
+
+#if defined(EXITFREE)
+ static void
+free_findfile()
+{
+ vim_free(ff_file_to_find);
+ vim_findfile_cleanup(fdip_search_ctx);
+}
+#endif
+
/*
* Find the directory name "ptr[len]" in the path.
*
@@ -5076,9 +5155,7 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
int need_dir; /* looking for directory name */
char_u *rel_fname; /* file name we are looking relative to. */
{
- static void *search_ctx = NULL;
static char_u *dir;
- static char_u *file_to_find = NULL;
static int did_findfile_init = FALSE;
char_u save_char;
char_u *file_name = NULL;
@@ -5100,33 +5177,33 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
expand_env(ptr, NameBuff, MAXPATHL);
ptr[len] = save_char;
- vim_free(file_to_find);
- file_to_find = vim_strsave(NameBuff);
- if (file_to_find == NULL) /* out of memory */
+ vim_free(ff_file_to_find);
+ ff_file_to_find = vim_strsave(NameBuff);
+ if (ff_file_to_find == NULL) /* out of memory */
{
file_name = NULL;
goto theend;
}
}
- rel_to_curdir = (file_to_find[0] == '.'
- && (file_to_find[1] == NUL
- || vim_ispathsep(file_to_find[1])
- || (file_to_find[1] == '.'
- && (file_to_find[2] == NUL
- || vim_ispathsep(file_to_find[2])))));
- if (vim_isAbsName(file_to_find)
+ rel_to_curdir = (ff_file_to_find[0] == '.'
+ && (ff_file_to_find[1] == NUL
+ || vim_ispathsep(ff_file_to_find[1])
+ || (ff_file_to_find[1] == '.'
+ && (ff_file_to_find[2] == NUL
+ || vim_ispathsep(ff_file_to_find[2])))));
+ if (vim_isAbsName(ff_file_to_find)
/* "..", "../path", "." and "./path": don't use the path_option */
|| rel_to_curdir
#if defined(MSWIN) || defined(MSDOS) || defined(OS2)
/* handle "\tmp" as absolute path */
- || vim_ispathsep(file_to_find[0])
+ || vim_ispathsep(ff_file_to_find[0])
/* handle "c:name" as absulute path */
- || (file_to_find[0] != NUL && file_to_find[1] == ':')
+ || (ff_file_to_find[0] != NUL && ff_file_to_find[1] == ':')
#endif
#ifdef AMIGA
/* handle ":tmp" as absolute path */
- || file_to_find[0] == ':'
+ || ff_file_to_find[0] == ':'
#endif
)
{
@@ -5140,9 +5217,9 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
int l;
int run;
- if (path_with_url(file_to_find))
+ if (path_with_url(ff_file_to_find))
{
- file_name = vim_strsave(file_to_find);
+ file_name = vim_strsave(ff_file_to_find);
goto theend;
}
@@ -5150,7 +5227,7 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
* Otherwise or when this fails use the current directory. */
for (run = 1; run <= 2; ++run)
{
- l = (int)STRLEN(file_to_find);
+ l = (int)STRLEN(ff_file_to_find);
if (run == 1
&& rel_to_curdir
&& (options & FNAME_REL)
@@ -5158,12 +5235,12 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
&& STRLEN(rel_fname) + l < MAXPATHL)
{
STRCPY(NameBuff, rel_fname);
- STRCPY(gettail(NameBuff), file_to_find);
+ STRCPY(gettail(NameBuff), ff_file_to_find);
l = (int)STRLEN(NameBuff);
}
else
{
- STRCPY(NameBuff, file_to_find);
+ STRCPY(NameBuff, ff_file_to_find);
run = 2;
}
@@ -5203,7 +5280,7 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
if (first == TRUE)
{
/* vim_findfile_free_visited can handle a possible NULL pointer */
- vim_findfile_free_visited(search_ctx);
+ vim_findfile_free_visited(fdip_search_ctx);
dir = path_option;
did_findfile_init = FALSE;
}
@@ -5213,7 +5290,7 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
if (did_findfile_init)
{
ff_search_ctx->ffsc_need_dir = need_dir;
- file_name = vim_findfile(search_ctx);
+ file_name = vim_findfile(fdip_search_ctx);
ff_search_ctx->ffsc_need_dir = FALSE;
if (file_name != NULL)
break;
@@ -5228,8 +5305,8 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
{
/* We searched all paths of the option, now we can
* free the search context. */
- vim_findfile_cleanup(search_ctx);
- search_ctx = NULL;
+ vim_findfile_cleanup(fdip_search_ctx);
+ fdip_search_ctx = NULL;
break;
}
@@ -5246,9 +5323,10 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
#else
r_ptr = NULL;
#endif
- search_ctx = vim_findfile_init(buf, file_to_find, r_ptr, 100,
- FALSE, TRUE, search_ctx, FALSE, rel_fname);
- if (search_ctx != NULL)
+ fdip_search_ctx = vim_findfile_init(buf, ff_file_to_find,
+ r_ptr, 100, FALSE, TRUE,
+ fdip_search_ctx, FALSE, rel_fname);
+ if (fdip_search_ctx != NULL)
did_findfile_init = TRUE;
vim_free(buf);
}
@@ -5260,19 +5338,19 @@ find_file_in_path_option(ptr, len, options, first, path_option, need_dir, rel_fn
{
if (need_dir)
EMSG2(_("E344: Can't find directory \"%s\" in cdpath"),
- file_to_find);
+ ff_file_to_find);
else
EMSG2(_("E345: Can't find file \"%s\" in path"),
- file_to_find);
+ ff_file_to_find);
}
else
{
if (need_dir)
EMSG2(_("E346: No more directory \"%s\" found in cdpath"),
- file_to_find);
+ ff_file_to_find);
else
EMSG2(_("E347: No more file \"%s\" found in path"),
- file_to_find);
+ ff_file_to_find);
}
}
@@ -5320,16 +5398,14 @@ get_user_name(buf, len)
char_u *buf;
int len;
{
- static char_u *name = NULL;
-
- if (name == NULL)
+ if (username == NULL)
{
if (mch_get_user_name(buf, len) == FAIL)
return FAIL;
- name = vim_strsave(buf);
+ username = vim_strsave(buf);
}
else
- STRNCPY(buf, name, len);
+ STRNCPY(buf, username, len);
return OK;
}
diff --git a/src/option.c b/src/option.c
index 97c0aa538..389ab6ea3 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3165,6 +3165,34 @@ set_number_default(name, val)
options[findoption((char_u *)name)].def_val[VI_DEFAULT] = (char_u *)val;
}
+#if defined(EXITFREE) || defined(PROTO)
+/*
+ * Free all options.
+ */
+ void
+free_all_options()
+{
+ int i;
+
+ for (i = 0; !istermoption(&options[i]); i++)
+ {
+ if (options[i].indir == PV_NONE)
+ {
+ /* global option: free value and default value. */
+ if (options[i].flags & P_ALLOCED && options[i].var != NULL)
+ free_string_option(*(char_u **)options[i].var);
+ if (options[i].flags & P_DEF_ALLOCED)
+ free_string_option(options[i].def_val[VI_DEFAULT]);
+ }
+ else if (options[i].var != VAR_WIN
+ && (options[i].flags & P_STRING))
+ /* buffer-local option: free global value */
+ free_string_option(*(char_u **)options[i].var);
+ }
+}
+#endif
+
+
/*
* Initialize the options, part two: After getting Rows and Columns and
* setting 'term'.
@@ -8001,8 +8029,6 @@ put_setbool(fd, cmd, name, value)
void
clear_termoptions()
{
- struct vimoption *p;
-
/*
* Reset a few things before clearing the old options. This may cause
* outputting a few things that the terminal doesn't understand, but the
@@ -8028,6 +8054,14 @@ clear_termoptions()
#endif
stoptermcap(); /* stop termcap mode */
+ free_termoptions();
+}
+
+ void
+free_termoptions()
+{
+ struct vimoption *p;
+
for (p = &options[0]; p->fullname != NULL; p++)
if (istermoption(p))
{
diff --git a/src/os_unix.c b/src/os_unix.c
index d27b05a6d..07645dc49 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -2703,8 +2703,11 @@ mch_early_init()
void
mch_free_mem()
{
-# if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
- vim_free(signal_stack);
+# if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
+ if (clip_star.owned)
+ clip_lose_selection(&clip_star);
+ if (clip_plus.owned)
+ clip_lose_selection(&clip_plus);
# endif
# if (defined(FEAT_X11) && defined(FEAT_XCLIPBOARD)) || defined(PROTO)
if (xterm_Shell != (Widget)0)
@@ -2714,6 +2717,18 @@ mch_free_mem()
if (app_context != (XtAppContext)NULL)
XtDestroyApplicationContext(app_context);
# endif
+# ifdef FEAT_X11
+ if (x11_display != NULL && x11_display != xterm_dpy)
+ XCloseDisplay(x11_display);
+# endif
+# if defined(HAVE_SIGALTSTACK) || defined(HAVE_SIGSTACK)
+ vim_free(signal_stack);
+ signal_stack = NULL;
+# endif
+# ifdef FEAT_TITLE
+ vim_free(oldtitle);
+ vim_free(oldicon);
+# endif
}
#endif
diff --git a/src/proto/diff.pro b/src/proto/diff.pro
index b912a56d6..b9b33c9e4 100644
--- a/src/proto/diff.pro
+++ b/src/proto/diff.pro
@@ -11,6 +11,7 @@ void ex_diffsplit __ARGS((exarg_T *eap));
void ex_diffthis __ARGS((exarg_T *eap));
void diff_win_options __ARGS((win_T *wp, int addbuf));
void ex_diffoff __ARGS((exarg_T *eap));
+void diff_clear __ARGS((void));
int diff_check __ARGS((win_T *wp, linenr_T lnum));
int diff_check_fill __ARGS((win_T *wp, linenr_T lnum));
void diff_set_topline __ARGS((win_T *fromwin, win_T *towin));
diff --git a/src/proto/edit.pro b/src/proto/edit.pro
index 59939593e..2168cd8b3 100644
--- a/src/proto/edit.pro
+++ b/src/proto/edit.pro
@@ -17,6 +17,7 @@ void auto_format __ARGS((int trailblank, int prev_line));
int comp_textwidth __ARGS((int ff));
int stop_arrow __ARGS((void));
void set_last_insert __ARGS((int c));
+void free_last_insert __ARGS((void));
char_u *add_char2buf __ARGS((int c, char_u *s));
void beginline __ARGS((int flags));
int oneright __ARGS((void));
diff --git a/src/proto/ex_cmds.pro b/src/proto/ex_cmds.pro
index baa123353..6404cc8d6 100644
--- a/src/proto/ex_cmds.pro
+++ b/src/proto/ex_cmds.pro
@@ -5,6 +5,7 @@ void ex_sort __ARGS((exarg_T *eap));
void ex_retab __ARGS((exarg_T *eap));
int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
+void free_prev_shellcmd __ARGS((void));
void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
void do_shell __ARGS((char_u *cmd, int flags));
char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
@@ -37,6 +38,7 @@ void ex_global __ARGS((exarg_T *eap));
void global_exe __ARGS((char_u *cmd));
int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
void write_viminfo_sub_string __ARGS((FILE *fp));
+void free_old_sub __ARGS((void));
void prepare_tagpreview __ARGS((void));
void ex_help __ARGS((exarg_T *eap));
char_u *check_help_lang __ARGS((char_u *arg));
diff --git a/src/proto/ex_docmd.pro b/src/proto/ex_docmd.pro
index 3a8200e38..f4df30d76 100644
--- a/src/proto/ex_docmd.pro
+++ b/src/proto/ex_docmd.pro
@@ -33,6 +33,7 @@ void alist_add __ARGS((alist_T *al, char_u *fname, int set_fnum));
void alist_slash_adjust __ARGS((void));
void ex_splitview __ARGS((exarg_T *eap));
void do_exedit __ARGS((exarg_T *eap, win_T *old_curwin));
+void free_cd_dir __ARGS((void));
void do_sleep __ARGS((long msec));
int vim_mkdir_emsg __ARGS((char_u *name, int prot));
FILE *open_exfile __ARGS((char_u *fname, int forceit, char *mode));
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index 688eb3d8f..f0d45a31f 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -6,6 +6,7 @@ char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
int cmdline_overstrike __ARGS((void));
int cmdline_at_end __ARGS((void));
colnr_T cmdline_getvcol_cursor __ARGS((void));
+void free_cmdline_buf __ARGS((void));
void putcmdline __ARGS((int c, int shift));
void unputcmdline __ARGS((void));
int put_on_cmdline __ARGS((char_u *str, int len, int redraw));
diff --git a/src/proto/getchar.pro b/src/proto/getchar.pro
index 7b8d6bc85..86c3c6f0f 100644
--- a/src/proto/getchar.pro
+++ b/src/proto/getchar.pro
@@ -31,6 +31,7 @@ int save_typebuf __ARGS((void));
void save_typeahead __ARGS((tasave_T *tp));
void restore_typeahead __ARGS((tasave_T *tp));
void openscript __ARGS((char_u *name, int directly));
+void close_all_scripts __ARGS((void));
int using_script __ARGS((void));
void updatescript __ARGS((int c));
int vgetc __ARGS((void));
diff --git a/src/proto/mark.pro b/src/proto/mark.pro
index f7e5cf8c5..040f08bc0 100644
--- a/src/proto/mark.pro
+++ b/src/proto/mark.pro
@@ -19,6 +19,7 @@ void mark_col_adjust __ARGS((linenr_T lnum, colnr_T mincol, long lnum_amount, lo
void copy_jumplist __ARGS((win_T *from, win_T *to));
void free_jumplist __ARGS((win_T *wp));
void set_last_cursor __ARGS((win_T *win));
+void free_all_marks __ARGS((void));
int read_viminfo_filemark __ARGS((vir_T *virp, int force));
void write_viminfo_filemarks __ARGS((FILE *fp));
int removable __ARGS((char_u *name));
diff --git a/src/proto/misc1.pro b/src/proto/misc1.pro
index c2ae831fc..94d04554c 100644
--- a/src/proto/misc1.pro
+++ b/src/proto/misc1.pro
@@ -47,6 +47,7 @@ void msgmore __ARGS((long n));
void beep_flush __ARGS((void));
void vim_beep __ARGS((void));
void init_homedir __ARGS((void));
+void free_homedir __ARGS((void));
void expand_env __ARGS((char_u *src, char_u *dst, int dstlen));
void expand_env_esc __ARGS((char_u *src, char_u *dst, int dstlen, int esc));
char_u *vim_getenv __ARGS((char_u *name, int *mustfree));
diff --git a/src/proto/option.pro b/src/proto/option.pro
index c0c5504eb..49e1d9aea 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -2,6 +2,7 @@
void set_init_1 __ARGS((void));
void set_string_default __ARGS((char *name, char_u *val));
void set_number_default __ARGS((char *name, long val));
+void free_all_options __ARGS((void));
void set_init_2 __ARGS((void));
void set_init_3 __ARGS((void));
void set_helplang_default __ARGS((char_u *lang));
@@ -26,6 +27,7 @@ char_u *get_encoding_default __ARGS((void));
int makeset __ARGS((FILE *fd, int opt_flags, int local_only));
int makefoldset __ARGS((FILE *fd));
void clear_termoptions __ARGS((void));
+void free_termoptions __ARGS((void));
void set_term_defaults __ARGS((void));
void comp_col __ARGS((void));
char_u *get_equalprg __ARGS((void));
diff --git a/src/proto/quickfix.pro b/src/proto/quickfix.pro
index cc2f2a75a..7369a6441 100644
--- a/src/proto/quickfix.pro
+++ b/src/proto/quickfix.pro
@@ -1,5 +1,6 @@
/* quickfix.c */
int qf_init __ARGS((char_u *efile, char_u *errorformat, int newlist));
+void qf_free_all __ARGS((void));
void qf_jump __ARGS((int dir, int errornr, int forceit));
void qf_list __ARGS((exarg_T *eap));
void qf_age __ARGS((exarg_T *eap));
diff --git a/src/proto/regexp.pro b/src/proto/regexp.pro
index 0ff1c24ea..df2fde40c 100644
--- a/src/proto/regexp.pro
+++ b/src/proto/regexp.pro
@@ -1,4 +1,5 @@
/* regexp.c */
+void free_regexp_stuff __ARGS((void));
int re_multiline __ARGS((regprog_T *prog));
int re_lookbehind __ARGS((regprog_T *prog));
char_u *skip_regexp __ARGS((char_u *startp, int dirc, int magic, char_u **newp));
diff --git a/src/proto/search.pro b/src/proto/search.pro
index 304ad7398..3d934f2af 100644
--- a/src/proto/search.pro
+++ b/src/proto/search.pro
@@ -3,6 +3,7 @@ int search_regcomp __ARGS((char_u *pat, int pat_save, int pat_use, int options,
char_u *get_search_pat __ARGS((void));
void save_search_patterns __ARGS((void));
void restore_search_patterns __ARGS((void));
+void free_search_patterns __ARGS((void));
int ignorecase __ARGS((char_u *pat));
char_u *last_search_pat __ARGS((void));
void reset_search_dir __ARGS((void));
diff --git a/src/proto/syntax.pro b/src/proto/syntax.pro
index 967d88ed3..4b132ead4 100644
--- a/src/proto/syntax.pro
+++ b/src/proto/syntax.pro
@@ -22,6 +22,7 @@ char_u *hl_get_font_name __ARGS((void));
void hl_set_font_name __ARGS((char_u *font_name));
void hl_set_bg_color_name __ARGS((char_u *name));
void hl_set_fg_color_name __ARGS((char_u *name));
+void clear_hl_tables __ARGS((void));
int hl_combine_attr __ARGS((int char_attr, int prim_attr));
attrentry_T *syn_gui_attr2entry __ARGS((int attr));
attrentry_T *syn_term_attr2entry __ARGS((int attr));
diff --git a/src/proto/tag.pro b/src/proto/tag.pro
index 5df6c30f7..8ee4c280d 100644
--- a/src/proto/tag.pro
+++ b/src/proto/tag.pro
@@ -3,6 +3,7 @@ int do_tag __ARGS((char_u *tag, int type, int count, int forceit, int verbose));
void tag_freematch __ARGS((void));
void do_tags __ARGS((exarg_T *eap));
int find_tags __ARGS((char_u *pat, int *num_matches, char_u ***matchesp, int flags, int mincount, char_u *buf_ffname));
+void free_tag_stuff __ARGS((void));
void simplify_filename __ARGS((char_u *filename));
int expand_tags __ARGS((int tagnames, char_u *pat, int *num_file, char_u ***file));
int get_tags __ARGS((list_T *list, char_u *pat));
diff --git a/src/quickfix.c b/src/quickfix.c
index 41ad00b20..5de1e11e1 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -732,6 +732,17 @@ qf_new_list()
qf_lists[qf_curlist].qf_count = 0;
}
+#if defined(EXITFREE) || defined(PROTO)
+ void
+qf_free_all()
+{
+ int i;
+
+ for (i = 0; i < qf_listcount; ++i)
+ qf_free(i);
+}
+#endif
+
/*
* Add an entry to the end of the list of errors.
* Returns OK or FAIL.
diff --git a/src/regexp.c b/src/regexp.c
index bc13b38ea..dd0b1530a 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -373,7 +373,15 @@ re_multi_type(c)
*/
#define JUST_CALC_SIZE ((char_u *) -1)
-static char_u *reg_prev_sub;
+static char_u *reg_prev_sub = NULL;
+
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_regexp_stuff()
+{
+ vim_free(reg_prev_sub);
+}
+#endif
/*
* REGEXP_INRANGE contains all characters which are always special in a []
@@ -1700,7 +1708,7 @@ regatom(flagp)
/* NOTREACHED */
case Magic('~'): /* previous substitute pattern */
- if (reg_prev_sub)
+ if (reg_prev_sub != NULL)
{
char_u *lp;
diff --git a/src/search.c b/src/search.c
index 537076942..20745d9bc 100644
--- a/src/search.c
+++ b/src/search.c
@@ -338,6 +338,15 @@ restore_search_patterns()
}
#endif
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_search_patterns()
+{
+ vim_free(spats[0].pat);
+ vim_free(spats[1].pat);
+}
+#endif
+
/*
* Return TRUE when case should be ignored for search pattern "pat".
* Uses the 'ignorecase' and 'smartcase' options.
diff --git a/src/spell/de_DE.diff b/src/spell/de_DE.diff
index 8940e4439..762215cbf 100644
--- a/src/spell/de_DE.diff
+++ b/src/spell/de_DE.diff
@@ -1,12 +1,12 @@
*** de_DE.orig.aff Fri Jun 17 10:01:18 2005
---- de_DE.aff Sat Jun 18 19:46:19 2005
+--- de_DE.aff Thu Jun 23 17:41:38 2005
***************
*** 3,4 ****
--- 3,8 ----
-+ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
# (c) copyright by Bjoern Jacke <bjoern@j3e.de>
*** de_DE.orig.dic Fri Jun 17 10:01:27 2005
diff --git a/src/spell/en_AU.diff b/src/spell/en_AU.diff
index d78f557bb..d1dedf4ae 100644
--- a/src/spell/en_AU.diff
+++ b/src/spell/en_AU.diff
@@ -1,18 +1,20 @@
*** en_AU.orig.aff Fri Apr 15 13:20:36 2005
---- en_AU.aff Sat Jun 18 19:42:07 2005
+--- en_AU.aff Thu Jun 23 17:43:22 2005
***************
*** 7,9 ****
SET ISO8859-1
! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
REP 24
---- 7,15 ----
+--- 7,17 ----
SET ISO8859-1
! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
!
-! FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-! LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-! UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
+! FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
!
+! RAR ?
+! BAD !
!
REP 24
***************
@@ -37,7 +39,7 @@
PFX E Y 1
! PFX E 0 dis .
PFX F Y 5
---- 40,59 ----
+--- 42,61 ----
PFX A Y 2
! PFX A 0 re [^e]
! PFX A 0 re- e
@@ -455,7 +457,7 @@
SFX T y iest [^aeiou]y
! SFX T 0 er [aeiou]y
SFX T 0 est [aeiou]y
---- 63,457 ----
+--- 65,459 ----
PFX F 0 col l
! PFX F 0 con [^abehilmopru].
PFX K Y 1
@@ -1539,7 +1541,7 @@
! SFX 3 0 ist's [aeioubp]y
! SFX 3 o ist's o
! SFX 3 0 ist's [^eoy]
---- 464,1149 ----
+--- 466,1272 ----
SFX R Y 72
! SFX R 0 r e
! SFX R 0 rs e
@@ -2226,8 +2228,129 @@
! SFX 3 0 ist's [aeioubp]y
! SFX 3 o ist's o
! SFX 3 0 ist's [^eoy]
+!
+! MAP 5
+! MAP aàáâãäå
+! MAP eèéêë
+! MAP iìíîï
+! MAP oòóôõö
+! MAP uùúûü
+! MAP nñ
+! MAP cç
+! MAP yÿý
+! MAP sß
+!
+! # This comes from Aspell en_phonet.dat, version 1.1, 2000-01-07
+!
+! SAL AH(AEIOUY)-^ *H
+! SAL AR(AEIOUY)-^ *R
+! SAL A(HR)^ *
+! SAL A^ *
+! SAL AH(AEIOUY)- H
+! SAL AR(AEIOUY)- R
+! SAL A(HR) _
+! SAL À^ *
+! SAL Å^ *
+! SAL BB- _
+! SAL B B
+! SAL CQ- _
+! SAL CIA X
+! SAL CH X
+! SAL C(EIY)- S
+! SAL CK K
+! SAL COUGH^ KF
+! SAL CC< C
+! SAL C K
+! SAL DG(EIY) K
+! SAL DD- _
+! SAL D T
+! SAL É< E
+! SAL EH(AEIOUY)-^ *H
+! SAL ER(AEIOUY)-^ *R
+! SAL E(HR)^ *
+! SAL ENOUGH^$ *NF
+! SAL E^ *
+! SAL EH(AEIOUY)- H
+! SAL ER(AEIOUY)- R
+! SAL E(HR) _
+! SAL FF- _
+! SAL F F
+! SAL GN^ N
+! SAL GN$ N
+! SAL GNS$ NS
+! SAL GNED$ N
+! SAL GH(AEIOUY)- K
+! SAL GH _
+! SAL GG9 K
+! SAL G K
+! SAL H H
+! SAL IH(AEIOUY)-^ *H
+! SAL IR(AEIOUY)-^ *R
+! SAL I(HR)^ *
+! SAL I^ *
+! SAL ING6 N
+! SAL IH(AEIOUY)- H
+! SAL IR(AEIOUY)- R
+! SAL I(HR) _
+! SAL J K
+! SAL KN^ N
+! SAL KK- _
+! SAL K K
+! SAL LAUGH^ LF
+! SAL LL- _
+! SAL L L
+! SAL MB$ M
+! SAL MM M
+! SAL M M
+! SAL NN- _
+! SAL N N
+! SAL OH(AEIOUY)-^ *H
+! SAL OR(AEIOUY)-^ *R
+! SAL O(HR)^ *
+! SAL O^ *
+! SAL OH(AEIOUY)- H
+! SAL OR(AEIOUY)- R
+! SAL O(HR) _
+! SAL PH F
+! SAL PN^ N
+! SAL PP- _
+! SAL P P
+! SAL Q K
+! SAL RH^ R
+! SAL ROUGH^ RF
+! SAL RR- _
+! SAL R R
+! SAL SCH(EOU)- SK
+! SAL SC(IEY)- S
+! SAL SH X
+! SAL SI(AO)- X
+! SAL SS- _
+! SAL S S
+! SAL TI(AO)- X
+! SAL TH @
+! SAL TCH-- _
+! SAL TOUGH^ TF
+! SAL TT- _
+! SAL T T
+! SAL UH(AEIOUY)-^ *H
+! SAL UR(AEIOUY)-^ *R
+! SAL U(HR)^ *
+! SAL U^ *
+! SAL UH(AEIOUY)- H
+! SAL UR(AEIOUY)- R
+! SAL U(HR) _
+! SAL V^ W
+! SAL V F
+! SAL WR^ R
+! SAL WH^ W
+! SAL W(AEIOU)- W
+! SAL X^ S
+! SAL X KS
+! SAL Y(AEIOU)- Y
+! SAL ZZ- _
+! SAL Z S
*** en_AU.orig.dic Fri Apr 15 13:20:36 2005
---- en_AU.dic Tue Jun 21 20:24:15 2005
+--- en_AU.dic Wed Jun 22 14:06:35 2005
***************
*** 912,914 ****
Alaska/M
@@ -2250,53 +2373,122 @@
+ Bram/M
braid/DGS
***************
+*** 5753,5755 ****
+ cad/ZSM
+- c/aE
+ CAE
+--- 5753,5754 ----
+***************
+*** 8535,8537 ****
+ coniferous
+- conj
+ conjectural
+--- 8534,8535 ----
+***************
+*** 8544,8545 ****
+--- 8542,8544 ----
+ conjunctiva/MS
++ conj.
+ conjunctive/S
+***************
*** 10288,10289 ****
---- 10288,10292 ----
+--- 10287,10291 ----
dB/M
+ dBi
+ dBm
+ dBd
DBMS
***************
+*** 11781,11783 ****
+ DNA
+- d/o
+ DOB
+--- 11783,11784 ----
+***************
*** 12468,12469 ****
---- 12471,12473 ----
+--- 12469,12471 ----
Dutch/5m
+ Farsi
Dutchwomen/M
***************
+*** 12516,12518 ****
+ dystrophy/M
+- e
+ ea
+--- 12518,12519 ----
+***************
*** 13779,13781 ****
estuary/MS
! et
ETA
---- 13783,13786 ----
+--- 13780,13783 ----
estuary/MS
! et cetera
! et al.
ETA
***************
+*** 15296,15298 ****
+ fjord/SM
+! f/K
+ flab/2zZM
+--- 15298,15300 ----
+ fjord/SM
+! pref
+ flab/2zZM
+***************
+*** 16480,16482 ****
+ FYI
+- g/7
+ gabardine/SM
+--- 16482,16483 ----
+***************
+*** 18599,18601 ****
+ HDTV
+- h/E
+ headache/SM
+--- 18600,18601 ----
+***************
*** 19214,19216 ****
Hobbes
! hobbit
hobble/RGSD
---- 19219,19221 ----
+--- 19214,19216 ----
Hobbes
! hobbit/MS
hobble/RGSD
***************
+*** 21791,21793 ****
+ jive/DSMG
+- j/k
+ jnr.
+--- 21791,21792 ----
+***************
+*** 22125,22127 ****
+ kcal
+- k/E
+ Keane
+--- 22124,22125 ----
+***************
+*** 22606,22608 ****
+ Kyushu/M
+- l/3
+ label/AGaSD
+--- 22604,22605 ----
+***************
*** 22885,22887 ****
lass/SM
- last-ditch
lasted/e
---- 22890,22891 ----
+--- 22882,22883 ----
***************
*** 22890,22892 ****
last/kJYDSG
- last-minute
lasts/e
---- 22894,22895 ----
+--- 22886,22887 ----
***************
*** 26417,26418 ****
---- 26420,26422 ----
+--- 26412,26414 ----
Moolawatana
+ Moolenaar/M
Moomba
@@ -2307,7 +2499,7 @@
nationhood/M
! nation/M
nationwide
---- 27192,27196 ----
+--- 27184,27188 ----
nationals/4
! national/sQq3SZ
nationhood/M
@@ -2315,73 +2507,123 @@
nationwide
***************
*** 27194,27195 ****
---- 27198,27201 ----
+--- 27190,27193 ----
nativity/MS
+ natively
+ nativeness
NATO/M
***************
+*** 28365,28367 ****
+ nuzzle/SDG
+- n/xvuNVn
+ Nyah
+--- 28363,28364 ----
+***************
+*** 29464,29466 ****
+ oz
+- o/z
+ Ozark/MS
+--- 29461,29462 ----
+***************
*** 31035,31037 ****
Pk
- p/KF
pl.
---- 31041,31042 ----
+--- 31031,31032 ----
***************
*** 31288,31289 ****
---- 31293,31295 ----
+--- 31283,31285 ----
pneumonia/MS
+ pneumonic
PO
***************
*** 31460,31461 ****
---- 31466,31468 ----
+--- 31456,31458 ----
pompom/MS
+ pompon/M
pomposity/MS
***************
+*** 32865,32867 ****
+ pyx/S
+- q
+ Qatar
+--- 32862,32863 ----
+***************
*** 33378,33380 ****
razzmatazz
- r/d
Rd/M
---- 33385,33386 ----
+--- 33374,33375 ----
***************
*** 34979,34981 ****
RSPCA
- rte
rub-a-dub
---- 34985,34986 ----
+--- 34974,34975 ----
***************
*** 36012,36014 ****
sec.
! s/eca
secant/MS
---- 36017,36019 ----
+--- 36006,36008 ----
sec.
! outs
secant/MS
***************
+*** 40242,40244 ****
+ Szechwan/M
+! t/7k
+ Ta
+--- 40236,40238 ----
+ Szechwan/M
+! tingly
+ Ta
+***************
*** 42616,42618 ****
Tyson/M
- u
ubiquitousness
---- 42621,42622 ----
+--- 42610,42611 ----
***************
*** 42990,42991 ****
---- 42994,42996 ----
+--- 42983,42985 ----
unscrupulous
+ searchable
unsearchable
***************
+*** 43252,43254 ****
+ Uzi/M
+- v
+ vacancy/MS
+--- 43246,43247 ----
+***************
*** 43749,43751 ****
Vilnius/M
! vim/M
vinaigrette/MS
---- 43754,43756 ----
+--- 43742,43744 ----
Vilnius/M
! Vim/M
vinaigrette/MS
***************
+*** 45494,45496 ****
+ yippee
+- y/K
+ YMCA
+--- 45487,45488 ----
+***************
+*** 45586,45588 ****
+ zap/SGRD
+- z/d
+ Zealanders
+--- 45578,45579 ----
+***************
*** 45655 ****
---- 45660,45661 ----
+--- 45646,45652 ----
zymurgy/S
+ nd
++ the the/!
++ a a/!
++ a an/!
++ an a/!
++ an an/!
diff --git a/src/spell/en_CA.diff b/src/spell/en_CA.diff
index 62e72130c..a57ad3476 100644
--- a/src/spell/en_CA.diff
+++ b/src/spell/en_CA.diff
@@ -1,12 +1,15 @@
*** en_CA.orig.aff Fri Apr 15 13:20:36 2005
---- en_CA.aff Sat Jun 18 19:42:19 2005
+--- en_CA.aff Thu Jun 23 17:43:26 2005
***************
*** 3,4 ****
---- 3,8 ----
+--- 3,11 ----
-+ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
++ RAR ?
++ BAD !
+
PFX A Y 1
***************
@@ -15,7 +18,7 @@
! SFX N y ication y
! SFX N 0 en [^ey]
---- 34,37 ----
+--- 37,40 ----
SFX N e ion e
! SFX N y ication y
! SFX N 0 en [^ey]
@@ -25,7 +28,7 @@
SFX H y ieth y
! SFX H 0 th [^y]
---- 44,46 ----
+--- 47,49 ----
SFX H y ieth y
! SFX H 0 th [^y]
@@ -34,12 +37,137 @@
SFX G e ing e
! SFX G 0 ing [^e]
---- 51,53 ----
+--- 54,56 ----
SFX G e ing e
! SFX G 0 ing [^e]
+***************
+*** 98 ****
+--- 105,226 ----
+ SFX L 0 ment .
++
++ MAP 5
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
++
++ # This comes from Aspell en_phonet.dat, version 1.1, 2000-01-07
++
++ SAL AH(AEIOUY)-^ *H
++ SAL AR(AEIOUY)-^ *R
++ SAL A(HR)^ *
++ SAL A^ *
++ SAL AH(AEIOUY)- H
++ SAL AR(AEIOUY)- R
++ SAL A(HR) _
++ SAL À^ *
++ SAL Å^ *
++ SAL BB- _
++ SAL B B
++ SAL CQ- _
++ SAL CIA X
++ SAL CH X
++ SAL C(EIY)- S
++ SAL CK K
++ SAL COUGH^ KF
++ SAL CC< C
++ SAL C K
++ SAL DG(EIY) K
++ SAL DD- _
++ SAL D T
++ SAL É< E
++ SAL EH(AEIOUY)-^ *H
++ SAL ER(AEIOUY)-^ *R
++ SAL E(HR)^ *
++ SAL ENOUGH^$ *NF
++ SAL E^ *
++ SAL EH(AEIOUY)- H
++ SAL ER(AEIOUY)- R
++ SAL E(HR) _
++ SAL FF- _
++ SAL F F
++ SAL GN^ N
++ SAL GN$ N
++ SAL GNS$ NS
++ SAL GNED$ N
++ SAL GH(AEIOUY)- K
++ SAL GH _
++ SAL GG9 K
++ SAL G K
++ SAL H H
++ SAL IH(AEIOUY)-^ *H
++ SAL IR(AEIOUY)-^ *R
++ SAL I(HR)^ *
++ SAL I^ *
++ SAL ING6 N
++ SAL IH(AEIOUY)- H
++ SAL IR(AEIOUY)- R
++ SAL I(HR) _
++ SAL J K
++ SAL KN^ N
++ SAL KK- _
++ SAL K K
++ SAL LAUGH^ LF
++ SAL LL- _
++ SAL L L
++ SAL MB$ M
++ SAL MM M
++ SAL M M
++ SAL NN- _
++ SAL N N
++ SAL OH(AEIOUY)-^ *H
++ SAL OR(AEIOUY)-^ *R
++ SAL O(HR)^ *
++ SAL O^ *
++ SAL OH(AEIOUY)- H
++ SAL OR(AEIOUY)- R
++ SAL O(HR) _
++ SAL PH F
++ SAL PN^ N
++ SAL PP- _
++ SAL P P
++ SAL Q K
++ SAL RH^ R
++ SAL ROUGH^ RF
++ SAL RR- _
++ SAL R R
++ SAL SCH(EOU)- SK
++ SAL SC(IEY)- S
++ SAL SH X
++ SAL SI(AO)- X
++ SAL SS- _
++ SAL S S
++ SAL TI(AO)- X
++ SAL TH @
++ SAL TCH-- _
++ SAL TOUGH^ TF
++ SAL TT- _
++ SAL T T
++ SAL UH(AEIOUY)-^ *H
++ SAL UR(AEIOUY)-^ *R
++ SAL U(HR)^ *
++ SAL U^ *
++ SAL UH(AEIOUY)- H
++ SAL UR(AEIOUY)- R
++ SAL U(HR) _
++ SAL V^ W
++ SAL V F
++ SAL WR^ R
++ SAL WH^ W
++ SAL W(AEIOU)- W
++ SAL X^ S
++ SAL X KS
++ SAL Y(AEIOU)- Y
++ SAL ZZ- _
++ SAL Z S
*** en_CA.orig.dic Sat Apr 16 14:40:06 2005
---- en_CA.dic Tue Jun 21 20:25:01 2005
+--- en_CA.dic Wed Jun 22 14:06:43 2005
***************
*** 46,48 ****
R/G
@@ -47,70 +175,145 @@
easternmost
--- 46,47 ----
***************
-*** 59,61 ****
+*** 59,66 ****
a
! b/KGDT
Emmey/M
---- 58,61 ----
+ baggagemen
+! c/EAS
+ antimalarial/S
+- d/AMV
+ enveloper/M
+--- 58,65 ----
a
! probing
! probed
Emmey/M
+ baggagemen
+! recs
+ antimalarial/S
+ enveloper/M
***************
-*** 82,84 ****
- m/XG
+*** 68,98 ****
+ Balearic/M
+! e/FDSM
+! f/BVXT
+ Karamazov/M
+! g/VXB
+! h/VEMS
+! i
+ Braille/DSGM
+- j/FTV
+ transceiver/MS
+! k/FGISE
+ promising/YU
+! l/XTJGV
+ Emmet/M
+! m/XG
! n/FKT
- o
---- 82,84 ----
- m/XG
-! pron
- o
-***************
-*** 86,91 ****
+! o
+ xviii
fitting/PSY
-- p/KRT
- q
+! p/KRT
+! q
! r/GVTJ
! s/FK
fatting
---- 86,89 ----
+! t/BGXTJ
+ Franciska/M
+ oedipal
+! u
+! v/VTK
+! w/JXTGV
+ youths
+--- 67,94 ----
+ Balearic/M
+! fens
+ Karamazov/M
+! gens
+ Braille/DSGM
+ transceiver/MS
+! inking
+! disking
+! conking
+! inks
+! disks
+! conks
+ promising/YU
+! lings
+ Emmet/M
+! ming
+! pron
+ xviii
fitting/PSY
- q
! cons
fatting
-***************
-*** 94,96 ****
+! tings
+ Franciska/M
oedipal
-- u
- v/VTK
---- 92,93 ----
+! vive
+! wens
+! wings
+ youths
+***************
+*** 100,103 ****
+ x
+! y/F
+! z/JGT
+ crumby/RT
+--- 96,98 ----
+ x
+! zings
+ crumby/RT
+***************
+*** 714,715 ****
+--- 709,711 ----
+ silty/RT
++ conj.
+ conjectural/Y
***************
*** 3145,3146 ****
---- 3142,3144 ----
+--- 3141,3143 ----
semester/MS
+ etc.
etch/GZSRDJ
***************
+*** 6190,6191 ****
+--- 6187,6190 ----
+ Paula/M
++ coned
++ cone/MS
+ coneflower/M
+***************
*** 7022,7024 ****
DA
- DB
DC
---- 7020,7021 ----
+--- 7021,7022 ----
+***************
+*** 7395,7397 ****
+ rec
+! red/YPS
+ Eamon/M
+--- 7393,7395 ----
+ rec
+! red/YPSM
+ Eamon/M
***************
*** 8388,8390 ****
slotting
- ON
OR
---- 8385,8386 ----
+--- 8386,8387 ----
***************
*** 9125,9127 ****
perchance
- rte
hastiness/MS
---- 9121,9122 ----
+--- 9122,9123 ----
***************
*** 10603,10604 ****
---- 10598,10602 ----
+--- 10599,10603 ----
dB/M
+ dBi
+ dBm
@@ -121,19 +324,19 @@
Garold/M
- db
tollhouse/M
---- 10613,10614 ----
+--- 10614,10615 ----
***************
*** 11017,11019 ****
hr
- ht
MCI/M
---- 11014,11015 ----
+--- 11015,11016 ----
***************
*** 11609,11611 ****
demureness/SM
! nd/A
MIA
---- 11605,11607 ----
+--- 11606,11608 ----
demureness/SM
! nd
MIA
@@ -142,13 +345,13 @@
engross/LDRSG
! hobbit
certainty/MUS
---- 13665,13667 ----
+--- 13666,13668 ----
engross/LDRSG
! hobbit/MS
certainty/MUS
***************
*** 14434,14435 ****
---- 14430,14432 ----
+--- 14431,14433 ----
pompom/MS
+ pompon/M
Devland/M
@@ -157,7 +360,7 @@
bloodstone/M
! cetera/S
storm/SGZRDM
---- 19262,19264 ----
+--- 19263,19265 ----
bloodstone/M
! et cetera/S
storm/SGZRDM
@@ -166,13 +369,28 @@
Hansel/M
! ring/GZJDRM
Hansen/M
---- 20159,20161 ----
+--- 20160,20162 ----
Hansel/M
! ring/GZJDRMS
Hansen/M
***************
+*** 26960,26965 ****
+ Wisenheimer/M
+! disc/GDM
+ horticulturist/SM
+ isotropically
+! dish/DG
+ disburser/M
+--- 26958,26963 ----
+ Wisenheimer/M
+! disc/GDMS
+ horticulturist/SM
+ isotropically
+! dish/DGMS
+ disburser/M
+***************
*** 28157,28158 ****
---- 28154,28156 ----
+--- 28155,28157 ----
pneumonia/MS
+ pneumonic
Socratic/S
@@ -181,16 +399,16 @@
claque/MS
- etc
Chad/M
---- 34997,34998 ----
+--- 34998,34999 ----
***************
*** 36707,36708 ****
---- 36704,36706 ----
+--- 36705,36707 ----
Moody/M
+ Moolenaar/M
Bresenham/M
***************
*** 50272,50273 ****
---- 50270,50272 ----
+--- 50271,50273 ----
Dutch/M
+ Farsi
Sharon/M
@@ -199,18 +417,23 @@
hatchery/MS
! vim/SM
compatriot/MS
---- 52564,52566 ----
+--- 52565,52567 ----
hatchery/MS
! Vim/SM
compatriot/MS
***************
*** 53490,53491 ****
---- 53489,53491 ----
+--- 53490,53492 ----
unsearchable
+ searchable
felicitous/IY
***************
*** 62341 ****
---- 62341,62342 ----
+--- 62342,62348 ----
data/M
+ et al.
++ the the/!
++ a a/!
++ a an/!
++ an a/!
++ an an/!
diff --git a/src/spell/en_GB.diff b/src/spell/en_GB.diff
index 42fdc5da4..c2ec40467 100644
--- a/src/spell/en_GB.diff
+++ b/src/spell/en_GB.diff
@@ -1,17 +1,20 @@
*** en_GB.orig.aff Fri Apr 15 13:20:36 2005
---- en_GB.aff Sat Jun 18 19:42:24 2005
+--- en_GB.aff Thu Jun 23 17:43:30 2005
***************
*** 7,9 ****
SET ISO8859-1
! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
REP 24
---- 7,14 ----
+--- 7,17 ----
SET ISO8859-1
! TRY esiaénrtolcdugmphbyfvkw-'.zqjxSNRTLCGDMPHBEAUYOFIVKWöâôZQJXÅçèîêàïüäñ
!
-! FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-! LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-! UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
+! FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
+! UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+!
+! RAR ?
+! BAD !
!
REP 24
***************
@@ -36,7 +39,7 @@
PFX E Y 1
! PFX E 0 dis .
PFX F Y 5
---- 39,58 ----
+--- 42,61 ----
PFX A Y 2
! PFX A 0 re [^e]
! PFX A 0 re- e
@@ -454,7 +457,7 @@
SFX T y iest [^aeiou]y
! SFX T 0 er [aeiou]y
SFX T 0 est [aeiou]y
---- 62,456 ----
+--- 65,459 ----
PFX F 0 col l
! PFX F 0 con [^abehilmopru].
PFX K Y 1
@@ -1538,7 +1541,7 @@
! SFX 3 0 ist's [aeioubp]y
! SFX 3 o ist's o
! SFX 3 0 ist's [^eoy]
---- 463,1148 ----
+--- 466,1272 ----
SFX R Y 72
! SFX R 0 r e
! SFX R 0 rs e
@@ -2225,8 +2228,129 @@
! SFX 3 0 ist's [aeioubp]y
! SFX 3 o ist's o
! SFX 3 0 ist's [^eoy]
+!
+! MAP 5
+! MAP aàáâãäå
+! MAP eèéêë
+! MAP iìíîï
+! MAP oòóôõö
+! MAP uùúûü
+! MAP nñ
+! MAP cç
+! MAP yÿý
+! MAP sß
+!
+! # This comes from Aspell en_phonet.dat, version 1.1, 2000-01-07
+!
+! SAL AH(AEIOUY)-^ *H
+! SAL AR(AEIOUY)-^ *R
+! SAL A(HR)^ *
+! SAL A^ *
+! SAL AH(AEIOUY)- H
+! SAL AR(AEIOUY)- R
+! SAL A(HR) _
+! SAL À^ *
+! SAL Å^ *
+! SAL BB- _
+! SAL B B
+! SAL CQ- _
+! SAL CIA X
+! SAL CH X
+! SAL C(EIY)- S
+! SAL CK K
+! SAL COUGH^ KF
+! SAL CC< C
+! SAL C K
+! SAL DG(EIY) K
+! SAL DD- _
+! SAL D T
+! SAL É< E
+! SAL EH(AEIOUY)-^ *H
+! SAL ER(AEIOUY)-^ *R
+! SAL E(HR)^ *
+! SAL ENOUGH^$ *NF
+! SAL E^ *
+! SAL EH(AEIOUY)- H
+! SAL ER(AEIOUY)- R
+! SAL E(HR) _
+! SAL FF- _
+! SAL F F
+! SAL GN^ N
+! SAL GN$ N
+! SAL GNS$ NS
+! SAL GNED$ N
+! SAL GH(AEIOUY)- K
+! SAL GH _
+! SAL GG9 K
+! SAL G K
+! SAL H H
+! SAL IH(AEIOUY)-^ *H
+! SAL IR(AEIOUY)-^ *R
+! SAL I(HR)^ *
+! SAL I^ *
+! SAL ING6 N
+! SAL IH(AEIOUY)- H
+! SAL IR(AEIOUY)- R
+! SAL I(HR) _
+! SAL J K
+! SAL KN^ N
+! SAL KK- _
+! SAL K K
+! SAL LAUGH^ LF
+! SAL LL- _
+! SAL L L
+! SAL MB$ M
+! SAL MM M
+! SAL M M
+! SAL NN- _
+! SAL N N
+! SAL OH(AEIOUY)-^ *H
+! SAL OR(AEIOUY)-^ *R
+! SAL O(HR)^ *
+! SAL O^ *
+! SAL OH(AEIOUY)- H
+! SAL OR(AEIOUY)- R
+! SAL O(HR) _
+! SAL PH F
+! SAL PN^ N
+! SAL PP- _
+! SAL P P
+! SAL Q K
+! SAL RH^ R
+! SAL ROUGH^ RF
+! SAL RR- _
+! SAL R R
+! SAL SCH(EOU)- SK
+! SAL SC(IEY)- S
+! SAL SH X
+! SAL SI(AO)- X
+! SAL SS- _
+! SAL S S
+! SAL TI(AO)- X
+! SAL TH @
+! SAL TCH-- _
+! SAL TOUGH^ TF
+! SAL TT- _
+! SAL T T
+! SAL UH(AEIOUY)-^ *H
+! SAL UR(AEIOUY)-^ *R
+! SAL U(HR)^ *
+! SAL U^ *
+! SAL UH(AEIOUY)- H
+! SAL UR(AEIOUY)- R
+! SAL U(HR) _
+! SAL V^ W
+! SAL V F
+! SAL WR^ R
+! SAL WH^ W
+! SAL W(AEIOU)- W
+! SAL X^ S
+! SAL X KS
+! SAL Y(AEIOU)- Y
+! SAL ZZ- _
+! SAL Z S
*** en_GB.orig.dic Sun Apr 17 18:08:50 2005
---- en_GB.dic Tue Jun 21 20:26:11 2005
+--- en_GB.dic Wed Jun 22 14:06:46 2005
***************
*** 187,189 ****
aitch/SM
@@ -2234,6 +2358,18 @@
al-Jazeera
--- 187,188 ----
***************
+*** 1795,1796 ****
+--- 1794,1796 ----
+ conic/S
++ conj.
+ conjectural
+***************
+*** 2103,2105 ****
+ czarship
+- d/o
+ d'art
+--- 2103,2104 ----
+***************
*** 2148,2150 ****
dazzle/DRkGJS
- dBm
@@ -2283,8 +2419,14 @@
+ dBd
DCB
***************
+*** 11591,11593 ****
+ dérailleur/SM
+- e
+ e'en
+--- 11590,11591 ----
+***************
*** 14591,14592 ****
---- 14590,14592 ----
+--- 14589,14591 ----
native/SP
+ natively
nativity/SM
@@ -2293,22 +2435,34 @@
RSPCA
- rte
rubati
---- 16172,16173 ----
+--- 16171,16172 ----
+***************
+*** 17251,17253 ****
+ séance/SM
+- t/ac
+ T'ang
+--- 17249,17250 ----
***************
*** 17808,17809 ****
---- 17807,17809 ----
+--- 17805,17807 ----
unsearchable
+ searchable
unshakable/Y
***************
+*** 18268,18270 ****
+ xylophone/SM
+- y/K
+ yachters
+--- 18266,18267 ----
+***************
*** 18322,18323 ****
---- 18322,18324 ----
+--- 18319,18321 ----
émigré/S
+ nd
3GPP
***************
*** 19303,19304 ****
---- 19304,19306 ----
+--- 19301,19303 ----
Brampton/M
+ Bram/M
brand/MRDGSZ
@@ -2317,14 +2471,26 @@
estimative
! et
etalon
---- 21099,21102 ----
+--- 21096,21099 ----
estimative
! et cetera
! et al.
etalon
***************
+*** 21228,21230 ****
+ Ezra
+- f/37
+ Faber/M
+--- 21228,21229 ----
+***************
+*** 22734,22736 ****
+ justification/M
+- k/E
+ Kabul
+--- 22733,22734 ----
+***************
*** 23632,23633 ****
---- 23635,23637 ----
+--- 23630,23632 ----
Moog
+ Moolenaar/M
moonlight/GRDSM
@@ -2333,40 +2499,103 @@
oxygenation/M
- p/FYAI
Pablo/M
---- 24246,24247 ----
+--- 24241,24242 ----
***************
*** 27223,27225 ****
Villiers
! vim/M
Vinci/M
---- 27226,27228 ----
+--- 27221,27223 ----
Villiers
! Vim/M
Vinci/M
***************
+*** 27568,27570 ****
+ Yvette
+- z/d
+ Zealanders
+--- 27566,27567 ----
+***************
*** 28174,28176 ****
Aztec/M
- b/bp
Baal/M
---- 28177,28178 ----
+--- 28171,28172 ----
+***************
+*** 28890,28892 ****
+ Cathy
+! cation/MW
+ catnip/SM
+--- 28886,28888 ----
+ Cathy
+! cation/MWS
+ catnip/SM
+***************
+*** 30587,30589 ****
+ fissionable/S
+! fist/6GD
+ fit/6TRGMYJPSDj
+--- 30583,30585 ----
+ fissionable/S
+! fist/6GDMS
+ fit/6TRGMYJPSDj
+***************
+*** 30846,30848 ****
+ fuzzy/TP
+- g/73
+ Ga/y
+--- 30842,30843 ----
***************
*** 31409,31411 ****
hob/MDGZS
! hobbit
Hobbs
---- 31411,31413 ----
+--- 31404,31406 ----
hob/MDGZS
! hobbit/MS
Hobbs
***************
+*** 32110,32112 ****
+ kWh
+! l/F
+ lab/MoS
+--- 32105,32107 ----
+ kWh
+! coll
+ lab/MoS
+***************
*** 32174,32176 ****
lasso/GMDS
- last-ditch
Laszlo/M
---- 32176,32177 ----
+--- 32169,32170 ----
+***************
+*** 34188,34190 ****
+ pâté/M
+- q
+ Qatar
+--- 34182,34183 ----
+***************
+*** 36324,36326 ****
+ uttermost
+- v
+ vacate/nDGNS
+--- 36317,36318 ----
+***************
+*** 37916,37918 ****
+ bys
+- c/nN
+ Ca/y
+--- 37908,37909 ----
+***************
+*** 40468,40470 ****
+ Gödel/M
+- h/E
+ ha'p'orth
+--- 40459,40460 ----
***************
*** 43275,43276 ****
---- 43276,43278 ----
+--- 43265,43267 ----
pneumonia/MS
+ pneumonic
PO
@@ -2375,4 +2604,13 @@
qwerty
- r/d
Ra
---- 43667,43668 ----
+--- 43656,43657 ----
+***************
+*** 46148 ****
+--- 46138,46143 ----
+ à
++ the the/!
++ a a/!
++ a an/!
++ an a/!
++ an an/!
diff --git a/src/spell/en_US.diff b/src/spell/en_US.diff
index 460fa4eb6..497400f03 100644
--- a/src/spell/en_US.diff
+++ b/src/spell/en_US.diff
@@ -1,14 +1,15 @@
*** en_US.orig.aff Fri Apr 15 13:20:36 2005
---- en_US.aff Tue Jun 21 20:46:52 2005
+--- en_US.aff Thu Jun 23 17:42:05 2005
***************
*** 3,4 ****
---- 3,10 ----
+--- 3,11 ----
-+ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
+ RAR ?
++ BAD !
+
PFX A Y 1
***************
@@ -17,7 +18,7 @@
! SFX N y ication y
! SFX N 0 en [^ey]
---- 36,39 ----
+--- 37,40 ----
SFX N e ion e
! SFX N y ication y
! SFX N 0 en [^ey]
@@ -27,7 +28,7 @@
SFX H y ieth y
! SFX H 0 th [^y]
---- 46,48 ----
+--- 47,49 ----
SFX H y ieth y
! SFX H 0 th [^y]
@@ -36,20 +37,20 @@
SFX G e ing e
! SFX G 0 ing [^e]
---- 53,55 ----
+--- 54,56 ----
SFX G e ing e
! SFX G 0 ing [^e]
***************
*** 137,138 ****
---- 143,146 ----
+--- 144,147 ----
REP uy i
+ REP y ie
+ REP ie y
REP i ee
***************
*** 188 ****
---- 196,317 ----
+--- 197,318 ----
REP shun cion
+
+ MAP 5
@@ -173,7 +174,7 @@
+ SAL ZZ- _
+ SAL Z S
*** en_US.orig.dic Fri Apr 15 13:20:36 2005
---- en_US.dic Tue Jun 21 20:26:22 2005
+--- en_US.dic Wed Jun 22 14:06:29 2005
***************
*** 5944,5946 ****
bk
@@ -185,11 +186,30 @@
! probed
Bk/M
***************
+*** 9007,9009 ****
+ Cazzie/M
+- c/B
+ CB
+--- 9008,9009 ----
+***************
*** 9233,9235 ****
cetacean/S
- cetera/S
Cetus/M
---- 9234,9235 ----
+--- 9233,9234 ----
+***************
+*** 11575,11576 ****
+--- 11574,11577 ----
+ conduit/MS
++ coned
++ cone/MS
+ coneflower/M
+***************
+*** 11712,11713 ****
+--- 11713,11715 ----
+ coniferous
++ conj.
+ conjectural/Y
***************
*** 14038,14043 ****
dazzling/Y
@@ -198,7 +218,7 @@
dbl
dB/M
DBMS
---- 14038,14044 ----
+--- 14040,14046 ----
dazzling/Y
dbl
dB/M
@@ -207,12 +227,42 @@
+ dBd
DBMS
***************
+*** 15464,15466 ****
+ dingbat/MS
+! ding/GD
+ dinghy/SM
+--- 15467,15469 ----
+ dingbat/MS
+! ding/GDS
+ dinghy/SM
+***************
+*** 15690,15692 ****
+ dishevelment/MS
+! dish/GD
+ dishonest
+--- 15693,15695 ----
+ dishevelment/MS
+! dish/GDMS
+ dishonest
+***************
+*** 15973,15975 ****
+ djellaba/S
+- d/JGVX
+ Djibouti/M
+--- 15976,15977 ----
+***************
*** 16911,16912 ****
---- 16912,16914 ----
+--- 16913,16915 ----
dusty/RPT
+ Farsi
Dutch/M
***************
+*** 17357,17359 ****
+ EFL
+- e/FMDS
+ Efrain/M
+--- 17360,17361 ----
+***************
*** 18780,18782 ****
estuary/SM
! et
@@ -232,11 +282,32 @@
! etc.
etcetera/SM
***************
+*** 20559,20561 ****
+ Fiori/M
+- f/IRAC
+ firearm/SM
+--- 20562,20563 ----
+***************
+*** 24402,24404 ****
+ guzzler/M
+! g/VBX
+ Gwalior/M
+--- 24404,24406 ----
+ guzzler/M
+! gens
+ Gwalior/M
+***************
+*** 25473,25475 ****
+ hemp/MNS
+- h/EMS
+ hemstitch/DSMG
+--- 25475,25476 ----
+***************
*** 25963,25965 ****
hobbing
! hobbit
hobbler/M
---- 25966,25968 ----
+--- 25964,25966 ----
hobbing
! hobbit/MS
hobbler/M
@@ -245,17 +316,62 @@
HST
- ht
HTML
---- 26527,26528 ----
+--- 26525,26526 ----
+***************
+*** 26942,26944 ****
+ Hz
+- i
+ I
+--- 26942,26943 ----
+***************
+*** 29627,29629 ****
+ Jezebel/MS
+- j/F
+ JFK/M
+--- 29626,29627 ----
+***************
+*** 30578,30580 ****
+ keyword/SM
+! k/FGEIS
+ kg
+--- 30576,30583 ----
+ keyword/SM
+! inking
+! disking
+! conking
+! inks
+! disks
+! conks
+ kg
+***************
+*** 32694,32696 ****
+ Lizzy/M
+! l/JGVXT
+ Ljubljana/M
+--- 32697,32699 ----
+ Lizzy/M
+! lings
+ Ljubljana/M
+***************
+*** 34456,34458 ****
+ mash/JGZMSRD
+! m/ASK
+ masked/U
+--- 34459,34462 ----
+ mash/JGZMSRD
+! rems
+! prom/S
+ masked/U
***************
*** 34746,34747 ****
---- 34748,34751 ----
+--- 34750,34753 ----
Mb
+ Mbyte
+ Mbit
MB
***************
*** 36605,36606 ****
---- 36609,36611 ----
+--- 36611,36613 ----
Moog
+ Moolenaar/M
moo/GSD
@@ -264,25 +380,31 @@
NSF
- n/T
NT
---- 38876,38877 ----
+--- 38878,38879 ----
+***************
+*** 39011,39013 ****
+ NZ
+- o
+ O
+--- 39017,39018 ----
***************
*** 39532,39534 ****
om/XN
- ON
onanism/M
---- 39536,39537 ----
+--- 39537,39538 ----
***************
*** 42508,42510 ****
pinfeather/SM
! ping/GDRM
pinheaded/P
---- 42511,42513 ----
+--- 42512,42514 ----
pinfeather/SM
! ping/GDRMS
pinheaded/P
***************
*** 42983,42984 ****
---- 42986,42988 ----
+--- 42987,42989 ----
pneumonia/MS
+ pneumonic
PO
@@ -291,7 +413,7 @@
pompom/SM
! pompon's
pomposity/MS
---- 43220,43222 ----
+--- 43221,43223 ----
pompom/SM
! pompon/M
pomposity/MS
@@ -300,7 +422,13 @@
PX
- p/XTGJ
Pygmalion/M
---- 44944,44945 ----
+--- 44945,44946 ----
+***************
+*** 44983,44985 ****
+ pyx/MDSG
+- q
+ Q
+--- 44987,44988 ----
***************
*** 46507,46509 ****
Renault/MS
@@ -341,6 +469,15 @@
! sings
sybarite/MS
***************
+*** 57728,57730 ****
+ TX
+! t/XTJBG
+ Tybalt/M
+--- 57727,57729 ----
+ TX
+! tings
+ Tybalt/M
+***************
*** 57809,57811 ****
Tzeltal/M
- u
@@ -353,6 +490,15 @@
+ searchable
unseasonal
***************
+*** 59072,59074 ****
+ vast/PTSYR
+! v/ASV
+ VAT
+--- 59071,59073 ----
+ vast/PTSYR
+! revs
+ VAT
+***************
*** 59538,59540 ****
vi/MDR
! vim/MS
@@ -362,8 +508,37 @@
! Vim/MS
vinaigrette/MS
***************
+*** 61534,61536 ****
+ WWW
+! w/XTJGV
+ WY
+--- 61533,61536 ----
+ WWW
+! wens
+! wings
+ WY
+***************
+*** 61750,61752 ****
+ yew/SM
+- y/F
+ Yggdrasil/M
+--- 61750,61751 ----
+***************
+*** 62058,62060 ****
+ Zsigmondy/M
+! z/TGJ
+ Zubenelgenubi/M
+--- 62057,62059 ----
+ Zsigmondy/M
+! zings
+ Zubenelgenubi/M
+***************
*** 62077 ****
---- 62076,62078 ----
+--- 62076,62082 ----
zymurgy/S
-+ the the/?
+ nd
++ the the/!
++ a a/!
++ a an/!
++ an a/!
++ an an/!
diff --git a/src/spell/fr_FR.diff b/src/spell/fr_FR.diff
index 1c02728bc..2be033450 100644
--- a/src/spell/fr_FR.diff
+++ b/src/spell/fr_FR.diff
@@ -1,11 +1,27 @@
*** fr_FR.orig.aff Sun Apr 14 17:18:22 2002
---- fr_FR.aff Sat Jun 18 19:43:02 2005
+--- fr_FR.aff Sat Jun 25 15:12:00 2005
***************
*** 3,4 ****
--- 3,8 ----
-+ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
+
PFX A Y 10
+***************
+*** 691,692 ****
+--- 695,707 ----
+
++
++ MAP 5
++ MAP aàáâãäå
++ MAP eèéêë
++ MAP iìíîï
++ MAP oòóôõö
++ MAP uùúûü
++ MAP nñ
++ MAP cç
++ MAP yÿý
++ MAP sß
+
diff --git a/src/spell/nl_NL.diff b/src/spell/nl_NL.diff
index f6a8f086e..c72a4e65d 100644
--- a/src/spell/nl_NL.diff
+++ b/src/spell/nl_NL.diff
@@ -1,12 +1,14 @@
*** nl_NL.orig.aff Wed Apr 20 11:48:16 2005
---- nl_NL.aff Tue Jun 21 11:08:32 2005
+--- nl_NL.aff Thu Jun 23 20:52:18 2005
***************
*** 3,4 ****
---- 3,8 ----
+--- 3,10 ----
-+ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþß
-+ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞß
++ FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
++ UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
++
++ KEP =
+
NOSPLITSUGS
***************
@@ -31,7 +33,7 @@
! SFX J 0 je [aeiou][bcdfgkpt]
! SFX J 0 jes [aeiou][bcdfgkpt]
---- 37,56 ----
+--- 39,58 ----
SFX J N 18
! SFX J 0 tje [aeiou][aeiou]
! SFX J 0 tjes [aeiou][aeiou]
@@ -57,7 +59,7 @@
REP ubi ibu
! REP croc krok
REP ten than
---- 257,259 ----
+--- 259,261 ----
REP ubi ibu
! REP croc krok
REP ten than
@@ -66,7 +68,7 @@
REP capucino cappuccino
! REP celcius Celsius
REP kado cadeau
---- 292,294 ----
+--- 294,296 ----
REP capucino cappuccino
! REP celcius Celsius
REP kado cadeau
@@ -79,7 +81,7 @@
REP kommittee comité
! REP kwis quiz
REP kwissen quizzen
---- 298,304 ----
+--- 300,306 ----
REP committee comité
! REP komitee comité
! REP komittee comité
@@ -92,7 +94,7 @@
REP copy kopij
! REP pitoresque pittoreske
REP reikweite reikwijdte
---- 306,308 ----
+--- 308,310 ----
REP copy kopij
! REP pitoresque pittoreske
REP reikweite reikwijdte
@@ -104,7 +106,7 @@
! REP kontekst context
! REP korrekt correct
REP kritikus criticus
---- 318,323 ----
+--- 320,325 ----
REP klup club
! REP wiskid whizzkid
! REP kontakt contact
@@ -113,8 +115,10 @@
REP kritikus criticus
***************
*** 333 ****
---- 337,458 ----
+--- 339,462 ----
REP aflassen afgelasten
++ REP svp s.v.p.
++ REP zoz z.o.z.
+
+ MAP 5
+ MAP aàáâãäå
@@ -237,7 +241,16 @@
+ SAL ZZ- _
+ SAL Z S
*** nl_NL.orig.dic Tue Apr 19 21:03:15 2005
---- nl_NL.dic Wed Jun 15 10:36:20 2005
+--- nl_NL.dic Fri Jun 24 15:42:29 2005
+***************
+*** 1,3 ****
+ 119937
+! 'Versie-12-8-2003. Copyright (c) Nederlandse Tex Gebruikersgroep en S.Brouwer'
+ 's-Graveland
+--- 1,3 ----
+ 119937
+! #Versie-12-8-2003. Copyright (c) Nederlandse Tex Gebruikersgroep en S.Brouwer'
+ 's-Graveland
***************
*** 8,9 ****
--- 8,11 ----
@@ -266,27 +279,32 @@
Dwingeloo
***************
*** 7485,7486 ****
---- 7489,7493 ----
+--- 7489,7498 ----
avond/SN
-+ 's avonds
-+ 's middags
-+ 's ochtends
++ 's avonds/=
++ 's middags/=
++ 's ochtends/=
++ 's morgens/=
++ 's Avonds
++ 's Middags
++ 's Ochtends
++ 's Morgens
avondappèl/S
***************
*** 20681,20682 ****
---- 20688,20690 ----
+--- 20693,20695 ----
cytostatica
+ d.m.v.
daad/P
***************
*** 46300,46301 ****
---- 46308,46310 ----
+--- 46313,46315 ----
informaticus
+ informatie/S
informatie-uitwisseling
***************
*** 60206,60208 ****
---- 60215,60222 ----
+--- 60220,60227 ----
löss
+ m.a.w.
+ m.b.t.
@@ -297,26 +315,27 @@
maag
***************
*** 97474,97475 ****
---- 97488,97490 ----
+--- 97493,97496 ----
suïciderisico/X
+ s.v.p.
++ z.o.z.
swagger/S
***************
*** 101428,101429 ****
---- 101443,101446 ----
+--- 101449,101452 ----
toezichthouder/S
+ toezichthoudersaansprakelijkheidsverzekering
+ toezichthoudersaansprakelijkheidsverzekeringen
toezie/N
***************
*** 103707,103708 ****
---- 103724,103726 ----
+--- 103730,103732 ----
tête-à-tête/S
+ u
uchtend/N
***************
*** 119938 ****
---- 119956,120126 ----
+--- 119962,120136 ----
überhaupt
+ Christiaan/X
+ Fred/X
@@ -488,3 +507,7 @@
+ wishful thinking
+ à gogo
+ à propos
++ ca.
++ evt.
++ enz.
++ bijv.
diff --git a/src/syntax.c b/src/syntax.c
index 6092a1c97..313f6002d 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -7074,7 +7074,11 @@ free_highlight()
int i;
for (i = 0; i < highlight_ga.ga_len; ++i)
+ {
highlight_clear(i);
+ vim_free(HL_TABLE()[i].sg_name);
+ vim_free(HL_TABLE()[i].sg_name_u);
+ }
ga_clear(&highlight_ga);
}
#endif
@@ -7485,7 +7489,7 @@ get_attr_entry(table, aep)
attrentry_T *aep;
{
int i;
- attrentry_T *gap;
+ attrentry_T *taep;
static int recursive = FALSE;
/*
@@ -7499,35 +7503,39 @@ get_attr_entry(table, aep)
*/
for (i = 0; i < table->ga_len; ++i)
{
- gap = &(((attrentry_T *)table->ga_data)[i]);
- if ( aep->ae_attr == gap->ae_attr
+ taep = &(((attrentry_T *)table->ga_data)[i]);
+ if ( aep->ae_attr == taep->ae_attr
&& (
#ifdef FEAT_GUI
(table == &gui_attr_table
- && (aep->ae_u.gui.fg_color == gap->ae_u.gui.fg_color
- && aep->ae_u.gui.bg_color == gap->ae_u.gui.bg_color
- && aep->ae_u.gui.sp_color == gap->ae_u.gui.sp_color
- && aep->ae_u.gui.font == gap->ae_u.gui.font
+ && (aep->ae_u.gui.fg_color == taep->ae_u.gui.fg_color
+ && aep->ae_u.gui.bg_color
+ == taep->ae_u.gui.bg_color
+ && aep->ae_u.gui.sp_color
+ == taep->ae_u.gui.sp_color
+ && aep->ae_u.gui.font == taep->ae_u.gui.font
# ifdef FEAT_XFONTSET
- && aep->ae_u.gui.fontset == gap->ae_u.gui.fontset
+ && aep->ae_u.gui.fontset == taep->ae_u.gui.fontset
# endif
))
||
#endif
(table == &term_attr_table
- && (aep->ae_u.term.start == NULL) ==
- (gap->ae_u.term.start == NULL)
+ && (aep->ae_u.term.start == NULL)
+ == (taep->ae_u.term.start == NULL)
&& (aep->ae_u.term.start == NULL
|| STRCMP(aep->ae_u.term.start,
- gap->ae_u.term.start) == 0)
- && (aep->ae_u.term.stop == NULL) ==
- (gap->ae_u.term.stop == NULL)
+ taep->ae_u.term.start) == 0)
+ && (aep->ae_u.term.stop == NULL)
+ == (taep->ae_u.term.stop == NULL)
&& (aep->ae_u.term.stop == NULL
|| STRCMP(aep->ae_u.term.stop,
- gap->ae_u.term.stop) == 0))
+ taep->ae_u.term.stop) == 0))
|| (table == &cterm_attr_table
- && aep->ae_u.cterm.fg_color == gap->ae_u.cterm.fg_color
- && aep->ae_u.cterm.bg_color == gap->ae_u.cterm.bg_color)
+ && aep->ae_u.cterm.fg_color
+ == taep->ae_u.cterm.fg_color
+ && aep->ae_u.cterm.bg_color
+ == taep->ae_u.cterm.bg_color)
))
return i + ATTR_OFF;
@@ -7547,11 +7555,8 @@ get_attr_entry(table, aep)
}
recursive = TRUE;
-#ifdef FEAT_GUI
- ga_clear(&gui_attr_table);
-#endif
- ga_clear(&term_attr_table);
- ga_clear(&cterm_attr_table);
+ clear_hl_tables();
+
must_redraw = CLEAR;
for (i = 0; i < highlight_ga.ga_len; ++i)
@@ -7566,41 +7571,63 @@ get_attr_entry(table, aep)
if (ga_grow(table, 1) == FAIL)
return 0;
- gap = &(((attrentry_T *)table->ga_data)[table->ga_len]);
- vim_memset(gap, 0, sizeof(attrentry_T));
- gap->ae_attr = aep->ae_attr;
+ taep = &(((attrentry_T *)table->ga_data)[table->ga_len]);
+ vim_memset(taep, 0, sizeof(attrentry_T));
+ taep->ae_attr = aep->ae_attr;
#ifdef FEAT_GUI
if (table == &gui_attr_table)
{
- gap->ae_u.gui.fg_color = aep->ae_u.gui.fg_color;
- gap->ae_u.gui.bg_color = aep->ae_u.gui.bg_color;
- gap->ae_u.gui.sp_color = aep->ae_u.gui.sp_color;
- gap->ae_u.gui.font = aep->ae_u.gui.font;
+ taep->ae_u.gui.fg_color = aep->ae_u.gui.fg_color;
+ taep->ae_u.gui.bg_color = aep->ae_u.gui.bg_color;
+ taep->ae_u.gui.sp_color = aep->ae_u.gui.sp_color;
+ taep->ae_u.gui.font = aep->ae_u.gui.font;
# ifdef FEAT_XFONTSET
- gap->ae_u.gui.fontset = aep->ae_u.gui.fontset;
+ taep->ae_u.gui.fontset = aep->ae_u.gui.fontset;
# endif
}
#endif
if (table == &term_attr_table)
{
if (aep->ae_u.term.start == NULL)
- gap->ae_u.term.start = NULL;
+ taep->ae_u.term.start = NULL;
else
- gap->ae_u.term.start = vim_strsave(aep->ae_u.term.start);
+ taep->ae_u.term.start = vim_strsave(aep->ae_u.term.start);
if (aep->ae_u.term.stop == NULL)
- gap->ae_u.term.stop = NULL;
+ taep->ae_u.term.stop = NULL;
else
- gap->ae_u.term.stop = vim_strsave(aep->ae_u.term.stop);
+ taep->ae_u.term.stop = vim_strsave(aep->ae_u.term.stop);
}
else if (table == &cterm_attr_table)
{
- gap->ae_u.cterm.fg_color = aep->ae_u.cterm.fg_color;
- gap->ae_u.cterm.bg_color = aep->ae_u.cterm.bg_color;
+ taep->ae_u.cterm.fg_color = aep->ae_u.cterm.fg_color;
+ taep->ae_u.cterm.bg_color = aep->ae_u.cterm.bg_color;
}
++table->ga_len;
return (table->ga_len - 1 + ATTR_OFF);
}
+/*
+ * Clear all highlight tables.
+ */
+ void
+clear_hl_tables()
+{
+ int i;
+ attrentry_T *taep;
+
+#ifdef FEAT_GUI
+ ga_clear(&gui_attr_table);
+#endif
+ for (i = 0; i < term_attr_table.ga_len; ++i)
+ {
+ taep = &(((attrentry_T *)term_attr_table.ga_data)[i]);
+ vim_free(taep->ae_u.term.start);
+ vim_free(taep->ae_u.term.stop);
+ }
+ ga_clear(&term_attr_table);
+ ga_clear(&cterm_attr_table);
+}
+
#if defined(FEAT_SYN_HL) || defined(PROTO)
/*
* Combine special attributes (e.g., for spelling) with other attributes
diff --git a/src/tag.c b/src/tag.c
index e94322d6a..e780b3c30 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -122,7 +122,8 @@ static taggy_T ptag_entry = {NULL};
* type == DT_LAST: jump to last match of same tag
* type == DT_SELECT: ":tselect [tag]", select tag from a list of all matches
* type == DT_JUMP: ":tjump [tag]", jump to tag or select tag from a list
- * type == DT_CSCOPE: use cscope to find the tag.
+ * type == DT_CSCOPE: use cscope to find the tag
+ * type == DT_FREE: free cached matches
*
* for cscope, returns TRUE if we jumped to tag or aborted, FALSE otherwise
*/
@@ -173,6 +174,19 @@ do_tag(tag, type, count, forceit, verbose)
static char_u **matches = NULL;
static int flags;
+#ifdef EXITFREE
+ if (type == DT_FREE)
+ {
+ /* remove the list of matches */
+ FreeWild(num_matches, matches);
+# ifdef FEAT_CSCOPE
+ cs_free_tags();
+# endif
+ num_matches = 0;
+ return FALSE;
+ }
+#endif
+
if (type == DT_HELP)
{
type = DT_TAG;
@@ -2108,7 +2122,8 @@ line_read_in:
* other tag: <mtt><tag_fname><NUL><NUL><lbuf>
* without Emacs tags: <mtt><tag_fname><NUL><lbuf>
*/
- len = (int)STRLEN(tag_fname) + (int)STRLEN(lbuf_line) + 3;
+ len = (int)STRLEN(tag_fname)
+ + (int)STRLEN(lbuf_line) + 3;
#ifdef FEAT_EMACS_TAGS
if (is_etag)
len += (int)STRLEN(ebuf) + 1;
@@ -2345,6 +2360,17 @@ found_tagfile_cb(fname, cookie)
vim_strsave(fname);
}
+static void *search_ctx = NULL;
+
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_tag_stuff()
+{
+ vim_findfile_cleanup(search_ctx);
+ do_tag(NULL, DT_FREE, 0, 0, 0);
+}
+#endif
+
/*
* Get the next name of a tag file from the tag file list.
* For help files, use "tags" file only.
@@ -2356,7 +2382,6 @@ get_tagfname(first, buf)
int first; /* TRUE when first file name is wanted */
char_u *buf; /* pointer to buffer of MAXPATHL chars */
{
- static void *search_ctx = NULL;
static char_u *np = NULL;
static int did_filefind_init;
static int hf_idx = 0;
diff --git a/src/undo.c b/src/undo.c
index 2bb545617..e586e5633 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -411,6 +411,8 @@ u_savecommon(top, bot, newbot)
}
}
}
+ else
+ uep->ue_array = NULL;
uep->ue_next = curbuf->b_u_newhead->uh_entry;
curbuf->b_u_newhead->uh_entry = uep;
curbuf->b_u_synced = FALSE;
@@ -923,6 +925,7 @@ u_freeentry(uep, n)
{
while (n)
U_FREE_LINE(uep->ue_array[--n]);
+ U_FREE_LINE((char_u *)uep->ue_array);
U_FREE_LINE((char_u *)uep);
}
@@ -1047,6 +1050,7 @@ u_blockfree(buf)
{
while (buf->b_u_newhead != NULL)
u_freelist(buf, buf->b_u_newhead);
+ U_FREE_LINE(buf->b_u_line_ptr);
}
#else
diff --git a/src/version.h b/src/version.h
index 4de29d0c1..0c38a0eab 100644
--- a/src/version.h
+++ b/src/version.h
@@ -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 Jun 24)"
-#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 24, compiled "
+#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 25)"
+#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 25, compiled "