Mercurial > emacs
changeset 19948:46e5df654a35 EMACS_20_1
(find-new-buffer-file-coding-system): Reflect
text coding part of default-buffer-file-coding-system to
buffer-file-coding-system when buffer-file-coding-system is
not locally set and ASCII only text is read.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 17 Sep 1997 06:41:41 +0000 |
parents | 52eb1c7d37a2 |
children | ad6d3d0b2cb4 |
files | lisp/international/mule.el |
diffstat | 1 files changed, 38 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/international/mule.el Wed Sep 17 00:53:33 1997 +0000 +++ b/lisp/international/mule.el Wed Sep 17 06:41:41 1997 +0000 @@ -728,30 +728,27 @@ is set to the returned value. Return nil if there's no need of setting new buffer-file-coding-system." (let (local-coding local-eol - found-eol + found-coding found-eol new-coding new-eol) (if (null coding) ;; Nothing found about coding. nil - ;; Get information of the current local value of - ;; `buffer-file-coding-system' in LOCAL-EOL and LOCAL-CODING. - (if (local-variable-p 'buffer-file-coding-system) - ;; Something already set locally. - (progn - (setq local-eol (coding-system-eol-type buffer-file-coding-system)) - (if (null (numberp local-eol)) - ;; But eol-type is not yet set. - (setq local-eol nil)) - (if (null (eq (coding-system-type buffer-file-coding-system) t)) - ;; This is not `undecided'. - (progn - (setq local-coding buffer-file-coding-system) - (while (symbolp (get local-coding 'coding-system)) - (setq local-coding (get local-coding 'coding-system)))) - ))) + ;; Get information of `buffer-file-coding-system' in LOCAL-EOL + ;; and LOCAL-CODING. + (setq local-eol (coding-system-eol-type buffer-file-coding-system)) + (if (null (numberp local-eol)) + ;; But eol-type is not yet set. + (setq local-eol nil)) + (when (and buffer-file-coding-system + (not (eq (coding-system-type buffer-file-coding-system) t))) + ;; This is not `undecided'. + (setq local-coding buffer-file-coding-system) + (while (symbolp (get local-coding 'coding-system)) + (setq local-coding (get local-coding 'coding-system)))) - (if (and local-eol local-coding) + (if (and (local-variable-p 'buffer-file-coding-system) + local-eol local-coding) ;; The current buffer has already set full coding-system, we ;; had better not change it. nil @@ -760,15 +757,31 @@ (if (null (numberp found-eol)) ;; But eol-type is not found. (setq found-eol nil)) + (unless (eq (coding-system-type coding) t) + ;; This is not `undecided'. + (setq found-coding coding) + (while (symbolp (get found-coding 'coding-system)) + (setq found-coding (get found-coding 'coding-system)))) ;; The local setting takes precedence over the found one. - (setq new-coding (or local-coding coding)) - (setq new-eol (or local-eol found-eol)) - (if (and (numberp new-eol) - (vectorp (coding-system-eol-type new-coding))) - (setq new-coding - (aref (coding-system-eol-type new-coding) new-eol))) - new-coding)))) + (setq new-coding (or (and (local-variable-p 'buffer-file-coding-system) + local-coding) + found-coding + local-coding)) + (setq new-eol (or (and (local-variable-p 'buffer-file-coding-system) + local-eol) + found-eol + local-eol)) + (when (numberp new-eol) + (or new-coding + (setq new-coding 'undecided)) + (if (vectorp (coding-system-eol-type new-coding)) + (setq new-coding + (aref (coding-system-eol-type new-coding) new-eol)))) + ;; Return a new coding system only when it is different from + ;; the current one. + (if (not (eq buffer-file-coding-system new-coding)) + new-coding))))) (defun modify-coding-system-alist (target-type regexp coding-system) "Modify one of look up tables for finding a coding system on I/O operation.