diff lisp/files.el @ 22807:ff685e4dce0b

(basic-save-buffer-2): New function. (basic-save-buffer-1): Use basic-save-buffer-2, after perhaps binding coding-system-for-write. (save-buffer-coding-system): Make it a permanent local.
author Richard M. Stallman <rms@gnu.org>
date Fri, 24 Jul 1998 10:43:29 +0000
parents 9a17cce45a16
children 7bff93a6b3e1
line wrap: on
line diff
--- a/lisp/files.el	Fri Jul 24 04:36:09 1998 +0000
+++ b/lisp/files.el	Fri Jul 24 10:43:29 1998 +0000
@@ -2222,6 +2222,9 @@
 will still use `buffer-file-coding-system'; this variable has no effect
 in such cases.")
 
+(make-variable-buffer-local 'save-buffer-coding-system)
+(put 'save-buffer-coding-system 'permanent-local t)
+
 (defun basic-save-buffer ()
   "Save the current buffer in its visited file, if it has been modified.
 The hooks `write-contents-hooks', `local-write-file-hooks' and
@@ -2311,10 +2314,13 @@
 ;; but inhibited if one of write-file-hooks returns non-nil.
 ;; It returns a value to store in setmodes.
 (defun basic-save-buffer-1 ()
-  (let ((buffer-file-coding-system
-	 (or save-buffer-coding-system
-	     buffer-file-coding-system))
-	tempsetmodes setmodes)
+  (if save-buffer-coding-system
+      (let ((coding-system-for-write save-buffer-coding-system))
+	(basic-save-buffer-2))
+    (basic-save-buffer-2)))
+
+(defun basic-save-buffer-2 ()
+  (let (tempsetmodes setmodes)
     (if (not (file-writable-p buffer-file-name))
 	(let ((dir (file-name-directory buffer-file-name)))
 	  (if (not (file-directory-p dir))