From: Richard M. Stallman Date: Wed, 17 Sep 1997 06:41:41 +0000 (+0000) Subject: (find-new-buffer-file-coding-system): Reflect X-Git-Tag: emacs-20.1 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b685f8d6b59c9bcb2850211f5bce3768ca8d9577;p=emacs.git (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. --- diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 66e82575ec4..9eeeb30d659 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el @@ -728,30 +728,27 @@ The local variable `buffer-file-coding-system' of the current buffer 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)))) - ))) - - (if (and local-eol local-coding) + ;; 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-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 @@ Return nil if there's no need of setting new buffer-file-coding-system." (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.