changeset 19004:f2ce7e947ec9

(jka-compr-added-to-file-coding-system-alist): New var. (jka-compr-insert-file-contents): Set coding-system-for-read according to file name after removing compression suffix. (jka-compr-install): Add elemets to file-coding-system-alist. (jka-compr-uninstall): Remove elements from file-coding-system-alist.
author Richard M. Stallman <rms@gnu.org>
date Sun, 27 Jul 1997 00:06:20 +0000
parents 9d24caacda44
children b07745668138
files lisp/jka-compr.el
diffstat 1 files changed, 40 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/jka-compr.el	Sat Jul 26 22:22:59 1997 +0000
+++ b/lisp/jka-compr.el	Sun Jul 27 00:06:20 1997 +0000
@@ -189,7 +189,10 @@
 
 (defvar jka-compr-mode-alist-additions
   (list (cons "\\.tgz\\'" 'tar-mode))
-  "A list of pairs to add to auto-mode-alist when jka-compr is installed.")
+  "A list of pairs to add to `auto-mode-alist' when jka-compr is installed.")
+
+;; List of all the elements we actually added to file-coding-system-alist.
+(defvar jka-compr-added-to-file-coding-system-alist nil)
 
 (defvar jka-compr-file-name-handler-entry
   nil
@@ -499,7 +502,19 @@
 	       (jka-compr-run-real-handler 'file-local-copy (list filename)))
 	      local-file
 	      size start
-              (coding-system-for-read (or coding-system-for-read 'undecided)) )
+              (coding-system-for-read
+	       (or coding-system-for-read
+		   (let ((tail file-coding-system-alist)
+			 (newfile
+			  (jka-compr-byte-compiler-base-file-name file))
+			 result)
+		     (while tail
+		       (if (string-match (car (car tail)) newfile)
+			   (setq result (car (cdr (car tail)))
+				 tail nil))
+		       (setq tail (cdr tail)))
+		     result)
+		   'undecided)) )
 
 	  (setq local-file (or local-copy filename))
 
@@ -785,8 +800,18 @@
   (setq file-name-handler-alist (cons jka-compr-file-name-handler-entry
 				      file-name-handler-alist))
 
+  (setq jka-compr-added-to-file-coding-system-alist nil)
+
   (mapcar
    (function (lambda (x)
+	       ;; Don't do multibyte encoding on the compressed files.
+	       (let ((elt (cons (jka-compr-info-regexp x)
+				 '(no-conversion . no-conversion))))
+		 (setq file-coding-system-alist
+		       (cons elt file-coding-system-alist))
+		 (setq jka-compr-added-to-file-coding-system-alist
+		       (cons elt jka-compr-added-to-file-coding-system-alist)))
+
 	       (and (jka-compr-info-strip-extension x)
 		    ;; Make entries in auto-mode-alist so that modes
 		    ;; are chosen right according to the file names
@@ -844,7 +869,19 @@
 	  (setcdr last (cdr (cdr last)))
 	(setq last (cdr last))))
     
-    (setq auto-mode-alist (cdr ama))))
+    (setq auto-mode-alist (cdr ama)))
+
+  (let* ((ama (cons nil file-coding-system-alist))
+	 (last ama)
+	 entry)
+
+    (while (cdr last)
+      (setq entry (car (cdr last)))
+      (if (member entry jka-compr-added-to-file-coding-system-alist)
+	  (setcdr last (cdr (cdr last)))
+	(setq last (cdr last))))
+    
+    (setq file-coding-system-alist (cdr ama))))
 
       
 (defun jka-compr-installed-p ()