[21.5] Fix handling of buffer-file-truename in info.el

stephen at xemacs.org stephen at xemacs.org
Mon Nov 13 22:47:42 EST 2006


21.5

Corresponding patch for 21.4 submitted separately.  See
Subject: [R21.4] buffer-file-truename vs. info.el
Message-ID: <877ixy4rpk.fsf at uwakimon.sk.tsukuba.ac.jp>
for discussion.

Note this is a git diff; apply with "patch -p1".

steve at uwakimon /playpen/src/XEmacs/git-integration $ git diff
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 663a24f..a38b498 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -0,0 +1,8 @@
+2006-11-14  Stephen J. Turnbull  <stephen at xemacs.org>
+
+	* info.el (Info-find-file-node, Info-insert-dir)
+	(Info-read-subfile, Info-insert-file-contents): Maintain invariant
+	`(equal buffer-file-truename (file-truename buffer-file-name))'.
+	Thanks to Nelson Ferreira <nelson.ferreira at ieee.org> for report
+	and discussion.
+
diff --git a/src/ChangeLog b/src/ChangeLog
index 6ec0a68..3e99ee2 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -0,0 +1,7 @@
+2006-11-14  Stephen J. Turnbull  <stephen at xemacs.org>
+
+	* buffer.c (buffer-file-name): Document invariant.
+	(buffer-file-truename): Sync wording to buffer-file-name.
+	Thanks to Nelson Ferreira <nelson.ferreira at ieee.org> for report
+	and discussion.
+

diff --git a/lisp/info.el b/lisp/info.el
index 5c70168..1106117 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -717,7 +717,8 @@ node of a file of this name."
 		    ;; Nooooooooooo!  Info-index can extend across more
 		    ;; than one file (e.g. XEmacs, Lispref)
 		    ;; Info-index-alternatives nil
-		    buffer-file-name nil)
+		    buffer-file-name nil
+		    buffer-file-truename nil)
 	      (erase-buffer)
 	      (if (string= "dir" (file-name-nondirectory filename))
 		  (Info-insert-dir)
@@ -1052,7 +1053,8 @@ actually get any text from."
       (message "Composing main Info directory...done"))
     (setq Info-dir-contents (buffer-string)))
   (setq default-directory (file-name-as-directory Info-dir-contents-directory))
-  (setq buffer-file-name (caar Info-dir-file-attributes)))
+  (setq buffer-file-name (caar Info-dir-file-attributes)
+	buffer-file-truename (file-truename buffer-file-name)))
 
 (defmacro Info-directory-files (dir-file &optional all full nosort files-only)
   "Return a list of Info files living in the same directory as DIR-FILE.
@@ -1423,7 +1425,8 @@ invoke \"xemacs -batch -f Info-batch-reb
 	    (throw 'foo t)))))
     (or (equal Info-current-subfile lastfilename)
 	(let ((buffer-read-only nil))
-	  (setq buffer-file-name nil)
+	  (setq buffer-file-name nil
+		buffer-file-truename nil)
 	  (widen)
 	  (erase-buffer)
 	  (Info-insert-file-contents (Info-suffixed-file
@@ -1531,7 +1534,8 @@ versions of NAME. Only the suffixes are
 	  (call-process shell-file-name nil t nil shell-command-switch command)
 	  (message "")
 	  (when visit
-	    (setq buffer-file-name file)
+	    (setq buffer-file-name file
+		  buffer-file-truename (file-truename buffer-file-name))
 	    (set-buffer-modified-p nil)
 	    (clear-visited-file-modtime)))
       (insert-file-contents file visit))))
diff --git a/src/buffer.c b/src/buffer.c
index a20b7d9..652f578 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2635,6 +2635,8 @@ It may not be a list of functions.
   DEFVAR_BUFFER_LOCAL ("buffer-file-name", filename /*
 Name of file visited in current buffer, or nil if not visiting a file.
 Each buffer has its own value of this variable.
+Code that sets or binds this variable must maintain the invariant
+`(equal buffer-file-truename (file-truename buffer-file-name))'.
 */ );
 
 #if 0 /* FSFmacs */



More information about the XEmacs-Patches mailing list