;;; -*- 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
(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 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.
+;; 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
- (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)])))
+ (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.