-;;; rcompile.el Run a compilation on a remote machine
+;;; rcompile.el --- run a compilation on a remote machine
-;;; Copyright (C) 1993 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
;; Author: Albert <alon@milcse.rtsg.mot.com>
;; Maintainer: FSF
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
;;; Commentary:
-;;; This package is for running a remote compilation and using emacs to parse
-;;; the error messages. It works by rsh'ing the compilation to a remote host
-;;; and parsing the output. If the file visited at the time remote-compile was
-;;; called was loaded remotely (ange-ftp), the host and user name are obtained
-;;; by the calling ange-ftp-ftp-name on the current directory. In this case the
-;;; next-error command will also ange-ftp the files over. This is achieved
-;;; automatically because the compilation-parse-errors function uses
-;;; default-directory to build it's file names. If however the file visited was
-;;; loaded locally, remote-compile prompts for a host and user and assumes the
-;;; files mounted locally (otherwise, how was the visited file loaded).
-
-;;; See the user defined variables section for more info.
-
-;;; I was contemplating redefining "compile" to "remote-compile" automatically
-;;; if the file visited was ange-ftp'ed but decided against it for now. If you
-;;; feel this is a good idea, let me know and I'll consider it again.
-
-;;; Installation:
-
-;;; To use rcompile, you also need to give yourself permission to connect to
-;;; the remote host. You do this by putting lines like:
-
-;;; monopoly alon
-;;; vme33
-;;;
-;;; in a file named .rhosts in the home directory (of the remote machine).
-;;; Be careful what you put in this file. A line like:
-;;;
-;;; +
-;;;
-;;; Will allow anyone access to your account without a password. I suggest you
-;;; read the rhosts(5) manual page before you edit this file (if you are not
-;;; familiar with it already)
-
-;;; History:
-;;; V1.1 Oct 13 1993 Alon Albert
-;;; SYSV support by Jay Finger <finger@mikey.convex.com>
-;;; V1.0 Oct 6 1993 Alon Albert
-;;; Initial cut.
-
+;; This package is for running a remote compilation and using emacs to parse
+;; the error messages. It works by rsh'ing the compilation to a remote host
+;; and parsing the output. If the file visited at the time remote-compile was
+;; called was loaded remotely (ange-ftp), the host and user name are obtained
+;; by the calling ange-ftp-ftp-name on the current directory. In this case the
+;; next-error command will also ange-ftp the files over. This is achieved
+;; automatically because the compilation-parse-errors function uses
+;; default-directory to build it's file names. If however the file visited was
+;; loaded locally, remote-compile prompts for a host and user and assumes the
+;; files mounted locally (otherwise, how was the visited file loaded).
+
+;; See the user defined variables section for more info.
+
+;; I was contemplating redefining "compile" to "remote-compile" automatically
+;; if the file visited was ange-ftp'ed but decided against it for now. If you
+;; feel this is a good idea, let me know and I'll consider it again.
+
+;; Installation:
+
+;; To use rcompile, you also need to give yourself permission to connect to
+;; the remote host. You do this by putting lines like:
+
+;; monopoly alon
+;; vme33
+;;
+;; in a file named .rhosts in the home directory (of the remote machine).
+;; Be careful what you put in this file. A line like:
+;;
+;; +
+;;
+;; Will allow anyone access to your account without a password. I suggest you
+;; read the rhosts(5) manual page before you edit this file (if you are not
+;; familiar with it already)
\f
;;; Code:
;;;; user defined variables
-(defvar remote-compile-rsh-command
- (if (eq system-type 'usg-unix-v) "remsh" "rsh")
- "*Name of remote shell command: `rsh' for BSD or `remsh' for SYSV.")
-
(defvar remote-compile-host nil
"*Host for remote compilations.")
(defvar remote-compile-run-before nil
"*Command to run before compilation.
-This can be used for setting up enviroment variables,
+This can be used for setting up environment variables,
since rsh does not invoke the shell as a login shell and files like .login
\(tcsh\) and .bash_profile \(bash\) are not run.
nil means run no commands.")
(ange-ftp-ftp-name default-directory)))
(compile-command
(format "%s %s -l %s \"(%scd %s; %s)\""
- remote-compile-rsh-command
+ remote-shell-program
host
remote-compile-user
(if remote-compile-run-before
compile-command)))
(setq remote-compile-host host)
(save-some-buffers nil nil)
- (compile-internal compile-command "No more errors")))
+ (compile-internal compile-command "No more errors")
+ ;; Set comint-file-name-prefix in the compilation buffer so
+ ;; compilation-parse-errors will find referenced files by ange-ftp.
+ (save-excursion
+ (set-buffer compilation-last-buffer)
+ (setq comint-file-name-prefix (concat "/" host ":")))))
;;; rcompile.el ends here