From 0516edee5f13a1589df2aa2e316e6f4e9ab5f36c Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 11 May 1998 01:33:54 +0000 Subject: [PATCH] (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. --- lisp/files.el | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lisp/files.el b/lisp/files.el index 60a45aac4b5..53496020e88 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2147,6 +2147,14 @@ the last real save, but optional arg FORCE non-nil means delete anyway." (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 @@ After saving the buffer, run `after-save-hook'." ;; 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 @@ After saving the buffer, run `after-save-hook'." ;; 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)) -- 2.39.2