changeset 68799:739ab5567adc

(revert-buffer, recover-file): Replace buffer-read-only with inhibit-read-only. Suggested by Stefan Monnier. (revert-buffer): Let insert-file-contents discard buffer-undo-list. Simplify code. (find-file, find-file-existing, revert-buffer): Doc-string fixes.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 11 Feb 2006 18:42:23 +0000
parents 8327f0369e4b
children c29218de4bba
files lisp/files.el
diffstat 1 files changed, 52 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Sat Feb 11 16:18:02 2006 +0000
+++ b/lisp/files.el	Sat Feb 11 18:42:23 2006 +0000
@@ -1025,7 +1025,7 @@
 
 Interactively, or if WILDCARDS is non-nil in a call from Lisp,
 expand wildcards (if any) and visit multiple files.  You can
-suppress wildcard expansion by setting `find-file-wildcards'.
+suppress wildcard expansion by setting `find-file-wildcards' to nil.
 
 To visit a file without any kind of conversion and without
 automatically choosing a major mode, use \\[find-file-literally]."
@@ -1077,7 +1077,7 @@
 
 (defun find-file-existing (filename &optional wildcards)
   "Edit the existing file FILENAME.
-Like \\[find-file] but only allow files that exists."
+Like \\[find-file] but only allow a file that exists."
   (interactive (find-file-read-args "Find existing file: " t))
   (unless (file-exists-p filename) (error "%s does not exist" filename))
   (find-file filename wildcards)
@@ -3795,8 +3795,8 @@
 to nil.
 
 Optional second argument NOCONFIRM means don't ask for confirmation at
-all.  (The local variable `revert-without-query', if non-nil, prevents
-confirmation.)
+all.  \(The variable `revert-without-query' offers another way to
+revert buffers without querying for confirmation.)
 
 Optional third argument PRESERVE-MODES non-nil means don't alter
 the files modes.  Normally we reinitialize them using `normal-mode'.
@@ -3831,13 +3831,10 @@
 	       (error "Buffer does not seem to be associated with any file"))
 	      ((or noconfirm
 		   (and (not (buffer-modified-p))
-			(let ((tail revert-without-query)
-			      (found nil))
-			  (while tail
-			    (if (string-match (car tail) file-name)
-				(setq found t))
-			    (setq tail (cdr tail)))
-			  found))
+			(catch 'found
+			  (dolist (regexp revert-without-query)
+			    (when (string-match regexp file-name)
+			      (throw 'found t)))))
 		   (yes-or-no-p (format "Revert buffer from file %s? "
 					file-name)))
 	       (run-hooks 'before-revert-hook)
@@ -3846,50 +3843,51 @@
 	       (and (not auto-save-p)
 		    (not (verify-visited-file-modtime (current-buffer)))
 		    (setq buffer-backed-up nil))
-	       ;; Get rid of all undo records for this buffer.
-	       (or (eq buffer-undo-list t)
-		   (setq buffer-undo-list nil))
 	       ;; Effectively copy the after-revert-hook status,
 	       ;; since after-find-file will clobber it.
 	       (let ((global-hook (default-value 'after-revert-hook))
-		     (local-hook-p (local-variable-p 'after-revert-hook))
-		     (local-hook (and (local-variable-p 'after-revert-hook)
-				      after-revert-hook)))
-		 (let (buffer-read-only
-		       ;; Don't make undo records for the reversion.
-		       (buffer-undo-list t))
-		   (if revert-buffer-insert-file-contents-function
-		       (funcall revert-buffer-insert-file-contents-function
-				file-name auto-save-p)
-		     (if (not (file-exists-p file-name))
-			 (error (if buffer-file-number
-				    "File %s no longer exists!"
-				  "Cannot revert nonexistent file %s")
-				file-name))
-		     ;; Bind buffer-file-name to nil
-		     ;; so that we don't try to lock the file.
-		     (let ((buffer-file-name nil))
-		       (or auto-save-p
-			   (unlock-buffer)))
-		     (widen)
-		     (let ((coding-system-for-read
-			    ;; Auto-saved file shoule be read by Emacs'
-			    ;; internal coding.
-			    (if auto-save-p 'auto-save-coding
-			      (or coding-system-for-read
-				  buffer-file-coding-system-explicit))))
-		       ;; This force after-insert-file-set-coding
-		       ;; (called from insert-file-contents) to set
-		       ;; buffer-file-coding-system to a proper value.
-		       (kill-local-variable 'buffer-file-coding-system)
-
-		       ;; Note that this preserves point in an intelligent way.
-		       (if preserve-modes
-			   (let ((buffer-file-format buffer-file-format))
-			     (insert-file-contents file-name (not auto-save-p)
-						   nil nil t))
-			 (insert-file-contents file-name (not auto-save-p)
-					       nil nil t)))))
+		     (local-hook (when (local-variable-p 'after-revert-hook)
+				   after-revert-hook))
+		     (inhibit-read-only t))
+		 (cond
+		  (revert-buffer-insert-file-contents-function
+		   (unless (eq buffer-undo-list t)
+		     ;; Get rid of all undo records for this buffer.
+		     (setq buffer-undo-list nil))
+		   ;; Don't make undo records for the reversion.
+		   (let ((buffer-undo-list t))
+		     (funcall revert-buffer-insert-file-contents-function
+			      file-name auto-save-p)))
+		  ((not (file-exists-p file-name))
+		   (error (if buffer-file-number
+			      "File %s no longer exists!"
+			    "Cannot revert nonexistent file %s")
+			  file-name))
+		  (t
+		   ;; Bind buffer-file-name to nil
+		   ;; so that we don't try to lock the file.
+		   (let ((buffer-file-name nil))
+		     (or auto-save-p
+			 (unlock-buffer)))
+		   (widen)
+		   (let ((coding-system-for-read
+			  ;; Auto-saved file should be read by Emacs'
+			  ;; internal coding.
+			  (if auto-save-p 'auto-save-coding
+			    (or coding-system-for-read
+				buffer-file-coding-system-explicit))))
+		     ;; This force after-insert-file-set-coding
+		     ;; (called from insert-file-contents) to set
+		     ;; buffer-file-coding-system to a proper value.
+		     (kill-local-variable 'buffer-file-coding-system)
+
+		     ;; Note that this preserves point in an intelligent way.
+		     (if preserve-modes
+			 (let ((buffer-file-format buffer-file-format))
+			   (insert-file-contents file-name (not auto-save-p)
+						 nil nil t))
+		       (insert-file-contents file-name (not auto-save-p)
+					     nil nil t)))))
 		 ;; Recompute the truename in case changes in symlinks
 		 ;; have changed the truename.
 		 (setq buffer-file-truename
@@ -3897,7 +3895,7 @@
 		 (after-find-file nil nil t t preserve-modes)
 		 ;; Run after-revert-hook as it was before we reverted.
 		 (setq-default revert-buffer-internal-hook global-hook)
-		 (if local-hook-p
+		 (if local-hook
 		     (set (make-local-variable 'revert-buffer-internal-hook)
 			  local-hook)
 		   (kill-local-variable 'revert-buffer-internal-hook))
@@ -3943,7 +3941,7 @@
 		   (insert-directory-safely file-name switches))))
 	     (yes-or-no-p (format "Recover auto save file %s? " file-name)))
 	   (switch-to-buffer (find-file-noselect file t))
-	   (let ((buffer-read-only nil)
+	   (let ((inhibit-read-only t)
 		 ;; Keep the current buffer-file-coding-system.
 		 (coding-system buffer-file-coding-system)
 		 ;; Auto-saved file shoule be read with special coding.