summaryrefslogtreecommitdiff
path: root/lisp/files.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1993-03-26 07:28:20 +0000
committerRichard M. Stallman <rms@gnu.org>1993-03-26 07:28:20 +0000
commitc9dca4e0924e5469402b183e7f2c79e8ea577268 (patch)
treec619d71f4dd38ba932ff421c53daf52be1f70e0e /lisp/files.el
parent8b2120f4fffb001dcbe2d27b92e5bfe541f798cd (diff)
downloademacs-c9dca4e0924e5469402b183e7f2c79e8ea577268.tar.gz
(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.
Diffstat (limited to 'lisp/files.el')
-rw-r--r--lisp/files.el14
1 files changed, 12 insertions, 2 deletions
diff --git a/lisp/files.el b/lisp/files.el
index dc2d39319ec..2a5e298b60f 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -180,6 +180,7 @@ The functions are called in the order given until one of them returns non-nil.")
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 @@ If one of them returns non-nil, the file is considered already written
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 @@ if you wish to pass an empty string as the argument."
;; 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 @@ the last real save, but optional arg FORCE non-nil means delete anyway."
(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)))))