updated for version 7.0181
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 8aa8299..5de02e6 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 7.0aa. Last change: 2006 Jan 13
+*todo.txt* For Vim version 7.0aa. Last change: 2006 Jan 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,6 +30,9 @@
*known-bugs*
-------------------- Known bugs and current work -----------------------
+When the file "" exists, then ":!ls aap<Tab>" should put backslashes before
+'&', ';', '<' and '>'.
+
Evaluating CTRL-R = in the sandbox causes trouble (G. Sumner Hayes). Can the
rules for the commandline window be used?
@@ -67,7 +70,6 @@
Can't reproduce it right now...
spelling:
-- NL woordenlijst naar Adri sturen.
- Include script to cleanup a .add file. (Antonio Colombo, Jan 9)
- suggestions for "macARONI" doesn't include "macaroni", they are all allcap.
suggestion for "KG" to "kg" when it's keepcase.
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 36345b4..00830d9 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt* For Vim version 7.0aa. Last change: 2006 Jan 13
+*version7.txt* For Vim version 7.0aa. Last change: 2006 Jan 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1558,4 +1558,12 @@
stopped at the region end match, making the region continue after that.
Now check for the column being past the end of the line in syn_add_end_off().
+When changing a file, setting 'swapfile' off and then on again, making another
+change and killing Vim, then some blocks may be missing from the swapfile.
+When 'swapfile' is switched back on mark all blocks in the swapfile as dirty.
+Added mf_set_dirty().
+
+Expanding wildcards in a command like ":e aap;<>!" didn't work. Put
+backslashes before characters that are special to the shell. (Adri Verhoef)
+
vim:tw=78:ts=8:ft=help:norl:
diff --git a/src/eval.c b/src/eval.c
index 4823593..c18b42d 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -17667,7 +17667,18 @@
}
if (lv.ll_exp_name != NULL)
+ {
len = STRLEN(lv.ll_exp_name);
+ if (lead <= 2 && lv.ll_name == lv.ll_exp_name
+ && STRNCMP(lv.ll_name, "s:", 2) == 0)
+ {
+ /* When there was "s:" already or the name expanded to get a
+ * leading "s:" then remove it. */
+ lv.ll_name += 2;
+ len -= 2;
+ lead = 2;
+ }
+ }
else
{
if (lead == 2) /* skip over "s:" */
diff --git a/src/memfile.c b/src/memfile.c
index e1a6b60..bac84fe 100644
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -701,6 +701,23 @@
}
/*
+ * For all blocks in memory file *mfp that have a positive block number set
+ * the dirty flag. These are blocks that need to be written to a newly
+ * created swapfile.
+ */
+ void
+mf_set_dirty(mfp)
+ memfile_T *mfp;
+{
+ bhdr_T *hp;
+
+ for (hp = mfp->mf_used_last; hp != NULL; hp = hp->bh_prev)
+ if (hp->bh_bnum > 0)
+ hp->bh_flags |= BH_DIRTY;
+ mfp->mf_dirty = TRUE;
+}
+
+/*
* insert block *hp in front of hashlist of memfile *mfp
*/
static void
diff --git a/src/memline.c b/src/memline.c
index 9abf155..c87a955 100644
--- a/src/memline.c
+++ b/src/memline.c
@@ -563,7 +563,13 @@
/* Flush block zero, so others can read it */
if (mf_sync(mfp, MFS_ZERO) == OK)
+ {
+ /* Mark all blocks that should be in the swapfile as dirty.
+ * Needed for when the 'swapfile' option was reset, so that
+ * the swap file was deleted, and then on again. */
+ mf_set_dirty(mfp);
break;
+ }
/* Writing block 0 failed: close the file and try another dir */
mf_close_file(buf, FALSE);
}