;;; tramp-cmds.el --- Interactive commands for Tramp
-;; Copyright (C) 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Author: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
+;; Package: tramp
;; 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 3, 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
;; 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, see
-;; <http://www.gnu.org/licenses/>.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
x)))
(buffer-list))))
+;;;###tramp-autoload
(defun tramp-cleanup-connection (vec)
"Flush all connection related objects.
This includes password cache, file cache, connection cache, buffers.
(let ((connections
(mapcar
(lambda (x)
- (with-current-buffer x (list (file-remote-p default-directory))))
- ;; We shall not count debug buffers, because their
- ;; default-directory is random. It could be even a remote
- ;; one from another connection.
- (all-completions
- "*tramp" (mapcar 'list (tramp-list-tramp-buffers)))))
+ (tramp-make-tramp-file-name
+ (tramp-file-name-method x)
+ (tramp-file-name-user x)
+ (tramp-file-name-host x)
+ (tramp-file-name-localname x)))
+ (tramp-list-connections)))
name)
(when connections
(tramp-clear-passwd vec)
;; Flush file cache.
- (tramp-flush-directory-property vec "/")
+ (tramp-flush-directory-property vec "")
;; Flush connection cache.
- (tramp-flush-connection-property (tramp-get-connection-process vec) nil)
- (tramp-flush-connection-property vec nil)
+ (tramp-flush-connection-property (tramp-get-connection-process vec))
+ (tramp-flush-connection-property vec)
;; Remove buffers.
(dolist
This includes password cache, file cache, connection cache, buffers."
(interactive)
+ ;; Unlock Tramp.
+ (setq tramp-locked nil)
+
;; Flush password cache.
- (when (functionp 'password-reset)
- (funcall (symbol-function 'password-reset)))
+ (tramp-compat-funcall 'password-reset)
;; Flush file and connection cache.
(clrhash tramp-cache-data)
;; Tramp version is useful in a number of situations.
+;;;###tramp-autoload
(defun tramp-version (arg)
"Print version number of tramp.el in minibuffer or current buffer."
(interactive "P")
happen reliably, please include those. Thank you for helping
kill bugs in Tramp.
-Another useful thing to do is to put
+Before reproducing the bug, you might apply
+
+ M-x tramp-cleanup-all-connections
- (setq tramp-verbose 8)
+This allows to investigate from a clean environment. Another
+useful thing to do is to put
+
+ (setq tramp-verbose 9)
in the ~/.emacs file and to repeat the bug. Then, include the
contents of the *tramp/foo* buffer and the *debug tramp/foo*
(base64-encode-string val))))))
;; Dump variable.
- (funcall (symbol-function 'reporter-dump-variable) varsym mailbuf)
+ (tramp-compat-funcall 'reporter-dump-variable varsym mailbuf)
(unless (hash-table-p val)
;; Remove string quotation.
(load "mml" 'noerror))
(require 'message nil 'noerror)
(require 'mml nil 'noerror))
- (when (functionp 'message-mode)
- (funcall (symbol-function 'message-mode)))
- (when (functionp 'mml-mode)
- (funcall (symbol-function 'mml-mode) t)))
+ (tramp-compat-funcall 'message-mode)
+ (tramp-compat-funcall 'mml-mode t))
(defun tramp-append-tramp-buffers ()
"Append Tramp buffers and buffer local variables into the bug report."
(erase-buffer)
(insert "\n(setq\n")
(lisp-indent-line)
- (funcall (symbol-function 'reporter-dump-variable)
- 'buffer-name (current-buffer))
+ (tramp-compat-funcall
+ 'reporter-dump-variable 'buffer-name (current-buffer))
(dolist (varsym-or-cons-cell (buffer-local-variables buffer))
(let ((varsym (or (car-safe varsym-or-cons-cell)
varsym-or-cons-cell)))
(when (string-match "tramp" (symbol-name varsym))
- (funcall
- (symbol-function 'reporter-dump-variable)
- varsym (current-buffer)))))
+ (tramp-compat-funcall
+ 'reporter-dump-variable varsym (current-buffer)))))
(lisp-indent-line)
(insert ")\n"))
(insert-buffer-substring elbuf)))
(symbol-value 'mml-mode))
(let ((tramp-buf-regexp "\\*\\(debug \\)?tramp/")
- (buffer-list (funcall (symbol-function 'tramp-list-tramp-buffers)))
+ (buffer-list (tramp-compat-funcall 'tramp-list-tramp-buffers))
(curbuf (current-buffer)))
;; There is at least one Tramp buffer.
use another mail agent (by copying the contents of this buffer)
please ensure that the buffers are attached to your email.\n\n")
(dolist (buffer buffer-list)
- (funcall (symbol-function 'mml-insert-empty-tag)
- 'part 'type "text/plain" 'encoding "base64"
- 'disposition "attachment" 'buffer buffer
- 'description buffer))
+ (tramp-compat-funcall
+ 'mml-insert-empty-tag 'part 'type "text/plain"
+ 'encoding "base64" 'disposition "attachment" 'buffer buffer
+ 'description buffer))
(set-buffer-modified-p nil))
;; Don't send. Delete the message buffer.
(defalias 'tramp-submit-bug 'tramp-bug)
+(add-hook 'tramp-unload-hook
+ (lambda () (unload-feature 'tramp-cmds 'force)))
+
(provide 'tramp-cmds)
;;; TODO:
;; * WIBNI there was an interactive command prompting for Tramp
;; method, hostname, username and filename and translates the user
;; input into the correct filename syntax (depending on the Emacs
-;; flavor) (Reiner Steib)
+;; flavor) (Reiner Steib)
;; * Let the user edit the connection properties interactively.
;; Something like `gnus-server-edit-server' in Gnus' *Server* buffer.
;; * It's just that when I come to Customize `tramp-default-user-alist'
;; Option and should not be modified by the code. add-to-list is
;; called in several places. One way to handle that is to have a new
;; ordinary variable that gets its initial value from
-;; tramp-default-user-alist and then is added to. (Pete Forman)
+;; tramp-default-user-alist and then is added to. (Pete Forman)
;; arch-tag: 190d4c33-76bb-4e99-8b6f-71741f23d98c
;;; tramp-cmds.el ends here