changeset 3524:d8ce4a2eb44e v7.3.523

updated for version 7.3.523 Problem: ":diffupdate" doesn't check for files changed elsewhere. Solution: Add the ! flag. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Fri, 18 May 2012 18:47:17 +0200
parents e4d7858de642
children b1f40dd6f844
files runtime/doc/diff.txt src/diff.c src/ex_cmds.h src/version.c
diffstat 4 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -178,7 +178,7 @@ buffer.  If you don't want a buffer to r
 nodiff" before hiding it.
 
 							*:diffu* *:diffupdate*
-:diffu[pdate]			Update the diff highlighting and folds.
+:diffu[pdate][!]		Update the diff highlighting and folds.
 
 Vim attempts to keep the differences updated when you make changes to the
 text.  This mostly takes care of inserted and deleted lines.  Changes within a
@@ -187,6 +187,9 @@ To force the differences to be updated u
 
 	:diffupdate
 
+If the ! is included Vim will check if the file was changed externally and
+needs to be reloaded.  It will prompt for each changed file, like `:checktime`
+was used.
 
 Vim will show filler lines for lines that are missing in one window but are
 present in another.  These lines were inserted in another file or deleted in
--- a/src/diff.c
+++ b/src/diff.c
@@ -783,6 +783,15 @@ ex_diffupdate(eap)
 	goto theend;
     }
 
+    /* :diffupdate! */
+    if (eap != NULL && eap->forceit)
+	for (idx_new = idx_orig; idx_new < DB_COUNT; ++idx_new)
+	{
+	    buf = curtab->tp_diffbuf[idx_new];
+	    if (buf_valid(buf))
+		buf_check_timestamp(buf, FALSE);
+	}
+
     /* Write the first buffer to a tempfile. */
     buf = curtab->tp_diffbuf[idx_orig];
     if (diff_write(buf, tmp_orig) == FAIL)
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -304,7 +304,7 @@ EX(CMD_delfunction,	"delfunction",	ex_de
 EX(CMD_display,		"display",	ex_display,
 			EXTRA|NOTRLCOM|TRLBAR|SBOXOK|CMDWIN),
 EX(CMD_diffupdate,	"diffupdate",	ex_diffupdate,
-			TRLBAR),
+			BANG|TRLBAR),
 EX(CMD_diffget,		"diffget",	ex_diffgetput,
 			RANGE|EXTRA|TRLBAR|MODIFY),
 EX(CMD_diffoff,		"diffoff",	ex_diffoff,
--- 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 */
 /**/
+    523
+/**/
     522,
 /**/
     521,