summaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-08 18:07:21 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-08 18:07:21 +0200
commitc024b4667875e5bc6fd0ed791530e33c3161bff7 (patch)
tree4b7c358c24cb5f5d6d36a40250afbd44eaf6dda7 /src/buffer.c
parentaef5c62a6fff7654bb8df7b9359e811f7a6e428f (diff)
patch 8.1.1498: ":write" increments b:changedtick even though nothing changedv8.1.1498
Problem: ":write" increments b:changedtick even though nothing changed. (Daniel Hahler) Solution: Only increment b:changedtick if the modified flag is reset.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 66f6fc654c..e6ae09d255 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -60,7 +60,9 @@ static char *e_auabort = N_("E855: Autocommands caused command to abort");
/* Number of times free_buffer() was called. */
static int buf_free_count = 0;
-/* Read data from buffer for retrying. */
+/*
+ * Read data from buffer for retrying.
+ */
static int
read_buffer(
int read_stdin, /* read file from stdin, otherwise fifo */
@@ -104,7 +106,7 @@ read_buffer(
if (!readonlymode && !BUFEMPTY())
changed();
else if (retval == OK)
- unchanged(curbuf, FALSE);
+ unchanged(curbuf, FALSE, TRUE);
if (retval == OK)
{
@@ -275,7 +277,7 @@ open_buffer(
)
changed();
else if (retval == OK && !read_stdin && !read_fifo)
- unchanged(curbuf, FALSE);
+ unchanged(curbuf, FALSE, TRUE);
save_file_ff(curbuf); /* keep this fileformat */
/* Set last_changedtick to avoid triggering a TextChanged autocommand right
@@ -700,7 +702,7 @@ aucmd_abort:
buf_clear_file(buf_T *buf)
{
buf->b_ml.ml_line_count = 1;
- unchanged(buf, TRUE);
+ unchanged(buf, TRUE, TRUE);
buf->b_shortname = FALSE;
buf->b_p_eol = TRUE;
buf->b_start_eol = TRUE;