Mercurial > emacs
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))