Mercurial > emacs
changeset 82094:76546b143f2d
* subr.el (start-file-process-shell-command)
(process-file-shell-command): New defuns.
* progmodes/compile.el (compilation-start): Apply
`start-file-process-shell-command'.
author | Michael Albinus <michael.albinus@gmx.de> |
---|---|
date | Tue, 24 Jul 2007 20:49:18 +0000 |
parents | ec5e699d1426 |
children | b5773fe4ea48 |
files | lisp/ChangeLog lisp/progmodes/compile.el lisp/subr.el |
diffstat | 3 files changed, 36 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Jul 24 20:40:26 2007 +0000 +++ b/lisp/ChangeLog Tue Jul 24 20:49:18 2007 +0000 @@ -1,3 +1,11 @@ +2007-07-24 Michael Albinus <michael.albinus@gmx.de> + + * subr.el (start-file-process-shell-command) + (process-file-shell-command): New defuns. + + * progmodes/compile.el (compilation-start): Apply + `start-file-process-shell-command'. + 2007-07-24 Alexandre Julliard <julliard@winehq.org> * vc-git.el (vc-git-checkout, vc-directory-exclusion-list): Fix
--- a/lisp/progmodes/compile.el Tue Jul 24 20:40:26 2007 +0000 +++ b/lisp/progmodes/compile.el Tue Jul 24 20:49:18 2007 +0000 @@ -1101,8 +1101,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) @@ -1123,22 +1122,14 @@ ;; comint uses `start-file-process'. (get-buffer-process (with-no-warnings - (comint-exec outbuf (downcase mode-name) - shell-file-name nil `("-c" ,command)))) - ;; 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))) - (unwind-protect - (start-process-shell-command (downcase mode-name) - outbuf command) - ;; Unwindform: Reset original definition of `start-process'. - (fset 'start-process start-process))))) + (comint-exec + outbuf (downcase mode-name) + (if (file-remote-p default-directory) + "/bin/sh" + shell-file-name) + `("-c" ,command)))) + (start-file-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)
--- a/lisp/subr.el Tue Jul 24 20:40:26 2007 +0000 +++ b/lisp/subr.el Tue Jul 24 20:49:18 2007 +0000 @@ -2310,6 +2310,15 @@ (start-process name buffer shell-file-name shell-command-switch (mapconcat 'identity args " "))))) +(defun start-file-process-shell-command (name buffer &rest args) + "Start a program in a subprocess. Return the process object for it. +Similar to `start-process-shell-command', but calls `start-file-process'." + (start-file-process + name buffer + (if (file-remote-p default-directory) "/bin/sh" shell-file-name) + (if (file-remote-p default-directory) "-c" shell-command-switch) + (mapconcat 'identity args " "))) + (defun call-process-shell-command (command &optional infile buffer display &rest args) "Execute the shell command COMMAND synchronously in separate process. @@ -2341,6 +2350,16 @@ infile buffer display shell-command-switch (mapconcat 'identity (cons command args) " "))))) + +(defun process-file-shell-command (command &optional infile buffer display + &rest args) + "Process files synchronously in a separate process. +Similar to `call-process-shell-command', but calls `process-file'." + (process-file + (if (file-remote-p default-directory) "/bin/sh" shell-file-name) + infile buffer display + (if (file-remote-p default-directory) "-c" shell-command-switch) + (mapconcat 'identity (cons command args) " "))) ;;;; Lisp macros to do various things temporarily.