Mercurial > emacs
diff lisp/net/tramp-util.el @ 59582:92796330257a
Sync with Tramp 2.0.47.
author | Michael Albinus <michael.albinus@gmx.de> |
---|---|
date | Sun, 16 Jan 2005 13:18:31 +0000 |
parents | 695cf19ef79e |
children | aac0a33f5772 6d92d69fae33 |
line wrap: on
line diff
--- a/lisp/net/tramp-util.el Sun Jan 16 09:59:03 2005 +0000 +++ b/lisp/net/tramp-util.el Sun Jan 16 13:18:31 2005 +0000 @@ -1,9 +1,9 @@ ;;; -*- coding: iso-2022-7bit; -*- ;;; tramp-util.el --- Misc utility functions to use with Tramp -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -;; Author: Kai Gro,A_(Bjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> +;; Author: kai.grossjohann@gmx.net ;; Keywords: comm, extensions, processes ;; This file is free software; you can redistribute it and/or modify @@ -32,6 +32,60 @@ (require 'compile) (require 'tramp) +;; 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 21.4 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. +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 21.4 + (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)]))) + +;; Utility functions. + (defun tramp-compile (command) "Compile on remote host." (interactive @@ -49,6 +103,16 @@ (setq default-directory d))) (tramp-handle-shell-command command (get-buffer "*Compilation*")) (pop-to-buffer (get-buffer "*Compilation*")) + (tramp-minor-mode 1) + (compilation-minor-mode 1)) + +(defun tramp-recompile () + "Re-compile on remote host." + (interactive) + (save-some-buffers (not compilation-ask-about-save) nil) + (tramp-handle-shell-command compile-command (get-buffer "*Compilation*")) + (pop-to-buffer (get-buffer "*Compilation*")) + (tramp-minor-mode 1) (compilation-minor-mode 1)) (provide 'tramp-util)