changeset 22652:a453ed3fb89f

(comint-exec-1): Setup coding systems appropriately.
author Richard M. Stallman <rms@gnu.org>
date Tue, 30 Jun 1998 21:43:39 +0000
parents 175d00eed6c7
children 8b39df7b3506
files lisp/comint.el
diffstat 1 files changed, 22 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/comint.el	Tue Jun 30 17:15:32 1998 +0000
+++ b/lisp/comint.el	Tue Jun 30 21:43:39 1998 +0000
@@ -681,8 +681,28 @@
 	(default-directory
 	  (if (file-accessible-directory-p default-directory)
 	      default-directory
-	    (char-to-string directory-sep-char))))
-    (apply 'start-process name buffer command switches)))
+	    (char-to-string directory-sep-char)))
+	proc decoding encoding changed)
+    (setq proc (apply 'start-process name buffer command switches))
+    (let ((coding-systems (process-coding-system proc)))
+      (setq decoding (car coding-systems)
+	    encoding (cdr coding-systems)))
+    ;; If start-process decided to use some coding system for decoding
+    ;; data sent form the process and the coding system doesn't
+    ;; specify EOL conversion, we had better convert CRLF to LF.
+    (if (vectorp (coding-system-eol-type decoding))
+	(setq decoding (coding-system-change-eol-conversion decoding 'dos)
+	      changed t))
+    ;; Even if start-process left the coding system for encoding data
+    ;; sent from the process undecided, we had better use the same one
+    ;; as what we use for decoding.  But, we should suppress EOL
+    ;; conversion.
+    (if (and decoding (not encoding))
+	(setq encoding (coding-system-change-eol-conversion decoding 'unix)
+	      changed t))
+    (if changed
+	(set-process-coding-system proc decoding encoding))
+    proc))
 
 ;; Input history processing in a buffer
 ;; ===========================================================================