]> code.delx.au - gnu-emacs/blobdiff - lisp/net/tramp-cmds.el
Update copyright year to 2015
[gnu-emacs] / lisp / net / tramp-cmds.el
index 462f0d88367c2702d7df639aaba9527fb37daeee..d45c0aad1426b2ba6032fb7753a2669d79ea34f5 100644 (file)
@@ -1,6 +1,6 @@
 ;;; tramp-cmds.el --- Interactive commands for Tramp
 
-;; Copyright (C) 2007-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2007-2015 Free Software Foundation, Inc.
 
 ;; Author: Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
 
 (require 'tramp)
 
+;; Pacify byte-compiler.
+(defvar reporter-eval-buffer)
+(defvar reporter-prompt-for-summary-p)
+
 (defun tramp-list-tramp-buffers ()
   "Return a list of all Tramp connection buffers."
   (append
    nil
    (mapcar
     (lambda (x)
-      (with-current-buffer x
-       (when (and (stringp default-directory)
-                  (file-remote-p default-directory))
-         x)))
+      (with-current-buffer x (when (tramp-tramp-file-p default-directory) x)))
     (buffer-list))))
 
 ;;;###tramp-autoload
-(defun tramp-cleanup-connection (vec)
+(defun tramp-cleanup-connection (vec &optional keep-debug keep-password)
   "Flush all connection related objects.
-This includes password cache, file cache, connection cache, buffers.
+This includes password cache, file cache, connection cache,
+buffers.  KEEP-DEBUG non-nil preserves the debug buffer.
+KEEP-PASSWORD non-nil preserves the password cache.
 When called interactively, a Tramp connection has to be selected."
   (interactive
    ;; When interactive, select the Tramp remote identification.
@@ -75,15 +78,20 @@ When called interactively, a Tramp connection has to be selected."
              (completing-read
               "Enter Tramp connection: " connections nil t
               (try-completion "" connections)))
-       (when (and name (file-remote-p name))
-         (with-parsed-tramp-file-name name nil v))))))
+       (and (tramp-tramp-file-p name) (tramp-dissect-file-name name))))
+    nil nil))
 
   (if (not vec)
       ;; Nothing to do.
       (message "No Tramp connection found.")
 
     ;; Flush password cache.
-    (tramp-clear-passwd vec)
+    (unless keep-password (tramp-clear-passwd vec))
+
+    ;; Cleanup `tramp-current-connection'.  Otherwise, we would be
+    ;; suppressed in the test suite.  We use `keep-password' as
+    ;; indicator; it is not worth to add a new argument.
+    (when keep-password (setq tramp-current-connection nil))
 
     ;; Flush file cache.
     (tramp-flush-directory-property vec "")
@@ -97,7 +105,8 @@ When called interactively, a Tramp connection has to be selected."
     ;; Remove buffers.
     (dolist
        (buf (list (get-buffer (tramp-buffer-name vec))
-                  (get-buffer (tramp-debug-buffer-name vec))
+                  (unless keep-debug
+                    (get-buffer (tramp-debug-buffer-name vec)))
                   (tramp-get-connection-property vec "process-buffer" nil)))
       (when (bufferp buf) (kill-buffer buf)))))
 
@@ -105,8 +114,7 @@ When called interactively, a Tramp connection has to be selected."
 (defun tramp-cleanup-this-connection ()
   "Flush all connection related objects of the current buffer's connection."
   (interactive)
-  (and (stringp default-directory)
-       (file-remote-p default-directory)
+  (and (tramp-tramp-file-p default-directory)
        (tramp-cleanup-connection
        (tramp-dissect-file-name default-directory 'noexpand))))
 
@@ -186,7 +194,9 @@ This includes password cache, file cache, connection cache, buffers."
 
        'tramp-load-report-modules      ; pre-hook
        'tramp-append-tramp-buffers     ; post-hook
-       (propertize "\n" 'display "\
+       (tramp-compat-funcall
+       (if (functionp 'propertize) 'propertize 'progn)
+       "\n" 'display "\
 Enter your bug report in this message, including as much detail
 as you possibly can about the problem, what you did to cause it
 and what the local and remote machines are.
@@ -266,6 +276,7 @@ buffer in your bug report.
   (goto-char (point-max))
 
   ;; Dump buffer local variables.
+  (insert "\nlocal variables:\n================")
   (dolist (buffer
           (delq nil
                 (mapcar
@@ -273,21 +284,23 @@ buffer in your bug report.
                     (when (string-match "\\*tramp/" (buffer-name b)) b))
                  (buffer-list))))
     (let ((reporter-eval-buffer buffer)
-         (buffer-name (buffer-name buffer))
          (elbuf (get-buffer-create " *tmp-reporter-buffer*")))
       (with-current-buffer elbuf
        (emacs-lisp-mode)
        (erase-buffer)
-       (insert "\n(setq\n")
+       (insert (format "\n;; %s\n(setq-local\n" (buffer-name buffer)))
        (lisp-indent-line)
-       (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))
-             (tramp-compat-funcall
-              'reporter-dump-variable varsym (current-buffer)))))
+       (dolist
+           (varsym
+            (sort
+             (append
+              (mapcar
+               'intern
+               (all-completions "tramp-" (buffer-local-variables buffer)))
+              ;; Non-tramp variables of interest.
+              '(default-directory))
+             'string<))
+           (tramp-compat-funcall 'reporter-dump-variable varsym elbuf))
        (lisp-indent-line)
        (insert ")\n"))
       (insert-buffer-substring elbuf)))
@@ -348,7 +361,7 @@ the debug buffer(s).")
              (kill-buffer nil)
              (switch-to-buffer curbuf)
              (goto-char (point-max))
-             (insert (propertize "\n" 'display "\n\
+             (insert (tramp-compat-funcall 'propertize "\n" 'display "\n\
 This is a special notion of the `gnus/message' package.  If you
 use another mail agent (by copying the contents of this buffer)
 please ensure that the buffers are attached to your email.\n\n"))