]> git.eshelyaron.com Git - emacs.git/commitdiff
(coding-system-change-eol-coding): New function.
authorKenichi Handa <handa@m17n.org>
Wed, 15 Apr 1998 07:15:01 +0000 (07:15 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 15 Apr 1998 07:15:01 +0000 (07:15 +0000)
(coding-system-change-text-coding): New function.

lisp/international/mule-util.el

index a2b534ada2800ae1a34be82a2ef8f078ccfa2492..38178be30b079a5edc4efd1854fb1ff90b756638 100644 (file)
@@ -287,6 +287,46 @@ or one is an alias of the other."
             (or (eq eol-type-1 eol-type-2)
                 (and (vectorp eol-type-1) (vectorp eol-type-2)))))))
 
+;;;###autoload
+(defun coding-system-change-eol-conversion (coding-system eol-type)
+  "Return a coding system which differs from CODING-SYSTEM in eol conversion.
+The returned coding system converts end-of-line by EOL-TYPE
+but text as the same way as CODING-SYSTEM.
+EOL-TYPE should be `unix', `dos', `mac', or nil.
+If EOL-TYPE is nil, the returned coding system detects
+how end-of-line is formatted automatically while decoding."
+  (let ((eol-type (cond ((eq eol-type 'unix) 0)
+                       ((eq eol-type 'dos) 1)
+                       ((eq eol-type 'mac) 2)
+                       (t eol-type)))
+       (orig-eol-type (coding-system-eol-type coding-system)))
+    (if (vectorp orig-eol-type)
+       (if (not eol-type)
+           coding-system
+         (aref orig-eol-type eol-type))
+      (let ((base (coding-system-base coding-system)))
+       (if (not eol-type)
+           base
+         (if (= eol-type orig-eol-type)
+             coding-system
+           (setq orig-eol-type (coding-system-eol-type base))
+           (if (vectorp orig-eol-type)
+               (aref orig-eol-type eol-type))))))))
+
+;;;###autoload
+(defun coding-system-change-text-conversion (coding-system coding)
+  "Return a coding system which differs from CODING-SYSTEM in text conversion.
+The returned coding system converts text by CODING
+but end-of-line as the same way as CODING-SYSTEM.
+If CODING is nil, the returned coding system detects
+how text is formatted automatically while decoding."
+  (if (not coding)
+      (coding-system-base coding-system)
+    (let ((eol-type (coding-system-eol-type coding-system)))
+      (coding-system-change-eol-conversion
+       coding
+       (if (numberp eol-type) (aref [unix dos mac] eol-type))))))
+
 ;;;###autoload
 (defmacro detect-coding-with-priority (from to priority-list)
   "Detect a coding system of the text between FROM and TO with PRIORITY-LIST.