updated for version 7.3.290
Problem: When a BufWriteCmd autocommand resets 'modified' this doesn't
change older buffer states to be marked as 'modified' like
":write" does. (Yukihiro Nakadaira)
Solution: When the BufWriteCmd resets 'modified' then adjust the undo
information like ":write" does.
diff --git a/src/fileio.c b/src/fileio.c
index 4113287..b30d311 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3342,8 +3342,22 @@
}
else if (reset_changed && whole)
{
- if (!(did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
- sfname, sfname, FALSE, curbuf, eap)))
+ int was_changed = curbufIsChanged();
+
+ did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
+ sfname, sfname, FALSE, curbuf, eap);
+ if (did_cmd)
+ {
+ if (was_changed && !curbufIsChanged())
+ {
+ /* Written everything correctly and BufWriteCmd has reset
+ * 'modified': Correct the undo information so that an
+ * undo now sets 'modified'. */
+ u_unchanged(curbuf);
+ u_update_save_nr(curbuf);
+ }
+ }
+ else
{
#ifdef FEAT_QUICKFIX
if (overwriting && bt_nofile(curbuf))
diff --git a/src/version.c b/src/version.c
index 925ff24..7d11c6f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -710,6 +710,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 290,
+/**/
289,
/**/
288,