summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <bram@vim.org>2013-11-28 17:41:46 +0100
committerBram Moolenaar <bram@vim.org>2013-11-28 17:41:46 +0100
commit049eb936f0351acf3bdb875074e554f264147b39 (patch)
tree925d0d132265f2a03cb711f00b5605ac4579fc79
parent17e8dcb2c47e0aae969cb3b401f58175699164d3 (diff)
downloadvim-049eb936f0351acf3bdb875074e554f264147b39.tar.gz
updated for version 7.4.108v7.4.108v7-4-108
Problem: "zG" and "zW" leave temp files around on MS-Windows. Solution: Delete the temp files when exiting. (Ken Takata)
-rw-r--r--src/memline.c5
-rw-r--r--src/proto/spell.pro1
-rw-r--r--src/spell.c43
-rw-r--r--src/version.c2
4 files changed, 33 insertions, 18 deletions
diff --git a/src/memline.c b/src/memline.c
index 2f08557f..ea6571cb 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -841,8 +841,11 @@ ml_close_all(del_file)
for (buf = firstbuf; buf != NULL; buf = buf->b_next)
ml_close(buf, del_file && ((buf->b_flags & BF_PRESERVED) == 0
|| vim_strchr(p_cpo, CPO_PRESERVE) == NULL));
+#ifdef FEAT_SPELL
+ spell_delete_wordlist(); /* delete the internal wordlist */
+#endif
#ifdef TEMPDIRNAMES
- vim_deltempdir(); /* delete created temp directory */
+ vim_deltempdir(); /* delete created temp directory */
#endif
}
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 9ed775b5..5c399b37 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -3,6 +3,7 @@ int spell_check __ARGS((win_T *wp, char_u *ptr, hlf_T *attrp, int *capcol, int d
int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, hlf_T *attrp));
void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
char_u *did_set_spelllang __ARGS((win_T *wp));
+void spell_delete_wordlist __ARGS((void));
void spell_free_all __ARGS((void));
void spell_reload __ARGS((void));
int spell_check_msm __ARGS((void));
diff --git a/src/spell.c b/src/spell.c
index 18a39570..66ccecb0 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -2180,9 +2180,9 @@ spell_move_to(wp, dir, allwords, curline, attrp)
char_u *endp;
hlf_T attr;
int len;
-# ifdef FEAT_SYN_HL
+#ifdef FEAT_SYN_HL
int has_syntax = syntax_present(wp);
-# endif
+#endif
int col;
int can_spell;
char_u *buf = NULL;
@@ -2280,7 +2280,7 @@ spell_move_to(wp, dir, allwords, curline, attrp)
: p - buf)
> wp->w_cursor.col)))
{
-# ifdef FEAT_SYN_HL
+#ifdef FEAT_SYN_HL
if (has_syntax)
{
col = (int)(p - buf);
@@ -4701,7 +4701,25 @@ badword_captype(word, end)
return flags;
}
-# if defined(FEAT_MBYTE) || defined(EXITFREE) || defined(PROTO)
+/*
+ * Delete the internal wordlist and its .spl file.
+ */
+ void
+spell_delete_wordlist()
+{
+ char_u fname[MAXPATHL];
+
+ if (int_wordlist != NULL)
+ {
+ mch_remove(int_wordlist);
+ int_wordlist_spl(fname);
+ mch_remove(fname);
+ vim_free(int_wordlist);
+ int_wordlist = NULL;
+ }
+}
+
+#if defined(FEAT_MBYTE) || defined(EXITFREE) || defined(PROTO)
/*
* Free all languages.
*/
@@ -4710,7 +4728,6 @@ spell_free_all()
{
slang_T *slang;
buf_T *buf;
- char_u fname[MAXPATHL];
/* Go through all buffers and handle 'spelllang'. <VN> */
for (buf = firstbuf; buf != NULL; buf = buf->b_next)
@@ -4723,24 +4740,16 @@ spell_free_all()
slang_free(slang);
}
- if (int_wordlist != NULL)
- {
- /* Delete the internal wordlist and its .spl file */
- mch_remove(int_wordlist);
- int_wordlist_spl(fname);
- mch_remove(fname);
- vim_free(int_wordlist);
- int_wordlist = NULL;
- }
+ spell_delete_wordlist();
vim_free(repl_to);
repl_to = NULL;
vim_free(repl_from);
repl_from = NULL;
}
-# endif
+#endif
-# if defined(FEAT_MBYTE) || defined(PROTO)
+#if defined(FEAT_MBYTE) || defined(PROTO)
/*
* Clear all spelling tables and reload them.
* Used after 'encoding' is set and when ":mkspell" was used.
@@ -4773,7 +4782,7 @@ spell_reload()
}
}
}
-# endif
+#endif
/*
* Reload the spell file "fname" if it's loaded.
diff --git a/src/version.c b/src/version.c
index 1354f9c0..b982283a 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 108,
+/**/
107,
/**/
106,