changeset 2685:862d920800b1 v7.3.103

updated for version 7.3.103 Problem: Changing 'fileformat' and then using ":w" in an empty file sets the 'modified' option. Solution: In unchanged() don't ignore 'ff' for an empty file.
author Bram Moolenaar <bram@vim.org>
date Sat, 22 Jan 2011 00:11:50 +0100
parents 951641b8784d
children 7b44c70ee8ab
files .hgignore src/misc1.c src/option.c src/proto/option.pro src/undo.c src/version.c
diffstat 6 files changed, 20 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore
+++ b/.hgignore
@@ -42,3 +42,11 @@ gvimext.lib
 *.mo
 *.swp
 *~
+
+# Generated by "make test"
+src/po/*.ck 
+src/testdir/mbyte.vim 
+src/testdir/mzscheme.vim 
+src/testdir/small.vim 
+src/testdir/tiny.vim 
+src/testdir/test*.out
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2919,7 +2919,7 @@ unchanged(buf, ff)
     buf_T	*buf;
     int		ff;	/* also reset 'fileformat' */
 {
-    if (buf->b_changed || (ff && file_ff_differs(buf)))
+    if (buf->b_changed || (ff && file_ff_differs(buf, FALSE)))
     {
 	buf->b_changed = 0;
 	ml_setflags(buf);
--- a/src/option.c
+++ b/src/option.c
@@ -11296,16 +11296,19 @@ save_file_ff(buf)
  * from when editing started (save_file_ff() called).
  * Also when 'endofline' was changed and 'binary' is set, or when 'bomb' was
  * changed and 'binary' is not set.
- * Don't consider a new, empty buffer to be changed.
+ * When "ignore_empty" is true don't consider a new, empty buffer to be
+ * changed.
  */
     int
-file_ff_differs(buf)
+file_ff_differs(buf, ignore_empty)
     buf_T	*buf;
+    int		ignore_empty;
 {
     /* In a buffer that was never loaded the options are not valid. */
     if (buf->b_flags & BF_NEVERLOADED)
 	return FALSE;
-    if ((buf->b_flags & BF_NEW)
+    if (ignore_empty
+	    && (buf->b_flags & BF_NEW)
 	    && buf->b_ml.ml_line_count == 1
 	    && *ml_get_buf(buf, (linenr_T)1, FALSE) == NUL)
 	return FALSE;
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -54,6 +54,6 @@ void change_compatible __ARGS((int on));
 int option_was_set __ARGS((char_u *name));
 int can_bs __ARGS((int what));
 void save_file_ff __ARGS((buf_T *buf));
-int file_ff_differs __ARGS((buf_T *buf));
+int file_ff_differs __ARGS((buf_T *buf, int ignore_empty));
 int check_ff_value __ARGS((char_u *p));
 /* vim: set ft=c : */
--- a/src/undo.c
+++ b/src/undo.c
@@ -3304,7 +3304,7 @@ bufIsChanged(buf)
 #ifdef FEAT_QUICKFIX
 	    !bt_dontwrite(buf) &&
 #endif
-	    (buf->b_changed || file_ff_differs(buf));
+	    (buf->b_changed || file_ff_differs(buf, TRUE));
 }
 
     int
@@ -3314,7 +3314,7 @@ curbufIsChanged()
 #ifdef FEAT_QUICKFIX
 	!bt_dontwrite(curbuf) &&
 #endif
-	(curbuf->b_changed || file_ff_differs(curbuf));
+	(curbuf->b_changed || file_ff_differs(curbuf, TRUE));
 }
 
 #if defined(FEAT_EVAL) || defined(PROTO)
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    103,
+/**/
     102,
 /**/
     101,