From: Bram Moolenaar Date: Fri, 2 Sep 2011 09:56:20 +0000 (+0200) Subject: updated for version 7.3.290 X-Git-Tag: v7.3.290 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=39fc42ef9d3d255d775198f47f0ba53caa078441;p=vim 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 411328787..b30d31102 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3342,8 +3342,22 @@ buf_write(buf, fname, sfname, start, end, eap, append, forceit, } 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 925ff2477..7d11c6ffa 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 290, /**/ 289, /**/