]> code.delx.au - gnu-emacs/blobdiff - lisp/net/rcompile.el
* net/tramp.el (tramp-ssh-controlmaster-template): Make it a
[gnu-emacs] / lisp / net / rcompile.el
index 6693f9025771349eee39fe05af3aac48bd2581f9..e7bfbf386f4d7843677f0114a79869d4b8a7f37e 100644 (file)
@@ -1,18 +1,18 @@
 ;;; rcompile.el --- run a compilation on a remote machine
 
-;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1994, 2001-2013 Free Software Foundation, Inc.
 
-;; Author: Albert    <alon@milcse.rtsg.mot.com>
+;; Author: Alon Albert <alon@milcse.rtsg.mot.com>
 ;; Maintainer: FSF
 ;; Created: 1993 Oct 6
 ;; Keywords: tools, processes
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -20,9 +20,7 @@
 ;; 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, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -76,7 +74,7 @@
 
 
 (defcustom remote-compile-host nil
-  "*Host for remote compilations."
+  "Host for remote compilations."
   :type '(choice string (const nil))
   :group 'remote-compile)
 
@@ -87,7 +85,7 @@ nil means use the value returned by \\[user-login-name]."
   :group 'remote-compile)
 
 (defcustom remote-compile-run-before nil
-  "*Command to run before compilation.
+  "Command to run before compilation.
 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.
@@ -96,12 +94,12 @@ nil means run no commands."
   :group 'remote-compile)
 
 (defcustom remote-compile-prompt-for-host nil
-  "*Non-nil means prompt for host if not available from filename."
+  "Non-nil means prompt for host if not available from filename."
   :type 'boolean
   :group 'remote-compile)
 
 (defcustom remote-compile-prompt-for-user nil
-  "*Non-nil means prompt for user if not available from filename."
+  "Non-nil means prompt for user if not available from filename."
   :type 'boolean
   :group 'remote-compile)
 
@@ -114,35 +112,35 @@ nil means run no commands."
 \f
 ;;;; entry point
 
+;; We use the Tramp internal function`tramp-make-tramp-file-name'.
+;; Better would be, if there are functions to provide user, host and
+;; localname of a remote filename, independent of Tramp's implementation.
+;; The function calls are wrapped by `funcall' in order to pacify the byte
+;; compiler.  ange-ftp check removed, because it is handled also by Tramp.
 ;;;###autoload
 (defun remote-compile (host user command)
   "Compile the current buffer's directory on HOST.  Log in as USER.
 See \\[compile]."
   (interactive
-   (let ((parsed (or (and (featurep 'ange-ftp)
-                          (ange-ftp-ftp-name default-directory))))
-         host user command prompt)
-     (if parsed
-         (setq host (nth 0 parsed)
-               user (nth 1 parsed))
-       (setq prompt (if (stringp remote-compile-host)
-                        (format "Compile on host (default %s): "
-                                remote-compile-host)
-                      "Compile on host: ")
-             host (if (or remote-compile-prompt-for-host
-                          (null remote-compile-host))
-                      (read-from-minibuffer prompt
-                                            "" nil nil
-                                            'remote-compile-host-history)
-                    remote-compile-host)
-             user (if remote-compile-prompt-for-user
-                      (read-from-minibuffer (format
-                                             "Compile by user (default %s)"
-                                             (or remote-compile-user
-                                                 (user-login-name)))
-                                            "" nil nil
-                                            'remote-compile-user-history)
-                    remote-compile-user)))
+   (let (host user command prompt l l-host l-user)
+     (setq prompt (if (stringp remote-compile-host)
+                      (format "Compile on host (default %s): "
+                              remote-compile-host)
+                    "Compile on host: ")
+           host (if (or remote-compile-prompt-for-host
+                        (null remote-compile-host))
+                    (read-from-minibuffer prompt
+                                          "" nil nil
+                                          'remote-compile-host-history)
+                  remote-compile-host)
+           user (if remote-compile-prompt-for-user
+                    (read-from-minibuffer (format
+                                           "Compile by user (default %s): "
+                                           (or remote-compile-user
+                                               (user-login-name)))
+                                          "" nil nil
+                                          'remote-compile-user-history)
+                  remote-compile-user))
      (setq command (read-from-minibuffer "Compile command: "
                                          compile-command nil nil
                                          '(compile-history . 1)))
@@ -154,8 +152,7 @@ See \\[compile]."
          (setq remote-compile-user user))
         ((null remote-compile-user)
          (setq remote-compile-user (user-login-name))))
-  (let* ((parsed (and (featurep 'ange-ftp)
-                      (ange-ftp-ftp-name default-directory)))
+  (let* (localname ;; Pacify byte-compiler.
          (compile-command
           (format "%s %s -l %s \"(%scd %s; %s)\""
                  remote-shell-program
@@ -164,16 +161,20 @@ See \\[compile]."
                   (if remote-compile-run-before
                       (concat remote-compile-run-before "; ")
                     "")
-                  (if parsed (nth 2 parsed) default-directory)
+                  ""
                   compile-command)))
     (setq remote-compile-host host)
     (save-some-buffers nil nil)
     (compilation-start compile-command)
     ;; Set comint-file-name-prefix in the compilation buffer so
-    ;; compilation-parse-errors will find referenced files by ange-ftp.
+    ;; compilation-parse-errors will find referenced files by Tramp.
     (with-current-buffer compilation-last-buffer
-      (set (make-local-variable 'comint-file-name-prefix)
-          (concat "/" host ":")))))
+      (when (fboundp 'tramp-make-tramp-file-name)
+       (set (make-local-variable 'comint-file-name-prefix)
+            (tramp-make-tramp-file-name
+             nil ;; method.
+             remote-compile-user
+             remote-compile-host
+             ""))))))
 
-;;; arch-tag: 2866a132-ece4-4ce9-9f91-ec147f803f73
 ;;; rcompile.el ends here