# HG changeset patch # User Richard M. Stallman # Date 894850434 0 # Node ID 237140fdea76498d863420b9d3ff8a0ac10f6bd0 # Parent 369ac7fae774e4371c15f6c4d1f3fc9caaa6da2f (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. diff -r 369ac7fae774 -r 237140fdea76 lisp/files.el --- 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))