]> code.delx.au - gnu-emacs/blobdiff - lisp/net/tramp-util.el
Merged from emacs@sv.gnu.org.
[gnu-emacs] / lisp / net / tramp-util.el
index 8f195fe4ad827792817529ebcff70ceb3c09525e..666471d64296180eb6d51f2bf34b507f1a4abae8 100644 (file)
@@ -1,7 +1,8 @@
 ;;; -*- coding: iso-2022-7bit; -*-
 ;;; tramp-util.el --- Misc utility functions to use with Tramp
 
-;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2002, 2003, 2004, 2005,
+;;   2006 Free Software Foundation, Inc.
 
 ;; Author: kai.grossjohann@gmx.net
 ;; Keywords: comm, extensions, processes
@@ -18,8 +19,8 @@
 
 ;; 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., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 (eval-when-compile (require 'cl))
 (require 'compile)
 (require 'tramp)
+(add-hook 'tramp-util-unload-hook
+         '(lambda ()
+            (when (featurep 'tramp)
+              (unload-feature 'tramp 'force))))
 
 ;; Define a Tramp minor mode. It's intention is to redefine some keys for Tramp
 ;; specific functions, like compilation.
-;; The key remapping works since Emacs 22.1 only. Unknown for XEmacs.
-
-(when (fboundp 'define-minor-mode)
-
-  (defvar tramp-minor-mode-map (make-sparse-keymap)
-    "Keymap for Tramp minor mode.")
-
-  (define-minor-mode tramp-minor-mode "Tramp minor mode for utility functions."
-    :group 'tramp
-    :global nil
-    :init-value nil
-    :lighter " Tramp"
-    :keymap tramp-minor-mode-map
-    (setq tramp-minor-mode
-         (and tramp-minor-mode (tramp-tramp-file-p default-directory))))
-
-  (add-hook 'find-file-hooks 'tramp-minor-mode t)
-  (add-hook 'dired-mode-hook 'tramp-minor-mode t)
-
-  (defun tramp-remap-command (old-command new-command)
-    "Replaces bindings of OLD-COMMAND by NEW-COMMAND.
+;; The key remapping works since Emacs 22 only. Unknown for XEmacs.
+
+;; Pacify byte-compiler
+(eval-when-compile
+  (unless (fboundp 'define-minor-mode)
+      (defalias 'define-minor-mode 'identity)
+      (defvar tramp-minor-mode))
+  (unless (featurep 'xemacs)
+    (defalias 'add-menu-button 'ignore)))
+
+(defvar tramp-minor-mode-map (make-sparse-keymap)
+  "Keymap for Tramp minor mode.")
+
+(define-minor-mode tramp-minor-mode "Tramp minor mode for utility functions."
+  :group 'tramp
+  :global nil
+  :init-value nil
+  :lighter " Tramp"
+  :keymap tramp-minor-mode-map
+  (setq tramp-minor-mode
+       (and tramp-minor-mode (tramp-tramp-file-p default-directory))))
+
+(add-hook 'find-file-hooks 'tramp-minor-mode t)
+(add-hook 'tramp-util-unload-hook
+         '(lambda ()
+            (remove-hook 'find-file-hooks 'tramp-minor-mode)))
+
+(add-hook 'dired-mode-hook 'tramp-minor-mode t)
+(add-hook 'tramp-util-unload-hook
+         '(lambda ()
+            (remove-hook 'dired-mode-hook 'tramp-minor-mode)))
+
+(defun tramp-remap-command (old-command new-command)
+  "Replaces bindings of OLD-COMMAND by NEW-COMMAND.
 If remapping functionality for keymaps is defined, this happens for all
 bindings.  Otherwise, only bindings active during invocation are taken
 into account.  XEmacs menubar bindings are not changed by this."
-    (if (functionp 'command-remapping)
-       ;; Emacs 22.1
-       (eval
-        `(define-key tramp-minor-mode-map [remap ,old-command] new-command))
-      ;; previous Emacs 21 versions.
-      (mapcar
-       '(lambda (x)
-         (define-key tramp-minor-mode-map x new-command))
-       (where-is-internal old-command))))
-
-  (tramp-remap-command 'compile 'tramp-compile)
-  (tramp-remap-command 'recompile 'tramp-recompile)
-
-  ;; XEmacs has an own mimic for menu entries
-  (when (fboundp 'add-menu-button)
-    (funcall 'add-menu-button
-     '("Tools" "Compile")
-     ["Compile..."
-      (command-execute (if tramp-minor-mode 'tramp-compile 'compile))
-      :active (fboundp 'compile)])
-    (funcall 'add-menu-button
-     '("Tools" "Compile")
-     ["Repeat Compilation"
-      (command-execute (if tramp-minor-mode 'tramp-recompile 'recompile))
-      :active (fboundp 'compile)])))
+  (if (functionp 'command-remapping)
+      ;; Emacs 22
+      (eval
+       `(define-key tramp-minor-mode-map [remap ,old-command] new-command))
+    ;; previous Emacs versions.
+    (mapcar
+     '(lambda (x)
+       (define-key tramp-minor-mode-map x new-command))
+     (where-is-internal old-command))))
+
+(tramp-remap-command 'compile 'tramp-compile)
+(tramp-remap-command 'recompile 'tramp-recompile)
+
+;; XEmacs has an own mimic for menu entries
+(when (fboundp 'add-menu-button)
+  (funcall 'add-menu-button
+   '("Tools" "Compile")
+   ["Compile..."
+    (command-execute (if tramp-minor-mode 'tramp-compile 'compile))
+    :active (fboundp 'compile)])
+  (funcall 'add-menu-button
+   '("Tools" "Compile")
+   ["Repeat Compilation"
+    (command-execute (if tramp-minor-mode 'tramp-recompile 'recompile))
+    :active (fboundp 'compile)]))
 
 ;; Utility functions.