diff options
author | Bram Moolenaar <Bram@vim.org> | 2007-02-13 05:19:30 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2007-02-13 05:19:30 +0000 |
commit | 373154b00c90a7fe81409f471075a62ef3dfbc25 (patch) | |
tree | 68ac660c8aa7535496fbc752de2d83ecf18949da | |
parent | ad40f02cd9a306924352c1647186ce745489fcfb (diff) | |
download | vim-git-373154b00c90a7fe81409f471075a62ef3dfbc25.tar.gz |
updated for version 7.0-195v7.0.195
-rw-r--r-- | src/ex_cmds2.c | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 6396ee115..e5e1f65c6 100644 --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -1242,14 +1242,22 @@ autowrite(buf, forceit) buf_T *buf; int forceit; { + int r; + if (!(p_aw || p_awa) || !p_write #ifdef FEAT_QUICKFIX - /* never autowrite a "nofile" or "nowrite" buffer */ - || bt_dontwrite(buf) + /* never autowrite a "nofile" or "nowrite" buffer */ + || bt_dontwrite(buf) #endif - || (!forceit && buf->b_p_ro) || buf->b_ffname == NULL) + || (!forceit && buf->b_p_ro) || buf->b_ffname == NULL) return FAIL; - return buf_write_all(buf, forceit); + r = buf_write_all(buf, forceit); + + /* Writing may succeed but the buffer still changed, e.g., when there is a + * conversion error. We do want to return FAIL then. */ + if (buf_valid(buf) && bufIsChanged(buf)) + r = FAIL; + return r; } /* @@ -1472,6 +1480,8 @@ check_changed_any(hidden) if (buf == NULL) /* No buffers changed */ return FALSE; + /* Try auto-writing the buffer. If this fails but the buffer no + * longer exists it's not changed, that's OK. */ if (check_changed(buf, p_awa, TRUE, FALSE, TRUE) && buf_valid(buf)) break; /* didn't save - still changes */ } diff --git a/src/version.c b/src/version.c index 0c45c476b..d60f52d02 100644 --- a/src/version.c +++ b/src/version.c @@ -667,6 +667,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 195, +/**/ 194, /**/ 193, |