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.