changeset 22026:237140fdea76

(save-buffer-coding-system): New variable. (basic-save-buffer-1): Obey it. (basic-save-buffer): Set save-buffer-coding-system instead of buffer-file-coding-system, if save-buffer-coding-system is already non-nil.
author Richard M. Stallman <rms@gnu.org>
date Mon, 11 May 1998 01:33:54 +0000
parents 369ac7fae774
children aca7f8a34a9e
files lisp/files.el
diffstat 1 files changed, 15 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Mon May 11 01:22:35 1998 +0000
+++ b/lisp/files.el	Mon May 11 01:33:54 1998 +0000
@@ -2147,6 +2147,14 @@
 (defvar after-save-hook nil
   "Normal hook that is run after a buffer is saved to its file.")
 
+(defvar save-buffer-coding-system nil
+  "If non-nil, use this coding system for saving the buffer.
+More precisely, use this coding system in place of the
+value of `buffer-file-coding-system', when saving the buffer.
+Calling `write-region' for any purpose other than saving the buffer
+will still use `buffer-file-coding-system'; this variable has no effect
+in such cases.")
+
 (defun basic-save-buffer ()
   "Save the current buffer in its visited file, if it has been modified.
 After saving the buffer, run `after-save-hook'."
@@ -2211,7 +2219,9 @@
 	    ;; Now we have saved the current buffer.  Let's make sure
 	    ;; that buffer-file-coding-system is fixed to what
 	    ;; actually used for saving by binding it locally.
-	    (setq buffer-file-coding-system last-coding-system-used)
+	    (if save-buffer-coding-system
+		(setq save-buffer-coding-system last-coding-system-used)
+	      (setq buffer-file-coding-system last-coding-system-used))
 	    (setq buffer-file-number
 		  (nthcdr 10 (file-attributes buffer-file-name)))
 	    (if setmodes
@@ -2231,7 +2241,10 @@
 ;; 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 (tempsetmodes setmodes)
+  (let ((buffer-file-coding-system
+	 (or save-buffer-coding-system
+	     buffer-file-coding-system))
+	tempsetmodes setmodes)
     (if (not (file-writable-p buffer-file-name))
 	(let ((dir (file-name-directory buffer-file-name)))
 	  (if (not (file-directory-p dir))