Commit b685f8d6 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(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.
parent e3ee7487
...@@ -728,30 +728,27 @@ The local variable `buffer-file-coding-system' of the current buffer ...@@ -728,30 +728,27 @@ The local variable `buffer-file-coding-system' of the current buffer
is set to the returned value. is set to the returned value.
Return nil if there's no need of setting new buffer-file-coding-system." Return nil if there's no need of setting new buffer-file-coding-system."
(let (local-coding local-eol (let (local-coding local-eol
found-eol found-coding found-eol
new-coding new-eol) new-coding new-eol)
(if (null coding) (if (null coding)
;; Nothing found about coding. ;; Nothing found about coding.
nil nil
;; Get information of the current local value of ;; Get information of `buffer-file-coding-system' in LOCAL-EOL
;; `buffer-file-coding-system' in LOCAL-EOL and LOCAL-CODING. ;; and LOCAL-CODING.
(if (local-variable-p 'buffer-file-coding-system) (setq local-eol (coding-system-eol-type buffer-file-coding-system))
;; Something already set locally. (if (null (numberp local-eol))
(progn ;; But eol-type is not yet set.
(setq local-eol (coding-system-eol-type buffer-file-coding-system)) (setq local-eol nil))
(if (null (numberp local-eol)) (when (and buffer-file-coding-system
;; But eol-type is not yet set. (not (eq (coding-system-type buffer-file-coding-system) t)))
(setq local-eol nil)) ;; This is not `undecided'.
(if (null (eq (coding-system-type buffer-file-coding-system) t)) (setq local-coding buffer-file-coding-system)
;; This is not `undecided'. (while (symbolp (get local-coding 'coding-system))
(progn (setq local-coding (get local-coding 'coding-system))))
(setq local-coding buffer-file-coding-system)
(while (symbolp (get local-coding 'coding-system)) (if (and (local-variable-p 'buffer-file-coding-system)
(setq local-coding (get local-coding 'coding-system)))) local-eol local-coding)
)))
(if (and local-eol local-coding)
;; The current buffer has already set full coding-system, we ;; The current buffer has already set full coding-system, we
;; had better not change it. ;; had better not change it.
nil nil
...@@ -760,15 +757,31 @@ Return nil if there's no need of setting new buffer-file-coding-system." ...@@ -760,15 +757,31 @@ Return nil if there's no need of setting new buffer-file-coding-system."
(if (null (numberp found-eol)) (if (null (numberp found-eol))
;; But eol-type is not found. ;; But eol-type is not found.
(setq found-eol nil)) (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. ;; The local setting takes precedence over the found one.
(setq new-coding (or local-coding coding)) (setq new-coding (or (and (local-variable-p 'buffer-file-coding-system)
(setq new-eol (or local-eol found-eol)) local-coding)
(if (and (numberp new-eol) found-coding
(vectorp (coding-system-eol-type new-coding))) local-coding))
(setq new-coding (setq new-eol (or (and (local-variable-p 'buffer-file-coding-system)
(aref (coding-system-eol-type new-coding) new-eol))) local-eol)
new-coding)))) 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) (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. "Modify one of look up tables for finding a coding system on I/O operation.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment