changeset 2375:94e135f2d64d

(local-write-file-hooks): New variable. (set-visited-file-name): Kill local-write-file-hooks as local var. (basic-save-buffer): Use local-write-file-hooks.
author Richard M. Stallman <rms@gnu.org>
date Fri, 26 Mar 1993 07:28:20 +0000
parents c00b3b357392
children f7a3795bd1c5
files lisp/files.el
diffstat 1 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Fri Mar 26 04:17:45 1993 +0000
+++ b/lisp/files.el	Fri Mar 26 07:28:20 1993 +0000
@@ -180,6 +180,7 @@
 The buffer's local variables (if any) will have been processed before the
 functions are called.")
 
+;;; In case someone does make it local.
 (put 'write-file-hooks 'permanent-local t)
 (defvar write-file-hooks nil
   "List of functions to be called before writing out a buffer to a file.
@@ -187,7 +188,14 @@
 and the rest are not called.
 These hooks are considered to pertain to the visited file.
 So this list is cleared if you change the visited file name.
-See also `write-contents-hooks'.")
+See also `write-contents-hooks'.
+Don't make this variable buffer-local; instead, use `local-write-file-hooks'.")
+
+(put 'local-write-file-hooks 'permanent-local t)
+(defvar local-write-file-hooks nil
+  "Just like `write-file-hooks', except intended for per-buffer use.
+The functions in this list are called before the ones in
+`write-file-hooks'.")
 
 (defvar write-contents-hooks nil
   "List of functions to be called before writing out a buffer to a file.
@@ -918,6 +926,7 @@
   ;; that visit things that are not local files as if they were files.
   ;; Changing to visit an ordinary local file instead should flush the hook.
   (kill-local-variable 'write-file-hooks)
+  (kill-local-variable 'local-write-file-hooks)
   (kill-local-variable 'revert-buffer-function)
   (kill-local-variable 'backup-inhibited)
   ;; Turn off backup files for certain file names.
@@ -1244,7 +1253,8 @@
 	       (save-excursion
 		 (goto-char (point-max))
 		 (insert ?\n)))
-	  (let ((hooks (append write-contents-hooks write-file-hooks))
+	  (let ((hooks (append write-contents-hooks local-write-file-hooks
+			       write-file-hooks))
 		(done nil))
 	    (while (and hooks
 			(not (setq done (funcall (car hooks)))))