changeset 81801:2e8d5916d236

* comint.el (make-comint, make-comint-in-buffer) (comint-exec-1): Replace `start-process' by `start-file-process'. * progmodes/compile.el (compilation-start): Revert redefining `start-process'.
author Michael Albinus <michael.albinus@gmx.de>
date Tue, 10 Jul 2007 19:52:11 +0000
parents e29d41367d51
children dc2bceb79a0a
files lisp/ChangeLog lisp/comint.el lisp/progmodes/compile.el
diffstat 3 files changed, 38 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Jul 10 18:05:36 2007 +0000
+++ b/lisp/ChangeLog	Tue Jul 10 19:52:11 2007 +0000
@@ -1,3 +1,11 @@
+2007-07-10  Michael Albinus  <michael.albinus@gmx.de>
+
+	* comint.el (make-comint, make-comint-in-buffer)
+	(comint-exec-1): Replace `start-process' by `start-file-process'.
+
+	* progmodes/compile.el (compilation-start): Revert redefining
+	`start-process'.
+
 2007-07-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* follow.el: Don't change the global map from the follow-mode-map
--- a/lisp/comint.el	Tue Jul 10 18:05:36 2007 +0000
+++ b/lisp/comint.el	Tue Jul 10 19:52:11 2007 +0000
@@ -670,13 +670,13 @@
   "Make a Comint process NAME in BUFFER, running PROGRAM.
 If BUFFER is nil, it defaults to NAME surrounded by `*'s.
 PROGRAM should be either a string denoting an executable program to create
-via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
-connection to be opened via `open-network-stream'.  If there is already a
-running process in that buffer, it is not restarted.  Optional fourth arg
+via `start-file-process', or a cons pair of the form (HOST . SERVICE) denoting
+a TCP connection to be opened via `open-network-stream'.  If there is already
+a running process in that buffer, it is not restarted.  Optional fourth arg
 STARTFILE is the name of a file to send the contents of to the process.
 
 If PROGRAM is a string, any more args are arguments to PROGRAM."
-  (or (fboundp 'start-process)
+  (or (fboundp 'start-file-process)
       (error "Multi-processing is not supported for this system"))
   (setq buffer (get-buffer-create (or buffer (concat "*" name "*"))))
   ;; If no process, or nuked process, crank up a new one and put buffer in
@@ -693,9 +693,9 @@
   "Make a Comint process NAME in a buffer, running PROGRAM.
 The name of the buffer is made by surrounding NAME with `*'s.
 PROGRAM should be either a string denoting an executable program to create
-via `start-process', or a cons pair of the form (HOST . SERVICE) denoting a TCP
-connection to be opened via `open-network-stream'.  If there is already a
-running process in that buffer, it is not restarted.  Optional third arg
+via `start-file-process', or a cons pair of the form (HOST . SERVICE) denoting
+a TCP connection to be opened via `open-network-stream'.  If there is already
+a running process in that buffer, it is not restarted.  Optional third arg
 STARTFILE is the name of a file to send the contents of the process to.
 
 If PROGRAM is a string, any more args are arguments to PROGRAM."
@@ -781,17 +781,17 @@
 			 ;; If the command has slashes, make sure we
 			 ;; first look relative to the current directory.
 			 (cons default-directory exec-path) exec-path)))
-      (setq proc (apply 'start-process name buffer command switches)))
+      (setq proc (apply 'start-file-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
+    ;; If start-file-process decided to use some coding system for decoding
     ;; data sent from 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
+    ;; Even if start-file-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.
--- a/lisp/progmodes/compile.el	Tue Jul 10 18:05:36 2007 +0000
+++ b/lisp/progmodes/compile.el	Tue Jul 10 19:52:11 2007 +0000
@@ -1098,8 +1098,7 @@
 	      (unless (getenv "EMACS")
 		(list "EMACS=t"))
 	      (list "INSIDE_EMACS=t")
-	      (copy-sequence process-environment)))
-	    (start-process (symbol-function 'start-process)))
+	      (copy-sequence process-environment))))
 	(set (make-local-variable 'compilation-arguments)
 	     (list command mode name-function highlight-regexp))
 	(set (make-local-variable 'revert-buffer-function)
@@ -1114,39 +1113,26 @@
 	(if compilation-process-setup-function
 	    (funcall compilation-process-setup-function))
 	(compilation-set-window-height outwin)
-	;; Redefine temporarily `start-process' in order to handle
-	;; remote compilation.
-	(fset 'start-process
-	      (lambda (name buffer program &rest program-args)
-		(apply
-		 (if (file-remote-p default-directory)
-		     'start-file-process
-		   start-process)
-		 name buffer program program-args)))
 	;; Start the compilation.
-	(unwind-protect
-	    (let ((proc (if (eq mode t)
-			    (get-buffer-process
-			     (with-no-warnings
-			       (comint-exec outbuf (downcase mode-name)
-					    shell-file-name nil
-					    `("-c" ,command))))
-			  (start-process-shell-command (downcase mode-name)
-						       outbuf command))))
-	      ;; Make the buffer's mode line show process state.
-	      (setq mode-line-process '(":%s"))
-	      (set-process-sentinel proc 'compilation-sentinel)
-	      (set-process-filter proc 'compilation-filter)
-	      (set-marker (process-mark proc) (point) outbuf)
-	      (when compilation-disable-input
-                (condition-case nil
-                    (process-send-eof proc)
-                  ;; The process may have exited already.
-                  (error nil)))
-	      (setq compilation-in-progress
-		    (cons proc compilation-in-progress)))
-	  ;; Unwindform: Reset original definition of `start-process'
-	  (fset 'start-process start-process)))
+	(let ((proc (if (eq mode t)
+			(get-buffer-process
+			 (with-no-warnings
+			   (comint-exec outbuf (downcase mode-name)
+					shell-file-name nil `("-c" ,command))))
+		      (start-process-shell-command (downcase mode-name)
+						   outbuf command))))
+	  ;; Make the buffer's mode line show process state.
+	  (setq mode-line-process '(":%s"))
+	  (set-process-sentinel proc 'compilation-sentinel)
+	  (set-process-filter proc 'compilation-filter)
+	  (set-marker (process-mark proc) (point) outbuf)
+	  (when compilation-disable-input
+	    (condition-case nil
+		(process-send-eof proc)
+	      ;; The process may have exited already.
+	      (error nil)))
+	  (setq compilation-in-progress
+		(cons proc compilation-in-progress))))
       ;; Now finally cd to where the shell started make/grep/...
       (setq default-directory thisdir))
     (if (buffer-local-value 'compilation-scroll-output outbuf)