]> code.delx.au - gnu-emacs/blobdiff - lisp/rcompile.el
(quail-update-leim-list-file): Fix message syntax.
[gnu-emacs] / lisp / rcompile.el
index df415ebed57b33bc899fec381c59df3f21782278..ec97c7c4dcbfa75f33901f8433e5466876542a10 100644 (file)
@@ -1,11 +1,11 @@
-;;; rcompile.el Run a compilation on a remote machine (requires emacs-19)
+;;; 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>
-;;; Created: 1993 Oct 6
-;;; Version: 1.0
-;;; Keywords: tools, processes
+;; Author: Albert    <alon@milcse.rtsg.mot.com>
+;; Maintainer: FSF
+;; Created: 1993 Oct 6
+;; Keywords: tools, processes
 
 ;; This file is part of GNU Emacs.
 
 ;; 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 its 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.")
+(defgroup remote-compile nil
+  "Run a compilation on a remote machine"
+  :group 'processes
+  :group 'tools)
+
 
-(defvar remote-compile-host nil
-  "*Host for remote compilations.")
+(defcustom remote-compile-host nil
+  "*Host for remote compilations."
+  :type '(choice string (const nil))
+  :group 'remote-compile)
 
-(defvar remote-compile-user nil
+(defcustom remote-compile-user nil
   "User for remote compilations.
-nil means use the value returned by \\[user-login-name].")
+nil means use the value returned by \\[user-login-name]."
+  :type '(choice string (const nil))
+  :group 'remote-compile)
 
-(defvar remote-compile-run-before nil
+(defcustom 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.")
+nil means run no commands."
+  :type '(choice string (const nil))
+  :group 'remote-compile)
 
-(defvar remote-compile-prompt-for-host nil
-  "*Non-nil means prompt for host if not available from filename.")
+(defcustom remote-compile-prompt-for-host nil
+  "*Non-nil means prompt for host if not available from filename."
+  :type 'boolean
+  :group 'remote-compile)
 
-(defvar remote-compile-prompt-for-user nil
-  "*Non-nil means prompt for user if not available from filename.")
+(defcustom remote-compile-prompt-for-user nil
+  "*Non-nil means prompt for user if not available from filename."
+  :type 'boolean
+  :group 'remote-compile)
 
 ;;;; internal variables
 
@@ -152,7 +158,7 @@ See \\[compile]."
                       (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
@@ -162,6 +168,12 @@ See \\[compile]."
                   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)
+      (make-variable-buffer-local 'comint-file-name-prefix)
+      (setq comint-file-name-prefix (concat "/" host ":")))))
 
 ;;; rcompile.el ends here